如何区分: DOCTYPE声明\新增的结构元素\功能元素
如何实现浏览器内多个标签页之间的通讯?
什么是 FOUC(无样式内容闪烁)?你如何来避免 FOUC?
而引用CSS文件的@import就是形成这个问题的罪魁祸首。IE会先加载整个HTML文档的DOM,而后再去导入外部的CSS文件,所以,在页面DOM加载完成到CSS导入完成中间会有一段时间页面上的内容是没有样式的,这段时间的长短跟网速,电脑速度都有关系。
null
是一个表示"无"的对象,转为数值时为0;undefined
是一个表示"无"的原始值,转为数值时为NaN
。
当声明的变量还未被初始化时,变量的默认值为undefined
。
null
用来表示还没有存在的对象,经常使用来表示函数企图返回一个不存在的对象。
undefined
表示"缺乏值",就是此处应该有一个值,可是尚未定义。典型用法是:
(1)变量被声明了,但没有赋值时,就等于undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
null
表示"没有对象",即该处不该该有值。典型用法是:
(1) 做为函数的参数,表示该函数的参数不是对象。
(2) 做为对象原型链的终点。
new操做符具体干了什么呢?
一、建立一个空对象,而且 this 变量引用该对象,同时还继承了该函数的原型。
二、属性和方法被加入到 this 引用的对象中。
三、新建立的对象由 this 所引用,而且最后隐式的返回 this 。
js延迟加载的方式有哪些?
做用:动态改变某个类的某个方法的运行环境(执行上下文)。
哪些操做会形成内存泄漏?
内存泄漏指任何对象在您再也不拥有或须要它以后仍然存在。
垃圾回收器按期扫描对象,并计算引用了每一个对象的其余对象的数量。若是一个对象的引用数量为 0(没有其余对象引用过该对象),或对该对象的唯一引用是循环的,那么该对象的内存便可回收。
setTimeout 的第一个参数使用字符串而非函数的话,会引起内存泄漏。
闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)
列举IE 与其余浏览器不同的特性?
WEB应用从服务器主动推送Data到客户端有那些方式?
对前端界面工程师这个职位是怎么样理解的?它的前景会怎么样?
前端是最贴近用户的程序员,比后端、数据库、产品经理、运营、安全都近。
三、有了Node.js,前端能够实现服务端的一些事情
前端是最贴近用户的程序员,前端的能力就是能让产品从 90分进化到 100 分,甚至更好,
参与项目,快速高质量完成实现效果图,精确到1px;
与团队成员,UI设计,产品经理的沟通;
作好的页面结构,页面重构和用户体验;
处理hack,兼容、写出优美的代码格式;
针对服务器的优化、拥抱最新前端技术。
一个页面从输入 URL 到页面加载显示完成,这个过程当中都发生了什么?
(1),当发送一个URL请求时,无论这个URL是Web页面的URL仍是Web页面上每一个资源的URL,浏览器都会开启一个线程来处理这个请求,同时在远程DNS服务器上启动一个DNS查询。这能使浏览器得到请求对应的IP地址。
(2), 浏览器与远程`Web`服务器经过`TCP`三次握手协商来创建一个`TCP/IP`链接。该握手包括一个同步报文,一个同步-应答报文和一个应答报文,这三个报文在 浏览器和服务器之间传递。该握手首先由客户端尝试创建起通讯,然后服务器应答并接受客户端的请求,最后由客户端发出该请求已经被接受的报文。
(3),一旦`TCP/IP`链接创建,浏览器会经过该链接向远程服务器发送`HTTP`的`GET`请求。远程服务器找到资源并使用HTTP响应返回该资源,值为200的HTTP响应状态表示一个正确的响应。
(4),此时,`Web`服务器提供资源服务,客户端开始下载资源。
请求返回后,便进入了咱们关注的前端模块
4,混合构造函数和原型模式
3,组合继承(原型+借用构造)
(2)建立一个新的`HTTP`请求,并指定该`HTTP`请求的方法、`URL`及验证信息.
(3)设置响应`HTTP`请求状态变化的函数.
(5)获取异步调用返回的数据.
1.异步加载的方案: 动态插入script标签
2.经过ajax去获取js代码,而后经过eval执行
4.建立并插入iframe,让它异步执行js
5.延迟加载:有些 js 代码并非页面初始化的时候就马上须要的,而稍后的某些状况才须要的。
ie各版本和chrome能够并行下载多少个资源
IE6 两个并发,iE7升级以后的6个并发,以后版本也是6个
Flash
、Ajax
各自的优缺点,在使用中如何取舍?
-
Flash
适合处理多媒体、矢量图形、访问机器;对CSS
、处理文本上不足,不容易被搜索。
-Ajax
对CSS
、文本支持很好,支持搜索;多媒体、矢量图形、机器访问不足。
- 共同点:与服务器的无刷新传递消息、用户离线和在线状态、操做DOM
概念:同源策略是客户端脚本(尤为是Javascript
)的重要的安全度量标准。它最先出自Netscape Navigator2.0
,其目的是防止某个文档或脚本从多个不一样源装载。
这里的同源策略指的是:协议,域名,端口相同,同源策略是一种安全协议。
指一段脚本只能读取来自同一来源的窗口和文档的属性。
咱们举例说明:好比一个黑客程序,他利用Iframe
把真正的银行登陆页面嵌到他的页面上,当你使用真实的用户名,密码登陆时,他的页面就能够经过Javascript
读取到你的表单中input
中的内容,这样用户名,密码就轻松到手了。
如今网站的JS
都会进行压缩,一些文件用了严格模式,而另外一些没有。这时这些原本是严格模式的文件,被 merge
后,这个串就到了文件的中间,不只没有指示严格模式,反而在压缩后浪费了字节。
GET和POST的区别,什么时候使用POST?
GET:通常用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,通常在2000个字符
POST:通常用于修改服务器上的资源,对所发送的信息没有限制。
也就是说Get是经过地址栏来传值,而Post是经过提交表单来传值。
然而,在如下状况中,请使用 POST 请求:
没法使用缓存文件(更新服务器上的文件或数据库)
向服务器发送大量数据(POST 没有数据量限制)
发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
事件、IE与火狐的事件机制有什么区别? 如何阻止冒泡?
1. 咱们在网页中的某个操做(有的操做对应多个事件)。例如:当咱们点击一个按钮就会产生一个事件。是能够被 JavaScript 侦测到的行为。
2. 事件处理机制:IE是事件冒泡、firefox同时支持两种事件模型,也就是:捕获型事件和冒泡型事件。;
ajax的缺点和在IE下的问题?
一、ajax不支持浏览器back按钮。
二、安全问题 AJAX暴露了与服务器交互的细节。
三、对搜索引擎的支持比较弱。
四、破坏了程序的异常机制。
在IE浏览器下,若是请求的方法是GET
,而且请求的URL
不变,那么这个请求的结果就会被缓存。解决这个问题的办法能够经过实时改变请求的URL
,只要URL改变,就不会被缓存,能够经过在URL末尾添加上随机的时间戳参数('t'= + new Date().getTime()
)
Ajax请求的页面历史记录状态问题
能够经过锚点来记录状态,location.hash
。让浏览器记录Ajax请求时页面状态的变化。
网站重构:在不改变外部行为的前提下,简化结构、添加可读性,而在网站前端保持一致的行为。也就是说是在不改变UI的状况下,对网站进行优化,在扩展的同时保持一致的UI。
对于传统的网站来讲重构一般是:
使网站前端兼容于现代浏览器(针对于不合规范的CSS、如对IE6有效的)
深层次的网站重构应该考虑的方面
代替旧有的框架、语言(如VB)
一般来讲对于速度的优化也包含在重构中
压缩JS、CSS、image等前端资源(一般是由服务器来解决)
程序的性能优化(如数据读写)
采用CDN来加速资源加载
HTTP服务器的文件缓存
如下是数组去重的三种方法:
//若是当前数组的第i已经保存进了临时数组,那么跳过,
//不然把当前项push到临时数组里面
//若是当前数组的第i项在当前数组中第一次出现的位置不是i,
//那么表示第i项是重复的,忽略掉。不然存入结果数组
100 Continue 继续,通常在发送post请求时,已发送了http header以后服务端将返回此信息,表示确认,以后发送具体参数信息
201 Created 请求成功而且服务器建立了新的资源
202 Accepted 服务器已接受请求,但还没有处理
304 Not Modified 自从上次请求后,请求的网页未修改过。
400 Bad Request 服务器没法理解请求的格式,客户端不该当尝试再次使用相同的内容发起请求。
事件代理(Event Delegation),又称之为事件委托。是 JavaScript
中经常使用绑定事件的经常使用技巧。顾名思义,“事件代理”便是把本来须要绑定的事件委托给父元素,让父元素担当事件监听的职务。事件代理的原理是DOM
元素的事件冒泡。使用事件代理的好处是能够提升性能。
attribute
是dom
元素在文档中做为html
标签拥有的属性;
property
就是dom
元素在js
中做为对象拥有的属性。
对于html
的标准属性来讲,attribute
和property
是同步的,是会自动更新的,
可是对于自定义的属性来讲,他们是不一样步的,
说说网络分层里七层模型是哪七层
应用层:应用层、表示层、会话层(从上往下)(HTTP、FTP、SMTP、DNS
)
物理和数据链路层(以太网)
物理层:经过媒介传输比特,肯定机械及电气规范(比特Bit)
数据链路层:将比特组装成帧和点到点的传递(帧Frame)
网络层:负责数据包从源到宿的传递和网际互连(包PackeT)
传输层:提供端到端的可靠报文传递和错误恢复(段Segment)
会话层:创建、管理和终止会话(会话协议数据单元SPDU)
表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
应用层:容许访问OSI环境的手段(应用协议数据单元APDU)
ICMP协议
: 因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
TFTP协议
: 是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
HTTP协议
: 超文本传输协议,是一个属于应用层的面向对象的协议,因为其简捷、快速的方式,适用于分布式超媒体信息系统。
DHCP协议
: 动态主机配置协议,是一种让系统得以链接到网络上,并获取所须要的配置参数手段。
MySQL
是传统的关系型数据库,MongoDB
则是非关系型数据库
mongodb
以BSON
结构(二进制)进行存储,对海量数据存储有着很明显的优点。
服务器首先产生ETag
,服务器可在稍后使用它来判断页面是否已经被修改。本质上,客户端经过将该记号传回服务器要求服务器验证其(客户端)缓存。
304是HTTP状态码,服务器用来标识这个文件没修改,不返回内容,浏览器在接收到个状态码后,会使用浏览器已缓存的文件
客户端请求一个页面(A)。 服务器返回页面A,并在给A
加上一个ETag
。 客户端展示该页面,并将页面连同ETag
一块儿缓存。 客户再次请求页面A
,并将上次请求时服务器返回的ETag
一块儿传递给服务器。
服务器检查该ETag
,并判断出该页面自上次客户端请求以后还未被修改,直接返回响应304
(未修改——Not Modified
)和一个空的响应体。
什么样的前端代码是好的
高复用低耦合,这样文件小,好维护,并且好扩展。
构造一个 Promise
,最基本的用法以下:
Promise
实例拥有 then
方法(具备 then
方法的对象,一般被称为 thenable
)。它的使用方法以下:
说说你对前端架构师的理解
负责前端团队的管理及与其余团队的协调工做,提高团队成员能力和总体效率;
带领团队完成研发工具及平台前端部分的设计、研发和维护;
带领团队进行前端领域前沿技术研究及新技术调研,保证团队的技术领先
负责前端开发规范制定、功能模块化设计、公共组件搭建等工做,并组织培训。
严格模式主要有如下限制:
函数的参数不能有同名属性,不然报错
不能对只读属性赋值,不然报错
不能使用前缀0表示八进制数,不然报错
不能删除不可删除的属性,不然报错
eval不会在它的外层做用域引入变量
arguments不会自动反映函数参数的变化
禁止this指向全局对象
设立"严格模式"的目的,主要有如下几个:
注:通过测试IE6,7,8,9
均不支持严格模式。
所谓组件,即封装起来的具备独立功能的UI部件。
1.将时间设为当前时间往前一点。
setDate()
方法用于设置一个月的某一天。
< b > < i >是视觉要素,分别表示无心义的加粗,无心义的斜体。
CommonJS
是服务器端模块的规范,Node.js采用了这个规范。CommonJS
规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操做。AMD规范则是非同步加载模块,容许指定回调函数。
AMD
推荐的风格经过返回一个对象作为模块对象,CommonJS
的风格经过对module.exports
或exports
的属性赋值来达到暴露模块对象的目的。
document.write()
方法能够用在两个方面:页面载入过程当中用实时脚本建立页面内容,以及用延时脚本建立本窗口或新窗口的内容。
编写一个方法 求一个字符串的字节长度
假设:一个英文字符占用一个字节,一个中文字符占用两个字节
git pull:至关因而从远程获取最新版本并merge到本地
git fetch:至关因而从远程获取最新版本到本地,不会自动merge
父元素和子元素同时左浮动,而后父元素相对左移动50%,再而后子元素相对右移动50%,或者子元素相对左移动-50%也就能够了。
css实现水平垂直居中
使用绝对定位将content的定点定位到body的中心,而后使用负margin(content宽高的一半),
将content的中心拉回到body的中心,已到达水平垂直居中的效果。
css实现三栏布局,中间自适应
方法一:自身浮动法。左栏左浮动,右栏右浮动。
margin: 0 200px;//没有这行,当宽度缩小到必定程度的时候,中间的内容可能换行
方法二:margin负值法
方法三:绝对定位法。左右两栏采用绝对定位,分别固定于页面的左右两侧,中间的主体栏用左右margin值撑开距离。
<!--这种方法没有严格限定中间这栏放置何处-->
js经常使用设计模式的实现思路,单例,工厂,代理,装饰,观察者模式等
1) 单例: 任意对象都是单例,无须特别处理
2) 工厂: 就是一样形式参数返回不一样的实例
3) 代理: 就是新建个类调用老类的接口,包一下
4) 观察者: 就是事件模式,好比按钮的onclick这样的应用.
Model:数据访问层
说说你对MVC和MVVM的理解
Model 将新的数据发送到 View,用户获得反馈