点击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号”
干货福利,第一时间送达!
最近有小伙伴说没有收到当天的文章推送,这是因为微信改了推送机制,有一部分小伙伴刷不到当天的文章,一些比较实用的知识和信息,错过了就是错过了,建议大家加个星标⭐️,就能第一时间收到推送。
大家好,我是飞宇。
这几年润学四起,经常看到我等互联网打工仔润去海外的案例,今天就来分享一个润去外企,拿到亚马逊offer的经验。
原作者顺利拿到了亚马逊的offer,希望对于想去外企的小伙伴,有所帮助,下文中的“我”代表原作者:
原文:https://zhuanlan.zhihu.com/p/546079576 编辑:JackCui
本文记录了我从投亚马逊北京岗位到拿到 offer 的过程,将自己如何准备面试以及关于面试流程所了解到的问题等做一个总结,希望能帮助想去亚马逊的同学。
因为面试过程中也有很多人给了我帮助,虽然最后我没有选择亚马逊,但亚马逊不论是面试体验还是 offer 吸引力,都是很棒的。
以后有机会,还是希望能去亚马逊工作的,之后会再写一篇介绍我拿到新加坡 Tik Tok offer 的经验。
这次面试亚马逊,最终拿到 SDE2,也就是 L5 的 offer,薪资也很满意,不比国内大厂同级别低。
我找了个亚马逊的员工帮我内推,他在美团干了九个月跑的,他是今年 4 月去的亚马逊。所以如果你想去外企早点动身,不用担心当前工作不够一年。
5.20 投的简历,5.24 收到 OA 笔试邮件,SDE2 OA。包含 1)coding, 90 分钟,两道题;2)工作模拟, 15 分钟;3)工作风格调查。
邮件还包含个人信息完善部分,OA 在 7 天内完成都行。
我是在 5.29 做的笔试题,后来了解这个笔试题是 HR 随机选的,一般都是中等难度。
但我遇到了一个 hard,LeetCode 2281 题,第一题过了,这个 hard 只过了一部分测试用例。
担心 OA 都过不了,那几天还是有点失落的。同时,在网站上看到这样的信息,以为 OA 挂了。
不过 6.14,也就是过了半个月,忽然通知我面试。
惊喜。
后来找认识的亚马逊 HR 帮我查了,说我 OA 结果还不错,又了解到很多人都没有全部 case 都过,也拿到了面试邀请。
不过从 OA 结束到面试邀请时间不一定,有的两三天,有的半个月。做 OA coding 时, 还是要注意代码风格,比如变量命名等,不要写过多无用冗余的注释,总之就是代码要尽量简洁。
我六月初面试就基本结束了,所以把面试推到六月底开始,好有时间准备下,总共 4 轮,我选的是连续 4 天每天一轮,这期间又把算法、系统设计好好准备了下。
亚马逊面试与国内不同,也不问八股文,就三项:项目、coding、系统设计,总的来说,亚马逊的面试可以说是很专业,有水准,让人尊敬。
一面是基础性知识面试,前半个小时问项目,后半个小时做题,加 follow up。
二面是系统设计,前半个小时问项目,很有水平,问道了核心难点,别的公司面试的时候问道都比较浅,后半个小时系统设计,亚马逊的系统设计用的画图网站很难用,可以用自己的本地或者在线画图网站,屏幕共享即可。
三面是 BQ 考察,前半个小时 BQ 问题,后半个小时做一个题,两次 coding 都是中等难度。
四面也是先聊半个小时项目,后半个小时做了一个简单的系统设计。
这里给个建议:如果你项目角度,可以换个不同的项目聊,可以更全方面的展示自己能力。
面试官都会做记录,四轮面试结束后,他们要一起讨论是否给候选人过,亚马逊面试流程前面会很慢,尤其是投简历后到 OA,OA 后到面试邀请,面试后就很快了,一般两三天 HR 会联系你,告诉你面试结果。
然后收集薪资,问你期望薪资,对了亚马逊 Offer 薪资是不可以 compete 的,申请下来是多少就定了。
哈哈,面试完拿到 offer 后,我还去卧佛寺了一趟去还愿,可惜的是我是周一去的,没有开门。
前面记录了面试流程,下面准备从以下 5 个方面做个总结:
我是今年四月底开始准备换工作,准备到五月中旬开始投简历,作为程序员,面试必须是要做题的,我从今年年初断断续续开始刷题,之前总共 LeetCode 刷了有 300 道,今年面试前又进行总结复习,总共刷了 470 道,算是刷的数量少的,不过够用了。
我现在感觉刷够 300 多道基本就差不多了,多总结,保持熟练度,大厂面试基本都没问题了,我从去年就开始短短续续的面试,大小厂面试也有二三十家了,基本没遇到过 hard 的题目,我觉得题量刷够 + 保持细心、镇定,基本都能做出来的。
做题量来说,300 可以出去面试了,500 多比较稳,不慌。我认识很多去面外企的都刷了六七百道了。
平时刷题,超过 10 分钟还没有思路直接看 LeetCode 上面的优质答案,刷的题少不会做题很正常,关键是自己一定弄明白,然后自己写写出来。
自己写出来是重点,而且经典问题要用自己的话总结一遍,比如二分查找,一般二分查找怎么写, 假想一下如果问题是在有重复的数组中找到最后一个 target,或者找到第一个 target,那判断条件怎么写?一定要参考优质答案,然后自己总结并实践。
还有一点是,要细心,一定要处理好边界条件,我遇到的大部分面试管还是能注意到关键细节问题的,比如快速排序,其实它的原理很简单,但不好好准备,没几个人能写出来无 bug 的代码。
我只能说刷的题多了,思路基本都有了,就需要在做题的时候,把细节问题想清楚了再写,否则你很难让面试官满意。
对了,我面试过程中考察频率最高的算法题种类有:数组、字符串、链表,这三种是问的最多的,就比如LRU,我就被问过 4 次,后来可以 bugfree 直接写出来了。
除此之外图、最小生成树、prim、Kruskal、Dijkstra、朋友圈算法、 二叉树、DP等,我都有好好准备,但是面试都没有遇到过。
所以准备算法题的时候,可以先把 力扣Hot100 刷的明明白白,然后再逐步将不常见的算法类型也刷一刷。
算法题是不能有失误的,这也是最基本的,而且一般面试都不会出 hard,基本都是 middle级别的。
之前帮公司招人收集简历的时候,基本都是社招简历,真是见识了各种风格的简历,五花八门的啥样都有。
即使我不是专业 hr,有些简历我也是一眼就像 Pass 掉的,主要项目不清晰、简历写的很乱、花样很多,这一看就不上心,这我甚至没用专业两个字来形容,就连最基本的整洁很多人都做不到。
程序员的简历,要干净&重点突出,才显得专业,就比如个人信息这,一般都不放照片,民族、籍贯这些也都是多余信息,电话、邮箱即可。
除此之外,再加上教育背景、专业技能、工作经历、个人评价这四部分即可,其余的也没什么必要往上面写了。
重点在工作经历里面,社招的不局限于简历是一页还是两页,把重点项目按照 STAR 原则写就好。
我写简历前,会按照 STAR 原则,将项目好好梳理一下,尤其是我做了什么,难点是什么以及成就,最后还要加一点反思,之前方案有什么问题,这个很多公司都要问的。
项目整理好了后,再往简历上写,之后面试的时候,介绍时也比较有条理一些。
我的简历质量专门去问过一些猎头以及大厂公司的 HR,说算是还不错的,当然,我也见过更漂亮的简历,用的是 LaTeX 写的,很简洁。
这里分享一份朴素大方的简历模板,markdown写法很简单直接。
程序员简历github仓库地址:https://github.com/forthespada/programmer-resume
外企一般要准备英文简历,不过我投的是北京的亚马逊,只有中文简历也可以。
社招三年以上都要考系统设计的,我的这部门比较薄弱,我去买了 grokking the system design interview z 这个门课程。
感觉挺不错的,这门课程将基本的系统设计要考虑到的点,常见系统设计的核心问题思路都有很好的讲解,且全都是英文的,不过并不难,在这个过程中也能锻炼阅读英语的能力。
看过三四个章节后,建议 YouTube 上面搜一下 System design 视频,面试时候的表达,条理也很重要。
之前我面试就没有条理,只将核心问题给了解决办法,后来看过视频后,感觉自己的表达有条理多了。
后端开发程序员面试外企,硬实力部分主要是算法、系统设计,有的还要求英语。
不过硬实力有了,不一定发挥好,或者说错话,导致被 Pass,讲话的艺术也挺重要的。
我有个朋友面试亚马逊,面试官问离职原因,说领导不行。。。。
我的妈啊。。。这个肯定不能这么说啊,我知道他可能就是一时嘴快说漏嘴了,但确实不能这么说。
这个问题也很常见,如果你被问到离职原因的话,你面外企就说希望 WLB ,向多陪陪家人,想多点自己学习时间;面试国内大厂,就说想换个环境,想要更多挑战。
一般这种回答就是片汤话,走个过场,只要不是面试官不想要你,就不会再继续为难你。
算了,再写一点别的个人感悟:
在做算法时,一定要提前和面试管沟通好问题,以及边界 case。我一般是在快速思考后,然后直接找面试官问,我不明白的以及特殊 case 怎么处理提前问清楚,接着就是快速把代码写出来。
写完代码后,不要着急说写完了,一定要在检查一遍,一般都会有小的问题,要多看看,注意一些细节,不要被面试官发现了再指出来,这样就很减分。
面系统设计时,提前明确需求更重要,面试官很看重沟通能力。提前把问题,以及可能面试官都没想到的关键点提出来,会增加好感。
后来亚马逊 hr 和我说过,面试官评价里面有个沟通很好,提前明确了需求。如果遇到没做过的设计题,也不能慌,总得给个答案不是,总不能说不会吧。
我建议就是先把问题简化,模型简化,再一步步去解决。我记得面试 Tik Tok 让我设计一个打车系统,这个真没遇到过,差点懵了。
司机和乘客都在地理位置上不断移动,这怎么搞?想了几分钟后,我按最原始的思路,将地图分隔成很多小块,然后打车,找乘客所在小块周围 8 个小块的司机,进行通知,匹配打车。
还有一点就是及时观察面试官态度,自我介绍是不是说的太细太多了,方案是不是面试官不太喜欢,及时调整。
BQ 行为考察的问题,在基于自己实际情况下,慢一点回答,多想想,朝着有利、真诚真实的方向说,自古真诚得人心!
如果你走到这一步,那恭喜你,你只剩下最后一步了,谈薪真的是很重要了。
对于 dream company,我一般先找几个小公司练手,然后找几家开工资比较高的好好面,拿到较高的工资,最后去面试想去的公司。
到最后这家公司的时候,在面试走到最后谈薪时,会问你当前薪资,以及手里 offer 的薪资,这两个都会参考的,所以你要把握好面试进度。
问我期望薪资是多少时,我一般会在当前薪资基础上上报 30%左右,不过这只是我自己的预期薪资,最终的offer薪资多少还是根据我的面试表现和公司薪酬体系来定的。
个人觉得想拿到好的薪资,主要还是两点,面试表现好&&当前薪资较高,另外有其他 offer 也是一个因素。
其实最重要的是,当前你面试的这个岗位缺不缺人,这才是最重要的,如果缺人面试好薪资就开的好。
今年大厂小厂都在裁员,社招面试环境很严峻,我前后投了八九家,小公司练手的基本都给我挂了,最后拿到 offer 的只有亚马逊和新加坡 TikTok,还有一个走完流程不发 offer 的,两家主动终止面试。
去年投的国内大厂,拿到不少offer,我还有个搜狗 offer,不过搜狗后来被合并入腾讯了,如果去年接了搜狗了,也相当于是曲线加入鹅厂了。
面试挂了不要否定自己,要好好刷题,好好准备基础知识,面试常问的知识点要用自己的话总结下来;
不要广撒网,这样很浪费时间,要好好准备然后拿两三个练手后直接去面大公司,毕其功于一役。
好好准备,你也可以拿到外企的 offer,这也说一下我的选择:我最后选择了去 TikTok,去新加坡工作了,润到国外去了。
—— EOF —— 你好,我是飞宇,本硕均于某中流985 CS就读,先后于百度搜索、字节跳动电商以及携程等部门担任Linux C/C++后端研发工程师。
最近跟朋友一起开发了一个新的网站:编程资源网,已经收录了不少资源(附赠下载地址),如果屏幕前的靓仔/女想要学习编程找不到合适资源的话,不妨来我们的网站看看,欢迎扫码下方二维码白嫖~
同时,我也是知乎博主@韩飞宇,日常分享C/C++、计算机学习经验、工作体会,欢迎点击此处查看我以前的学习笔记&经验&分享的资源。
我组建了一些社群一起交流,群里有大牛也有小白,如果你有意可以一起进群交流。
欢迎你添加我的微信,我拉你进技术交流群。此外,我也会经常在微信上分享一些计算机学习经验以及工作体验,还有一些内推机会。
加个微信,打开另一扇窗