L6/Staff面试准备和心得总结(系统设计)
还没发文章的小羊
2024-07-13 03:04:27
来源于1.介绍
楼主在北美工作经验十年,在去年底下决定换工作,也花了几个月长时间准备。又赶上今年的艰难时期,总算上岸。面了 Amazon、Google、
Meta, Apple, Databricks, Snap L6
engineer职位,除了 DB,都拿到了,最后60万+的offer。我不是天才,只是一个勤奋顽强的人。能做到就是动力+执行力。可能有人觉得时间线太长了。其实这取决于你有多想要下一份好的工作,很想要就得付出努力吧。当然运气在面试中也很重要,你就把offer视为概率游戏。谁也不能保证“100%通过coding/系统设计/行为面试”,但可以“80%的coding round、70%的SD和行为"如果我运气好,90%可能拿到offer。”这样即使在被拒后,这种心态也帮你保持冷静,专注于提升自己的百分比。
总体对于 L6/E6 level面试,重点应该放在系统设计和行为面试。本文详细介绍SD策略。对行为/coding,面试流程,交流问题,也会涉及,所有互联网资料都放入最后。
2. SD的理解
SD 问题是开放式的,它考察衡量 candidate如何处理抽象问题- 是你把你所知道的生搬硬套还是将非确定性问题转换为某种可行/优雅的解决方案?同时L6的SD 意味着深度+广度。如果你画一个写着“服务器"的block,然后简单连个数据库,这就是L3的水平。对于L6,细节比全局更重要。像pastebin 和 shorturl 这些简单的设计问题就不用考虑了,你得研究一些难度高一些的。
比如分布式事务如何做一致性。
但这还是有规律可循的,你可以把SD面试想象成工作中的review或者demo。它越有条理和结构化,越能在有限的时间内更有效地传达信息(signal)。比如第一步你问清楚功能性需求,明确数据的input,output,客户是谁,支持的场景。然后再列非功能性,包括performance,
reliability, durability, security, geographic distribution等
更多内容在图中了,理性讨论
0
阅读:0
WO油条
获益不少,博主有个关键点和我习惯的不同,不过的确楼主这种做法更好。就是我一般是列出存储的几个option,然后去套,实际上也没多分析,直接说xxx在哪些项目用过还不错,习惯用哪个就用哪个了;博主似乎是先不给选项,从下而上分析完数据特点和需求特点后(lsm/stable/etc)再引出哪个选项合适,听起来是更有说服力。
禁止忧伤
方便透露一最后去哪里了吗?
dddwn
原博主是谁