作者的的大概背景:
国内二本 (2013毕业)->外包公司->创业公司->美硕 (2016毕业)->美国小公司->美国某大中型公司->Google (2019入职)。
我在广州某二本大学读本科。高考志愿计算机科学,由于分数不够,分配到了数学相关专业,因为懒和对数学没有特殊兴趣,前后挂了近10门数学课,毕业时绩点2.5。
本科期间有自学一些计算机相关知识,发布了一些app,毕业后找到一家app外包公司iOS开发工作。
在app外包公司工作了一年多,开发了几个项目之后,感觉已经没有提升。和几个同学合伙创立了一个公司,作为初期唯一的工程师,工作涉及了前后台各方面,对系统有了直观了解。由于各种原因,一年后离开了公司,决定出国读研并以硅谷大厂作为下一个目标。
我的留学找工作过程跟大多数人一样,申请硕士,F1签证,CPT+OPT实习和工作,转H1B签证。现在正在申请绿卡。个人认为影响在美国找工作最大的几个方面: • 背景 (学校,公司等) • 移民身份 • 技术 • 思维模式和沟通交流。
详细讨论这几个方面。
• 背景: 我个人和多数同学朋友同事的经验都是:没有国内外名校名企背景,作为外国人在美国找工作的难度通常比在国内要大很多。我在国内外都找过工作,在美国得到面试的概率远低于国内。美国公司也基本不认可国内小公司的工作经验,面试时也基本不问。这个可能跟大量虚假简历在流动有关。很多人(包括国人)都会在简历上添加不存在的国内工作经历。
• 身份: 很多岗位都不对没有绿卡/公民身份的人开放 (多数是小公司)。
技术: 我认为国内很多工程师的技术水平都非常高,对于爱学习钻研的同学来说,这个一般都不是大问题。没有算法竞赛背景的,一般练习 Leetcode 可以应对算法面试。对 System Design 不熟悉的,有很多资料可以参考,快速熟悉。
思维模式和交流: 这个可能是很多和我背景相似的人可以提高的地方,比如技术设计/需求讨论,英语交流能力等等。我推荐使用双向模拟面试平台 https://taou.cn/pdrEi。这个网站会对用户进行配对,互相模拟面试算法问题,同时从面试者和面试官角度积累经验,大大有助于提高沟通交流能力。还有大家都知道的书: Cracking the Coding Interview,这里不仅介绍算法题,还有很多很有价值的非技术方面的技巧。
我在被面试和面试的经验里发现几个比较常见的问题:
1. 对自己的答案/用过的东西一知半解;
2. 对要解决的问题不清楚就开始解。
对于问题1: 平时工作的时候尽量弄清楚一个解决方案/工具的根本原因和技术细节。思考为什么架构一开始这样设计,为什么选择这个工具而不是另一个等等。
问题2: 面试的时候很多问题都有意地没有被很清晰的定义好 (实际工作经常也是这样),很多面试者技术能力很强,拿到问题之后几分钟就解完了,虽然通常结果都是正确的,但是没有交流清楚问题本身,没有考虑特殊情况,如果一开始问题没有彻底弄清楚,就没办法真正解决问题,甚至工作还需要重新做。
英语: 硅谷工作需要英文交流,但对口语的要求并不是特别高,即使口音很重,说话慢,只要能清晰表达就可以。多看/写英文文档,多用英文写注释都会有很大帮助。