秉亮的个人日志

拿Offer FAQ

2021-06-24

怎么想着换工作的?

主要是公司变动,咱主动领了裁员指标。我本来还是很想搞 AI 医疗的,但奈何公司不这样认为,那树挪死人挪活,以及本着不要呆在沉没中的船上的原则,肯定要找找新机会。

为啥要裸辞?

这个也是被逼无奈啦。可能跟我的经历有关,从第一家公司离开的时候不是裸辞,当时想着是拿完年终奖跑,可谁知道年终说有两个月但是只给了半个月,算钱还不如年前跑路。从第二家公司离开的时候,纯粹是再呆下去心理要出问题了,就半夜发了离职邮件,连项目奖都没想要。

在依图我的表现很不错,年前想着年初肯定升职加薪,但是公司放弃医疗方向,那自然不会有升职机会。那等于说拿着P5-P6的钱,每个月呆在公司都得亏钱。

找过猎头吗?

好的猎头是候选人的好伙伴,虽然他们很大程度上对于技术啥的不太懂,他们也喜欢有技术背景的程序员当猎头,但是好的猎头会帮助你做非常多的事情,也能提前告诉你一些窍门。海外大厂在面试前会给你发一张考试范围之类的,基本上就只会考那个范围里的。而国内大多数的企业的面试是黑盒,你无法知道考啥,有啥侧重,那有的猎头就会给你一个他从他的候选人处回访来的题目,给你参考参考。算然其实这个帮助很小,因为题库里撞重的概率很小,做准备还是要做全做充分,在考知识面(八股文)的时候,水桶效应非常明显。猎头更重要的是对于面试气氛和公司特征的把握,来告诉候选人这个公司不在意哪些,但有哪些雷一定不要踩,这个是非常宝贵的经验,可以帮助候选人避雷。还有一个就是在谈薪过程中,猎头能给很多客观的参考,有时候还会教你谈薪技巧。大多数公司都会压一压薪资,其实向上谈一谈,对猎头对招聘 HR 都是有好处的,free money 不争取下就亏大了。

但是依然会有的猎头并不为候选人的利益考虑,遇到这种就比较蛋疼。表现为,不按你的意志推荐公司和岗位,喜欢公司一面候选人一面,更差的拿了简历就乱投。这种的其实很多好的猎头也都不喜欢的,害群之马,降低了整个猎头行业的声誉。为了减少遇到这种猎头时的损失,我一般是先告诉猎头我的要求和倾向,然后让猎头给我推JD (Job Description),如果有合适的话此时再给一份通用简历。

我接触到的最好的两个猎头恰好都来自于一个公司,他们帮助了我非常多。即使我最后没有能让他们挣到钱,但整个过程中他们所表现出来的始终如一的专业素质与职业素养让我非常钦佩。他们都来自黑云杉,分别是 Leo 和 Jessica。

你对于公司、HR、猎头、候选人的关系怎么看?

这几个角色相互之间有共同利益也有利益冲突。得分不同的角度。

从利益冲突来看,公司要人但又想省钱,尽可能地少给候选人工资和待遇,有的差的就会给猎头少的钱或者能拖一点是一点。HR 是公司意志的执行者,需要执行公司的意志,但是他们的收入又直接或间接地和入职人数与候选人 package 正相关。猎头从公司处拿钱,但又得为候选人服务,有的候选人很挑比较难合作,而有的公司谈的合约并不平等,但又必须执行,两面都有压力。候选人需要一份工作,而自己人脉也有一定限制,所以需要猎头和 HR 的帮助,但因为自身的可替换性强,所以时常会遇到压薪资等状况。

但如果看共同利益,这些角色又是利益共同体。公司需要员工来实现自己的目标,而如果招到优秀的人才,则往往给人才的工资远没有人才的加入为自己创造的利益大,投资回报比相当高(我花数周为某司写的数据压缩算法每天能节省的云服务支出就超过了我当时的日工资,而我在那家公司做了三年多)。候选人提供服务,获得稳定报酬,而且很多候选人的能力需要一个平台来放大,而合适的公司则提供了这个舞台,甚至能达成远超越薪资的自我实现。HR 就是管人事的,招的人不行的话,他(她)还会被领导指责没把好关。猎头的收入和候选人直接相关,而且一般需要候选人入职工作 6 个月后才会收到收入,所以猎头也不能为了求速度而推荐不合适的候选人给公司,也不能推荐不合适的公司给候选人。

理得顺利益的,大家良好合作,做大蛋糕。理不顺的,则开始互害了。

投简历前有哪些东西需要准备一下

我的自我简介

Greetings(先来个招呼,非常简单的礼仪). My name is Bingliang, I graduated from Zhejiang University in 2015 with Bachelor’s degree. I majored in Digital Media Technology. And I received Zhejiang University’s Undergraduate Excellent Graduation Project in 2015.(简单讲一下自己的学历和学位,GPA 高的可以提一下,有奖项的可以提一下,我 GPA 比较差所以这里就不提了。)

I use English very often, such as communicating with foreign developers on Github. And I took TOIEC test in 2019, obtained 900 scores, that’s pretty good. (国内公司基本不看重英文能力,这段就可以略过。可以提一下自己平常怎么用英文的,以及比较好的考试成绩。)

After graduation, I’ve been a developer for over 5 years(我做的事情比较杂,架构、前端、后端都做过,所以这里只说 developer,专精某一个方面的可以说对应的,比如 frontend developer 或者 data scientist). My favorite language is Typescript, and I enjoy React(可以提一下技术栈,这两个都是我当前最常用最能讲的,所以放这里).

(这里可以加一个转场过渡或者稍稍停顿一下给面试官潜意识一个提醒,咱要讲重要的事情也就是项目经历了。)

(我选择三个比较有亮点的角度来讲,争取能多方面地展现出我的特质和气质。)

In early 2021, I became the tech lead of ‘Imaging Diagnosis Platform’. We adapted many trending technologies, such as Monorepo, Lerna and Storybook, to build a ‘module first’ project. My team is productive and happy-coding under my lead. (这段表现架构能力和团队管理能力,展现领导力。因为篇幅有限,这里没有用 STAR 原则,只是侧面描写了一下团队的状况。)

As an Individual, I consider myself a self-driven person. In 2020 I developed a ‘Remote Rendering Volume Rendering Technology Service’ as a solo fullstack developer. I chose VTK (which is a visualization library written in C) as my rendering core, and use nodejs as my backend server to do other things. Finally I use node-c-addon to glue them together. This whole task may cost other companies a whole team to finish, but I did it all by myself.(这段重点表现我有能力做一个单人全栈,并且生产力很高,展现技术能力与自驱力。)

And I think I’m pretty good at seeking opportunities(这里我用了个双关,引起面试官的注意,seeking opportunities 有找新工作的意思,希望能活跃到气氛). Also in 2020, when I was cooperating with another team, I found the compression algorithm they were using could be improved. So I did my research and designed my new algorithm. The result is pretty good. The compression ratio is approximately 8% to 13% comparing to the old algorithm. And it is pretty fast, about 1ms per frame using typescript. It completely eliminated the bottlenecks in transferring, storing and processing. It is now a basic data structure in my last company, and the algorithm got implemented in various languages, such as typescript, java and C.(这段表现了我作为一个辅助去参加别人的项目时,发现别人的工作有改进空间,便主动改进之的过程。展现视野和热情。)

(停顿一下说总结)

In general, I consider myself a passionate, focus and self-driven person. My colleges think I’m a good team member who always takes responsibilities. (帮面试官做一个印象深刻的总结。自己能做好自己,在团队里更能融洽合作,还能独具慧眼发现原来发现不了的机会,领袖、尖刀、辅助三种角色都当的不错,太心动了简直无法拒绝。)

自我简介在很多面试环节中会流于形式,变成面试官懒得事前准备,现场看简历时避免面试者无事可做搞得点背景音。这并不是面试者的错,某场面试遇到流于形式的自我简介不可避免,但如果遇到一个事前好好准备过并正在认真听你的自我简介的面试官的时候,给他一个展示自己风采的机会请绝对不要错过了。好几个面试官在听完我的自我简介之后都给出了令人印象深刻等正面评价。

面试前有哪些东西需要准备一下?

去现场面的整理一下自己仪容仪表,保持口气清新,很多男生不注重个人卫生,会很失分,有的女生穿着打扮没问题但口气比较重,那讲话的时候就有距离感了。有人推荐自带简历自带笔和白纸,我基本上会自己带笔因为自己的笔写起来比较习惯。尽可能能安排一天通关的话这样比较方便。如果要面4轮以上的保持一下体力,可以喝个饮料啥的。

到了面试地点有的前台和 HR 会让你填信息登记,有的还详细到父母职业电话家庭住址。请不要写,这些即使需要提交也是背调甚至入职之后才需要的。就说隐私信息视情况后面会提供,我对你们公司还不是很了解此时提供并不恰当。有的信息登记会让你写公司经历啥的,这种简历上已经提供过的就写一个详见简历就可以了。刚一点,和我一样,不要纵容这些不良风气,我还没遇到过我做了这些还坚持的 HR,HR 再坚持就直接回家,这种迂腐形式主义的公司我是不要呆的。面试只需要一个简历就行了,安排了面试就说明没被表刷,你的信息就已经足够了。

远程面试的话提前调试好自己的设备,摄像头,耳机,耳麦。对微软来说有过程需要面试者分享自己的屏幕给面试官,需要在面试者的机器上面写代码,那就得提前安装好开发环境。提前上个厕所啥的。面试过程中带瓶水或者饮料可以压压惊。

简历怎么搞?

这个网上有很多模板也有很多建议。我是图省事省力(更新简历也是个体力活),所以干脆用履历,而且还是 markdown 生成的静态页面,然后手动删不需要的元素,改一些 css 直接打印成 pdf。这些对于前端程序员来说应该不是问题。

有一些是必要的,邮箱,手机号。github 和 blog 看情况可以放,没有也无所谓。可以放照片,我是不喜欢放照片,放了就照骗,我放的是我自己设计的几何图案的头像,或者不放也可以。

学历、项目经历是最重要的,展现不同能力的经历可以都放,但是体现重复的能力的就放最难的最有影响力的就行了。有专利啥的、有开源贡献的别忘了写,像专利这种是项目的副产物我就很容易忘记写,但其实是挺加分的。不过有这些的一般自己都会写的,也不用我这里提。项目经历按STAR 原则写就很容易写的很好。

个性特征啥的一般是刚工作的项目经验少的写一写,干了几年的这种直接删掉。

技能树技术栈网络履历上要写,用来给 HR 和猎头看,针对性的投的简历就可以看情况省掉了。

喜欢的书看过的书啥的我写过一些软件哲学相关的,比如我喜欢《人月神话》和《大教堂与集市》,遇到正确的面试官是个大加分项,技术书比如《剑指 Offer》和《You Don’t Know JS》就没必要写了,这些无关个性和形而上的理解,技术的东西大家或多或少都是要用要看的。

英文需要吗?

外企是需要的,至少能听会说。

面试的时候自我介绍怎么搞?

投简历前有哪些东西需要准备一下

我的自我简介

有哪些面试技巧吗?

面试是有点和开发不一样的技能了。我是不断试错吧。除此之外买了本《剑指 Offer》看看。还是很有帮助的。

国内厂基本八股文先来一遍。这边看情况尽可能地多答,不知道就说这个没有接触过,没有用过,但是听说过,可能是咋样。好一点的面试官会说不知道没关系,考别的知识面。比较差的面试官就会这个时候心里挂你了。最差的面试官知道一个错的答案,你讲对的他也会挂你,那就真的没缘分。

可以引导面试官出你会的方面。比如被问到 Vue 的概念,但我没写过 Vue,我就会说:“我还没用过 Vue,但是我知道 Vue 的响应式和 mobx 的理念和实现应该是差不多的。”然后可以讲一下我知道的 mobx 的 decorator 和 js 的 proxy 和背后“该被更新的会自动得到正确的更新”的哲学。或者说被问到有没有看过 React 的源码,比如最近的 fiber 更新,我就会说:“fiber 这个对于应用开发是无感知的,我有兴趣但是因为时间和重要性的关系我没有看过,说到源码,我有看过 React Context 相关的。”一般面试官会就这你的话说 React Context 这边的源码,跟他讲一下 changedBits 和 props 传递链是两套基本就没问题了。或者干脆躺平:“这个源码确实是很好的,我也想看的,但是我平常业务开发比较繁重,我相信面试官也有跟我一样的体验,我有机会还是会学一些这里的。”

总体来说面试官貌似随机地问问题其实是瞎蒙,你只要能展现出你的深度和思考就可以,遇到不会的就换个差不多的给面试官就行。

面试官问的问题含糊不清则要主动出击让他具体描述一下或者举个例子。好的面试官都会推进的。

八股文有遇到多吗?

是非常多的。越卷的行业八股文越多,前端这里常遇到的就有(括号里是吐槽):

我遇到很多面试官可能是很多年的老前端了,会说一句 HTML, JS, CSS 三件套可基本了,怎么能离得开呢?我想咋就不能离开了呢 JSX, TS, inline style 或者别的,虽然浏览器最后执行的还是老三样,但是这么说 CPU 也不执行高级语言呀。但这话我又不好意思冲着面试官说。

我总结的话对付八股文就要使用 DP 算法,遇到一个记住一个,反正八股文也不太多,考太难的也太过分,差不多了之后基本就轻松通关,面试官一般要忙着写代码,他们脑海中的八股文估计也就几道而已。

我后来是买了个课也算是系统地补补课。https://learn.codevolution.dev/Codevolution在油管开的频道质量我觉得还不错,免费的也有可以听听。

不过八股文就是面试前要复习一下,实在是太容易忘记了。

算法题有遇到多吗?

遇到非常多,但是难度相当低,合计也就在微软面了 1 道 hard,2 道 medium,除了微软外只有两公司问了 medium,一道 DST,一道 DP。

我现在在 Leetcode 上也就合计解决了134个问题(Easy 53, Medium 69, Hard 12),这个刷题量是比较小的,而且我真开始面试的时候我只刷了这里面的一小部分,一大部分尤其是 DP 是后面刷的。

很多人认为刷题量大的厉害。但其实不是这样的,AC 很简单,很多暴力算法都能 AC,但面试官升级一下问题就不会了(《剑指 Offer》第七章《两个面试案例》里对面试官的心理活动有很好的描写)。虽然 AC,但是还是过不了面试。重要的是质量和深度。你能不能写出更好的算法,能不能逐步向最优解推进,能不能灵活地使用各种数据结构,能不能修改成熟的算法来符合当前场景,能不能考虑到各种 edge case。AC 很重要(尤其对 Easy 和 Medium 来说),但背后这些才是考核核心。

我这次面下来,国内公司考算法基本流于形式,有的面试连出 4 道 easy,有两个面试官不会写正确的 TreeNode,有的面试官知道了我刷题刷的不算多就认为我算法应该不太行就说出道简单的让我多思考思考,然后给了道判断单链表是否有环,我直接回答太简单快慢指针并让他出道难一点的后就失去了向我出算法题的兴趣。

算法题我还是折在微软上一次,在面试官表示了对我的自我简介非常欣赏之后出了一道经典 DP 题。但是当时压力太大(知道这是个经典题,并且自己做过),按面试官的思路一下子思考不出来,过早放弃,这次也决定了微软第一个岗位面试最后的结果并不理想。回过来看有好几点能做的更好。第一是面试官给的提示并不具体,我后来问 HR 要到了面试反馈,面试官觉得提到了点上,但是其实 DP 做的不多的话不能 get 到那个点。第二是我太早放弃了,当时压力比较大,但是我已经发现了一些数据上的特征,而且我还有半个小时,静下心来平复下情绪理智分析下还是有机会。第三是我回去翻我的 leetcode 项目,我找到我 AC 的这道题,但是这里我写了句// TODO: O(nlog(n)) time complexity solution,我看到这句话时那是相当后悔。我当时如果直接将这个 TODO 做掉的话,那我面试的时候就根本不会遇到这些意外了。这也证明了刷题质量比数量要重要。然后我就刷了一堆 DP 的题,虽然后面再也没有在面试中遇到,但我已经很有自信了。

需不需要刷个题?需要的话要刷多少?

没有 ACM 过或者算法不熟的,从对于自己能力的提升角度出发还是有必要系统地深度刷一下的。我刷了一遍之后感觉学到了很多,尤其是以前自己的一些盲点都在刷题的过程中被发掘了出来。

我微软 DP 那道挂了后我买了 Leetcode 的会员。这个会员有帮助,但是不大。而且比较坑的是它自动续费,导致我事实上交了两个月的订阅钱。

刷多少的话我回过头来想一想,只要把 Top Interview Questions 的 Easy CollectionMedium Collection 刷一遍就可以,这两个合计的质量和覆盖率还是不错的。看我的 leetcode 进度的话,我花了一个半月不到。

系统设计题有遇到吗?

考到的比较少。系统设计基本只有大厂社招会遇到。

有遇到一道 LRU,我之前没遇到过,所以自己从零设计了一个依赖链表和哈希表的,跟标准设计非常接近,过了。Leetcode 也有标准的 LRU 设计题,后面学习了一下。

另外有一道让我设计一个编译系统,需要用上并行计算。用生产者消费者的思路去写就可以。我以前写服务的时候用过一个待处理任务队列,差不多的意思,所以轻车熟路。

最难的一道是让我设计一个全球的图片分享网站,外带一些特殊需求。设计了一个本地全功能,异地定时同步 diff 的架构。

系统设计还是比较考验综合实力的,多花点时间分析问题,把细节搞清楚,然后再融合起来,基本上就可以了。

HR 面有什么要注意的吗?

基本上会问一些套路题,比如对每段换工作经历表示兴趣,会问奇怪的问题和只会问正常的问题的大概一半一半。我在这边还是比较诚实的。但这里也是有一些套路的,比如“与个人的职业发展规划不符”就可以套非常多种情况,包括做杂事太多,领导不行,有更好的机会等。但有的 HR 就会各种踩,觉得你这个那个有问题,那其实就没有什么聊下去的必要。还有的会问你对于自己的认知是怎样的,尤其是你觉得你自己有什么不足。这个如果平常对自己有沉下来反思的,那是很容易说出几条的,但也要在这个描述中表述出不是逃避而是积极面对(并不一定要改,个性和环境是有配合与不配合的关系的)。比如我是这么回答的:“我是比较喜欢暴露问题的人,对于我来说表面的和气很容易将一个隐患在未来放大的,对于公司和集体的长远来说非常不利,与其掩盖着不如提早充分讨论,给出预案。但大多数人本性是不愿意承认自己的错误的,而我又是本质上比较较真的人,所以必然会在讨论中和人发生冲突。就结果来说,只要双方都还是实事求是有共同目标的,冲突还是会变成共识,但是这个过程中使用怎样的方式方法来使大家都能更积极主动地通力合作我认为我还有需要学习的空间。”

面试过程意外状况(面试官刁难、突然发现不会)怎么办?

意外状况还是很多,想一想自己平常工作生活中是如何解决的,面试中的也是一样的,深呼吸后尝试沉稳解决之。

面试官刁难的时候得分两种,一种是面试官故意给一个难度很高的,看上去是刁难,实际上面试官是想要测试一下面试者的潜力吧,但另一种就是面试官内心已经给了拒绝但是依旧要进行面试。区分这两点只需要向面试官问问题就可以,比如让面试官具体解释一下他的问题,或者让他举个例子。如果是前一种状态,面试官会和气地进行解释,而后一种面试官会不想进行对话,你就问不出他的解释,甚至因为他不想继续对话所以问出来的问题都未经思考,你让他解释他发现自己没法解释,反倒会让他更不开心。后面一种就保持一些体力和脑力准备下一场更好。

突然发现自己不会我的做法是承认不会,然后扯几句相关的。因为如果相关知道的一句不说,面试官可能会以为面试者根本不知道这个知识点,那就比较失分了。

找工作过程中有哪些有趣的事情?

对于面试有啥后悔的事情吗?

你面了哪几家公司?

主要是杭州和上海的,基本上有兴趣的都投了。还有很少别的城市的。

拿到了几个 Offer?(成功率咋样?)

大约50%。

能描述一下各个面试吗?

面试很大一部分是运气,考试就不用说了,更不要说和人打交道了。公司大了怎么样的人都有,偶尔遇到比较差的面试官也并不意味着这个公司不行,所以以下只代表某个样本及我的主观感受,对面试官的评价和对公司的评价我会区分开。

TODO

拿到了多少个 Offer 呀?对各个公司的面试感受咋样啊

面试主观感受 C 和 D 的公司名打码。

公司 面试结果 面试主观感受 细节
L HR 面挂 C 技术面通关了到老板三巨头,后来 HR 面让我报薪资,我说我现在给不出来,但是这个 HR 就是一定要我给一个,然后我就给了一个年薪两倍,第二天周六 CTO 给我发微信说想电话聊一下。我想了下我还不是员工就周六打电话,那怕不是以后要卷死。就第二天才回的微信。然后就没有然后了。
Arkie Offer A 感觉很好,面试官很认真很专业,问的很好,算法题出了道 medium 不错。CTO 人也很好。
Ebay 投递简历后无回音
B 一面挂 D 面试官极不专业,招 typescript 岗,面试官不会 typescript。多次离谱提问,根本就没在听我说的话,表现得非常不认真。找 HR 投诉也没有用。
M 技术一面挂 C 技术面之前会有纯英文网上答选择题,过了之后 HR 会约技术面。问了道刁钻的带从没见过的 api 的 js 题,不会做挂了。
帷幄 Offer B 现场面。三轮技术,一轮 HR 聊天。有个面试官中午没睡好哈欠不停,但是还是在积极面试。与几轮面试官对答还不错,总体还是有相互尊重的感觉。
米哈游 表刷
T HR 面挂 D 也有面试官打瞌睡,但是所有面试官都是能正常沟通交流的。HR 很刁难,在我说出我打仲裁以及职业经历中对某个领导的差评时表现出很强的拒绝的意思。应该是 HR 面挂。虽然最后一面是技术主管,但是他只是聊聊天,应该是 HR 告诉了拒绝意愿所以也就场面一下。
B Offer C 面试过程比较水,难度和深度不高。面了两轮技术就给了 Offer。
K 一面挂 D 面试官问了许多 js 打包之类的问题。我说到我做一个项目直接用 typescript 写代码,然后直接用一行命令就跑起服务来了(当时还没有接触 deno)。面试官说,不可能,肯定需要 compile typescript code,你是用什么命令进行的 compile。我想了想说,我真没用到,我直接用一个工具运行的 ts 入口文件。面试官就觉得我这个经历是个假的。估计在这里把我挂掉了。然而我用的是 ts-node,而 ts-node 就可以直接运行 .ts 文件,compile 的过程是被隐藏起来了的。
M HR 面挂 D 先后面了两次。第一次电面一轮,说过了会推进下一轮,但是后面就没有下文。过了快一个月,又被捞上来。技术主管面的时候面试官太喜欢做总结归纳。整个面试过程也确实给我一种 M 司的人很喜欢对任何事做抽象的归纳总结的印象,但是一些比较复杂的事情,就比如我在公司内做多次重点分享答疑也没法很好地传递信息和教学的项目,M 司的在我还没讲完的时候就开始做总结了。可想而知这个总结肯定偏颇的离谱。不过这个技术主管还是很好 argue 的。但是他们的 HR 也很离谱,问我某个项目细节,我觉得很奇怪,并且解释了我要说细节的话得爆专有名词了,她还是要听,那我只能给她爆技术名词,然后她很不开心的样子。最后也没回复 Offer 细节,应该就是 HR 面挂了。
Zoom 一面挂 B 问的 react 和 ts 是最深的。我感觉我回答的还不错,而且我自我感觉我对 react 和 ts 的理解和使用是比较好的,但是面试官给了我一个“理解尚浅”的评价后拒绝了我。
网易伏羲 Offer A 面试官很专业,沟通很顺畅,技术主管人很好,是个 old-school 的,跟我聊我简历上写的我喜欢的书。HR 也很好。
ImToken Offer B 面的岗其实不太适合(JD 上看不出来),但是流程还是走下去了。面试官和我聊区块链蛮开心。
X Offer D 技术面比较水。HR 比较麻烦,一定要先给她详细流水(我已告知了年薪和两个月的银行收入截图)才会给我定薪,我估摸着上海 996,但是他们肯定给不到一个离谱的钱,所以就不给流水。然后就谈崩了,我最后也不知道 Offer 长啥样。
阿里 DataV Offer B 笔试题考察非常全面但是有点过于难了。
商汤医疗 Offer B 一面应该是个新人,上来一套 JS 八股文,typeof(null) 啥的,错误率应该高达 50%。然后考算法,但一直是 easy 难度,平均 3 分钟一道解决。技术和 HR 都挺好。
微软 A 组 Offer A 标准流程面,面试会在一周之内分5-6次,每次1小时,一个面试官一道题,medium 难度为主,偶尔有 hard 难度。一至两轮全英文面。面试官非常专业。会要求提前配置好本地开发环境,然后远程桌面分享,一边写一边聊。一道经典动态规划没做出来,之后恶补。除此之外还有一次也挂了。一般来说挂两次就是 reject,但最后给了 low-ball。
L 三面挂 D 前两面聊的都很开心,第三面来了两个面试官,一个在旁边一直用电脑打字,不知道在写代码还是聊天,另外一个口气就很差。问的问题也非常不专业。面试官问我有没有写过组件库,我指着简历上的 monorepo 项目就是一个组件库,他同时可以发布 app,也可以发布到 npm 上给别人当 react 组件用,他说这个不是组件库,我就很无语。然后他继续问你有没有写过组件库。我就说没有。这两位面试官还问过一个超无语的问题:如果你的产品在需求不明确的情况下让你写一个功能,你会怎么写。我直接怼着说,先搞明白需求再写,产品搞不明白,我来搞明白。看面试官的表情,这并不是他们想要的答案。我也知道这不是我该待的团队。
L 二面挂 D 据说是前端 CTO 来面,但是问的问题非常的民科。面试官问,网络请求中会产生丢包,这时候怎么办。我想了想说,重发。面试官继续问,有没有办法做到不丢包。我想了想说,没有,因为网络是不可靠的信息传输方式。面试官意味深长地用关怀 naive 后辈的语气说,有方法可以不丢包的,你可以回去学习一下。我整个大无语,心里想,你这么牛逼我直接给你网线拔了你不丢包试试看。
X Offer C 面试有点过于水。感觉很缺人。
W 一面挂 C 他们应该不是很想要人,只是随便面了一下就拒了。
微软 B 组 Offer A 大体流程和 A 组差不多。MS 没有冷冻期,跨大 team 是可以直接再投的,上一次面试表现只会影响大 team 内的组。这次表现好很多,有上来要求写测试用例的和修复 bug 的,有问算法的,也有问系统设计。我写着写着 VScode insider 挂了。我还没反应过来发生了什么,面试官就表示了他的震惊,说明面试官一直有在看我敲代码。还好 VScode 有自动保存就还行。

拿到 Offer 之后谈薪咋谈?

先说默认给出的薪水。二三线厂基本卡涨幅卡的非常死,基本上不会超过 30%,而去大厂,虽然同一个职级也会有浮动,但是大厂一般有比较成熟的薪酬体系,职级定的高的话,基本上都不会有 30% 的涨幅上限限制。

HR 一般会问你你当前薪资是多少,那就如实回答。有的公司比较抠,你的期权没生效的就不算,各种福利都不算,这种有选择的话基本也不会去。然后 HR 会问你期望薪资是多少。我是回答“你们看着给就行了,我始终是综合来看,其他方面和工资都是一样重要的”。也可以说我相信贵司有一个成熟的薪酬体系,就我了解市场上大概是个什么价钱,最后还是你们觉得我咋样看着给。这样看起来像是被动,但是就结果来说还不错。

有的公司会问你要别的 Offer 来定薪,我个人是很不喜欢这种做法的。首先 Offer 的内容是那家公司和我本人的隐私信息,别的公司没权要。更不要说提供 Offer 的邮件或者别的资料了。如果一家公司需要别的公司的 Offer 来决定自己发什么 Offer 的话,那这家公司既没能力又没自信。发 Offer 还需要抄别人作业,不知道该说些什么。实操中可以模糊地给一个数字,免得公司觉得你 Offer 少给 low-ball,但不要说具体公司和具体 Offer,就说不方便说就可以了,HR 也都懂的。

Offer 怎么选择?

一份 Offer 可以拆成几部分。

以上很多信息可以在面试的提问环节里提。比如问工时遇到打马虎眼的时候可以问面试官本人的上班时间、团队一般的上班时间。或者问领导用人风格的时候可以问他遇到过的最不好合作的下属之类。每个人可以有不同的权重,我还是更 value 成长空间和健康度的,比较巧合的是,往往这些高的别的也不差。