03月09, 2018

沉思录(4)

最近帮忙面试了两个前端,想聊一下这方面的话题。

话说看了很多简历,使用的都是vue的技术栈,很少有涉及react的,也不知道是不是因为react上手成本太大了。不过最近的react版本,context和即将取消will这些生命周期,确实让人挺头疼的。

第一个前端,大概做了四年+的前端。基础有些偏弱,问了一下css的定位属性值有几种,只答上三种:relative、absolute、fixed,好歹再回答一个static,就算勉强过了。(答案是五种)。实际上,我提示她了,如果一个绝对定位元素,想要恢复,不再定位,要怎么改,或者说position的默认值是啥。

css引申开来的问题还是比较多的,譬如overflow的默认值是啥,可能也是鲜有人知道,因为有时候也跟做的项目有关系,踩没踩过坑之类的。还有诸如让对方说一下盒模型啥的。

当然我并不能因为她回答不上来这个问题,而觉得对方没啥本事。只是说在面试前,真的好好准备还是有必要的。像面的第二个前端,可谓是准备地比较充分。

我问了一下他react16的点,他给我说了fiber,然后说了一下第一阶段、第二阶段什么的。问了一下他继承这一块,他的回答不是太好,只说了对象object的继承,for in 然后hasownproperty赋值进去。

其实这一块考点比较多,比如说es6的class是怎么实现的,extends是怎么实现的,constructor里面的super是怎么实现的,有没有看过babel编译出来的结果?

这里大概涉及的方法有这些:

  • Object.create // 创建一个新对象
  • Object.setPrototypeOf(a, b) // 将a的proto指向b
  • Object.getPrototypeOf(a) // 获取a对象的原型,可以用来模拟super,一旦这个a里面没有某个方法,会往上找

像之前在老东家的时候,我另外一个同事,先会通过两道简单的js题目来刷对方:

  • js的数据类型(要是现在能答上Symbol,并能说出它在实际应用中的场景,那真是比较厉害了)
  • js的数组方法

其实我个人觉得还可以让对方说一下event loop,考对方堆栈、事件队列这些知识,甚至还可以考查node中的event loop(线程池+同步IO)

然而我司这边面试前端,可能就一轮或者两轮的技术面,在这么短的时间内,真的能确定对方的水平一定是OK的么?

这就引申出来了一下点,我司的前端面试是否合格?或者大部分的中小公司是否合格?

像大公司会安排前端面试四到五轮,每次大概可能半个小时到两个小时不等,事实上我个人觉得还是有必要的。

因为现在教别人面试的视频太多,我随便截两个imooc的视频上来。

alt

这就很容易导致一些人在面试前看一下视频,学一下技巧,然后就出去面了。如果不考他的编码能力,真的会感觉那个人说的非常不错。所以我个人思考,觉得在面试中,加一些现场写代码,或者给他一个之前在项目中碰到的难题(已经解决的),让他提供思路看看,非常有必要吧。

不过面试这东西还是得看和面试官的缘份,之前面另外一家公司的时候,和一个面试官挺投机的,只是遗憾后面没有去(orz)。

本文链接:www.my-fe.pub/post/my-thinking-4.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。