今日头条前端面试过程与面试题

头条的面试业界最难,为准备头条的面试,我刷了好几天的题目,虽然最后被拒,但是在准备过程中知道了很多开发中被忽略的原理问题。这给我之后的面试打下了很好的基础。

到了头条总部,前台给了一套题。三道简答,三道编程题

简答题:

  • 什么是函数节流,为什么要使用函数节流,如何实现
  • 描述一下JS 的new操作符具体做了什么
  • 简述document和window两个对象区别

编程题:

  • JS编程实现简单模板引擎变量替换

    JS编码实现一个render方法,使得可议这样调用:
    const year = ‘2017’;
    const month = ‘09’;
    const day = ‘21’;
    const str = render(‘ year y e a r − {month}-${day}’)({year,month,day});
    console.log(str)//输出2017-09-21

  • 求二叉树是否存爱和值为N的路径

    从二叉树的根到叶子节点称为一条路径,路径上的每个节点的value之和为路径和值,是否存在一条和值为N的。

  • 封装一个ajax请求库实现get和post方法

    ajax.get(url,options).then(success, fail);
    ajax.post(url,data,options).then(success,fail);

答题时间是40分钟,其实我拿到试卷扫了一遍我就知道这面试会凉。本着来都来了的精神,和见识最难面试,硬着头皮做了一下,只有模板那个一点头绪都没有。
答完题面试官来了,年轻一看就是个学霸。看了下我的笔试答案,我口述了思路,他讲了二叉树的思路。我做的时候是遍历整个二叉树,他说可以用深度。由于算法实在不是我的强项,我之前是学电路设计的,所以大家应该明白。我估计面试官也没有见过笔试题,也没有深究下去开始正式面试。

不得不说头条确实高素质,问的问题很专业,也很基础。先问了网络协议,说一下TCP,我回答三次握手,他笑着说这是老掉牙的东西,想听听别的,我说没学过网络,他就进入下一题环节。首先要我手写一个duplicate字符串,给一个字符串,假如’abc’,输出’abcabc’, 我在原型链加了一个duplicate函数,返回this+this.接着就是经典的异步输出问题,他自己设计了好几个setTimeout问结果,我给出答案,他要我画出任务执行队列,我不知道异步执行队列是一个单独的执行队列,所以当时没画出,得亏头条问了,第二天我去另一家面试也问到了这个问题,我很自信的答出来。接下来问了个函数柯里化,其实考的是arguments,add(a)(b)(c)和add(a,b,c)都能输出a+b+c。事件流,s2元素是s1元素的子元素,捕获和冒泡顺序。在这个问题还出个小插曲,面试官听错我的答案,跟我讨论了一阵子,我解释难道不是先从上至下先捕获然后从下至上冒泡吗,他想了想说我是对的,吓了我一跳。CSS问了经典的垂直居中,BFC,BFC条件。

面试结束后,我知道肯定没过,就跟面试官说刷了很多题,面试官跟我说不光要刷题还要弄懂题目的原理。面试虽没过,但收获很多,我真心觉得过了头条的面试,其他面试都是小case。

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