SDE拿不到面试可能简历微服务架构害的
SDE Resume Pitfalls: Microservices Architecture
SDE拿不到面试可能简历微服务架构害的
你的简历是不是也石沉大海了?明明感觉自己的项目很牛,用了各种高大上的微服务架构,结果连个面试都捞不着?真的绷不住了。特别是我们这些New Grad,想在简历上展示点东西,结果用力过猛,反而起了反效果。说实话,这感觉太难受了,每天刷新邮箱几十次,除了拒信就是各种各样的promotional emails,看到no-reply@开头的邮件心都凉了半截,感觉自己的努力都白费了,甚至开始怀疑人生。
我一开始也踩过这个坑,而且踩得特别深。把一个平平无奇的电商课程项目,硬是给拆成了用户service、商品service、订单service、支付service等十几个微服务,每个服务都单独deploy,服务之间用gRPC通信,还上了Docker和Kubernetes来做容器化管理和编排,简历上写得满满当当,自我感觉良好。觉得这样肯定能亮瞎HR的眼,向面试官展示我紧跟技术潮流,结果呢?一个Technical Round都没有。后来找了个在FLAG工作的前辈看简历,人家直接说我这是典型的over-engineering,属于是学生思维,为了炫技而炫技,完全没有考虑trade-off。前辈的原话是:“你这个项目,DAU有多少?一百?一千?为了这点流量上K8s,就像杀鸡用航母,你觉得合理吗?” 当时我真的无地自容。
踩过坑的人都知道,对于New Grad和Internship的申请,Recruiter和Hiring Manager到底在看什么?他们真的没时间去研究你那个天花乱坠的微服务架构。他们一天要看几百份简历,每份简历平均停留时间可能就30秒,甚至更短。他们想看到的是你扎实的基础,比如你的Algorithm和[Data](/blog/data-interview-storytelling) Structure能力怎么样,你的[SQL](/blog/sql-mastery-guide)写的溜不溜,Python基础库用的熟不熟。一个虽然是单体应用但结构清晰、代码规范、文档齐全的项目,远比一个你都解释不清楚的微服务集群要加分得多。比如,你简历上写“用Python实现了一个Trie来做搜索框的autocomplete”,就比“熟悉[Data](/blog/data-interview-storytelling) Structure”要具体得多,更能吸引眼球。或者你写“通过给database的user表加索引,将用户查询API的P95 latency从800ms优化到了150ms”,这种有明确metric的成就,才是他们想看到的。
不得不说,很多同学对System Design有个误区,觉得微服务就是先进,就是牛。但对于一个New Grad级别的项目,用户量可能就小猫两三只,你上微服务,面试官心里只会犯嘀咕:这哥们是不是不懂trade-off?是不是为了用技术而用技术?他真的理解微服务解决的是什么问题吗?比如高并发、服务解耦、独立部署、fault tolerance这些,在你的项目里真的有必要吗?面试官稍微challenge一下,“你这个项目为什么要用微服务?单体应用有什么bottleneck吗?服务拆分是基于什么原则?数据一致性怎么保证的?你考虑过分布式事务的复杂性吗?” 几个问题下来,如果你答不上来,或者回答得很浅,那基本上这个round就凉了。对于小项目,微服务带来的operational overhead和complexity远大于它的好处,这本身就是一个糟糕的design choice。
而且,微服务架构的复杂性很容易让你在简历上都写不清楚。一个项目拆分成好几个repo,依赖关系复杂,部署流程繁琐。你简历上短短几行字,怎么可能说得清?面试官一看,云里雾里,他为什么要花时间去理解一个他看不懂的东西呢?他手边还有大把简历,上面清清楚楚写着“我用Python和Flask搭了个博客,实现了用户登录、发帖、评论功能,通过优化[SQL](/blog/sql-mastery-guide)查询和增加cache,将文章页面的load time从2秒降低到了500毫秒,QPS达到了50”,这不比你的微服务香吗?项目的影响力(impact)一目了然。面试官可以很轻松地就这个项目展开提问,考察你的full-stack能力和优化思路。
说个真实的Case Study。我一个朋友,之前简历上也是一个复杂的电商系统,微服务架构,各种buzzword拉满。半年一个面试没有。后来他听了我的建议,把简历上的项目换成了一个他自己写的web crawler,用来爬取某个电商网站的商品价格,做了个简单的价格趋势分析。技术栈就是简单的Python + Scrapy + MySQL。结果你猜怎么着?一周之内拿了三个面试,其中一个就是他现在就职的这家大厂。面试的时候,面试官就针对这个项目问了很多有深度的问题,比如“网站有anti-scraping机制吗?你是怎么绕过的?”“IP被封了怎么办?有没有考虑用proxy pool?”“数据量大了之后,MySQL的性能会不会有问题?你会怎么优化?比如sharding?”因为这个项目虽然简单,但很完整,商业逻辑清晰,他自己从头到尾都门儿清,所以跟面试官聊得风生水起。所以啊,有时候简单就是美,懂的都懂。
所以,准备申请Full-time或者Internship的同学们,别再盲目追求微服务了。有那个时间,不如去多刷几道Algorithm题,或者把一个full-stack项目做得更完善一些,做出实际的impact。展示你解决问题的能力和扎实的编程功底,这才是New Grad求职的王道。记住,公司招New Grad,更看重的是你的潜力和基础,而不是你现在会多少酷炫的技术。
避坑指南来了,姐妹们快码住!
-
项目选择要务实:不要为了炫技而用微服务。对于
New Grad来说,一个完整的、有清晰业务逻辑的单体应用或者小工具,更能展示你的综合能力。面试官看的是你解决问题的能力,不是你用了多少个buzzword。记住,技术的价值在于解决问题,而不是展示复杂性。选择一个你能完全master的项目,比选择一个你只懂皮毛的复杂项目要好得多。一个好的side project应该是有趣的、能解决一个实际问题的,并且能让你学到东西的。 -
项目描述要清晰:在简历上描述项目时,别上来就一堆技术名词。先用一两句话说清楚这个项目是干嘛的(解决了什么问题),你扮演了什么角色,你具体做了什么工作,最后取得了什么成果。最好能用
STAR框架来组织语言。如果有metrics,比如你把某个接口的latency降低了多少,或者实现了多高的test coverage,一定要写上去。这些quantifiable results是你impact的最好证明。没有数据,就等于没有说服力。 -
准备好被
challenge:你简历上写的每一个字,都要准备好被面试官深入提问。你用了Redis,那就要知道Redis的[Data](/blog/data-interview-storytelling) Structure,知道它和Memcached的区别,知道cache的eviction policy和consistency model。你用了微服务,就要能说清楚服务之间是怎么通信的(RESTful APIvsgRPC),API gateway是怎么设计的,服务发现是怎么做的,数据一致性是怎么保证的。千万不要写自己不熟的东西,不然[Behavioral Question](/blog/deloitte-s-and-o-bq-guide)环节可能就直接挂了。面试官都是身经百战的老油条,一眼就能看穿你是不是真的懂。 -
突出基础能力:在项目经历之外,一定要单独列出你的技能清单,清晰地展示你掌握的
Programming Language、Framework、Database等。让Recruiter一眼就能看到你会Python、Java、[SQL](/blog/sql-mastery-guide)、Git这些硬技能。这比一个复杂的项目描述有时候更管用。可以根据Job Description微调你的技能清单,突出与职位最相关的技能,提高简历的匹配度。比如申请[Machine Learning](/blog/accenture-ai-consultant-interview-questions)相关的职位,就把PyTorch,TensorFlow,Scikit-learn这些往前放。
希望这些能帮到正在求职的你!找工作真的不容易,但只要方向对了,努力就一定有回报。大家加油!
#美国求职 #留学生找工作 #SDE #SoftwareEngineer #NewGrad #求职 #简历 #面试 #西雅图 #湾区
