likes
comments
collection
share

万字总结我在寒冬里的面试准备经历

作者站长头像
站长
· 阅读数 23

前言

大厂到处都在开源节流,缩减业务裁员,小公司动辄倒闭。我也是先后经历过两次裁员,好在还有赔偿,结果也算是满意。面对这种情况,本来就业岗位就不多,还有一大堆失业人员要找工作,一个岗位几百人投递简历都是常有的事,竞争非常大。也有和身边从业人员朋友聊过,很多都是半年没找到工作的,都感觉没有什么机会。

先说个人背景,19年普通专科毕业,4年前端工作经验,目前在首都。离职后一直在找工作,目前北京的就业行情惨不忍睹,其他城市也可能差不多。

「之前外包人人都嫌弃,现在外包看都不看你一眼」

这段时间给我的感觉就是面试机会少,尤其是像我们这种没什么学历,也没有什么好的过往背景。每天各种招聘平台简历都投遍,都是已读不回,更别提什么面试机会。提供的岗位薪资普遍都比较低,以我个人看到的来说,在去年首都3年都是维持在18+左右的水平,好一点的20+也不是问题,今年大都低于。之前找工作时,小公司、外包都不带看一眼,拿了offer也不会去,主要目标都放在有实力、有资金、有前途的公司。现在看来,外包其实也还挺好的🙂️。

「珍惜每一次面试机会」

这段时间面试机会很少,但也不是没有。面过大厂外包、国企外包、小公司、自研等等,总的来说就是:

  • 大厂外包:技术综合考察很多,会深挖某一项,除了基础八股外还,基本都会考一两道算法,或者手写代码场景之类的。通常有两轮技术面试、一轮综合面。
  • 国企、小公司外包:这类主要考察你某个技术栈比如Vue、React是否熟练使用,基础API掌握怎么样,问题怎么解决。这种一两轮面试就可以出结果。
  • 小公司:我遇到过很多需要现场手写🖊️面试题,有的一两张纸的题,放在之前我是头也不看的就走。通常是考察一些代码输出题、基础知识、基础函数功能,有的也会让你从头到尾手写算法。手写完后就进入面试环节,考察的知识也不会很多,还是围绕技术栈来,通常两轮面试。
  • 大厂:没那个机会面试😮‍💨

文末我也放了几个面经,看看你能回答多少,觉得你值多少窝囊废。

在目前环境下,正在找工作的你需要准备好每一场面试,要做好面试前的所有准备工作,写好一份简历,对各种八股文知识背的滚瓜乱熟。对自己的项目、个人定位熟烂于心,各种问题都要有对应的回答,表达一定要流畅,不紧张不慌。

这里就分享一下我为面试准备一些东西,包括如何写简历、基础的八股知识、技术面试问到的各种问题、HR会问的问题,如果觉得对你有帮助可以点赞👍收藏,方便下次面试前拿出来复习。

简历准备

写好一份简历是成功找工作的第一步,一份好的简历可以让面试官、hr快速对你有了解,它决定了你是否有面试机会。

我从我个人角度提供一下建议:

  1. 简历要干净明了:在选择简历模版时,别去选哪些花里花哨的模版,只要有一些基础信息格式就可以,也别想着做个封面、画一大堆符号在里面,配⾊不堪入目。这种HR基本一扫而过,更别谈到面试官手里。尽量选择干净整洁、颜色统一的,能最大程度突出的信息。简历通常控制在2~3页即可,太多了会没有耐心。最后导出简历一定要❗️导出PDF,我之前就有过导出doc在其他面试官电脑打不开的情况。

  2. 明确基本信息:简历只需要保留几个基础信息就行,至于是否已婚、星座是什么没人关心。最基础的有姓名、性别、电话、电子邮箱、求职意向、年龄【年纪大的可以忽略】、学历【有优势的可以写】、博客/Github【除非是很出众的,不然不建议写】、照片【觉得是吴彦祖可以贴上】。

  3. 专业技能要精炼 :这里可以介绍一下自己会的技能,自己最擅长的,要突出你的技术优势,让HR、面试官看了之后就知道你和公司的技术是否匹配,是否是公司想要的技术人员。这里你需要对自己有清晰的定位,要明确你找的是中级开发、高级开发还是实习生。

    1. 技能介绍不要太多,别上来就写十几条,会给人一种感觉什么都会,而且大部分都是无关紧要的技术,什么使用VsCode开发、PostMan测试接口、使用Axios和后台通信之类的。这些都是无用信息,又菜又爱写。
    2. 慎用精通,知道就是了解,看过就是熟悉,用过就是精通。开个玩笑,一定要慎用了解、熟悉、精通这些字眼。什么事精通,个人觉得是你对某个技术、某个框架从里吃透,完完全全了解技术背后的原理,可以基于这项技术做二次开发,这才是精通。举个例子:我会使用Vue写几个页面,也无法脱离项目开发,也不会做一些复杂类型项目,这种只能说了解。如果我会用Vue从0-1完成项目开发,对Vue原理有一些了解,我就可以说我是熟悉。
    3. 结合自身,写专业技能时一定要先掂量掂量自己,看看自己有多少斤。假如我是一个Vue前端开发实习生,只会Vue,就别写什么小程序、React、Next之类的技术往自己脸上贴金。咱不过分介绍自己,也别太贬低自己,工作中用过什么,自己会哪些技术,哪些是你的强项,放心的往上写,只要对知识有了解不怕面试就行。
  4. ⼯作经历 :这部分没什么需要注意的,如果是一年内跳槽三四次的公司、可有可无之类的公司就可以跳过。工作内容就如实写,能够凸显出在上一家公司的价值。这里有个建议就是,在日常工作中可以记录一下自己的工作内容,解决了什么难题,做了什么贡献,这样在写简历的时候就有东西可写。

  5. 项目经历是重点:为什么项目是重点,因为面试官能从这里知道你技术到底怎么样,通常在项目面试的时候面试官会围绕着你项目描述的功能、场景、难点对你展开轰炸,没扛住可能就挂了。在技术面的时候,面试官会从你项目中的技术来考察你对某个技术深度是什么样的,所以这部分很重要。在写的时候不要像记流水账一样记录,自己在项目里做了什么什么,使用了什么什么技术,一定要能突出你的作用。一些简单类型项目,没有什么技术含量的项目也别往上写,一些烂大街的项目占简历篇幅不说,还有可能拉低面试官对你的技术考量。项目最好维持在3~4个,太多了容易导致面试官一眼扫过,对你不够了解,挑一些有技术亮点,难度比较大的写。一个好的项目通常要有一下几部分:

    1. 项目介绍:用最简洁明了的话告诉面试官,这个项目背景是什么,项目是干什么的有哪些功能,能做什么。
    2. 个人职责:告诉面试官你在项目里做了哪些事,用了什么技术,做了哪些较为亮眼的功能。比如做过性能优化、提高了开发效率、负责某项功能开发、开发xxx组件库。个⼈职责就是告诉⾯试官你在本项⽬中扮演的⻆⾊,是领导者?主导者?还是普通开发,你负责了哪些模块,承担了多⼤的⼯作量,以此来评估你在团队中的作⽤。
    3. 项目难点:这个就要你在日常开发中去挖掘发现并解决,让⾯试官需要看到你在做了上述⼯作到底达成了什么成绩,展现你在项目中的作用。建议不要写一些什么接口上的问题、调试了好久的bug是因为写错了函数、解决了一个业务问题之类。这种看着就很平庸不起眼,一定是那些项目中或者业务中的痛点,围绕着你们很久,或者是性能上的提升,某个技术难点之类。
  6. 其他

    • 教育经历:和基本信息一样,如果不是很出众建议不要写,你一个大专能有什么出色的教育经历,如果是重点本科、硕士、研究生之类的可以写。
    • 自我评价:你不需要通过这个告诉面试官你有多优秀,漂亮的话都会说,好看的字都会写。

以上就是我关于简历部分提供的参考建议,如果你有更好或者不同的意见欢迎指出。

简历写好后就是需要投递简历,这里就不做重点,boss直聘、智联、51Job都可以。以我个人经验来看,只有boss直聘上每天更新的工作机会多一点。投递简历时间尽量在某些特定的时间段,比如上午的9~11点,下午2~4点,这个时间段都是公司上班时间,你可以别挑早上6、7点或者晚上8、9点去投简历。

基础知识

接下来就是八股时间了,在写完简历后需要准备好八股知识,对这些知识一定要熟烂于心,问到某个知识点能够对答如流,并且能想到可能会涉及的问题。

以下就是我自己的一个八股知识,如果有问题欢迎指出

技术面试

到了面试环节,首先是需要进行自我介绍,然后开始技术考察,在结束时会问你有什么想问的,我会以我个人经验给出意见。

自我介绍

在准备面试的时候,一定要想好自我介绍的文案,并把它写下来每天对着镜子背,或者找你的好基友当着他的面背,吧自我介绍背得滚瓜乱熟张口就来。一定要保证的是在面试的时候,跟面试官介绍时不要卡壳,一定要流畅。

自我介绍里应该有:

  • 基本个人信息,我叫啥,多大,面的什么岗位
  • 简单说一下个人经历,从毕业后开始介绍,什么时间在什么公司,公司干啥的,做了什么项目
  • 介绍一下自己擅长什么技术栈

技术考察

这部分就不过多赘述,回答问题时要有自信,不要怯场,多和面试官探讨沟通。

....

项目了解

有的会在第二轮面试来考查你的项目,此时简历里项目经历里的内容就极为重要。一定要把简历写的几个项目做好了解,每一个技术、场景、问题、功能都能回答出来,如果写了假项目,在这一关是很难过去的。针对面试官提的每一个关于项目的问题都要有相应的答案,比如这个功能你是怎么做的、这个bug是什么解决了、为什么会有这样问题、你遇到过什么难点?怎么解决的?、现在让你解决你会怎么做... 这期间面试官会发散性的问一些其他问题,一定要做好准备。

向面试官提问

在面试快要结束的时候,面试官通常会问一句你有什么要问我的吗?这时候可别犯傻问一些关于薪资福利待遇的事情,这个时候应该多问一下关于公司、团队、技术上的事情,比如:

  • 团队情况、人员结构
  • 团队做的业务是那些?用的什么技术栈?
  • 如果我入职,会负责哪部分的内容
  • 项目开发流程是什么样的?
  • 公司是否会有导师、培训、晋升机会

知乎-回答

HR面试

如果上面面试都顺利通过,恭喜你,离offer只有一步之遥,接下来就是HR面试,在这个环节被刷几率不大。有的公司会吧一些HR相关的问题放在面试前,但HR的一些问题都是用来了解你是否符合公司的一个用人标准,为你解答一些问题。这时候就要见人说人话,见鬼说鬼话👻,不管之前离职原因有多么不爽,手上一个offer没有,只关心钱是否给到位之类的话,都要把它说漂亮。

但是找工作是双向的,公司可以选择你,你也可以选择公司。所以在这个环节需要吧自己想要了解的一些,所有的问题都可以抛出,看公司是否符合你的标准。毕竟是要工作很久的地方,谁也不希望找一个自己不喜欢的公司。

为什么离职?

这里主要是考察你是否有离职风险,然后HR会针对你的原因结合公司情况告诉你公司会不会存在因为这个原因离职。

一下是一些回答参考:

  • 真实离职原因:老东家给的钱少
    • 高情商回答:因为这几年也有一定的工作积累和沉淀了,我觉得是时候可以迈向一个更高维度的平台了
  • 真实离职原因:领导无能
    • 高情商回答:因为说实话,我内心幕强,如果有幸能更贵公司优秀的人才一起工作和学习,能得到他们的指点和加持,我觉得值了
  • 真实离职原因:加班太多
    • 高情商回答:因为今年的职业规划有了一丢丢的变动,正好发现贵公司在招聘,方向也符合我的预期,于是就来试试看
  • 真实离职原因:领导偏心,不给自己机会
    • 高情商回答:上家公司晋升空间有限,再干下去也不一定有更大的突破,所以想跳出舒适区
  • 真实离职原因:一个人干10个人的活
    • 高情商回答:因为贵公司推崇的人性化的管理模式,非常符合我的预期,希望能在这种环境中,跟团队打好组合拳,并创佳绩
  • 真实离职原因:被调岗,当前岗看不到未来
    • 高情商回答:之前的职业方向并不适合我长期发展,现在也不符合我对自己的未来规划
  • 真实离职原因:内斗严重,跟同事处不来
    • 高情商回答:因为看到了贵公司的招聘信息,和我想要的工作环境非常吻合,我觉得只有在合适的土壤,才能最大程度地发挥我的才智
  • 真实离职原因:每天工作重复,觉得无意义
    • 高情商回答:我的这个岗位的生命周期已经到了,我想学更多的东西,喜欢跟有挑战的工作,想换个环境,让自己有更大的突破

我一般会说:

  • 在上家公司任职期间,工作氛围很好,同事之间相处也很融洽。但工作内容和自己的职业规划不符合,都是一些重复、没有挑战性的工作,我想学更多的东西,喜欢跟有挑战的工作,想换个环境,让自己有更大的突破。

知乎-参考回答

你的缺点是什么

这个问题是考察你对自己的认知,如果回答太真实如:我记性不好,老是忘记事情。我代码规范不是很好。我执行力较弱。这之类会影响HR对你的评估。甚至严重的会记录在册,等你转正答辩的时候会拿出来考察。所以在面试前一定要想好答案,从网上找一些标准、好听的文案,结合自己情况,比如我会说

  • 之前工作内容会经常对接多个业务功能或人员,然后需要我去协助他们,而我比较专注于一件事情,有时候一些口头上东西不太会记得。所以我会经常用todolist来记录一下工作事项和优先级。

知乎-参考回答

你的优点是什么

和上面问题一样,对自己要有了解,我的回答参考一下:

  • 我是一个做事很有计划的人,每天上班前会有抽出一定时间来规划一下今天的工作内容,吧每天的任务梳理一下,并按照优先级划分。先完成那些优先级较高的任务,保证重要任务能在规定时间内完成。

知乎-参考回答

你未来3-5的职业规划是什么样的?

这里就开放性回答,简单说一下自己的未来一个规划,比如是成为高级开发、全栈开发、往管理方向发展、成为架构师之类。但要结合实际,刚出来的实习生说我的职业规划是成为架构师,要成为leader。或者是说不符合招聘岗位的,我面试前端岗,说未来要干java架构师、要干测试工程师。这种还是不要说,可以根据自己本身,做好阶段性的规划。其次就是要结合公司技术,要让面试官觉得你是真心的想留在公司里发展。比如公司有用webGL、three之类的技术,但你不是很熟悉,就说自己对3D可视化方向比较感兴趣,未来想多深入学习webGL、three之类的3D技术,它的一个技术前景还是很不错的,想在这方面做更多的事情。

你手上有offer吗?为什么没有选择?

我一般都是说有,就算手上没有offer也会说有,但后面会说不考虑手上的,因为我觉得这一家没有达到我的预期,之所以没有选择是因为这家公司xxx,随便说几个缺点出来。然后转过来夸公司,让HR感觉你很喜欢他们公司,比如我一般会说:经过面试后我觉得贵公司符合我的预期,业务方向、团队氛围、公司发展前景都比较好,是我喜欢的,所以我的第一意向还是贵公司。

现在找工作你在意公司哪方面

这里主要考察你是否会考虑他们公司,如果公司没达到你在乎的说明对你没有什么吸引力,比如距离、薪资、公积金之类的就别提,闲的咱太肤浅,格局要打开。

我一般会说:我现在找工作主要考虑公司的团队氛围怎么样,工作方向是否是自己喜欢的,公司的业务前景是什么样的,我觉得这些贵公司都符合我的预期。

你期望的薪资是多有?

我一半会针对自己对公司的评估来决定回答,如果不想去的公司,实话实说甚至多要一点,如果最后给了那最好,没给也不妨碍我接着找工作。

如果是想去的公司,会慎重考虑,先问HR以公司对岗位提供的薪资是多少,如果HR说明是在20k,那我就会顺着20k往上谈,但不会太过分从20要到30。如果没说明,说这个暂且没法确定,需要和用人部门、面试官一起商讨。这时候就要结合之前面试过程是否顺利,面试官是否对我感兴趣。

  • 面试不顺利,但是想去公司,就比期望薪资低一点
  • 面试顺利,也想去公司,就如实报价。

你还有什么问我的吗?

这部分可以问清楚相关的福利、待遇、上下班、加班、晋升之类的

  • 请问公司的晋升机制是怎样的?
  • 公司试用期多久?转正考核要求哪些?
  • 请问公司之前都为员工进行过哪些培训?
  • 薪酬福利是什么样的?
    • 五险一金比例是多少
    • 有没有补助、餐补、交通补
    • 年终多少,什么时候发放、绩效考核是是什么样的
    • 有没有病假
    • 年假几天
    • 试用期工资发放比例
    • 加班制度是什么样的
    • 加班打车报销吗
    • 一年几次调薪
    • 是否允许自己带电脑
    • ...

面经

A大厂外包

该项目组主要是做可视化、2D图形、海报生成,有在往AI方向发展,技术栈Vue和React都有。八股没考多少,主要是问关于Canvas相关的知识点,这块之前做过一点,但是太久了而且很陌生,答对不是很好。还有项目考察较多,出场景问怎么解决。面试过程50分钟左右,线上面试。

面试官知识储备还是很足,比较在意业务场景上的问题是怎么解决,考察项目比较多,基础的技术、原理都会问到一些,能够从回答中看出哪些不足点。

  • react和vue区别,有什么相同点
  • v-model原理
  • spa单页面优缺点
  • spa和多页面有什么区别
  • 双向绑定原理
  • vuex有哪些方法,在Vue里是怎么使用的
  • vue生命周期
  • vue属性、指令
  • v-if和v-show
  • v-for注意事项
  • 虚拟dom是怎么提高性能的
  • vue怎么做seo
  • vue的diff算法
  • diff一定就快吗?为什么
  • vue-router有哪些钩子?
  • 做过哪些性能优化
  • 请求缓存是怎么做的
  • 事件循环能说一下吗
  • https和http的区别,怎么加密
  • 说一下你对websocket的理解
  • TCP对头为什么会堵塞
  • 一个网页打开都需要哪些步骤
  • DNS是怎么做查询的
  • ts有用过吗,怎样使用ts
  • canvas的使用场景,都用它来干啥
  • canvas怎么使用 有什么优点
  • 如何画一个矩形,怎样让这个矩形放大到整个屏幕
  • 怎样在画布上自由画线
  • 有用过Echarts,你觉得它怎么用

...其他就是结合项目,考察canvas相关知识点

B国企外包

项目组是做金融直播类项目,使用的是三方集成的SDK云服务如火山云、腾讯云、阿里云等。看中了我之前有过独立负责直播项目,对直播项目比较熟悉,也有过后台管理项目。面试是组内两个前端小哥加部门领导,小哥负责问技术,领导负责问项目业务、个人考察。面试流程40分钟左右,现场面试。

领导面就纯粹看人,国企领导喜欢听一些奉承的话, 技术面没什么难度,问题出的也很乱,通常是想到那个就问那个,前后不搭边,不会由浅到深,考察你技术底细,表面文章。

领导面

  • 你项目里的直播是自己一个人做的吗?怎么做的?具体业务场景是什么样的?
  • 说说你对直播的看法?
  • 关于直播拉流、推流,你知道多少?
  • 看你用的是腾讯的SDK,是用的那一部分?
  • 为什么没有选择自己开发,而采用第三方服务?
  • 有对比过其他服务吗?
  • 我看你项目都有好几个端,他们开发上有区别吗?
  • 你有什么要问我的?
  • 手上现在有offer吗?选择公司你是看重那几个点?
  • 如何看到后台项目和直播项目?
  • 为什么离职?

技术面

  • 如何实现单点登录?
  • 项目里的权限管理是怎么做的?需要注意哪些?
  • 动态路由如何实现?
  • 路由分配添加到主路由用哪个api
  • 路由传参有哪些方式?有什么区别?
  • 路由拦截怎么实现?
  • 有用过vuex吗?说说你的理解?
  • mutation和action有什么区别?怎么在组件里使用?
  • 如何在组件里引入state 有哪些方式?
  • getter使用场景?
  • 如何拦截页面 有哪几种方式?
  • 全局路由钩子 ?
  • 路由重定向怎么做?
  • query和params区别?
  • 双向绑定原理?
  • data为啥是个函数?
  • 路由懒加载怎么写?
  • 路由模式 实现原理?
  • 子组件需要多个参数,父组件怎样传递?
  • 有做过响应式吗?有哪些方案

C小公司

该公司是一个自研Saas系统,通过系列后台系统展开相对应的加盟业务,pc、h5、小程序都有,后台CRM系统较多所以想要整合在一个系统里面,前端俩人,走了一个。现场面试,先做一套笔试题,让面试官问一下解题思路,聊了一下Vue3ts

笔试题

  1. 打印顺序是什么
    var name = 'global'
    var obj = {
      name: 'local',
      foo: function() {
        this.name = 'foo'
        console.log(this.name)
      }.bind(window),
    }
    var bar = new obj.foo()
    var bar3 = (bar2 = bar)
    setTimeout(function (name) {
      console.log(name)
    }, ...[1, 2, 31])
    setTimeout(function () {
      console.log(name)
    }, 0)
    console.log(bar.name)
    bar2.name = 'f002'
    console.log(bar3.name)
    
  2. ['1', '2', '3'].map(parseInt)输出结果是什么
  3. 数组去重的方法
  4. 手机号中间四位加密处理
  5. 打印顺序是什么
    async function fn1() {
    	console.log('async 1 start')
    	await fn2()
    	console.log('async 1 end')
    }
    async function fn2() {
    	console.log('async2')
    }
    fn1()
    console.log('start')
    
    setTimeout(function() {
    	console.log('setTinemout')
    }, 0)
    
    new Promise(function(resolve){
    	console.log('promise1')
    	resolve()
    	console.log('promise2')
    }).then(function() {
    	console.log('promise3')
    })
    
    console.log('end')
    
  6. 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。

技术面

  • vue2和vue3的区别
  • composition API的好处在哪?给框架带来哪些提升
  • vue2和vue3diff差别
  • vite比webpack快在哪里
  • webpack打包加速、打包优化
  • 使用过哪些loader、plugin
  • ts有哪些高阶类型
  • type和interface的区别
  • 他俩如何继承
  • 做过哪些项目优化
  • 项目使用过learn,介绍一下是如果管理的
  • 如何要在其中某一个项目里安装依赖

D中型公司

该公司主要做电商系统,业务组是负责各种电商系统报表数据生成,主要是后台系统偏多,也会有移动端uni-app、小程序,老的项目使用vue2,新项目使用vue3+ts。现场面试,笔试题加面试,过程不是很愉快,写题的地方都没有,在前台写,面试也是在前台。

笔试题

  • 判断变量arr是否属于数组
  • js实现数组转树
  • 什么是事件循环
  • 怎么添加、移除、移动、复制、创建喝查找节点
  • 你都做过哪些Vue性能优化
  • 说一下浏览器兼容问题
  • 谈谈你对uni-app的理解
  • uni-app中如何为不同的平台设置不同的代码
  • uni-app中封装接口请求相较于微信小程序有什么要注意的

技术面

  • vue双向绑定原理
  • 2和3的绑定什么区别?
  • 插槽使用过吗?原理是什么
  • mixins使用过吗?用它解决什么问题
  • 和vue3种的hook有什么区别
  • watch和computed的区别
  • vue怎么做路由控制
  • 说一下闭包
  • es6新增了哪些
  • promise的理解
  • await的理解,和promise的区别
  • webpack的配置有哪些
  • 用过哪些插件、loader
  • 他俩有啥区别
  • 做过哪些项目优化
  • 你用ui组件库封装了什么
  • echart用过哪些
  • 项目里的心跳检测怎么做
  • 这个项目是什么样的,用来干啥
  • 你负责了哪些