加拿大一百天八个Staff/PE Offer 求职全经验分享

来自其他站点
以下包括经历,刷题准备的一些建议,还有这次经历的公司的一些信息。
有帮助的话求一些大米,老是拜托朋友帮着看帖不是办法啊。

开始刷题和面试

十年前开始在温哥华的电商大厂工作,距离上一次升职也有五年了。虽然之前有幸和一个我职业中见到最靠谱的经理一起共事,而且也一步步走在升职L7的路上。但是去年部门的执行力遇到一些挑战,而且我关系很好很尊敬的L7一下子走了两位,就一下子感到有些迷茫。

因为是在LC和刷题文化之前加入这个公司,所以并没有真的刷过题,只是作为面试官在桌子的另一端装逼。真的到了被人评价的场景,很可能会面对因为失败而感到打击,或者觉得没有面子。这也是我一直以来不太考虑跳槽而是找各种理由专心计划升职的一个原因吧。但是就像奥里给说的一样,克服恐惧的最好方法是面对恐惧。而且,即使转一圈还是决定不走,那也要有Offer来证明自己拿到Offer的能力,才是真正的选择,而不是借口。

于是,在11月11日开始发愿进行刷题和面试准备。

第一阶段,复健

第一阶段是最难受的阶段。因为从来没有刷过题,虽然有相当的基本功,但是无论是解题思路,编码速度,还是语言的应用都是很低的状态。基本这个时候Easy题会做但是倒要好几轮修改才能通过,而Medium和Hard就大多都不会。此时的难点是因为日常不熟悉很难实现精确控制指针的题目,比如链表,二维数组,二分搜索。或者很久用不到忘掉的数据结构和方法论,比如单调栈,位运算,和一些涉及数学的题目。

开始刷题的第一时间,就创建了一个刷题群,筛选了几十位同样在认真刷题小伙伴一起打卡,讨论,分享,和互相督促。我觉得这是能给我动力完成这次计划的最正确的决策。看到时不时上岸的伙伴,有一种别人都在努力的学习氛围,还有看到别人也是从表现不佳到渐入佳境,或者自己遇到问题的时候收到一些建议和鼓励,这都是很重要的反馈。

这个阶段的刷题策略从走量为主,按照类型大量的刷Easy题目和简单的medium题目,特别是要越痛苦和困难的类型越迎上去。不一定要很有灵性,但是注重代码效率和总结各种模板,比如递归,窗口,二分搜索,二叉树各种遍历,快速排序、选择等等。还有就是一些小窍门,比如Java Stream,Map.computeIfAbsent,Comparator的Lambda写法,二维矩阵遍历把方向放到一个矩阵里什么的,目的是养成不乱看答案的好习惯,还有能达到在会做的情况下能高速写出来。
在这个阶段,我请假专注刷题,大概每天8-10个小时左右,而且暂时不考虑太多系统设计的事情。

第二阶段,模拟和算法深造

当会做的题就能真的编码出来的时候。在这个时候我就开始专注刷之前不会做的题目,比如一些比较难的Medium合高频的Hard 问题了。这个时候要更有耐心,一道题我会给自己最多半个小时思考,如果还是想不出来,就会仔细看答案,抄写一遍,然后过两天回来再做。同时,因为熟悉了编码本身,为了和面试体验一样,我开始边做题边自言自语的讲。一开始这样很分心,但是这是必要的一种练习。这个阶段的重点就是不要自欺欺人,一定不能觉得差不多会了就跳过去,而一定要写出来。这一阶段很重要的资源是Youtube上边Hua Hua的视频,很仔细的讲解原理,而不只是试图把题目背下来。另一个资源是LC自己的Interview Assessment Mock,这个会给一些时间压力和紧迫感,也能帮助自己看到自己的提高,找到自己的短板。第三个资源就是一亩三分地的面经了,如果自己面试的公司有,肯定是重点刷面经最重要。

系统设计在这个阶段我也开始练习了,这个最好的资源就是我的刷题群里边还有Clubhouse上开的俱乐部互相探讨,Youtube上的Tech Dummy讲解,Alex Xu的书,Grokking System Design,DDIA等等也都是我用过的资源。系统设计的练习,最重要的是沉下心来看书,加上和小伙伴们上台讲解或者真的去面。特别是没有接触过的做得不理想的部分,一定要复盘和重点复习。

我也开始申请和接受Recruiter或者前同事的邀请,安排Recruiter Call或者初面了。我把吸引力小的一些岗位或者公司流程听说很长的排在前边,把最想去的排在后边。甚至一些不太可能回去的公司,只要面试流程不是很奇葩,也安排上。这样能给自己很充分的实战练习,而这些一开始的实战,对我后边达到的好结果有决定性的意义。

第三阶段,面试和精修

基本上,认真做到四五百道题以后,对于常见的算法,数据结构,题型就开始融会贯通了。这个时候一些比较普通的Hard题目也能自己做出来。所以我的重点就放在两件事上,第一是每天把一道很难或者很费时间的高频Hard学到极致,比如说Add Operator,Basic Calculator,Validate Number,LFU,Median of Two Sorted List, Max Rectangle in Histogram,还有Karat面经偏难的系列题等等。这是为了能够继续把自己的理解加深,遇到这种难题不需要当场思考。第二件事就是对于高频的Medium提速,这个主要是为了Meta和Karat等一场面试做很多题的应对。

同时,这个时候开始练习一些OO和Building题,现在的Pre IPO和一些小一些的公司很喜欢这种题目。这个和LC很不一样,难度在于速度和代码质量。所以一些刷题的坏毛病反而要改过来,对于语言的应用也受到考验。比如我用Java,就要熟悉Enum,一些可以方便加速的Stream,怎么自己import东西,怎么call web API,怎么parse JSON,怎么打开文件。还有一些Generic和Concurrency的内容。在第三阶段学习这些,并不会很难,但是很重要。

这个阶段我也开始面试了,还是按照计划从不太看重的开始,onsite能安排在两天的我就尽量安排在两天这样稳步推进。这个时候就不看重题量,而是根据之前的表现把大量时间花在系统设计上了。不同的公司系统设计面试很不一样,比如大厂就是偏向大局,给你整场面试的时间让你来带领。但是一些小公司,特定领域的公司,或者按照组来招聘的公司就会很深挖跟他们相关的具体的东西。如果很看重这个类型的公司,一定要专项准备相关知识临时抱佛脚。

第四阶段,挑战高级别和谈Offer

级别上,可以参考Level FYI上边的对标和薪资的情况。因为我在目前的岗位其实做的不错,所以并不是紧急开溜的状态下,就比较高姿态的要求上升。Recruiter一般会考虑之前做的东西的scope,工作的年份,还有你的谈判筹码来考虑级别对应的事情。大部分公司都是安排一个Staff和Senior的Loop,然后看BQ部分和系统设计部分来定级别。BQ部分的关键词在Cross Team Cross Functional Impact,而系统设计则是能务实有效的设计系统和引领面试的节奏。在这个过程中,按照公司范围广度面试的机会对我来说就比较适合,而按组招聘的需要很特定技能的就相对没有那么成功了。不过我们找工作是为了能顺利发展职业,所以这个选择也是相对的,不用为有些公司降级Lowball而质疑自己的能力。我拿到一些不错的Offer以后,就会跟Recruiter说我不可能接降级的Offer,他们会更认真地给我Prep,而且debrief的时候,就不会用降级当作一个选项了。

谈Offer的话,我不太善于谈判,所以我的策略就是高度透明和拿大量Offer。从一开始接触就对于工资要求的底线明确沟通,也会把我面试的公司里最高薪酬的说一下作为范围。面露难色的或者够不到的就知道可能不行,而如果觉得我的底线能够到,我一般就会进行面试。而拿到Offer之后,要认真的表达感谢和兴趣来说明自己的诚意,比较靠谱的备选公司可以meet team或者经理的,我也会认真的继续进行。这个其实很重要,因为你有诚意别人才会觉得就是临门一脚,要认真对待。

同时,我也会很专业的提到我其他的申请和Offer,这个时候除了少数很执拗或者自大的公司外,大部分都会愿意多等待一下。拿到很多Offer以后,其实需要谈判的话术就不多了。我个人不喜欢谈很多轮,所以会告知他们我的情况,然后要求公司给我他们最高的Offer然后我只谈一轮,大家节省时间。这时候Recruiter可能就会私下跟你谈一个“sign-now”的数额。他们会说你要commit才能去申请,但是这个一般不出意外都能拿到。这个过程中,Recruiter一般是你的盟友,他们反正不出钱,而就是想要谈成Deal。只要你不要被话术干扰,一方面知道自己的要求,一方面很配合他做你的Case,就会有很好的合作关系。

选公司TC当然是重要因素,但是因为现在高级职位都是RSU为主,也要考虑公司类型,前景。另一方面,除非真的差距巨大要不然性价比,和跟自己的match程度也不能忽略。如果申请的公司按组招聘或者比较小而不是内部可以很容易转租或者未来在做Match,老板和你的Tech Lead也是决定性的因素。

具体公司的相关分享

有的有NDA所以就不说的特别明了,毕竟我是谁认识的一下就猜到了。把公开信息和不太敏感的信息整理一下,希望还是能给其他加拿大伙伴有用:

  1. 某HR系统厂:PE(相当于含金量高的Staff)。按组面试,我的面试体验非常好,大概是因为和之前做过的系统很match,经理也比较热情。文化上注重平衡,尊重等,而且能感觉不是忽悠。做的系统四平八稳,水平并不低,其实是很solid的选择。面试上听说组之间很不一样,但我遇到的就是标准的BQ, Sysd,LC,Building的组合,没有很难的题目。面试过程中我大概吃4到 5块饼干
  2. 某生鲜厂:Staff。店面是很难的Karat面试,一个小时一道Easy一道Medium一道Hard,但是题目互相有连贯性,还是比较吃力。我最后Hard没有完全写完,但是解法描述得很清楚。Onsite是比较标准的面试,Coding部分反而不是很难的Leetcode而偏向Building类型。系统设计和他们的业务很相关,可以提前思考一下。有一轮要Deep Dive你自己以前的项目和Scope,所以要准备好。面试过程中大概5.5– 6块饼干,据说面的更好还能多点。
  3. 某最近改名的厂:Staff。Coding全都是标准LC,四十五分钟两道,基本上还是比较公正的代码量不大的Medium,也有零星Easy和Hard出现。系统设计很有挑战,因为面试官几乎全程看你发挥,面试者需要引领整个节奏,带到自己熟悉并且重要的话题上。BQ部分四平八稳。算是比较传统的面试,体验也相当好。面试大概我吃了5.5 – 6.5块饼干,是明显高于其他公司的。
  4. 某独角兽批发行业F厂:Staff。是我体验最好的公司,一开始没听说过,但是和他们的领导面谈以及面试过程中的交流都非常顺畅,非常喜欢他们的流程,文化,甚至未来经理。面试内容四平八稳,Coding部分既有LC题也有Build题。面试流程极其高效,而且技术的大领导亲自介绍他们,还给我看他们的很多资料。我觉得比其他的给钱多的公司还想去,推荐加拿大的伙伴们申请看看。4.5 – 5.5 块饼干,虽然少一点但是很香。
  5. 某WLB出名综合性大厂:PE。这个每个组各自为战。我最后面了四个组总共十六个小时的Full Loop。对于练习倒是很有帮助。这家因为按着组来面试,所以系统设计的内容非常偏向他们组需要的技能,比如产品类型,安全相关,或者数据平台等组面的内容就完全不一样。Coding部分倒是四平八稳,就是LC高频题,其中包括一些常见的Hard题目。我面下来有的组就愿意给我升级到PE偏高的级,有的就只愿意给我降级到Senior。比较有趣的体验。这个面试吃几块饼干很看具体个人的情况,但是大概跟上边的W厂类似。
  6. 某中国H厂:这个是练习和好奇。但是整个流程都比较奇葩,一轮群面就通知我过了,但是面试我吃的饼干太少。加班和企业文化听起来一直觉得有些可怕,所以就不多说了。
  7. 某Fintech面向小企业的火热B厂:Staff这个很火热的高速增长公司,很多人都财务自由了。他们面试很务实,都是Build类型的题目,系统设计也是和领域很相关的。他们有个Debug的题目比较难,还有就是一定要准备好IDE。主要都是时间压力。面试的时候吃了4.5-5块饼干,但是他们的饼干很有意思,你可以自己决定原料的比例。这个其实也非常诱人,但是现在经济环境有点考虑。
  8. 某加拿大电商厂:Senior Staff。四平八稳的电面,和一个很有意思的Life Interview,比一般的BQ更大局就是讲自己为什么对技术有兴趣,还包括一些工作之外的事情。体验不错,但是他们家就算给你使劲升级,面试的时候也吃不到很多饼干。所以后来最终Loop我就取消了。
  9. 某支付的S厂:Staff。这个公司的Staff有些水分,感觉是平移或者降级了。他们的企业文化,整体面试体验都很好,也是我很喜欢的一家。面试和上边的B厂类似,都是很务实的,包括Coding部分都是Building的题目而不是LC。但是面试的时候吃的饼干和别人不在一个线,大概只能吃3块左右,感觉申请错级别了。
  10. 早期创业公司:几家早期创业公司,真的是太早了。第一是没有什么scope感觉就是告诉打杂写很基本的东西。面试也乱七八糟。有一家甚至没有Coding轮就给Offer。感觉就算作为练习,和其他比较标准差距也很大,应该就是不适合我。

有帮助的话求一些大米,老是拜托朋友帮着看帖不是办法。
如果有伙伴有问题的话,我也会至少在接下来的几天关注回复区,不涉及保密的会回答,大家一起进步!

补充内容 (2022-03-03 02:50 +8:00):
很多朋友问 Building 类型的题目,这是我这次面试发现现在很常见的题目类型。Pre-IPO 特别喜欢用,这个类型的题目都是让你Build某个东西,比如LC上也有Design标签的那些题目,比如写一个Producer Consumer,比如写某个Board Game的状态和规则,或者是更加务实,的比如让你当场写一个小模块来调用Web Service,读写文件,处理数据等等。这类题目在评分上,会更加看重你写东西和Production系统的差距。代码质量,命名,善于使用OOD,DRY,Extensibility等等可能LC题就不介意的东西,在这类面试就比较重要了。API或者常用的库不需要全都背下来,但是你老是去查看的话,时间肯定也会不够用。另外IDE也很重要,有的公司允许用自己的,那你要利用起来。有的不允许,那你要熟悉他们的环境(一般是code pair和code signal)。所以Building类型的题目要专门练习和准备,不能觉得自己LC很牛就妥了。

补充内容 (2022-08-31 15:02 +8:00):
后续:我决定不走了,有的时候画饼也真的能吃到的,我的感想在这里:

instant.1point3acres.cn
置顶回复
收起
avatar 278048
xicheng1983
盲猜一波
某HR系统厂:PE(相当于含金量高的Staff)。按组面试,我的面试体验非常好,大概是因为和之前做过的系统很match,经理也比较热情。文化上注重平衡,尊重等,而且能感觉不是忽悠。做的系统四平八稳,水平并不低,其实是很solid的选择。面试上听说组之间很不一样,但我遇到的就是标准的BQ, Sysd,LC,Building的组合,没有很难的题目。面试过程中我大概吃4到 5块饼干

感觉像salesforce
某生鲜厂:Staff。店面是很难的Karat面试,一个小时一道Easy一道Medium一道Hard,但是题目互相有连贯性,还是比较吃力。我最后Hard没有完全写完,但是解法描述得很清楚。Onsite是比较标准的面试,Coding部分反而不是很难的Leetcode而偏向Building类型。系统设计和他们的业务很相关,可以提前思考一下。有一轮要Deep Dive你自己以前的项目和Scope,所以要准备好。面试过程中大概5.5– 6块饼干,据说面的更好还能多点。

instacart ,用karat的没几个,karat不用全写完的,不然没几个过得了的。
某最近改名的厂:Staff。Coding全都是标准LC,四十五分钟两道,基本上还是比较公正的代码量不大的Medium,也有零星Easy和Hard出现。系统设计很有挑战,因为面试官几乎全程看你发挥,面试者需要引领整个节奏,带到自己熟悉并且重要的话题上。BQ部分四平八稳。算是比较传统的面试,体验也相当好。面试大概我吃了5.5 – 6.5块饼干,是明显高于其他公司的。

一听就是meta,45分钟两道题,关键是他们题库大,碰到下黑手的就惨了。
某独角兽批发行业F厂:Staff。是我体验最好的公司,一开始没听说过,但是和他们的领导面谈以及面试过程中的交流都非常顺畅,非常喜欢他们的流程,文化,甚至未来经理。面试内容四平八稳,Coding部分既有LC题也有Build题。面试流程极其高效,而且技术的大领导亲自介绍他们,还给我看他们的很多资料。我觉得比其他的给钱多的公司还想去,推荐加拿大的伙伴们申请看看。4.5 – 5.5 块饼干,虽然少一点但是很香。

Faire
某WLB出名综合性大厂:PE。这个每个组各自为战。我最后面了四个组总共十六个小时的Full Loop。对于练习倒是很有帮助。这家因为按着组来面试,所以系统设计的内容非常偏向他们组需要的技能,比如产品类型,安全相关,或者数据平台等组面的内容就完全不一样。Coding部分倒是四平八稳,就是LC高频题,其中包括一些常见的Hard题目。我面下来有的组就愿意给我升级到PE偏高的级,有的就只愿意给我降级到Senior。比较有趣的体验。这个面试吃几块饼干很看具体个人的情况,但是大概跟上边的W厂类似。

听起来像Apple,每个组自己搞loop。
某中国H厂:这个是练习和好奇。但是整个流程都比较奇葩,一轮群面就通知我过了,但是面试我吃的饼干太少。加班和企业文化听起来一直觉得有些可怕,所以就不多说了。

该不会是华为吧?

某Fintech面向小企业的火热B厂:Staff这个很火热的高速增长公司,很多人都财务自由了。他们面试很务实,都是Build类型的题目,系统设计也是和领域很相关的。他们有个Debug的题目比较难,还有就是一定要准备好IDE。主要都是时间压力。面试的时候吃了4.5-5块饼干,但是他们的饼干很有意思,你可以自己决定原料的比例。这个其实也非常诱人,但是现在经济环境有点考虑。

brex
某加拿大电商厂:Senior Staff。四平八稳的电面,和一个很有意思的Life Interview,比一般的BQ更大局就是讲自己为什么对技术有兴趣,还包括一些工作之外的事情。体验不错,但是他们家就算给你使劲升级,面试的时候也吃不到很多饼干。所以后来最终Loop我就取消了。

听起来是shopify ,package低的可怜,可能高level会不一样。
某支付的S厂:Staff。这个公司的Staff有些水分,感觉是平移或者降级了。他们的企业文化,整体面试体验都很好,也是我很喜欢的一家。面试和上边的B厂类似,都是很务实的,包括Coding部分都是Building的题目而不是LC。但是面试的时候吃的饼干和别人不在一个线,大概只能吃3块左右,感觉申请错级别了。

stripe?

可以分享一下package的范围和排名吗?
大米 14
4
桔桑树J+1赞一个
挖煤+1赞一个
admin+10很有用的信息!
lovecat26+2给你点个赞!
44条回复