之前在 阿里、得物、涂鸦、途虎面试心得 里说了面试的考点,这篇主要是讲面试官,个人认为一个好的面试官应该是按照简历展开面试,针对简历上的技能点来展开,这样能从面试者最熟悉的点切入,由浅入深全方位的考量一个面试者

得物一面男

看打扮就明白不是组长级别的,后得知是同事面,问了比较详细,从简历上的种种到部署,可以看出是个面试生手,因为一个熟手不会像他这样一直问一些技术点,生怕我不会一样

得物二面男

是个 30 多岁的说话比较快、发音不标准的男人。和他对话后,我不太喜欢在他底下做事。他会问一些开放型的题目,比如他们要用微前端(我只知道这个技术,但没用过),问我为什么要用微前端,我针对微前端展开,说了几点。他不满意,说微前端最好的好处是方便运营人员,避免他们在两个系统里跳来跳去。惊了,原来是让我跳出程序员的思维,早说,后面就引着这个思路乱说,到现在一个问题印象也没有,因为大多数在临时起意胡说的

涂鸦电话面(女)

我当时有点傻,去了涂鸦上海本地,明明是电话面试,竟然没注意到,去了之后没前台,联系 HR,说是约电话面,ok,我蠢。到楼下看有没有充电宝,电不到 20%,找不到出门找全家,没想到电话来了,让我自我介绍,左右为难下回到大楼坐在沙发上打电话

与她交流,能看出她的实力,她是个很会抓知识点的面试官

开始讲针对项目中登录的问题,简单交流,后续只见她问

她问:“你们怎么做到锁单,就像用户进去下单页后,点击下单后锁单,你们怎么做?”

我说:后端会把这个用户 id 和商品 id 关联锁住,(我知道她想考前端要做什么事情)前端方面会在请求点击后就把按钮置灰并让他不能点击,而且还可以通过防抖、节流优化

她问:“那这个场景是用防抖还是节流?”

我想了想说:“节流”

她说:“那你能手写一个节流吗?“

我无语了,我 TM 都在准备手写节流,让我口喷,怎么喷,吞吞吐吐下说的很差,但说到几个关键字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function debounce(func, wait, flag) {
let timer = null
if (timer && flag) {
return function (...args) {
timer = setTimeout(() => {
func.apply(args)
}, wait)
}
}
return function (...args) {
timer = setTimeout(() => {
func.apply(args)
}, wait)
}
}

PS:差不多就是上面的回答,错的,错的,错的

她说:ok,你回答里说到三个点,你能说说三个点是什么吗?

我说:展开运算符,他的用法是能让数组的值展开

她问:除了数字,还能展开哪些数据类型

我开始不知道了,没想到 ES6 还有这么多讲究,我胡扯到 String 类型,Object 类型

她说:String ?你确定吗?

我怂了,这个知识点我不知道

她问你刚才说的 setTimeout 中用箭头函数,你能说说箭头函数与普通函数的区别吗?

这个题在得物二面的时候就问到了,我回答

阿里面试官

与他聊天更像是在与监考老师打交道

阿里:我先问你几个 CSS 方面的问题

我:好…

阿里:我再问你几个 React 方面的问题

我:巴拉巴拉

阿里:最后问你一个 JS 方面的问题

我:

途虎面试官

react 方面

this.setState

异步还是同步?

出题 class C

其中有 promise

链式调用

出题 链式调用

简单化的 链式调用

了解 Fiber 吗

说完 fiber 后,是多了调度器

调度的顺序是如何?

谁的优先级在前,谁的优先级在后

最后一个问题

性能优化怎么做

我说从工程方面讲,webpack 的打包

从 React 方面讲,有 React.memo 、React.useCallback 等代码优化的点

从 网络方面考虑,做 缓存 机制

这里说了下强缓存、协商缓存

又问我图片懒加载怎么做

不知道?

引导

通过图片本身距离顶部的距离,通过监听 scroll …