查看: 19254| 回复: 60
跳转到指定楼层
上一主题 下一主题
收起左侧

[跳槽] Startup 4.5YOE 8面4中2顶包senior 总结+经验分享

   
🔗
匿名用户-WMQFG  | 添加认证 | 2022-5-2 03:07:43 |倒序浏览
几个月的跳槽告一段落, 看了地里无数的资料, 写个东西回馈一下, 也给自己做个总结。可能一些经验不容易借鉴, 我尽量generalize吧.. .и

Background
(背景大概过于明显, 认识我的人应该一眼就能认出来, 咱们其他途径私聊, 就不要在楼里透露了lol, 也先不要和现在的同事老板说...)
毕业之后就进了现在的公司, 一家100人上下的小startup, 这么多年跟着公司发展也慢慢grow了不同方面的技术, 一共换(reorg)了两次team, Covid刚开始的时候机缘巧合当了现在team的manager (因为小公司, 还是做很多tech的活, 约等于TLM) (后面会讲到, 这个对面试还是帮助挺大的)。
近一两年公司文化变差了很多, 因为疫情公司发展一般, 作为manager又很多杂事, 比如经常的cross-timezone开会, WLB实在很一般。去年看到senior level的就业市场这么火果断准备跑路 - 最近看我这个运气真是不错了, 面试的时候还在放水招人给大包阶段, 最近有各种layoff和hiring freeze的消息, 而且后面经济发展看来也不太好。-baidu 1point3acres


Timeline
大概2021年8/9月开始大量刷题, 10/11月准备System Design, 感恩节那周开始找人内推和投简历。
原本计划12月把HR call和phone interview都面完, 结果有些公司太慢还是拖到了1月。当然12-1月还是同时一直focus在System Design.
最后1月请了一周半PTO面onsite, 2月收offer+team match+negotiate, 3月初签了offer - 因为一些原因6月初才会入职.

我感觉这个准备时间在地里算是比较长的, 主要是因为性格吧, 总是担心自己没复习够, 还是多留一些时间。但战线拖得太长挺辛苦的, 基本几个月没啥娱乐和体育活动, 而且后期发现System Design学无止境, 学得越多, 发现自己不会的越多, 然后越焦虑.
个人觉得年底是个准备+面试的好时机, 11+12+1月有好多天假期, 圣诞那几天大家都在划水, 不放假也不用干活.

Summary:
因为这几年都在startup, 所以想去大厂体验下, 一共投了8个公司, 最后拿了4个offer, 成功率虽然不像其他人那么高, 但够用就行, 最后compete出两个顶包心满意足了.
挑公司的时候对着地里的神贴挑的 https://www.1point3acres.com/bbs/thread-802273-1-1.html , 因为现在在南湾, 也不想申remote的职位, 所以filter掉所有只在SF城里的公司, 剩下大概也就这几家了.
Amazon: L6 offer, 初始包大到吓人, 被我拿来和全世界compete, 最后给到了年均60W(他们内部的计算方法..).
Google: L5 offer, 初始包low到吓人, 后来compete到顶包就去了(算上refresh和Amazon差不太多), 向WLB低头.....
Netflix: Onsite fail, 最早的白月光, background和BQ都挺match的, 挂在了SD.
Linkedin: Onsite fail (staff), 给了downlevel我就直接拒了. 前期的白月光No.2, 本以为WLB和食堂是最大的优点, 然后看地里发现包还挺不错的, 可惜也挂在了SD(而且还是一道面经题..)
Roblox: 面了超多轮, 算是fail了.  开始面的是EM, 后来转面IC5(~staff), 也是因为system design weak所以downlevel到了IC4, HR没正式说IC4能给我发offer, 但他说反正和我其他数字比不了, 加上我发现对元宇宙也没啥兴趣, 于是就互拒了.
Robinhood: Senior offer. 对公司发展有点concern, 比较早就reject了offer了.
Uber: L5a, 挺有意思的team, 没给到顶包, 和Amazon/Google这三家一起纠结了很久, 感觉career growth和学习新东西是不错的机会..1point3acres
Meta: 过了电面, withdraw onsite。槽点太多, 开始找朋友refer的, 竟然直接把我拒了, 然后和一个sourcer打了电话之后, 花了一个月时间才重新开始process,电面出结果也慢, 最后我有几个offer, 又实在不想再请假面试了就取消了。 ..

.1point3acres
刷题:
夸张一点说, 我从2019年中就开始刷题了.. 当时公司成立几年来第一次裁员, 于是突然有了危机意识, 决定要保持手感, 开始断断续续以一天1-2道频率做题以及尽量抽时间参加Leetcode周赛。Covid WFH之后Leetcode的daily challenge到现在两年了应该只miss了不到一周。所以只说刷题准备时间的话大概在地里是top 1%了哈哈哈。最终刷题数Leetcode+Lintcode应该有1500+. Leetcode的rating有2500+.


所以我这个准备方式不太能generalize, 只是有几点想法.-baidu 1point3acres

1. ”按tag/算法刷题“真的很有用!
我前几年刷题的时候一直是random的, 要么从某个数字开始顺着刷, 或者直接就每天pick one。朋友推荐按tag刷的时候我特别不屑, 因为觉得已经知道算法之后再去做有一种cheating的感觉, 对真正面试没有帮助。
但是后来找来了某培训机构的刷题入门教程看, 然后体验了一下LintCode的不同算法的"通关刷题", 和Leetcode的"Explore"里面对不同算法的介绍和题目, 我发现这个确实是正确的刷题思路.
虽然看起来是”cheating“, 但其实通过这个方式, 第一把某类算法刷熟, 第二是真正interview的时候, 第一步是发现这道题是什么套路/算法, 然后再去apply这个算法. 只有短时间大量做/总结某一类题, 才能熟悉起来, 而不是random的做题+看答案的循环最终还是不会做.

2. 刷到一定水平之后推荐参加LeetCode周赛.
我的水平是稳定至少三题 (一般30min以内), 第四题看难度, 近几个月大放水的时候能40min四题全部做出来. 但更多的时候第四题就是能写个勉强work的solution, 然后花一个小时死命improve complexity, 最终看运气能不能想到某个trick然后勉强做出来. 排名一般能在200-800之间吧.. 1point3acres.com
几个好处:
a.计时比赛是锻炼面试的一个好方式;
b.周赛是新题, 有时候可能是Google之类的最新面经(我猜的);
c. 能做出来3/4题基本都还是挺有成就感的;
d. 做不出来的话结束了看前几名的solution, 可以开阔一下思路.. ----

3. 刷题还是要注重bug-free和不靠compile/run/print-log 来debug的能力.. 1point3acres.com
这是我做的很不好的一点, 平常刷题追求速度, 所以写完了不怎么认真检查就run, 有时候LC上一道题要提交很多次 (参加周赛对这个有一定的帮助, 毕竟错误提交有惩罚)
最终面试的时候很多轮都是有各种typo, loop condition, off-by-one error, 虽然最终好像没有影响我nterview结果(或许senior level不是那么注重bug-free), 但当时还是挺尴尬的, 而且可能影响自己下一轮的心情.
关于这个, 不同公司的风格也很不一样, 面试之前建议多看看面经. 比如Robinhood追求bug-free但不需要optimal complexity, 有现成的test case要跑; Uber有两轮有现成的test case, 跑出来就行了, 中间怎么debug好像也不太care; Google的系统没法跑code, 但面试官看code都还挺仔细的.
(我个人面试别人的时候, 非常不喜欢反复run和反复print log来debug的行为, 显得很没有水平... 特别是一些candidate也不先问下我能不能跑code)

-baidu 1point3acres

System Design:
我挂的几个面试都挂在了System Design上, 也不算什么成功经验, 比不上之前地里的那些, 就写一些自己的想法吧.

准备材料
我的timeline大概是 DDIA -> educative.io -> Alex Xu -> Scott Shi YouTube -> Online blogs -> 面经.. check 1point3acres for more.
1. DDIA绝对是后悔没有早点看的一本书, 对平常的工作也是帮助极大. 比如Database和index以前就没有认真学过, 很多东西平常工作中其实都有接触到, 但没有这么系统的总结和学习, 比如Event-driven architecture. 我边读边做笔记, 但最后发现笔记的字数大概有书的一半... (自己做笔记的总结能力比较差, 不过也说明书里干货真的多..)
2. Educative.io不如AlexXu那一本(网上的版本: https://courses.systeminterview.com/courses ), 个人觉得AlexXu的图和内容都更细一点, 另外我还关注他LinkedIn主页, 最近出了version 2了.
3. 看Scott Shi的YouTube我是先看的DDIA总结系列(顺便当做是复习了一遍DDIA), 然后再看的mock interview。DDIA总结还是不错的, 而且加了一些他在Uber工作的亲身体验, 也从他视频里get了一些interview技巧, 和一些别的值得学习的东西(比如FB TAO database, Uber Schemaless). Mock系列主要是感受一下面试的过程。客观的说, 两个系列都有点烂尾(主要是他后期没那么有空, 也没那么motivated了) - 最后我拿了Uber之后还私聊他咨询了一下team, 感谢超nice的大神.... 1point3acres
4. Online blogs我是从AlexXu的书每一章后面的Reference Material开始看的, 个人认为数量, 深度和广度是比较合适的 (DDIA的reference就太多太深了). 一个personal建议是论文不用看太多, 性价比不高, 我看了Google三驾马车感觉收获不大, 印象中只有Amazon的Dynamo论文和FB的distributed memcached论文花的时间是值得的.
5. 著名Github repo: https://github.com/donnemartin/system-design-primer, 另外还有一个没什么人提过的资料: https://tianpan.co/notes/2016-02 ... em-design-interview . 像我一样后期还有空, 又不知道看啥的话, 就看看这一类性质的材料, 一遍遍refresh关于基础知识的记忆和typical题目的套路.

一些random想法和reflection:
1. 工作中的积累很有帮助, 我开始学习System Design之后发现我们公司的tech stack挺先进的, Kafka, Cassandra, Flink/Spark, OLAP DB, 还有一个real-time的服务基本上就是Lambda Architecture. 很多基础知识可以很容易和真正的工作内容联系起来, 加深理解.
2. 后期看blog和看面经, 需要一定的"钻牛角尖", 去思考某个特别细节的地方具体是怎么work的, 面试的时候面试官说不定就揪着一个细节问, 如果不提前思考很容易出问题。但问题是, 我水平不够所以很多东西自己也想不出来, 甚至网上也没找到说的很清楚的答案, 比如几个例子:
a. Relational DB的replication,  master-slave模式下, synchronized会有network latency, async的话会有master挂了但一部分数据没有被replicated的风险... 怎么可以解决这两个问题? 既不丢数据又能及时返回? (一直没想到一个solution...感觉这个无解啊?)
b. 同一个service里面不同步骤的顺序, 比如typical的stateless server, 经常需要save to DB,  return to client, send message to Kafka, 后两步先做哪个? Consume Kafka的时候可能要update status in DB to be "dequed", commit offset to Kafka, do the real work, 这三步的顺序怎么样? 不同的顺序会导致recover的时候有什么区别? 会影响at-least once和at-most once guarantee么?
c. Update Cache的时候的各种inconsistency问题, 怎么避免? 什么办法可以避免thundering herd problem不要大量读数据库? (推荐读FB的distributed memcached)
d. 东欧大哥TopK problem里好像前后有两个Kafka, 里面的数据有啥区别, partition key哪里不同? 第二个Kafka是怎么aggregated之后的数据? (我面LinkedIn的时候就这个topK的原题, 挂在了这个两个Kafka解释不清楚..)
3. 有机会的话最好还是找朋友/花钱mock... 不然第一次面System Design还是挺紧张的.-baidu 1point3acres
4. ”Drive Discussion“ - 很多公司这一点是决定senior的critical point. 我还是没学会怎么做, 因为不同面试官风格太不一样了. 有面试官一直一直问, 我也没机会drive, 有的面试官在我问他"你有什么问题吗?"的时候问了几个component然后我们开始深入讨论, 那么我算是drive了嘛? 还是说我应该一直从头到尾说, 等面试官打断我呢? - 或许多Mock能得到专业面试官的评价吧.
. 1point 3 acres

-baidu 1point3acres
Behavior Question:
感谢Amazon的面试让我专门花时间认真准备BQ. 推荐还是从自己的故事出发, 而不是从Amazon的LP出发.. 先写出来故事, 再在每个故事后面标它能match上哪个LP. 准备的那段时间我连睡觉都在想故事, 有天爬起来拿手机通讯录记下来.. 所以说明了工作中总结很重要, 每次的performance review都要好好写, 哪些project做了些什么, 或者每一个project做完都做一下记录和反思, 之后跳槽就不会这么痛苦了.
我在现在公司的经历挺丰富的, 一共写出来了22个故事, 其中有四五个被我标了weak. 我在一个文档里面把每个故事写了大标题+一句话总结+详细的STAR. Amazon面试之前标好了对应LP, 把标题打下来贴在了电脑后面的墙上, 这样随时做一个小提醒 (虽然最后也没太用上). 之后每个公司面试之前都会至少过一遍大标题.
. ----
从面试结果和反馈来看, 我的BQ故事还是不错, 都能体现出公司看中的能力. 但面试过程中我感觉表达能力一般, 有时候会一段话说太多, 让面试官没有抓到重点, 有不止一次需要面试官反问我, “let me try to summarize what you just said, so you do xxx, and xxx...”, 可能还是需要更多的练习.-baidu 1point3acres
但因为现在做的是manager, 我的experience里的一个痛点是近期没有自己完成的大project, 基本上是了解需求之后给team里的其他TL去design然后让其他人做, 在申IC的职位的时候碰上"what's your most challenging project"这样的问题, 找不到大小和难度都合适的project, 这个时候一个方法是讲一个两年前的project, 另一个方法是讲一个最近的别人在做的大project.. 还好我对各种细节也还算了解还是能吹一吹.

. .и
As a Manager:
作为manager, 在跳槽的时候还是有一些优势的, (所以非常感激现在的公司之前把我promote到这个职位.. 否则职业生涯至少要慢一两年)
大概总结一下:
1. 对team内部的系统架构, 包括business use case, 及其熟悉, 碰上有些公司的题目是"反向system design"(解释自己的一个项目或者架构), 几乎不需要准备. 说夸张一点如果不要脸的话可以把其他人的project都说成自己做的也不会露馅.
2. 平时工作对soft skill的锻炼: 像是BQ里面的故事比IC的复杂程度上一个台阶, 很多公司是很看重了解business needs这个point的 (比如Amazon的customer obsessed就有点这个意思), 在manager level可以更好的看到公司安排project的目的性. 其他的soft skill也是和senior level的要求是相通的.. Waral dи,
3. 准备面试的那段时间给自己安排水一点的活... 而且做的慢一点老板基本也不会催, 只要继续保持手下的人在干活就好了...
4. (优势or劣势?) 虽然是小公司, 但这个title放在简历上还是会让HM/HR高看一眼, 觉得是不是有啥过人之处可以几年就做manager, 面试的时候也挺多人对这个感兴趣. 那么后面面试即使表现是average, 可能也会考虑到这个经验觉得"应该可以胜任senior level". 但我也碰到了有人觉得我是不是因为干了几年manager所以技术方面有下降, 导致System design表现不好.... 所以最终还是面试表现说话吧hhh.
. Waral dи,

从小到大文笔都一般般, 感觉写的有点乱, 欢迎提问~

本帖子中包含更多资源

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x

评分

参与人数 63大米 +73 收起 理由
玻璃心呆呆 + 1 赞一个
seven_shells + 1 赞一个
tofusoup + 1 赞一个
光影流转 + 2 给你点个赞!
小师妹 + 1 给你点个赞!

查看全部评分


上一篇:老板算不算PUA 我该润吗
下一篇:接了verbal offer之后说要再考虑正常吗?

本帖被以下淘专辑推荐:

地里匿名用户
推荐
匿名用户-ATDSC  | 添加认证 | 2022-5-2 03:36:08
楼主太强了,直呼牛逼。不过楼主要是想往上再爬梯子的话我个人觉得亚麻L6是这所有offer里面最好的。狗家5 scope和亚麻高级L5差不多,跟亚麻L6还是差一点。

评分

参与人数 1大米 +2 收起 理由
gongchen + 2 this

查看全部评分

回复

使用道具 举报

地里匿名用户
推荐
匿名用户-X1SR1  | 添加认证 | 2022-5-2 05:03:27
楼主做好被踩一部分的准备吧,地里看不得快速升职,跳槽拿大包的例子。最好人人躺平,全天下都是混子。所以地里的干货越来越少,只允许有一个声音躺平。不过好在楼主去了谷歌,谷歌部分水怪们不敢太大放厥词。
回复

使用道具 举报

地里匿名用户
推荐
匿名用户-WMQFG  | 添加认证 | 2022-5-2 05:37:57
匿名者 发表于 2022-5-1 13:03
虽然你花了很多时间来坚持刷题,毅力惊人,但是别人花在project上的时间和心血只会更多。就这样被你轻而易 ...
. 1point 3acres
(就知道会有人关注这个...)
首先, 你这个“虽然但是”.. 好像没什么逻辑关系...

这个project是一个正在做的项目, 我和另一个tech lead算是一起design的, 但因为我比较忙所以implementation都是他在做, 我在面试的时候说的是我也写了一部分code, 但我不觉得这是一个大问题.
. Χ
作为一个team的manager, 这个team做的贡献我都是有credit的, 我不认为这是“偷”. 当然我claim了比我应得的部分更多的credit - 可面试不就是需要展现自己好的一方面么, 很多人在公司内部performance review还互相抢credit呢, 我在面试的时候自然有掂量, 怎么样的夸大是合适的.
. ----
对于“most challenging project”这个问题来说, 本来重要的就是遇到了什么问题, 怎么去研究和解决的, 而design和写code的时候遇到的问题我们都是一起去解决的, 对于面试我的公司来说我展现了我的能力.

评分

参与人数 3大米 +3 收起 理由
hxw192287 + 1 赞一个
heyhey + 1 赞一个
sccnju + 1 赞一个

查看全部评分

回复

使用道具 举报

地里匿名用户
🔗
匿名用户-7HCBV  | 添加认证 | 2022-5-2 03:22:07 来自APP
恭喜楼主 小公司em跳到google l5 scope会小很多 可能需要适应一段时间
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-NRBPK  | 添加认证 | 2022-5-2 03:37:09 来自APP
Startup 4.5YOE就能当manager了?

评分

参与人数 1大米 +1 收起 理由
jewoei + 1 赞一个

查看全部评分

回复

使用道具 举报

地里匿名用户
🔗
匿名用户-TTF55  | 添加认证 | 2022-5-2 03:44:04 来自APP
匿名用户 发表于 2022-05-01 12:37:09
Startup 4.5YOE就能当manager了?
你以为人人都是一样的混日子?

一个牛叉的4yoe背后抵很多人14 yoe
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-KLBVL  | 添加认证 | 2022-5-2 04:07:59
LZ为啥不面EM岗呢?如果大厂不给面,面下中厂或者独角兽的manager还是可以的吧,重新做IC相当于降级了吧,毕竟再当回manager就得看机遇了,可能也不容易啊
回复

使用道具 举报

🔗
kenJ 2022-5-2 04:10:36 | 只看该作者
全局:
mark一下,感谢分享
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-NRBPK  | 添加认证 | 2022-5-2 04:21:52 来自APP
匿名用户 发表于 2022-05-01 12:44:04
你以为人人都是一样的混日子?

一个牛叉的4yoe背后抵很多人14 yoe
面大厂不行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
职场达人
  • ↑ 本版用于讨论职场各种干货话题,闲聊请去🔗聊聊或者🔗匿名版
  • ❌ 本版严禁水贴,引战,发布广告,拉群,贴个人联系方式,扣分无警告
  • ☑ 求职、面经等去 🔗北美求职和 🔗回国求职大区,刷题和学习请去 🔗终身学习大区
  • ☑ 请去专版发布 🔗内推, 🔗招聘信息,和讨论 🔗创业内容
  • ☑ PIP / DevList/ Need Support 等话题也已开设 🔗专版

本版积分规则

>
快速回复 返回顶部 返回列表