搜狐大数据中心前端面试

一面(60分钟)

1.vdom原理,为什么性能好, diff算法。最后也要用dom的api,直接操作不效果更好为什么还要用v-dom

2.游览器渲染过程,重绘和回流是什么,发生在何时,那些情况引起,如何优化

3.两栏布局

4.css做一个进度条动画,进度条左右是带弧形的(不会)

5.css菱形,translate的矩阵是怎么算的(没答好)

6.原型链

7.this指向

8.作用域,对const的值修改会输出什么

9.闭包

10.堆栈、js那些在堆那些在栈、垃圾回收。给了个过程与对象分别使用两种垃圾回收机制判定。内存泄漏。能否用编译原理解释闭包与垃圾回收。

11.正则匹配一个邮箱

12.获取页面元素位置与宽高

13.对象继承

二面(90分钟)

估计一面面试官出去告诉二面我css不好,于是二面一个css问题都没问我。

1.输出以及为什么

Function.prototype.a = 'a';
Object.prototype.b = 'b';
function Person(){};
var p = new Person();
console.log('p.a: '+ p.a); // p.a: undefined
console.log('p.b: '+ p.b); // p.b: b

2.输出以及为什么

const person = {
  namea: 'menglinghua',
  say: function (){
    return function (){
      console.log(this.namea);
    };
  }
};
person.say()(); // undefined
const person = {
  namea: 'menglinghua',
  say: function (){
    return () => {
      console.log(this.namea);
    };
  }
};
person.say()(); // menglinghua

3.输出以及为什么

setTimeout(() => console.log('a'), 0);
var p = new Promise((resolve) => {
  console.log('b');
  resolve();
});
p.then(() => console.log('c'));
p.then(() => console.log('d'));
console.log('e');

async function async1() {
    console.log("a");
    await  async2(); 
    console.log("b");

}
async function async2() {
   console.log( 'c');
}
console.log("d");
setTimeout(function () {
    console.log("e");
},0);
async1();
new Promise(function (resolve) {
    console.log("f");
    resolve();
}).then(function () {
    console.log("g");
});
console.log('h');

js事件循环机制。node与游览器端区别。每个事件发生在何处。(区别没答好,其他ok)

2.写一个构造函数,实现class里的#开头是私有变量(说了匹配与模块模式实现私有变量,没改写get()方法所以被说有问题,经过提醒知道了,算是最大的收获)。

3.用gulp写插件编译这个语法到ES5能不能写出来。(操作AST就行了,应该没问题)

4.实现async(不会,实际是promise语法糖)

6.promise异常处理,实现promise

7.单页应用中游览器url跳转变化了,但没发请求是什么原理,怎么实现的(说了spa路由及原理)

8.http缓存机制,localStorage、sessionStorage。能不能用本地缓存实现类似http缓存机制。indexDB和webSQL。手写连接查询SQL语句。(没问题,能实现)

9.开发者工具中,关于性能的有哪些参数。怎么用。怎么计算首页时间。

10.正则匹配http://www.sohu.com/ 中的主域名(?=即可)

11.反转单链表(写了个递归的)

12.单元测试,敏捷开发与测试驱动开发

13.前端安全的了解:XSS、CSRF、点击劫持、canvas破解验证码,前端sql注入

14.PWA了解多少

15.react生命周期。你不会?会什么。vue,那vue生命周期吧。

三面(20分钟)

1.linux文件系统(不会,一出来记起来就是ext2,ext3,fat32那些东西)

2.FIFO、LFU、LRU缓存换页算法

3.进程线程,线程通信

4.画出OSI七层,TCP/IP四层

5.TCP和UDP区别,三次握手四次断开,为什么握手三次,断开四次;TCP的可靠性如何实现;TCP重传机制怎么实现,TCP拥塞控制有哪些;能不能用udp实现tcp

6.CSMA/CA协议(不会)

3 条评论

发表评论