2019届个推前端面经

记录2019.1.19个推前端面试。

笔试

下午1.30左右到了公司,先做了一下笔试题。大致内容如下:

  1. 什么时候display: inline-block会产生间隙?如何解决?

  2. 如何把span元素放到距离浏览器顶部20px左边200px?

  3. 什么时候会产生CSS阻塞?什么时候会产生JS阻塞?

  4. 写出下列代码结果

let x= [1, 2]
let { ...y } = x
console.log(y)    //{0: 1, 1: 2}
  1. 什么情况下发生重绘/回流

  2. JS如何实现继承,如何避免原型链上数据共享?

  3. 一道关于事件机制的输出问题。(setTimeout, promise, then)

setTimeout(function () {
  console.log(1)
}, 0)

new Promise(function (resolve) {
  console.log(2)
  resolve()
  console.log(3)
}).then(function () {
  console.log(4)
})

console.log(5)    //2 3 5 4 1
  1. 实现二分查找,已经算法复杂度。

一面

一面是两个哥哥来面试的,一个看起来比较严肃,一个小哥看起来白净温和一些。第一次经历两个老哥同时面试,心里丝毫没有波澜是不可能的。

  1. 简单的自我介绍。主要讲了一下自己的实习经历以及使用的技术栈。

  2. 因为看到我简历上面写了三个技术栈,询问了一下我对三大框架的看法。(纯属瞎扯

  3. 就面试题的事件机制的问题,展开了提问。讲了一下同步/异步任务,宏任务/微任务。然后问了resolve()之后的值是否会打印?在promise里面添加return的效果。(回答得一塌糊涂

  4. 输入url到页面展示的过程。在整个过程之中,有什么可以优化的点?(请求那一块不太熟悉,讲了一下重绘/回流,结合了一下项目

  5. ES6里面用过的方法。(let/const, Object新增方法, 扩展符, Promise, class, module)

  6. promise里面都用过什么方法。(没办法,我太菜了,只能讲一下then,catch,all)。然后问了一下什么样的异常能够在内部捕获到(当时全场寂静,面试官也会过了)。聊到了promise.all,发送多条请求的,然后发生异常什么的。(然后我结合实际项目将可以对这个使用)。接着又被面试官问到,all的一个弊端就是必须全部resolve返回,会出现超时的情况怎么处理之类的。被面试官普及到了race这个方法。

  7. 讨论了一下sort排序里面使用的是什么排序方法。

  8. 问了一下css选择器的问题,经常使用的选择器。然后选择器的匹配方式(先匹配哪一个)。+/>/~分别是什么选择器。

  9. 项目中使用了localstorage/sessionstorage,问了一下两者的区别。打开一个新的标签页sessionstorage会不会失效之类的。他们储存的大小是多少。

  10. 看我博客里面写了节流和防抖,问了一下这两个区别(回答的并不是很清楚),瞎扯一下项目中为什么会使用这两个概念。

  11. 手写合并两个有序数组(感觉像是归并排序最后一步)。

  12. 未来的职业规划,以及想问他们的问题。

大概是我能够想起来的一面内容,很多问题都没回答上来,遇到一些不会的问题,他们也会回答一下。大概面试了一个小时的样子,虽然感觉不是很好,还是让我稍等一下。然后迎来了二面。

二面

二面面官来的时候,一不小心看到他的工牌,发现他好像我之前在boss直聘上看到发不过岗位的一个哥哥。好像还是什么前端大经理之类的。

  1. 简单的自我介绍,自然重点还是技术栈和实习经历。

  2. 问了一下为什么重第一家实习公司辞职,貌似他觉得那家公司还不错。

  3. HTTP协议了解吗?不敢回答特别直接,把自己了解的请求头/请求方式/缓存机制讲了一下。

  4. 数据结构和算法了解嘛?(学过都忘了)链表和数组的区别。

  5. 使用过较多的技术栈(都是浅薄的学习),react有什么好处。讲了一下虚拟DOM,diff算法,key的重要性。

  6. 数组去重(原生)。如果数组里面有对象怎么去重。(最后转化为判断两个对象是否相等)。

  7. 问了event loop/ES6都用过什么。(悄悄说之前问过了)

  8. 未来的职业规划,以及想问他的问题。

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