- 手写闭包,继承
function F(){
var arr=[];
for(var i=0;i<10;i++){
arr[i]=(function(x){
return function(){
return x;
}
}(i));
}
return arr;
}
function Animal(name){
this.name = name;
}
animal.prototype.sayName=function(){
alert(hello,+'this.name');
}
var cat = new Animal('cat');
- 手写事件绑定
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<script>
var lis=document.getElementsByTagName('li');
for(var i=0;i<lis.length;i++){
function(i){
lis[i].addEventListener('click',function(e){
alert(i+1);
},false);
}(i);
}
</script>
- css3画一个三角形,用content:0,boder:很大,三面border透明
width:0px;
height:0px;
border-bottom: 100px solid green;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
- 图片延迟加载怎么实现,监听scroll事件,替换src
- websocket原理,应用场景:扫描二维码后,跳转登陆
- 前端路由的实现原理,hashchange
- ES6中有什么特性,promise实现原理
- 手写after方式清除浮动,一个冒号和两个冒号的区别
.clearfix::before, .clearfix::after {
content:"";
display:table;
}
.clearfix::after {
clear:both;
}
.clearfix {
zoom:1; /* For IE 6/7 (trigger hasLayout) */
}
- CSS选择器,nth-chlid(n)和nth-type(n)区别
**ele:nth-child(n):ele的父元素的子元素的第n个,且n为ele
ele:nth-type-of(n):ele的父元素的子元素的ele集合里的第n个**
计算机网络
三次握手
四次挥手
操作系统
进程和线程的区别
进程间如何通信
操作系统中有几种状态
百度一面
1、手写jsonp的实现
2、手写链表倒数第K个查找
3、http请求头,请求体,cookie在哪个里面?url在哪里面?
4、垂直居中,多行文本垂直居中
5、原型链的解释
6、对闭包的理解,实现一个暴露内部变量,而且外部可以访问修改的函数(get和set,闭包实现)
7、{}=={}? []==[]? null==undefined?
8、基本的数据类型
9、基本的两列自适应布局
10、unix中常用的命令行
11、OSI模型,HTTP,TCP,UDP分别在哪些层
12、网站性能优化
13、解释平衡二叉树,以及在数据结构中的应用(红黑树)
14、快排的时间复杂度和空间复杂度。
百度二面
1、手写一个jQuery插件
2、在jquery方法和原型上面添加方法的区别和实现(
.extend,
.fn.extend),以及jquery对象的实现(return
new jQuery.fn.init)
3、手写一个递归函数(考察arguments.callee,以及arguments的解释)
4、对前端路由的理解?前后端路由的区别?
5、介绍一下webpack和gulp,以及项目中具体的使用
6、你对es6的了解
7、解释一下vue和react,以及异同点
8、关于平衡二叉树
9、前后端分离的意义以及对前端工程化的理解
10、使用css实现一个三角形(盒模型border和css旋转两种方法,主要考察css3旋转)
11、原生ajax,用promise手写ajax
原生:
var xhr = new XMLHttpRequest();
xhr.onreadyStateChange = complete();
xhr.open('GET',url,true);
xhr.send();
complete(){
if(xhr.readyState ==4&&xhr.status==200){
}
}
12、手写一个类的继承,并解释一下
13、解释一下call函数和apply函数的作用,以及用法
改变this的绑定,通过设置参数使当前函数可以使用其他函数的方法,除第一个参数以外,call的参数是逗号区分,apply参数是数组(当不知道参数内容是可以用数组)
call,apply都是立马调用对应的函数而bind会生成一个新的函数(setInterval())
百度三面
总结就是,如果你前一面没有答好的问题,下一面依然很可能问你,所以做好总结。