2019 前端面试系列(1)

2019 前端面试系列(1)

前言

北京某公司(数据类)面试,这也是我回国后第一次前端面试,相对来说比较难,当然这家公司还是很好的,面试官水平很高,面试一共分为三轮,其实在第二轮的时候很多原理没有答好,三轮不论面的怎样,我都知道是不会过去了

一面

一面是电话面试,基础知识问了好多,大概40分钟这样,当时因为一些琐事我在广州机场面的,聊的还不错,IFC 和 Event loop 我说的并不算好,也勉勉强强让我二面了,面试官人很好,后来加了WX,在之后的学习和面试中经常鼓励我,这里真的感谢他!

基础类问题

  • Event Loop - 推荐看 what the hell is event loop视频
  • IFC BFC - 行内块放一起会有1em的间距
  • ES6 新特性 const/let之类的 - 基础类的,没啥好说
  • p 标签特性 - p 标签里不能放块级元素

二面

记得一面是周五的下午,我从广州机场回到北京之后,就开始准备周一的二面,二面去了他们公司,因为是真正的第一次面试,其实很紧张,上午10点到的公司,12点多结束的面试

原理类问题

  1. 浏览器渲染机制,重排重绘
  2. vue双向绑定原理
  3. promise对象,两个参数
  4. 事件委托 delegation
这几个问题现在看来确实问的不算难,也很有必要,当时我太菜了,不懂原理,回来之后恶补!

算法类问题

  1. 三数之和 threeSum
  2. 斐波那契数列的两种实现方式(循环和递归)
第二个问题我都写出来了,threeSum当时只想到暴力解法,回去之后写了twoSum, 
其实开一个字典就可以减少时间复杂度,后来发现双指针也可以解
其实二面完了之后我知道已经没有机会了,善良的人力小姐姐还是给我安排了三面

三面

三面象征性的问了两个基础问题,然后就是算法,看来他们公司真的重视这个,当然了,算法很重要,也是区分程序员的一个重要指标吧

  1. 数组中所有的0移到前面 moveZero
  2. 判断质数 isPrime
1. 移动0,不能破坏0的位置,遍历一遍把0放到最后,再记录一下放了几个,然后拆了数组再合并就可以了
2. 判断质数,例如32, 最简单的办法就是从31 mod 到 2, 但是这样时间复杂度是n,然后面试官给出了
n/2, n^1/2的做法,真的牛逼
后来这个问题问了两个博士大哥(这么菜居然认识博士)
数学系的博士说,找出前50个质数,用这50个质数去mod,就可以了
(当然找前50个质数,变成了鸡生蛋的问题)
我哥哥说:当时原话是“这个问题不简单”,可能我跟他认知差太多了,至今也不太理解这句话

最后

面试完之后已经是下午三点了,我一天没有吃饭,身心俱疲,还要坐2个小时地铁回住的地方,嗯!其实这件事情过去这么久,我现在写出来,心里还是五味杂陈。当时调整心态:

  1. 这些问题不会,人家公司不用,太正常了
  2. 菜是原罪,这都不会,真菜?
  3. 回去之后吃了一顿丰盛的外卖,洗个热水澡
  4. 把面试没有答出来的问题写好

如果认定了一件事,就不要放弃!知识盲点确实很多,但是会越来越少!这才是第一仗,还好当时心态没有崩!哈哈

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