金三银四跳槽季,初级前端面试攻略与经验分享

2024-08-03
来源:网络整理

三四月份正是跳槽季,很多人都会面临换工作的需求,再过几个月就是毕业季,越来越多的毕业生会面临这个问题。

同样我们团队因为业务需要,需要进行社招(今年还没有员工辞职,很感动╭(╯^╰)╮),最近看了不少简历,也跟一些朋友电话沟通(电话面试),对面试和求职有一些粗浅的看法。

因为我觉得我的技术还很青涩,工作经验也不是特别丰富,所以文章内容只是自己的一些粗浅的看法和观点,如果有不对的地方,欢迎大家指出,不喜勿喷~~~

本文可能只适合初级前端开发人员,也就是大学毕业生或者毕业2年以内的伙伴们,请自行酌情阅读~~~

(更新:最后几道面试题只是我总结的一些基础知识~~~刚毕业的你们不要有压力,不代表初级前端应聘者必须掌握的技能,只是总结了前端面试中比较常见的题目~~~作为面试官,多准备点是有好处的ヾ(=・ω・=)o)

如果喜欢的话可以点赞或者留言我会继续更新面试题~~~~,谢谢~~~

简历格式

简历长度以1-2页为宜,最好不超过2页。简历不只是字数,无论是技术还是HR,逐字逐句地阅读你的简历都是很困难的。所以简历一定要包含精华和你的优势。

我个人不太喜欢花哨的简历,只要格式整洁就行,但也要注意不要有错别字。虽然我们都知道是无意的,但确实会给人留下不好的印象。最起码说明你没有仔细阅读简历。大小写字母最好也分清楚,数字/英文和中文之间要有空格。这真的是一个好习惯。我在掘金做翻译的时候就养成了这个习惯,现在连微信聊天也基本遵循这个习惯,大大提高了阅读效率。

最好不要用招聘网站上用模板生成的简历,另外用PPT模板的时候记得删除不必要的内容。(我曾经收到过一份简历,第一行有名字,没有名字,我问他为什么没有名字,他告诉我是英文名。)

毕业2年以上者,可不写学生经历(担任学生会主席、获得过奖学金等)。

简历内容

前端的简历基本只需要基础介绍,技术栈,工作经历,项目经验就可以了。

基本介绍要包括姓名、电话及邮箱、毕业年月、学历、出生年月(有无照片无所谓,政治面貌、籍贯无所谓)。电话一定要是真实可以拨打的电话(我还真碰到过简历里电话和邮箱中间四位是****(ಥ_ಥ)的)。也碰到过打了好几次电话都打不通的(工作日非工作日都联系过)。就算你很优秀,联系不上也没用 (/□\*)

匹配项目经验和交付

个人认为现在已经2020年了,简历上基本不用写自己会用JQ了,如果你研究过(不等同于读过)JQ源码的话可以酌情写上去。

同时你的简历要和你应聘的职位相匹配,比如你是高级前端工程师,那么会用div+css写页面就没必要在简历上写了,因为这应该是最基本的要求。

简历是为了凸显你的优点,也是你自我总结能力的体现。

简历上的内容应该是你擅长的

面试的大部分问题都是针对你的简历的。所以,如果你只是找到了一篇文章,实现了一个项目或者只是写了一个 demo,就不要写在简历里了。

简历上写的一定是你所知道的一切,因为前端技术栈或者各种框架层出不穷,面试官基本不会问你没听说过的框架。那么你怎么知道你能做什么呢?看简历就知道了~

我遇到过很多简历写得好好的,但是问到却不知道是什么。比如有一份简历写着“我对面向对象编程有很深的理解”,我问:“面向对象编程的三大要素是什么?”,回答是:“概念我记不太清楚了。”好,那我改成:“你平时是怎么实现封装和继承的?”,回答是:“在日常的项目中,我几乎用不到它们。”“面向对象编程和过程式编程有什么区别?”回答得含糊不清,结结巴巴。对于这种情况,我个人觉得简历上最好不要写“我对面向对象编程有很深的理解”,因为不写的话我可能不会问,但是你的水平离“有很深的理解”差距还是挺大的,这是扣分的。

还有就是简历里个人技能和项目那一栏第一行写的是“用node开发个人博客”,刚好我最近也在做这个,所以想问问,然后得到的回答是“其实我在网上找了一篇博文,实现了一下,不过现在忘记了”。

所以你真的需要把你非常熟悉的领域写在简历上!如果你只是听说过排名,写过一个demo,那会给你的简历加分。

谨言慎行

简历中对某项技术的描述,一般包括以下文字:

理解:理解基本概念,有简单的使用经验——“用过” 熟悉:熟练掌握基本操作,有深入的使用经验——“用过很多” 精通:深入理解其底层原理和各种实现方式,有丰富的项目经验——“研究过”

记住要准确用词,并要小心使用“熟练”这个词!!

电话面试

在收到简历后,我们一般会先进行一轮电话面试(每个公司流程不一样),因为成本比较低,通过问一些基本的问题,可以大致了解应聘者的水平,以及与所招聘职位的匹配程度。

同时我建议面试者在被邀请去现场面试之前,最好先进行电话沟通,如果直接去现场面试,至少要请半天假,如果双方匹配度不高,就没必要白跑一趟。

我们的电话面试主要针对基本情况,如果你能基本满足我们的招聘要求,我们会安排现场面试。

个人认为基础好(不只是 JS 基础,还要有计算机系统基础和编程基础),熟悉三大框架之一并对其原理有基本了解是最低要求,亲手配置过项目并了解封装原理,研究过框架源码,实践过性能优化,对新技术有很好的理解都是加分项(因为我们项目中不用 node,所以基本不会问 node 的事情,除非你简历里写)。

面试官也会考虑应聘者的综合素质,主要是表达能力(只要沟通顺畅就可以),人是否很内向,回答问题的方式是否清晰有条理。

我个人会有一个面试常见问题库,然后在打电话之前根据面试者的简历来挑选要问的问题。比如前面提到,如果你的简历上写着“对面向对象有很深的理解”,那我就会准备几个面向对象的问题。

一般情况下,经过电话面试之后,我们基本就能确定面试者与我们招聘职位的匹配程度了。面试的时候,我们会记录面试者的回答,看那些有明确答案的问题是否正确,对于开放式的问题,看他/她的思路是否清晰。

我个人会问框架常用的基础 API,考察你用到什么程度,会问一些原理,比如 Vue 的双向绑定原理(Vue 2.0 和 Vue 3.0,两种实现的优缺点),Vue 的原理,diff 算法等。

电话面试完之后,我们一般会问面试者有什么问题要问。大部分面试者会问我们组做的业务,也会被问到技术方面的问题。一般这一步是看面试者的需求是什么,如果有强烈需求可以问。

电话面试结束后,一般不会直接告诉你通过与否,会说“其他同事可能会稍后联系你”。不过根据电话面试的流程,你应该心里有个大概的了解了= =

至于为什么我没有直接回答,一方面是出于礼貌:),另一方面可能是因为我无法及时给出结果。

更好的做法是面试结束后再思考,一般情况下即使面试失败,HR 也不会告诉你失败。所以默认情况下,如果一周内没有 HR 联系你,你基本就可以认定面试失败了。

现场

一般电话面试完之后都会让HR小姐姐安排on site面试,我对on site面试经验不是很多,所以这里只是给一些参考建议。

现场面试看每个面试官的习惯,有的会继续问一些技术问题,有的会重点问项目经验,现场技术面试完之后我们会给出一个评分,看是否符合招聘要求。

一般来说第一轮面试完如果能打分的话,就会跟我们技术人员确认一下,如果没有问题的话,就可以跟HR小姐说了。

给应届毕业生的建议:毕业后找工作不只是靠技能

刚毕业的时候,我觉得找工作只要看技术就可以了,毕竟我们是技术岗位。

但现在我感觉,而且和其他朋友交流之后发现,技术有时候并不像想象的占比那么高。

因为其实毕业之后的1-2年之内,我们之间的差距并没有那么大,水平上的差距也没有那么大。

这时候,其他一些品质可能更重要,比如你的沟通能力,你的性格,以及你是否脚踏实地。

同时,找工作运气和缘分也很重要,比如当时的职位是紧急职位,是新增加的部门或者是刚有人离职需要填补,这些特殊情况下,要求可能会稍微降低一些(绝对不会太多)。

所以最好向团队成员寻求推荐,这样你就能更加了解团队的情况。

但我个人感觉三年后技术水平的差距会越来越大,而且缩小差距会越来越困难。

毕业后尝试进入大公司就职

其实就好比你上大学选择名牌大学还是普通学校一样,有人说如果不想在大公司当个齿轮,可以先问问自己能不能进大公司,进之前不要心生妒忌。

有能力去不去和不能去是两个概念。

以我自己的经历和我身边人的经历来说,在大公司能学到的东西各方面都比小公司(这里的小公司不是指一些小型的精英公司)要好。

从我个人经验来说,大公司里不是每个人都是车轮里的螺丝钉,做着重复性的工作,因为你要对接很多部门,需要和各种前端、后端、产品、设计、QA 打交道。每个人的习惯都不一样,也会遇到跨部门的合作,不同部门的技术栈可能不一样,所以接触到的东西也是多种多样的;

相反小公司接触的前端、后端、设计、QA基本都是固定的,基本不需要跨部门配合,技术栈也比较固定,用了一套技术栈之后基本就不会再改,所以你对技术提升的视野可能会稍微窄一点。

另外,大公司的业务复杂度和用户数量也是小公司无法企及的。

说实话,简历里有知名互联网公司的工作经历是一个很大的加分项,基本就能获得面试资格,因为一定程度上降低了成本,因为能去知名互联网公司,说明你肯定是有优势的。

不要只知道 API,还要了解其原理

我们老大经常跟我们说:“不要只知道一些API的东西。”现在前端一个现象就是很多人用过一些API之后就以为自己掌握了一定的知识。

重点要关注一些基本的知识和原则,因为这些是长期发展的必备技能。

例如,在电话面试中被问到:“请用一句话概括它是什么”时,很多人会回答如何使用。

找工作是一个双向选择的过程,一个好的团队很重要

找工作其实是一个双向选择的过程,不只是公司选择你,也是你选择公司。如果你有能力,最好找个好的团队,做自己喜欢的事业,至少不要太反感。

其实从面试官的表情基本就能判断出团队的水平,我个人的看法是如果你还处于成长阶段,面试时能顺利回答所有问题,那么你应该慎重考虑这份工作,成长空间可能比较小。

减少跳槽频率

关于跳槽频率,这是技术和HR都需要考虑的问题。

因为我个人觉得前几年加薪最方便的途径就是跳槽,跳槽加薪会比较高,而在一家公司等加薪会比较慢。

前端开发简历怎样写项目经验_前端开发简历怎么写自己的项目_前端开发简历项目经验小程序

不过换工作太频繁其实也不好,个人觉得一年换一次有点高。

京东也明确了这一要求,实行一票否决制,50/20原则(五年内最多收购两家公司)。

关于学历

现在很多公司的门槛都是需要相关专业本科以上学历,而且以后要求肯定会越来越高。

每个公司都有不同的要求。

感觉面试里有些题目不太适用于职场。

很多人都有这样的问题:感觉面试时问的很多问题在实际工作中根本用不到。

我觉得你之所以有这个问题可能是因为你不适合这家公司的职位。

因为我在饿了么面试的时候,问了一些简单的算法题,也问了一些底层原理,但是我在面试的时候也抱怨了很多。

入职之后我发现面试问到的问题在自己的工作中确实都有用到,而且在准备面试题目的时候自己也根据平时的工作经验进行了总结。

当时觉得没有必要,因为之前的业务场景不够复杂,用户量也不够大,所以有些知识点不需要,很多产品需求需要自己去实现,现有的组件满足不了某些问题。

比如需要实现一个组织结构树,对每个节点做不同的操作,有时候需要和树结合起来,有些比较复杂的节点可能数据比较多,还需要考虑性能优化。

所以在面试的时候会问:如何遍历一棵树,并且进行优化。

重点学习底层原理和概念

有人会问底层的知识和原理有用吗?答案是肯定有的!!

至于一个人的技能,我觉得最重要的一个就是解决问题的能力,因为我们的工作其实就是解决一个又一个的问题,不管是从产品层面还是从技术层面,目标都是为了解决问题。

你了解的底层知识和原理越多,你解决问题的能力就越好。如果你知道 API 背后的原理,你将能够更好地选择使用哪个 API。

而且了解底层的知识和原理也会提高你排查问题的能力,因为你在工作中总会遇到问题:“明明是这样啊,为什么会报错,为什么不能用,为什么和我预想的不一样?”如果只知道如何使用API​​,有时候并不能很好地排查问题。

最好从官方文档中学习

想问一下大家是通过什么渠道学习知识的?

我个人的建议是先从官方文档进行学习,如果遇到问题,最好看一下源代码。

学习知识最好是从第一手的内容中获取,光看别人写的博客是不够的,就像吃别人嚼过的面包一样。包括我这篇文章,我不能保证所有的观点和知识点的正确性。当然,当你对某个知识点没有搞清楚的时候,看看别人的观点也是有帮助的。

以下是我个人的面试问题:

部分面试题(答案仅供参考,不保证正确):如何实现三栏布局(左右两边固定宽度,中间自适应)

常见的 CSS 布局

这道题主要想了解面试官的思维是否受限,实现这种布局是比较常见的布局方式,方法比较多,可以引导面试官一步步回答基本的CSS相关问题。

基本上回答最多的就是这三种布局方式,不过很多人只提到了flex,其他两种布局方式稍微考虑一下就可以想到了(o´゚□゚`o)。这道题不是要面试官用什么奇葩的技巧来回答,只是考察一下CSS的基础知识。

问1-1:flex如何实现三列布局(左右两边的宽度是怎么设置的,中间一列用哪个属性来适配)

flex中设置宽度和宽度适配应该是flex最基本的用法了,在面试中当被问到设置宽度和中间适配具体用flex的哪些属性时,很多面试官回答“不记得了,一般都是自动填充的”

问1-2:设置flex属性之后,子元素的哪些属性会失效?

, 和-

Q 1-3 / 如何用绝对定位实现中宽适配 Q2:移动端开发中rem布局的原理(rem单位换算) Q3:你自己写过组件吗 Q 3-1:如何实现样式的继承和复用 Q 3-2:你平时是如何管理自己的css的 Q 3-3:你平时会用sass/lass/的哪些函数?sass的属性对页面性能有影响吗? Q4:如何在页面上画一个圆 Q 4-1:如何在页面上画一个椭圆

<style> .sector { width: 0; height: 0; border-width: 50px; border-style: solid; border-color: #f00 transparent transparent; border-radius: 50px; } style>

问 4-2:如果圆圈边界模糊,有什么办法可以去除锯齿状边缘?

这些问题基本上可以告诉你面试者通常如何使用 CSS。对于 CSS,我认为足够了,因为我们基本上不着急处理兼容性问题(有并且我们的项目不需要兼容 IE6 等老浏览器)

JSQ1:JS 基本数据类型

.site/.ht…

问1-1 JS的数据类型有哪些,基本数据类型有哪些?

(ES6之前)其中五个是基本类型: ,,,null,,ES6还自带了原始数据类型,表示唯一值。引用类型(范围很广),还包括数组,函数

问:1-2 原始数据类型和引用类型有什么区别?

在内存中的存储方式不同,原始数据类型在内存中存储在栈中,引用类型存储在堆中。栈()是自动分配的内存空间,由系统自动释放;而堆是动态分配的内存,大小不定,不会自动释放。

内存存储方式的不同使得原始数据类型不可变,原始数据类型和引用数据类型分别通过值和地址赋值。

Q:1-3 深拷贝和浅拷贝的区别

.site/.ht…

Q: 1-4 如何实现浅拷贝 Q: 1-5 如何实现深拷贝 Q: 1-6 null 和

相同点:

这道题是JS基础的,可以考察面试者的JS基本功。

Q2:如何将数字加千? Q3:面向对象编程的三大要素 Q3-1:能否简单解释一下面向对象编程和过程式编程的区别? Q3-4:如何实现封装和继承 Q3-5:用一句话概括闭包是什么? Q4:什么是

用于 。尚未 ,但在 中的 。

翻译:该对象用于异步操作。它表示尚未完成、预计在未来完成的异步操作。

Q 4-1:它解决了什么问题?Q 4-2:如何在异步回调可用之前解决它?Q 4-3:如何自己实现一个(//a…

这也是一道很常见的面试题,问到它是什么的时候,很少有人能用一句话解释清楚,只是讲一下如何使用API​​,包括闭包,很少有人能用一句话概括闭包是什么,我个人觉得不能用一句话概括的人,对它的理解还不够深入,或者没有站在更高的层次去理解。

问题5:

在事件循环中,异步事件返回结果后,会被放入一个任务队列中,但根据异步事件的类型,事件实际上会被放入对应的宏任务队列或者微任务队列中。当执行栈为空时,主线程会先检查微任务中的事件,如果微任务不为空,则执行微任务中的事件,如果不是,则取出宏任务中的第一个事件,并将对应的回调加入到当前执行栈中……如此反复,进入循环。

-task(微任务)

这也是一道很常见的面试题,也是一道比较容易回答的题目,可以写一个函数,让面试官回答并输出

计算机相关Q1:HTML XML与JSON的比较

这道题确实是一道很基础的计算机相关题,但是很多面试官还是不能准确解释HTML(超文本标记语言)的含义,在说到XML和JSON的区别时,只能回答XML常用于配置文件,JSON用于AJAX数据传输。

Q2:从输入网址到呈现网页的流程概述Q 2-1:DNS解析的详细过程Q 2-2:http缓存控制概述(及相关缓存控制)Q 2-3:三次握手简述Q 2-4:页面加载时白屏的原因有哪些,如何监控白屏时间以及如何优化Q 2-5:标签的属性有哪些Q 2-6:标签的作用及区别Q 2-7:标签的作用

这道题真的是前端面试必问的一道题,因为它能够全面考察面试者的能力,并且可以根据面试者的回答不断深入,引出很多问题。

Q3:你接触过的前端沟通有哪些(//blo…Q 3-1:沟通的重点和目的

重点:1.发送方和接收方2.传输介质3.传输数据4.传输格式(协议)

目的:1.同步数据 2.传递指令(执行方法)

框架Q1:三大框架分别解决传统JQ开发中的什么问题?

前端不再需要操作DOM,数据驱动,直接通过改变数据就可以改变DOM

Q 1-1:Vue2.0如何实现双向绑定? Q 1-2:Vue3.0如何实现双向绑定? Q 1-3:.()和Q2的区别 Q:你用过Vue/full哪个包,解决了什么问题? Q3:Vue/的diff算法 Q4:Vue hash路由和的区别 Q5:Vue计算属性,在什么场景下用到 Q6:Vue实现的原理

对于Vue//来说,三大框架会用到哪些API是次要的,主要的是了解框架解决的问题,以及实现原理。

打包工具Q1:相关的,你自己配置过吗Q1-1:它和其他​​自动化构建工具(gulp,,)有什么区别(/post/...)Q1-2:模块化解决了前端的哪些痛点Q1-3:和的区别,举几个常用的和并解释一下它们的功能Q1-4:打包流程Q1-5:打包后会生成哪些文件Q2:打包文件太大怎么办Q3:热部署的原理Q4:打包速度太慢怎么办?

至于,对于初级前端来说,基本上只需要会cli启动项目,知道和的区别以及常用的,我觉得就够了,但是对于高级前端以上,最好能了解相关的原理

GIT相关Q1:git:git

分享