各大公司面试题(百度)

马上要换工作了,感觉自己很多东西都只知道怎么弄,不会查百度,不知道原理,网上整理了面试题,作为复习资料。

首先是各大公司的面试题

原始地址 
http://www.jackpu.com/2016ge-da-hu-lian-wang-gong-si-qian-duan-mian-shi-ti-hui-zong/

百度

1 写出JavaScript运行结果

for(var i=0; i<10; i++){} alert(i);
1
1
answer:

10

2 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 同源页面共享

3 JSONP原理 
answer: 
Ajax存在不能跨域请求数据的问题。而Web上调用js是不受跨域影响的。因为JSON数据格式恰好被Js支持,web客户端通过调用跨域服务器上动态生成的Js,从而达到跨域请求到JSON包的需求。 为了便于客户端调用JSON数据,形成了非正式的传输协议,也就是JSONP。 客户端传一个callback参数给跨域服务器,跨域服务器返回一个以callback为函数名包裹的JSON数据,这样客户端就可以处理跨域得到的JSON数据了。

4 简述css盒模型 
answer: 
一个盒子包括 内容 填充 边框 边界,而盒子模型包括这些属性,外边距,边框,内边距,内容。

5 说说get和post请求的区别 
answer: 
get: 将请求携带的参数直接拼接在url后面,传送的体积小 
post: 将请求写在body里,传送的体积大。安全。 
一般get用于获取数据,post是将数据传给服务器,进行修改。 
这里推荐一篇文章,也细致的讲了区别,值得思考。 
http://www.nowamagic.net/librarys/veda/detail/1919

6 运行结果

var a = {n: 1}  
var b = a;  
a.x = a = {n: 2};  
console.log(a.x);  
console.log(b.x);
1
2
3
4
5
1
2
3
4
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]表示的就只是一个对象罢了。

7 说说类的创建、继承和闭包 
answer: 
建议阅读javascript高级程序设计4-7章。

创建类:factory法,constructor法,prototype法,prototype+constructor结合,动态prototype法。 
继承类: 
原型链继承 构造继承 实例继承 拷贝继承 组合继承 寄生组合继承 
闭包: 在函数外访问函数内变量的方法

8 是否有设计过通用的组件? 请设计一个 Dialog(弹出层) / Suggestion(自动完成) / Slider(图片轮播) 等组件,你会提供什么接口?调用过程是怎样的?可能会遇到什么细节问题?

answer: 
具体靠自己经验了。

9 一个页面从输入 URL 到页面加载完的过程中都发生了什么事情?越详细越好(考察知识广度)

answer: 
输入地址-》浏览器查找域名的IP地址(DNS查找)-》浏览器向web服务器发送请求-》服务器永久重定向回应-》浏览器跟踪重定向地址-》服务器处理请求-》服务器返回http响应-》浏览器显示html-》浏览器发送请求获取在html中嵌套的资源-》浏览器发送异步请求

10 什么是 “use strict”? 使用它的好处和坏处是什么? 
answer: 
使用严格模式。消除语法不严谨的地方,保证代码安全,增进代码速度。缺点不知道,失去代码灵活性算吗?

 

posted @ 2017-09-05 11:23  进击的乌龟  阅读(493)  评论(0编辑  收藏  举报