今天面试了一个应聘前端岗位的开发。虽然自己做前端TL时间不长,但想法和之前比确实是有些不同。所以借此次面试,做一些复盘。供以后参考。以前写的面试文章都是从被面试者的角度来写的。这是第一篇从面试者角度来写的文章。
目录
一、希望招到什么样的人
现阶段,我觉得我们团队需要这样的人:
- 学习态度认真、积极。
- 技术基本面不差。
- 善于团队协作。
- 主观能动性强,主动、有担当。
- 愿意加班,有较强的抗压能力(注:不表示会让人一直带着很大的压力工作,但是偶尔有些压力要能扛得住)。
相应地,不需要这样的人:
- 会给团队氛围带来不良影响的人、难管理的人。比如喜欢找借口、摸鱼打酱油的人。
- 与团队和项目磨合一段时间后,单位工作时间的产出仍旧偏低的人。
- 跳槽频繁的人。
以上是招人时希望达到的目的。不过面试时间毕竟短暂,实际招到人以后,和预期存在误差是正常的,只要是态度没啥问题的人一般都能救回来——技术不够态度来补。
关于加班和抗压能力的说明:每个公司所处的阶段不同,对员工加班的需求也是不一样的,这方面只要入职前对应聘者尽到了告知义务就没有什么问题,你可以喜欢六点下班,那选择六点下班的公司就可以了,没有人会拦着你。如果你是进不了六点下班的公司或者能进的六点下班的公司不符合你期望,那就不要觉得有什么不合理了——你不能既想获得的比别人多,又想付出的比别人少。成年人要对自己的选择负责,不要做巨婴。每个公司里员工加班的程度是市场的手无形中控制的,如果某个公司一搞加班就老员工离职且招不到新人,那这个公司就不会搞加班。
二、今天的面试题
整体上,我是顺着对方的简历及他聊的内容来问衍生问题的,这样更容易了解对方。
背景信息:对方有全栈开发经验。
为方便起见,将问题分成了几种级别:
- 拔高题:不错(+5分),一般(+0分),差(-2分)。
- 中等题:不错(+2分),一般(-1分),差(-3分)。
- 基础题:不错(+1分),一般(-2分),差(-4分)
2.1、请面试者自我介绍
这个基本上是面试开场必备流程。但这个流程是很需要的,主要目的:
- 了解对方的语言表达能力和亮点
- 趁机熟悉简历
2.2、重复请求(拔高题)
- 支付环节短时间内如果有多个相同请求进到服务里该如何解决?(接口幂等判断、前端按钮节流)
- 如果碰到类似抢红包的场景,用户确实会在1秒内触发很多个请求,但是如果用户点了9次,肯定我们只能让他抢9次,不能因为出现一个重复请求就帮用户多抢一次,该怎么解决这个问题?(其实还是刚才的方案,后端还是做幂等判断,但是客户端需要对请求做一个处理,比如每次请求都带上一个会逐次递增的数值来保证前端不会短时间能生成2个完全一样的请求即可。)
2.3、请求头和响应头(拔高题)
请求头、响应头上有哪些东西,这里面哪些东西你在封装ajax请求时会比较关注?
- content-type
- 常见请求方法有哪些
常见状态码有哪些,以及其常规含义:
- 301和302的区别?浏览器如何知道重定向时该往哪个目标地址跳转?
2.4、ajax请求的全局loading状态处理(拔高题)
假定我们希望页面上有请求时会全局显示一个带蒙层的loading动画,当页面有多个并行请求时,如何控制loading动画的显示/隐藏。当页面有多个串行请求时,如果避免loading动画关掉后马上又被打开的现象?
2.5、SQL(基础题)
对方简历里提到了所以简单问下:
- select *有什么问题吗?
- 加where子句后为什么有些场景下执行速度会比较慢?
2.6、正则(中等题)
- 对正则熟悉吗?能否手写一个手机号的正则?(基础题)
- 知道零宽断言吗?(拔高题)(有大概印象即可)(如果上面的问题不会就不问这个)
2.7、权限控制(中等题)
- 精确到页面级别还是按钮级别?实现方式?
2.8、vue常用指令(基础题)
- 常用指令有哪些?
- v-if和v-show的区别?
2.9、项目部署(基础题)
问这个主要是因为对方简历里提到了,正常前端面试我不会问后端项目的部署。
- 如何部署?如果服务挂了怎么办?
- 之前部署的服务是否是单例的?
2.10、webpack优化(拔高题)
- 对webpack做过什么优化?
2.11、事件代理(基础题)
能说出大概原理即可,不要求手写。
2.12、在团队里担任的角色
2.13、Vue路由(中等题)
- history和hash模式的区别(基础题)
- history模式时nginx和webpack配置的要点是什么(拔高题)
2.14、ES6+(中等题)
- 常用的ES6+新特性有哪些?(基础题)
- 一个Promise里如果需要在其结束后执行某个异步操作B怎么办,如果要在B完成后接着执行异步操作C怎么办?如何避免这个方法越写越大?(拔高题)
- async/await?(基础题)