马上要换工作了,感觉自己很多东西都只知道怎么弄,不会查百度,不知道原理,网上整理了面试题,作为复习资料。
首先是各大公司的面试题
原始地址
http://www.jackpu.com/2016ge-da-hu-lian-wang-gong-si-qian-duan-mian-shi-ti-hui-zong/
百度
写出JavaScript运行结果
for(var i=0; i<10; i++){} alert(i);
1
answer:
Cookie、sessionStorage、localStorage的区别
answer:
SessionStorage 和 localStorage 是HTML5 storage API 提供的, 可以把数据保存在本地,避免了数据在浏览器和服务器之间不必要的通信。
sessionStorage,localStorage, cookie 都是在浏览器存储的数据。
不同:
cookie数据始终在同源http中携带,即使不需要,也会在浏览器和服务器间来回传递。Storage只存在本地。
cookie数据有路径概念,可以限制cookie只能在某路径下。
大小不同
cookie:4k Storage:5M
有效期不同
sessionStorage: 仅在当前浏览器关闭前有效
localStorage:始终有效
cookie:过期之前有效
作用域不同
sessionStorage在打开的不同浏览器窗口不共享,即使同一页面
localStorage 在同源页面共享
cookie 同源页面共享
JSONP原理
answer:
Ajax存在不能跨域请求数据的问题。而Web上调用js是不受跨域影响的。因为JSON数据格式恰好被Js支持,web客户端通过调用跨域服务器上动态生成的Js,从而达到跨域请求到JSON包的需求。 为了便于客户端调用JSON数据,形成了非正式的传输协议,也就是JSONP。 客户端传一个callback参数给跨域服务器,跨域服务器返回一个以callback为函数名包裹的JSON数据,这样客户端就可以处理跨域得到的JSON数据了。
简述css盒模型
answer:
一个盒子包括 内容 填充 边框 边界,而盒子模型包括这些属性,外边距,边框,内边距,内容。
说说get和post请求的区别
answer:
get: 将请求携带的参数直接拼接在url后面,传送的体积小
post: 将请求写在body里,传送的体积大。安全。
一般get用于获取数据,post是将数据传给服务器,进行修改。
这里推荐一篇文章,也细致的讲了区别,值得思考。
http://www.nowamagic.net/librarys/veda/detail/1919
运行结果
var a = {n: 1}
var b = a;
a.x = a = {n: 2};
console.log(a.x);
console.log(b.x);
2
4
1
3
5
answer:
(a.x)->undefined
(b.x)->[object Object ]
解析:
http://www.bubuko.com/infodetail-712767.html
本题主要考查了js引用模式。
var a = {n: 1}
var b = a;
这两行代码
a 指向了一个对象 A{n:1}
b 也指向了对象A{n:1}
下一行代码很关键
a.x = a = {n: 2};
由于js赋值运算是从右往左的,但是 . 的运算等级最高, 所以 a.x 为对象A 新增了属性 x:undefined。 同时,由于b也指向对象A,所以b.x也是undefined。接着,由于从右往左的特性,先执行a={n:2},这时a指向了对象B{n:2}。
接着执行 a.x=a
很多人会认为这里是“对象B也新增了一个属性x,并指向对象B自己”
但实际上并非如此,
由于( . 运算符最先计算)一开始js已经先计算了a.x,便已经解析了这个a.x是对象A的x,所以在同一条公式的情况下再回来给a.x赋值,也不会说重新解析这个a.x为对象B的x。
所以 a.x=a 应理解为对象A的属性x指向了对象B.
这时,对象A: {n:1 x:对象B} 对象B: {n:2}
所以结果 a.x是输出对象B的x属性,由于遍历到顶端,也没有这个属性,所以输出undefined。 而b.x是输出的对象B。注意这里的[object Object]可不是2个对象的意思,对象的字符串形式,是隐式调用了Object对象的toString()方法,形式是:”[object Object]”。所以[object Object]表示的就只是一个对象罢了。
说说类的创建、继承和闭包
answer:
建议阅读javascript高级程序设计4-7章。
创建类:factory法,constructor法,prototype法,prototype+constructor结合,动态prototype法。
继承类:
原型链继承 构造继承 实例继承 拷贝继承 组合继承 寄生组合继承
闭包: 在函数外访问函数内变量的方法
是否有设计过通用的组件? 请设计一个 Dialog(弹出层) / Suggestion(自动完成) / Slider(图片轮播) 等组件,你会提供什么接口?调用过程是怎样的?可能会遇到什么细节问题?
answer:
具体靠自己经验了。
一个页面从输入 URL 到页面加载完的过程中都发生了什么事情?越详细越好(考察知识广度)
answer:
输入地址-》浏览器查找域名的IP地址(DNS查找)-》浏览器向web服务器发送请求-》服务器永久重定向回应-》浏览器跟踪重定向地址-》服务器处理请求-》服务器返回http响应-》浏览器显示html-》浏览器发送请求获取在html中嵌套的资源-》浏览器发送异步请求
什么是 “use strict”? 使用它的好处和坏处是什么?
answer:
使用严格模式。消除语法不严谨的地方,保证代码安全,增进代码速度。缺点不知道,失去代码灵活性算吗?