前端秋招指北

2024-11-12

个人背景介绍

财经类院校211本,985硕,专业均为CS科班。

简历上写了三个部分:

  • 实习经历:1段含金量还可以的实习
  • 开源经历:1段开源经历
  • 2段加起来一年半,可写在简历上的实验室项目

求职意向:web前端开发

投的公司:所有国内头部互联网大厂(除了某睡觉厂)

战果:14投10面,3挂,5意向2排序等待回复中,有某家拆分的集团是导致投递次数如此多的原因之一

秋招时间线

image-20241112164831681

  • 1-2月:系统刷题,准备八股
  • 3-4月:找暑期实习,高强度面试。以赛代练,培养自己的面试体感与个人表达
  • 6月:大厂开放算法岗提前批,bg较好的算法岗的同学可以着重关注,一般以“xx计划”命名
  • 7月:陆续开放秋招正式批,高强度进行笔试与测评
  • 8~10月:秋招正式批面试开始,进行高强度面试
  • 10月中旬:陆续发放意向书
  • 11~12月:谈薪,沟通并发放正式offer

面试准备

五个部分:

  • 1 自我介绍。按照简历上划分的三个部分,进行面试内容的准备(实习,开源,项目)
  • 2 自我介绍中提到的项目内容
  • 3 前端相关八股(JS/CSS/HTML/网络/前端框架(React)/浏览器知识/手撕题等,具体内容整理在博客的“秋招专栏”中)
  • 4 常见面试问题(设计模式/场景题/HR面等)
  • 5 算法笔试/面试

自我介绍

自我介绍是与面试官建立沟通的一个渠道,在介绍的过程中埋坑,“勾引”他进行接下来的询问是有必要的。

按照简历上放的内容分为了三个部分

  • 实习经历:挑选了三个自己独立推动落地的事情进行分享,并严格按照“背景-解决-收益”的SOP进行介绍。
  • 开源经历:还是比较加分的,能增加简历的丰富程度。以包装为主,罗列了在社区获得的奖项,做的工作。
  • 项目经历:实验室做过的项目,两句话带过。

在面试中我会刻意地使用“挑选最有成就感的几件事和您一起分享”,“如果您感兴趣,稍后咱们可以一起讨论”,这种话术来拉近与面试官的关系。面试时尽量不要把面试官放在一个与自己完全对立的角度,容易让面试的氛围更紧张。

自我介绍环节我会花费5分钟的时间,和其他秋招的同学聊过,因为他们害怕被面试官打断,所以自我介绍火急火燎一分钟就结束了。

我不是很喜欢这种介绍方式,总觉得应该尽可能地给面试官更多context,让他有更多的问题可以在下一个环节与我讨论

八股

八股其实是一个比较有争议性的内容,八股对答如流也不能证明一个人的工程能力有多强。

但当前互联网仍然是 买方市场,在这个环境下仍然需要遵循互联网的游戏规则。

八股是我的弱项,因此我花了大多数时间准备八股。方法如下:

📖 错题本

和高中时期提升自己成绩的常用方法一样。在每一次面试后,将自己没有回答清楚的问题记录下来。我为此还在Notion中维护了一个错题本,记录自己回答错误甚至没有见过的问题。目前已整理至 秋招专栏

image-20241112222316102

随着面试经历的增多,我将前端的八股分为了以下几类:

  • CSS
  • Javascript基础
  • React相关知识
  • 浏览器相关知识
  • 前端工程化相关(性能优化相关也归类于此)
  • 手撕题(如实现Promise,实现防抖节流等)
  • 面试中出过的算法题(如数组转树,一些简单的动态规划,一些场景题等)
  • 网络相关(个人非常薄弱的一块内容)
  • 结合项目问出的一些八股(这个部分比较重要,能够体现候选人对项目理解是否深入,单独整理)

🔥 高强度面试

下图为八月末九月初的面试安排(不完全记载)

面试日程

以赛代练,使用高强度的面试来锻炼面试体感,用大量的面试来训练是一个防止自己面试时紧张的一个好方法。

当然这也有缺点,如果没有任何准备进入面试,面评容易花。我在腾讯的人才库中反复沉浮,经历10次“被捞起-被挂”后,秋招流程彻底结束。在知道腾讯上岸无望后,我把腾讯的面试当作自己的练兵场,积累面试经验。

当然,如果没有面试邀约的话,还有一个方法是去牛客上找大家的面经来看,然后找到自己不会回答的问题尝试回答。一定要口述答案,不要只在心里简单默念。

⛰️ 日常积累

image-20241112222820529

我将自己的阅读读物替换为了《React设计原理》,《你不知道的JavaScript》等书籍,高强度刷知乎,掘金等平台。

这个方法获取八股知识的效率比较低,但是也有好处。对于我来说,这么做能够把“准备八股”变成一件没有那么无聊的事情,也增加了一些面试时与面试官的”谈资“。

💡 回答八股的小技巧

“交流”的心态

在回答面试官八股问题的时候,尽量不要用背诵的方式来回答问题,尽管这个问题你已经回答过无数次。

可以想象着自己在和面试官正在交流/讨论这一项技术,甚至当做对面试官的教学。

举个例子,一个很常见的前端八股:你是如何理解JS事件循环的?

这个问题就可以从 JS 单线程,无法实现异步,事件循环的出现让 JS 拥有了异步能力开始讲起,而不用上来就开始介绍宏任务和微任务等等。 当然对于这个问题,还有一些比较加分的回答,比如你可以告诉面试官,由于现在任务的优先级粒度划分得更细,V8 已经不仅仅区分宏任务和微任务了,而有了更细粒度的任务划分。

这个知识《前端八股汇总文档》上是没有的,需要依赖日常的知识摄入。

坦诚,思考与沟通

遇到不会的问题也不需要紧张,我认为非常忌讳的一个做法是:面对不会的问题,支支吾吾甚至一句话都不说。

这时候,怀着和面试官“交流”的心态来面试就很重要了。

如果实在是没听说过这项技术,可以直接回答“不好意思,这个没有接触过,不是特别了解”。面试其实就是一个探索候选人知识边界的过程,毕竟你只是一个校招同学,有不了解的知识非常正常,放轻松。

还有一种做法,是让面试官提供一些提示,这种做法常用于算法/代码题没有思路的场景。

我曾经在一场面试中通过面试官的提示,手撕了一个带有重试功能的 Promise,写了半个小时,但也没有影响我在这场面试中获得一个不错的评价,面试说和我沟通感觉起来感觉很流畅。

其实在面试过程中,候选人的“思考方式“与”沟通能力“是两个非常重要的考察因素。so feel free to ask

面试选择的不是绝对的“强者”,而是一个你愿意和他一起共事的人

笔试准备

image-20241112201740045

其实对于前端来说,笔试并不是最重要的参考因素,leetcode 200题基本够用。笔试的成绩够用即可,在录用时做个参考。

值得注意的是,算法笔试OJ通常采用 ACM模式 ,也就是需要编写输入输出。

因为在23年3月目睹了同门师兄姐在他们那届秋招时笔试的严峻,在23年的上旬,我就已经按题型几乎刷过一遍热门的算法题了,当时选用的语言是Java,参考的刷题网站是 labuladong的算法小抄(现在收费了)

到了24年初,我开始了第二轮刷题,本次选用的语言是JavaScript,参考的刷题网站是代码随想录(强推)

如果时间紧,建议重点刷下二叉树动态规划两个章节,这两个章节在算法笔面试中常考。

实习

不分享实习过程了,想在这一个部分聊一聊应该怎么让一段实习在秋招中发挥作用

从我非常短暂浅薄的互联网从业经验看来,如果想在实习期间做出成绩并得到认可,有几个核心的原则:

避免重复低质的工作

尽可能让自己努力的方向与小组 OKR 方向平行。

避免自己的实习一直再完成一些质量极低的重复性劳作,为下面寻找“额外产出”的机会做铺垫。

额外的产出

寻找,并完成一些额外的产出

除了保证日常需求的交付外,那些额外的产出才是证明你“能力”的内容。

(1)对于实习转正,这些额外的产出能够:论证你作为一个校招生具备充足的主动性

(2)对于秋招,这些项目能够增价简历的“厚度”,并帮助你回答一些“你在实习期间遇见过最有挑战的事情”,“分享一个实习期间你做过印象最深刻的项目”等问题。

分享你正在做的事情

这一点的原标题原本是”营销并宣传你正在做的事情”,写出来后感觉一股味儿,所以换了一个题目。

在实习期间可以通过技术文章分享单独沟通主动宣传等方式,向他人分享一些值得分享的技术或正在做的事情。这么做有以下两个好处:

(1)帮助你梳理清楚这件事情的背景,做法与价值;

(2)寻找一些能够在不同小组之间横向达成合作的机会;

消息与资源获取

我很喜欢 kaiyi 的一句话:“不要把和你身边共同处于秋招阶段的伙伴当作敌人,你们的信息应该共享,真正应该被视为竞争对手的是那些你压根不认识的人”。

秋招期间,人与人之间的信息差体现得淋漓尽致。包括秋招前的实习招聘信息的获取,秋招时组内的基本信息,HC情况等等。

常用于信息获取的渠道比较常见了,这里就不列举了。

引入一下我的 Contributor学习法

image-20241112222054318

虽然我有点小丑,之前一直合作的负责人不再维护G6了,后来我去找新的负责人要内推码时,没有得到回复。但是我仍然推荐这种方式,能够去结识一些社区的大佬,说不定实习机会就藏在一封邮件中👀。

介绍一个项目

在面试中我们经常需要向面试官介绍一个项目,而这个面试官很有可能没有接触过类似的业务,甚至到了交叉面时,对方还可能属于不同的岗位。这意味着你需要给一个完全没有上下文与相关知识的人,甚至非技术的人,介绍你的技术项目。

“和对方讲清楚一件事情”这个能力是我非常欠缺的。首先,我不了解结构化表达的方法,表达能力比较弱。其次,在表达时,我总是默认受众与我有等量的信息上下文,在介绍一个概念或事情时,我总是默认对方和我一样已经完全具备前置知识。

一味介绍技术深度的方式显然是不可采取的,我有几点小 Tips ,读者可以做个参考:

  • 对于比较重要的项目,遵循:”背景介绍 => 问题定义 => 问题提炼(分点) => 解决方案(针对问题逐一解决) => 取得的收益“的 SOP进行介绍
  • 对于不重要的项目,简单概括背景,做法与收益即可
  • 不要背诵,给面试官留几个提问的气口,沟通最好以一种对话的语气向前推进

战后调整与心理重建

临时增补的一个部分,主要想谈谈面试中遇到恶心人的面试官如何调整心态。

作为“身经百战”的面试博主,自然也是阅官无数了,简单罗列几条面试官罪行:

  • 面试前迟到(40%)
  • 单方面要求候选人打开摄像头(20%)
  • 面试前临时修改面试时间
  • 一脸鄙夷地认为候选人在吹牛,一个实习生怎么可能有这么多产出
  • 总结仙人,一句话总结候选人的项目介绍:噢你就是封了个组件呗
  • 压力怪:不断挑战你的答案,并营造高压面试氛围
  • 询问一些莫名其妙的问题,比如:这个正则怎么编写
  • 终于逮住候选人不会的了,一顿猛猛拷打

非常不幸拥有如此糟糕的面试体验,可以选择面试后进行面试反馈,也可以使用相同的态度与面试官沟通,但不要立马在面试中直接挂断电话。

被PUA,被否定,明明面试表现感觉良好,但还是被挂了,请不要把原因完全归结于自己能力不足

面试不通过的原因可以有很多:公司文化不符、部门HC不足、面试官心情不好,甚至会因为你太优秀了怕你不接offer为理由,终止一次面试,你的能力只是数万条理由中的一条,所以不必在意。

面试是一场恋爱,不要以一个卑劣的姿态去迎合对方的喜好,选择适合自己的团队和找到适合团队发展的候选人才是这场面试的主要目的。

感悟

2024年11月12日,双十一刚过,秋招也已经接近尾声了。

秋招是一场拉锯战,不仅考察候选者的能力,还挑战着他们的耐心,意志,心态。既然是战斗,那就应该以战斗的心态来面对秋招,比如提前了解即将面试的公司,做好战前储备与战后复盘,对自己的军备水平进行准确评估等等。

秋招就是我们和人才市场的一场博弈,我们希望通过拿到多收割意向来论证自己的能力,拥有更多选择,公司希望使用最低的成本,来招到最适合的人才。

博弈游戏,筹码多的人先赢,先亮底牌的先输。祝顺利!