管理员
- 积分
- 77135
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2009-5-28
- 最后登录
- 1970-1-1
|
https://mp.weixin.qq.com/s?__biz=MzIwNTQ0OTg4MQ==&mid=2247483651&idx=1&sn=fab9b406b119544d4067eedc5aeda163&chksm=9731fef5a04677e3c02ff7393b813cac33409e8dcdb87dbc6e62aa97f71f0da4bd24658021a6&3rd=MzA3MDU4NTYzMw==&scene=6#rd
沈公子面经之Senior/Staff SWE
2017-01-15 沈公子 人家的屋顶
以前软件公司对工程师等级评估考核各自为营没有统一的规范。有些地方升职可以单靠熬资历,而另一些公司则卡得特别严。近年来很多公司慢慢开始采纳和Google匹配的工程师职业等级规划 (Engineering Career Pathway)。
. Waral dи,
Google系的工程师等级大致是这样的。
T3. Waral dи,
Software Engineer II (entry level, 其它公司一般叫 SWE I)
T4
Software Engineer III (其它公司一般叫 SWE II)
T5
Senior Software Engineer
T6
Staff Software Engineer
T7. 1point3acres.com
Senior Staff Software Engineer
T8
Principal Software Engineer
T9
Distinguished Software Engineer. Waral dи,
T10
Fellow
T11. 1point3acres
Senior Fellow (专门为Jeff Dean增设的)
T6是广大码农的一大目标,被视作职业发展早中期的一个里程碑。再往上就接近金字塔顶部了。许多公司T7+的比例不到15%。一般3-4年很多童鞋就到了T5,T5升T6的经历variance却很大,不少人一直达不到。大多公司也接受engineers可能stuck在T5上的事实(若是很多年依旧达不到T5是要被放PIP的,performance improvement plan的)。
在公司内部,T5和T6的分界线往往不是很清晰。经常能看到顶着T6头衔打酱油,贡献还不如T5的。但是跳槽面试,T5或T6的leveling跟面试表现就直接关联了。大家都知道考design/architecture是公司评估candidate是否达到Senior+ level的关键, 也是面试官衡量candidate是否有充足tech lead经验的时候。
举个栗子-我之前的团队负责filter推特上的垃圾信息和违反产品用户协议的帖子。面试的时候如何介绍这方面的技术架构,我们看一下几种不同的呈现方式。
. 1point3acres.com
Take 1
I worked on the real time content filtering project and was responsible for the mechanism of hiding spam and abusive tweets from the recipient's timeline. We had two choices -- (1) every time we construct a timeline, call the Safety service and pass ids of every tweet; the Safety service would return a potentially filtered list; or (2) every time a tweet is identified as spam or abusive, write the verdict as a piece of metadata to the tweet storage; the metadata is checked on any subsequent read. We chose the latter because the former would have led to extremely high QPS on the spam systems, i.e. high hardware cost and sophisticated reliability work.
Take 2
I worked on the real time content filtering project and was responsible for the mechanism of hiding spam and abusive tweets from the recipient’s timeline. One key architectural decision we had to make was between a pull model (call the Safety service every time a timeline is constructed) vs a push model (the Safety system writes the verdict of each tweet to DB). Even though the pull model follows the service oriented architecture (SOA) paradigm, it is not a preferable solution because it’d require the Safety service to scale horizontally to handle the total read volume of the site and be on the critical path of each read request. The push model leaks some business logic, but is a reasonable trade-off since the chance of a tweet going from good (on creation) to bad and needing a verdict update is very slim. To ensure consistency in interpreting the safety verdict of a tweet (which can be a struct as opposed to a simple boolean), we provide a library that other services can import. . Χ
Take 3
Before we dive into the technical details, let me first explain some of the product desires that affect the architectural decisions. The tweets to filter are in two categories: (1) clear violation of ToS; (2) unwelcomed contents to the recipients. While the action against the former case is straightforward -- we simply do not want/allow such contents on the network, the solution for the latter is more complex since it is perspectival. In other words, the visibility of a tweet is not just a property on the tweet object but varies according to whose timeline it would appear on. It is also worth noting that the overwhelming majority of tweets are good and need no verdict update or filtering. Only a tiny percentage of tweets would receive a negative verdict. And the identification may take some time, i.e. the verdict may not be available on tweet creation. But as soon as a tweet is identified “bad”, we need the filtering to kick in immediately.
With the requirements in mind, we first made a choice between the pull and push model. Even though the pull model follows the service oriented architecture (SOA) paradigm, it is not a preferable solution because it’d require the Safety service to scale horizontally to handle the total read volume of the site and be on the critical path of each read request. In that case, we would probably need some caching, but the presence of a cache means lag in filtering. The push model leaks some business logic, but is a reasonable trade-off since the chance of a tweet going from good (on creation) to bad and needing a verdict update is very slim. To ensure consistency in interpreting the safety verdict of a tweet (which can be a struct as opposed to a simple boolean), we provide a library that other services can import..
This worked well until recently when the perspectival check became complicated enough to involve multiple rpc calls to a number of services. The library interpreting the verdict metadata now requires not just unit test but integration and stress tests.
三种表述关键内容都是一样的,但立意不同可以体现平时工作的scope。强调paradigm展现的是理论知识,至少T5 tech lead的质素。从产品要求谈起,虽然有点答非所问,但是表达的是你对产品的拿捏(product acumen)。 |
|