面经总结

  1. 手写闭包,继承
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');
  1. 手写事件绑定
<ul>
    <li>1li>  
    <li>2li>
    <li>3li>
ul>
<script>
    var lis=document.getElementsByTagName('li');
    for(var i=0;ifunction(i){
            lis[i].addEventListener('click',function(e){
                alert(i+1);
            },false);
        }(i);   
    }
script>
  1. css3画一个三角形,用content:0,boder:很大,三面border透明
  width:0px;
  height:0px;
  border-bottom: 100px solid green;
  border-left: 50px solid transparent;
  border-right: 50px solid transparent;  
  1. 图片延迟加载怎么实现,监听scroll事件,替换src
  2. websocket原理,应用场景:扫描二维码后,跳转登陆
  3. 前端路由的实现原理,hashchange
  4. ES6中有什么特性,promise实现原理
  5. 手写after方式清除浮动,一个冒号和两个冒号的区别
.clearfix::before, .clearfix::after {
  content:"";
  display:table;
}
.clearfix::after {
  clear:both;
}
.clearfix {
  zoom:1; /* For IE 6/7 (trigger hasLayout) */
}
  1. 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())

百度三面
总结就是,如果你前一面没有答好的问题,下一面依然很可能问你,所以做好总结。

你可能感兴趣的:(面试)