【B站直播实录】几十场前端面试,揭露实战真相

直播的来由

熟悉的朋友知道,我在去年和今年经历了两次工作变动,虽然并非期望,也不得不面对。

两次加起来少说几十场面试,要说我想锻炼,或者面着玩儿,完全没这回事,没人想这么玩儿,不论是准备面试,还是面试本身,都是既累又煎熬的,但既已成事实,还是从中总结点什么才好,就有了这次直播。

除此之外,这次直播也是为了积累经验,为后续更好地直播做准备,我的系列文章【轻聊前端】仍在继续,还剩最后几篇,完成之后,会再来一次直播,想学编程但一直没有头绪的朋友,别错过哦,或许我能帮你打通任督二脉~可关注“灵感周末”微众接收提醒。

好了,进入正题。我会按照找工作需要考虑和准备的先后环节逐个分享。

公司/职业规划

换工作,无非是对现公司或自己当下的状态“不满意”。

在今年大环境不好的情况下,多家公司大量裁员,被迫择业也有很多,但大体过程类似,正因为竞争更激烈,才更应该做到高效准备。

具体原因没必要细究,因人而异,我们只需要关心结果,目标自然就是找到下一个让自己“满意”的去处。

面临两个问题:想去哪?能去哪?

“想去哪”,在最开始就能有大概范围,但“能去哪”是不会事先知道的,一半在于你,一半在于意向公司,你会在面试过程中慢慢认识到自己“能去哪”。意向公司先不说,先说自己。

不要海投

我知道很多人会海投,特别是向来没有方向,目标性不强的人。

但是,抱着对自己负责,也对公司负责的态度,不要海投。为什么?

1、无谓的等待

找工作的关键因素是匹配度,公司是否匹配你,你是否匹配公司。最好都匹配,如果说有一方需要让步,大概也是你。

如果选择海投,你很可能不匹配公司的用人需要,比如一次投了20家,只有5家匹配,对你有意向,另外15家没有意向,如果这15家直接拒绝还好说,如果对方没有回应,或者回应了没有结论,你就要等,等多久?等到最后是否得到肯定的答复,这都不好说。

很可能导致无谓的等待,这个过程虽然对公司也是成本,但对个人影响更大。

2、多余的面试

上面说5家有意向,如果这5家当中,有2家仅仅是简单看了两眼你的学历、工作年限、职业技能,就约你,而没有考虑到业务部门需求,或者其他招聘的重点要求,结果一面下来跟预期差别很大,很快挂掉,这种就有点浪费面试机会和时间,对双方意义都不大。

3、难以协调的面试

很多人是在职面试,只能安排到晚上下班后,如果有加班的情况,就不是每天都能安排,再加上,就算能安排,留给自己的准备时间很有限,直接影响面试发挥,这是其一,其二,公司也不是你说哪天它都会接受的,要看双方的时间,如果一推再推,一个星期,两个星期,你的面试周期拉长了不说,万一他们名额有限,已经招到合适的人,你的流程直接结束。

这种情况,即使离职面,也只是稍微得到一些缓解而已,同样不推荐。

所以,不要海投。

清晰认识,策略得当

不海投之后就是对自己的规划以及目前能达到的水平有清晰认识。

如果你知道自己想去的公司标准高、环节多,比较难,就准备时间长一些,或者先找几家体量和水平相当的做练习,面完之后总结成功/失败的经验,再去面,能在一定程度上提高成功率。

如果不确定,就可以在做完基本的准备之后直接去尝试。

重要的是要了解清楚,公司能够给到什么,自己下阶段需要什么,看重什么,职场经历是禁不起挥霍的,一旦你的成长无法匹配年限,就可能面临错位求职,要么付出更大的努力去弥补差距,要么被迫降低要求。

简历

选好公司,下一步就是投简历。

简历的基本内容大家都知道,但可能有些人不是很清楚简历的作用,或者怎样的简历才称得上“不错”。

我们从作用引出要求:

1、hr/业务leader筛选(展现自己)

不论在哪个平台求职,或者朋友推荐,都会找你要简历,拿来简历之后,会通过:学历、工作年限、岗位、职业技能、项目、稳定性等方面进行匹配筛选。

2、面试官对你的主要了解途径(展现自己)

你,和自己的简历,只有你熟悉,面试官很陌生,同时,面试官通常不会在面试之前拿到简历或者细致地看,那么,他就是在坐到你面前的时候才开始对你进行了解,所以,你需要通过简历,清晰、详略得当地向他展示,你是谁,做过什么,有什么优势。

3、重点考察的内容(面试内容)

很多公司都有通用问题,大都不会很难,除了通用问题,就是属于你的专有问题了,问题从哪来,就从简历来(如果你的简历没涉及到一些他比较关心的问题,也会问),从你所列的职业技能、项目经历、解决过的问题、个人特质等进行提问。

鉴于以上几点,我们要注意:

1、排版美观(很多简历制作平台提供模板,最好导出PDF,系统兼容性更好)

2、清晰、通顺地表达(可以找人帮你看,帮你改)

3、不管你计划在面试的时候讲什么,简历不能随便写,简历决定了你有没有机会展开深入聊

4、体现你的能力、优势,差异化,项目积累、解决方案积累、成长积累等

5、不是名词堆的越多越好,写得越厉害越好,你不写的,面试官可能会问,你写的,他大概率会问,重点写自己熟悉的,擅长的。一旦问了,你能很好地回答,就是加分的机会,否则,他问了你又说懂得不多,就成了减分项。

所以,即使大家知道简历应该包含什么,也不能轻视打磨简历的作用,不把必要当充分,重视简历,或许就成功了一半。

自我介绍

不管面试官听不听,这是你第二次展示自己,建立好印象的机会。

通常自我介绍都很自由、开放,但问题是,人大都不擅长开放性的东西,该说什么?

抛开内容,你除了是个职员,还是一个人,当我们跟别人交流的时候,谈吐、仪态、涵养,都会形成别人对我们的看法。

其次,他手里拿着你的简历,如果有些东西简历上体现不出,或者忘写了,这时候可以做补充。

如果这个环节平平无奇,简略地就过了,就只是占用了一点面试时间,也有点浪费。

问题大海

面试之前,你肯定想知道会问什么,以便针对性地准备。

你会去看职位描述,也会在网上找大量资源,比如各种社区、职看看、牛客网等。

它们的确具备一定参考价值,且在你面试过程中会出现,但是,不要有太强的预设,觉得当前面的这个岗位就一定会问哪些问题,准备了一定能过。

之所以说“问题大海”,是指可考察的面很广,但任何一个问题都不是必问。 甚至可能跟你准备的偏差很大,做好这个心理准备,就不会面试一开始就陷入慌乱。

考察形式:

  • 笔试:重要的、基础的问题。

  • 机试:程序阅读、编写。

  • 面对面沟通:技术/非技术类结合问答。

重点提问

面试的时间是有限的,会挑重点问。

问题有侧重,就代表准备可以有侧重,找工作关乎生计,没几个人想长期空窗,所以时间是有限的,不必所有东西平等对待,宁愿多花一些时间把重点问题搞明白。

什么是重点?基础要点、技术栈、项目总结

问题可分为两类:

一、通用的、宽泛的问题。

二、具体的、特定的问题。

通用问题

一、技术类

基础

基本数据类型

基本类型和复杂类型的存储方式区别

原型、原型链

继承 哪些方式

事件循环机制 宏任务微任务

面向对象编程的认识

垃圾回收

线程和进程

用过哪些ES6相关的技术

注意,有些问题面试官会让你自由发挥,就像上面这个,这种问题就不好答了,你答的多,给面试官继续追问的机会,或者找漏洞的机会就越多,但答的少,又可能反应出你用的并不多,经验不足。

比如你说了ES6相关之后,他会再问:

var、let、const 有什么区别

箭头函数和普通函数有什么区别

promise是什么,怎么实现

Map和Object的区别

这些是高频考点,不代表其他的不会问,所以,你要对自己的回答负责,不是什么都需要往外说,就像不是什么都往简历上写一样。

协议

缓存

http1.1 和 http2 的区别

https的过程 抓包工具能不能抓到 获取的信息有什么区别

同源策略 跨域方法 为什么 <script>能跨域

从url到网页渲染过程

CSS

flex 实现等分、一边定宽一边自适应

flex是哪些属性的缩写

居中有多少种方法

伪元素和伪类的区别

偶尔会有animation transition之类的问题出现

HTML

语义化

SEO

表单元素特性

Vue

响应式原理

Diff

组件通信

Vue3的区别,为什么

(以上为大概率事件,下为小概率)

顺带可能会问 watch computed

nextTick

keep-alive

生命周期

Vuex

Vue-router

React

Fiber

Diff

组件 hook

组件通信

Webpack

打包处理流程

loader 和 plugin 是干什么的 有没有自己开发过

优化手段

热更新原理

三化

工程化

组件化

模块化

TypeScript

是什么

泛型

class成员权限

不是必问,但至少了解,最好掌握,目标公司的项目可能会用。

浏览器渲染

页面渲染过程

脚本或者样式会不会阻塞页面解析 有什么办法不阻塞 它们的区别

重绘、重排

性能优化

性能指标/监测

异常监测

数据上报

代码

代码题通常三个左右,也是大厂面试中最占时间的,很多情况是代码如果没写出,或者不够好,就无了,必须重视。

代码题分两类:看输出、手写。

一、看输出

作用域

事件循环

this指向

二、写代码

写代码的目的是看基本的编程能力,熟练度,思考问题的过程,思维能力。如果没有很好的思路,是可以跟面试官进行交流的,这跟实际工作很像,通过交流、互助,解决问题,也是OK的。

手写也分两种:某种功能的实现、算法。

1、实现

柯里化/Compose

深拷贝

reduce

promise all

异步任务调度器

repeat(以一定时间间隔反复执行某方法)

2、算法

很多人的算法靠刷题,听起来过于刻意,不论你是否认同,题确实要做,因为算法就是某类问题的解决方案,如果你从没经历过、思考过,很可能做不出。但那些真正能够很好应对面试,成功了的,是在做题过程中锻炼出来的算法思维,能够举一反三、触类旁通,而不是靠背,靠背首先很难准确记忆,再者很大概率碰不到原题,就不会了。

至于到哪里找练习,leetcode、《算法》、《剑指Offer》、B站等都有不少资源。

设计模式

这个不一定考,特别是初中级应该不会涉及,除非你自己提及,是擅长的部分,恰巧他们也重视,即使这样,考察的面也不会太广,只需要先掌握三种即可:发布订阅、装饰器、适配器。

数据结构

可能会问有哪些常用数据结构

用队列怎么模拟栈

某种场景适合使用什么,比如:贪吃蛇

二、非技术类

挑战最大的项目/解决过的难题/成长的关键节点

这个问题,可以在最短时间,或者用最少的问题数,来挖掘你的水平上限,看你在过往的工作和学习过程中的成长速度、高度、自我要求、自驱力等。

学习习惯

如果你平时不学习,自然就没什么学习习惯,学习也可以看你是不是会选择比较权威、优质的资源,或者看你有没有不错的学习成果,将学到的东西落地到项目中等。

特定问题

微前端、中间件、SSR、小程序、RN、反爬虫、CI/CD、自动化测试…

这些问题,会根据项目不同来具体问,不是所有项目都用到或者重视。要看是 must 还是 nice-to-have,能答上来更好,答不出也可能无碍。

其他

怎样更接近成功

年限/级别匹配、能力/素质匹配、项目经验匹配、薪资匹配。

不同公司

大公司一般轮次多,流程长,如果想尝试,最好在职,或者留足时间。

小公司一般一两次就搞定,高级别会有CTO/CEO面试。

编程或者算法题也是大公司相对更多些,小公司少,或者没有。

不同岗

初中级岗,对基础知识、概念、算法的考察会相对多。

高级以上,工程化、设计、性能优化、原理、架构层面相对多,某些会要带人经验,绩效评估经验等。

面试官的目的

每一位面试官都想招到人,而不是毙掉,所以他会试图找你的优点、亮点,跟招聘要求符合的点,如果找不到,不仅你失败了,他也失败了。

他失败,找下一个候选人,对他来说除了时间之外没有损失,但对我们就不同了,我们除了花了时间,更重要的是心仪公司的机会没了,损失更大。所以要尽全力发挥好,展示自己的长处。

什么时候停止

拿到满意offer之后,而不是在等待offer的过程中;拿到offer,不满意,同样可以继续尝试拿。

如果仅仅自我感觉良好就停止,会出现和投简历之后没有消息一样“不确定”的等待中,一旦失败,时间也浪费了。

聊聊焦虑

程序员大多有35岁焦虑,现在甚至有提前的趋势,抛开残酷的事实不谈,我们想一想,仅仅是年龄的问题么?在我面试这么多次来看,这个行业确实是年轻化,但很多公司的Leader、总监、CTO都是IT老兵,有些看着不明显,有些肉眼可见,可能已经奔五,他们依然有机会,且短时间内不会被取代。这就不是拿年龄衡量了,而是能力、经验、积累,或者可以根据要求不同找到愿意接纳自己的公司。

所以不能说到了多少岁就一定没有生存空间,只是空间更小了,竞争的人更多,需要你有更能脱颖而出的水平,或者经营足够好的人脉关系。

实在不行,转行的大有人在,人生几十年,不可能一成不变,我们需要未雨绸缪,为自己增强适应变化的能力。

附上语雀记录的多家公司面经: 《前端面试》

总结

最后为大家再梳理一下重点。

  • 重视简历打磨
  • 了解公司,了解职位,精准投递
  • 合理安排面试节奏
  • 重点问题准备,项目总结,编程题练习
  • 更多地展现优点,避免主动暴露不足

最后,预祝大家都能找到心仪的工作,拥有圆满的职业生涯。