另附上本人 2017 届面经
2017年秋季校招前端面经(百度,腾讯,网易,华为,乐视等)
百度
1.块级元素和行内元素的区别和举例
2.HTML5的新特性
3.清除浮动的方法
4.BFC清除浮动的原理
5.盒子模型
6.标准模式和兼容模式
7.闭包的定义
8.原型链和作用域链
9.作用域链和闭包的区别
10.Object的原型对象是什么
11.怎么判断一个属性是对象上的属性还是其原型对象上的属性
12.判断一个对象类型为数组
13.网络安全的防御
14.localStorage和cookie的区别
15.前端性能优化
16.层叠上下文
17.手写events模块
18.手写将一个段落里的单词首字母都大写的函数
1.三栏式布局
2.块级元素和行内元素的区别和举例
3.h5语义化理解,新增了哪些标签
4.css有哪些选择器,权重多少
5.get和post区别
6.浏览器缓存机制
7.盒子模型
8.es6有哪些新特性
9.跨域有哪几种实现方式
10.邮箱正则匹配 xx@xx.com/cn
11.实现一个反转字符串的函数
12.段落首字母大写函数
13.观察者模式
14.快速排序怎么实现的
腾讯
1.为什么喜欢学习前端。
2.对MVVM框架的理解。
3.angularJS双向绑定原理。
4.了解过其他的MVVM框架吗。
5.React虚拟DOM原理。
6.单向数据流动原理。
6.html5,css3,ES6新特性。
7.ES6中比较好用的语法。
8.对闭包和作用域的理解。
9.js怎么实现面向对象。
10.实现动画的方式。
11.网站性能优化。
12.如何查看一个网站的性能。
13.网站上线后如何查看网站在客户电脑上的性能。
14.收集用户信息主要收集哪些信息。
15.如何进行跨站请求。
16.如果实现跨域资源共享。
17.网站开发的流程,像是技术选型,人员分工这一类,越详细越好。
18.网络分层分为哪几层。
19.状态码301,302。
20.网络中每一层都有哪些协议。
21.浏览器的缓存分为哪几种。
22.常用的排序算法。
23.Web安全。
24.XSS攻击原理及如何防止。
25.需要屏蔽哪些关键词。
26.了解CDN吗。
28.OPTIONS请求的作用。
29.HTTP协议有哪些内容。
30.HTTP2.0新特性。
31.HTTPS相对于HTTP新增了哪些内容。
32.HTTPS是怎么对传输内容进行加密的。
33.同一个页面里面iframe之间怎么传递信息。
34.网站如何实现离线应用。
35.cookier有4096B(加减1)字节的长度限制,容量是多少?js高阶教程p629
36.js怎么实现表单提交按钮的短期重复点击。
37.ajax的post、get方法,优缺点,实现原理
38.盒模型
39.跨域请求方式
40.浏览器安全问题
41.input鼠标滑过获取内容
42.项目中遇到的困难
43.css带src的标签 <link> <a> <img> <audio> <video>
44.谈谈对闭包的理解
45. var x=5,o={
x:10,
show:function(x){
var x=20;
console.log(this.x);//10
(function show1(){
console.log(this.x);//5
})();
function show2(x){//x是window
console.log(this.x);//5
}
show2(x)
}
}
o.show();
46.typeof(null)==object
47.浏览器缓存的底层实现原理
48.设计模式
49.css框架实现(例如:bootstrap有哪些文件,作用)
50.经常浏览哪些网站(知乎、大漠、阮一峰博客等等,最好说下对公司对应的哪些技术感兴趣)
51.百度前端学院,做了哪些题,怎样实现
阿里
一面
1、自我介绍之后,一个项目一个项目介绍
2、vue的双向绑定
3、vuex数据流动过程
4、ajax应用场景以及优缺点
5、http请求中post和get请求的区别
6、跨域cros和jsonp;jsonp是怎么获取数据的
7、闭包及应用
8、说一下js的继承。es6里面的extent是那种继承方式
9、讲一下let const var
10、讲一下flexBox
11、讲一下float
12、移动端适配
13、promise定义及应用
二面
1、介绍项目,项目中每一个点追着细问
2、https实现
3、跨域等问了几个基础问题
HR
1、聊人生、聊计划、周围觉得厉害的人,影响较大的人、自己的缺点、最近集中面试对你有什么影响
2、建议:增加只是探索欲及主动性会对以后工作有很好的发展。
携程
1.对js闭包的理解
2.对原型的理解
3.js怎么实现继承
4.angular的双向绑定实现
5.其他框架的双向绑定实现
6.对链表和二叉树的理解
7.链表和数组插入的效率
8.快速排序的原理
9.快速排序的时间复杂度和空间复杂度
10.组合和继承的关系,哪个好用
11.组合和继承的例子
//终面
1.项目介绍
2.前端和后端的区别和分工
3.对前端渲染和后端渲染的看法
服务端的计算和渲染效率比较高,但是服务端渲染返回的页面就需要刷新页面,用户体验不好
4.更喜欢哪一种为什么
5.对前后端联合渲染有了解吗
6.为什么技术选型angularjs
7.为什么要重构代码
8.重构代码的流程
9.具体一个控制器是怎么重构的
10.写一个深度拷贝函数
11.怎么完成一个提交订单页面
美团
1、三栏式布局 margin float flexBox
2、行内元素性质 (非替换元素不可设置高度和margin-top,margin-bottom)
3、清除浮动(clear:both overflow:hidden :after{content:' ';height:0;clear:both})
4、angular双向绑定、vue双向绑定(get set)
5、浏览器缓存两种方式
6、屏幕适配布局:rem
7、http状态码
8、不使用缓存方式:在请求路径后面加rand随机数
9、image原生布局为inline
原生属性查看方式:var myDiv=document.getElementsByTagName("img")[0];
console.log(document.defaultView.getComputedStyle(myDiv,null));
总结主要问css和框架原理以及一些浏览器原理
1、自我介绍
2、bootstrap 布局,栅格布局 ,怎么处理不同设备上的差异
3、http 304 状态码是什么意思?其他状态码?HTTPS
4、ajax跨域,有哪些解决方法,举了几个实例让实现跨域,访问子域算不算跨域等等等
5、一两个简单的算法题(记不清了)
6、求数组中最大数
7、事件委托,点击 ul 中的li 弹出li内容,动态添加li
8、原型链继承: b.prototype =new a() 不对吗?
9、es6 ,异步原因,promise set map等等
10、事件流
11、cookie
12、数组去重
13、项目
拼多多
1.两栏布局,左边固定,要求先加载内容区域,说出多种方法
2.正则对象test方法和exec方法的不同,分别返回什么
3.事件绑定的多种方式,事件监听addEventListener的第三个参数是什么,取值各有什么意思
4.事件代理 阻止事件冒泡(stopPropagation cancelBubble) 阻止事件默认方式
5.js基本数据类型有哪些,写一个函数判断变量的类型
6.详细说说Box-sizing属性取值的区别
Box-sizing: content-Box|border-Box|inherit;
宽度和高度分别应用到元素的什么位置。
7.有一段文字,里面有电话号码,电话号码是连续数字,需要把电话号码都替换成*,说出多种做法
var reg=/1[3 4 5 8]\d{9}/g;
1)str.replace(reg,'***********')
2)str.split(reg).join('***********')
3) var str1='';
var lastIndex=0;
while(arr=reg.exec(str)){//arr.index内容所在位置
str1+=str.slice(lastIndex,arr.index)+'***********';
lastIndex=reg.lastIndex;//正则表达式当前所在位置(在选中内容之后)
}
str1+=str.slice(lastIndex);
console.log(str1)
8.Header 头 Set-cookie: http-only 是干什么用的?
二面(2017.08.24,25min)
1.自我介绍
2.讲讲你做过的项目
3.项目中提到了 React,问:React 组件的生命周期?父子组件之间如何通信?子组件之间如何通信?
4.前端性能优化?
5.http 缓存原理?(Expires Cache-Control if-Modified-Since/last-Modified if-None-Match/ETag)
6.JavaScript 的垃圾回收机制?
7.CSS BFC 原理?
8.Box-sizing 属性(两种盒子模型)?
9.稳定的排序和不稳定的排序?
快速排序的思路?
堆排序的思路?
10.还有什么想问我的?
1、自我介绍
2、js继承原理
3、闭包,经典闭包问题for循环i,实现指定输出
4、状态码 499 client has closed connection
5、http有哪几种请求的方法,options作用
6、CROS方法实现跨域
1)Access-Control-Allow-Origin
该字段是必须的。它的值要么是请求时Origin字段的值,
要么是一个*,表示接受任意域名的请求。
2)Access-Control-Request-Method
该字段是必须的,用来列出浏览器的CORS请求会用到哪些
HTTP方法,上例是PUT,GET,POST。
3)Access-Control-Expose-Headers
该字段可选。CORS请求时,XMLHttpRequest对象的
getResponseHeader()方法只能拿到6个基本字段:
Cache-Control、Content-Language、Content-Type、
Expires、Last-Modified、Pragma。如果想拿到其他字段,
就必须在Access-Control-Expose-Headers里面指定。
上面的例子指定,getResponseHeader('FooBar')可以返回
FooBar字段的值。
7、项目介绍,微信免登陆怎么实现
8、angular和vue区别
9、手写多路归并排序
10、前端性能优化?具体怎么实现的,用过哪些
11、sessionStorage和localStorage的不同
1、自我介绍
2、项目介绍,vue优点
3、盒子模型,怎样在标准盒子模型中实现IE盒子模型
4、知道哪些排序算法,手写快排,时间复杂度
5、怎样知道一个元素在当前屏幕 getBoundingClientRect
6、实现空心圆,里面白色,外面红色(伪元素、border、radial-gradient)
7、有三个函数,内部实现都是异步的,怎么让这三个函数变成一个同步的,以节省时间
--promise.all
1、自我介绍
2、对拼多多有了解吗,使用过吗,了解工作机制吗
3、为什么想从事电商,为什么选前端开发
4、有没有面过其他公司,有没有拿到其他公司的 Offer?
4、对工资有什么要求吗
5、家庭成员,父母同意去上海吗
6、保研的还是考研的,研究生成绩怎么样
7、有男朋友吗
8、以后生活规划。。。
阿里文娱
一面:
1、==的类型强制转换(0=='0') 3.0===3.0*1
变量提升
变量的命名原则
不同数据类型值的相互转化
2、css3新特性
3、ul列表,设置前三列颜色不同,4-10列斑马线布局,之后元素隐藏
4、元素隐藏方式
1)display:none 2)visibility:hidden 3)background-color=color
4)移出视口 position:absolute left float+margin-left 5)z-index:-1;
5、变量以什么开头问题
6、ES6新特性
7、判断数据类型的方式
1)typeof 2)instanceof 3)Object.prototype.toString.call();
8、MVC MVP MVVM区别
二面和HR(两个面试官一起面的);
9、项目介绍
10、为什么选择前端
11、用js写Ajax
12、状态码
13、界面有大量的图片,怎样去加快加载时间
14、怎样使用缓存
15、两栏式布局实现
16、怎样修改一个单选或复选框的样式
17、跨域的方式
18、浏览器兼容(我说了绑定事件的)
19、怎样去除字符串中空格,正则表达式可以应用于哪些方面
20、压缩js和css文件的原理
21、闭包及应用
22、jquery语法
23、表述能力怎么样,如果没有任何工具,只口述介绍你的项目
24、希望再怎样环境工作,或对工作环境有什么要求
25、最近吵过架吗?赢了还是输了(不知道意图何在)
26、有什么问题问我的吗(一面也有问)