17场前端面试官经验总结

最近小组被安排了新的开发项目,需要急招一个15k左右的中级前端,所以在5天时间面试了17个人,我负责其中的一面环节,最后给了4个人合格,特以本文记录我这5天的面试经验。

1.简历的注意点

对于面试官来说,了解候选人的最开始的途径就是简历,一份好的简历可以快速建立起来自己的专业形象,而对于大多数人来说,写出亮点很难,但最起码要减少一些不必要的失误。

1.1.教育背景

如果毕业的院校不是很好,或者说不是计算机类的专业,可以把教育背景写在简历的下方不显眼的地方,但不要不写教育背景。

1.2.基本信息

1.政治面貌群众甚至是团员这种信息实在没必要写在简历上。
2.github,博客,如果star很多,粉丝很多的话,写在简历上是个加分项,但是如果里面没有什么有价值的内容,还写在简历上,我觉得会很减分。

1.3.专业技能

在面试中问问题的时候我很喜欢看着专业技能上出现的技术去进行提问,特别是写的是“熟悉”,“熟练掌握”的,如果写的是“精通”某种技术,则会更直接的去提问该技术更深层次原理性的问题。
但是这并不代表在专业技能一栏中不要出现“熟悉”和“精通”,恰恰相反,“熟悉”和“精通”更令人感觉技术靠谱,但前提是你对该技术一定要有相应程度的掌握,如果自己写在专业技能里的技术都一问三不知,则会很减分 。
很多同学在简历中会写“了解”某某某技术,这些技术通常都是自己简单了解,但是并不深入,也没法去熟练使用的,对于这种写法,我觉得不应出现过多 ,有1-2个“了解”的技术就可以了,而且如果被面试官问到了这个“技术”,最起码要说出这种技术是做什么的,能解决什么问题。

1.4.工作经历

频繁的跳槽肯定会非常减分,3年2跳,甚至2年3跳的,就算通过了一面,也有很大的几率会被二面或者HR面刷掉,对于跳槽频繁的同学来说,除了在选择工作的时候更加谨慎一点 ,减少自己的跳槽频率,另外可以参考一点我的见解:
对于面试通过后的背景调查,一般的公司也最多只会调查你的前1-2家公司,并不会调查你的全部工作经历,所以有时候可以对自己的过去进行一些简单的修饰。

1.5.项目经历

对于前端的简历来说,项目经历是最重要的部分,项目数量肯定不能太少,但也不要大大小小的,包括个人demo,一股脑十几二十个全怼在简历上,让人看着眼花,大致数量我觉得1年经验对应2个项目为最佳。
一般每个项目的描述分为下面几个部分:

  • 1.项目名称
  • 2.项目时间
  • 3.项目描述
  • 4.项目所用技术
  • 5.我的职责

“我的职责”是最重要的,对于这个部分我的建议:
1.请不要机械性的描述项目所有的技术,这个技术描述直接写在第四部分“项目所用技术”就行了,比如:

1.使用vue-cli构建项目
2.使用element开发页面
3.使用axios发请求
4.使用 sessionstorage 储存用户登录状态
5.使用swiper实现图片轮播效果
...

上面的这些都是一些任何前端都会做的事情,写在“我的职责”中真的都是废话,完全没有看点。我觉得在这个“职责”中更应该说你所承担的一些更深入性的责任。
2.请记住你写的每一个点都有可能会被面试官问到,所以不要为了让自己在项目中承担职责更高大上,而去随意写一些自己完全没有参与和了解的内容,如果写,也一定要事先做一些准备,如果被面试官发现你是一个不诚实的人,那么此次面试基本也就挂了。

2.面试中的注意点

2.1.基础问题

作为一名前端,如果连闭包,原型链,同步异步,es6这些都讲不清的话,我实在是很难相信他在工作中不挖坑,所以对于这类基础问题,请一定要准备好,肯定没法做到面试官问的你全都会,但最起码不能在这方面表现的太差。

2.2.高频出现的开放性问题

比如

1.自我介绍
2.介绍一下你最近参与的这个项目
3.介绍一下你最近在了解的最新的前端技术 
4.说说你关于前端项目性能优化的理解 
5.印象中你在项目中遇到最困难的问题,最棘手的问题
...

这类问题的出现频率极高 ,尤其是 “自我介绍”,几乎是必问题,我遇到有的面试者连自我介绍都磕磕绊绊,且只有1-2句话,连个结束语都没有,对于这种人,要么能力有问题 ,要么态度有问题,而这种情况,我觉得都可以直接pass掉了。

3.问题总结

对于我来说,在面试之前我都会用10分钟左右去仔细阅读面试者的简历,去确定自己考察的重点方向,在面试过程中,我一方面会根据面试者简历上出现的东西去提问,然后根据面试者的回答再进行深挖,另外一方面,我有自己准备了一个面试题小题库,如果感觉面试者的简历上没有我很感兴趣的,我就会随机从题库中问一些问题,然后再根据面试者的回答去灵活应对。下面贴出我此次面试过程准备的题目:

3.1.html

1.说下前端页面进行本地储存的方法,它们的区别是什么
2.HTML5如果不写<! DOCTYPE html> ,页面还会正常工作么
3.说说对<meta>标签的了解

3.2.css

1.介绍一下flex布局吧(用法,常用属性),追问:用flex实现左边定宽,右边自适应布局(左边的子元素给个固定的宽度width:100px,右边的子元素 flex:1 )
2.px、em、rem三者的联系和区别
3.谈谈你对CSS盒模型的认知
4.需求实现:鼠标移动到某个元素上,该元素放大到原来的1.2倍,过渡时间0.5s

3.3.js

1.说一说在js的函数中,怎么实现函数的私有方法、公共方法以及静态方法
2.说说对原型和原型链的了解
3.说说setTimeout 的执行过程(setTimeout(fn, 0)多久才执行)
4.说说对浅拷贝与深拷贝理解
5.数组去重怎么实现(set)
6.你了解js的回调地狱吗?回调地狱是怎么形成的?回调地狱的解决方案有哪些?
7.数组的遍历方法,对象的遍历方法
8.请求三个接口,需要等到三个接口都拿到数据后再对数据进行进一步的处理,接口响应时间比较长,通过promise实现最多等待2s,如果接口没响应就告诉用户当前网络较差,请稍后再试
9.什么是闭包,闭包的副作用
10.说一下js中一些常见的this指向吧,比如函数中, 对象中,事件中,构造函数中,箭头函数,怎么改变this的指向
11.两等和三等的区别,0和false相等吗,0和undefined相等吗
12.如何判断一个对象是不是空对象
13.箭头函数和普通函数的区别,什么情况不应该用箭头函数
14.类数组转为真正数组的必备条件

3.4.vue

1.Vue 的核心是什么(数据驱动、组件系统)
2.vue和jquery的区别是什么
3.v-if 和 v-show 有什么区别?
4.v-if和v-for哪个先执行,v-if 和 v-for 为什么不建议一起使用
5.computed 和 watch 的区别和运用的场景
6.vue如何实现数据双向绑定
7.vue3了解吗?vue3又是如何实现的呢
8.说下vue组件的生命周期,created和mounted的生命周期的区别
9.说下组件的通信方法
10.什么是虚拟DOM,虚拟DOM的优缺点
11.为什么Vue的视图采用异步渲染呢?了解nextTick吗?(什么情况下会用,异步渲染的最后异步)
12.v-html的使用需要注意什么
13.举几个vue性能优化的例子吧
14.写 React/Vue 项目时为什么要在组件中写 key,其作用是什么?

3.5.webpack

1.说说webpack的几个核心概念
2.说说webpack运行的基本流程
3.有做过webpack性能优化吗?说说你对webpack进行性能优化的一些经验(从哪些角度去进行优化)

3.6.模块化

1.平时有接触过node吗?能说下对CommonJS与ES6 Modules规范的了解以及它们的区别吗

3.7.性能优化

1.说说对前端项目性能优化的整体思路(代码层面,框架层面,静态资源加载(cdn,懒加载,http缓存)

3.8.小程序

1.信小程序:app.json这个文件是做什么的,讲讲里面的配置项
2.讲讲微信小程序和h5的区别

3.9.前后端通讯

1.说说get请求和post请求的区别
2.说说HTTP协议常见的状态码,304?
3.说说post请求的content-type的几种类型
4.为什么第二次打开某个网页要比第一次快很多?说说你了解的HTTP 的缓存策略(缓存的分类,实现方式)
5.对前端安全有了解吗?什么是xss攻击?
6.什么是跨域,跨域的解决方案
7.前端常用的请求方法,前端请求常用的触发方式

3.10.node

1.node中加载相同模块,会重复执行模块中的代码吗(不会,因为commonjs当加载到相同模块的时候,会首先检查是否有缓存,有缓存的则不会再去加载代码。)
2.node单线程容易崩溃,怎么维护服务的
3.有没有考虑过高并发场景,如何解决
4.node内存泄漏的检查方法,大型项目在运行时发现内存占用率越来越高,怎么去检查

3.11.UI框架

你有二次封装过ElementUI组件吗?

3.12.学习

1.了解过vite吗,它和webpack的区别是什么
2.了解过ssr吗
3.前端的技术迭代非常的快,你工作之余都通过什么途径去了解和学习新的前端技术?跟我介绍一下你最近感兴趣或者在学习中的前端技术吧

本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):