美国软件工程师求职小记

背景 & 瞎扯

刚来美国的时候,根本没想到会有一天拿到 f, g 两家 dream company, 以及热门 startup SnapChat 的 offer。能拿到这个意料之外的结果,运气固然重要,但实力也是不可缺少的。下面给大家分享一下找工作的历程。

本人 2014 Fall 开始在美国某校读硕。来美国之前,拿到某校的通信工程本科学位。通信工程是 EE 的分支之一,主要课程都是与电路、信号、数学有关的,因此平时都在搭电路、写 MATLAB。大一学过 C++ 和数据结构,然而编程作业基本都是抄好基友的,以至于至今对 C++ 的模板、友元等概念只停留在知道名词的层次。之后三年基本没写过除了 MATLAB 之外的代码。大四下拿到某校 ad 之后开始通过刷题学 Java。

到美国后开始努力刷题,在第一学期刷完 leetcode 一遍~然后寒假时面试 Google 的 summer internship 并顺利拿到 offer。2015年暑假在 Google HQ 实习,并顺利拿到 return offer。 在等 return offer 的过程中,面试了大约十家公司,拿到了 facebook 和 Snapchat 两个offer。

结果

  • Offer: facebook, Snapchat, Google (return offer)
  • withdraw:Two Sigma, Pure Storage, Fitbit, Microsoft, Amazon, Uber, Coursera
  • 电面拒:Palantir, Airbnb, Houzz
  • onsite拒:Bloomreach, Shopkick, Pinterest
  • 简历拒:medallia(海投), linkedlin(内推)

面试细节

  • houzz :第一次电面,不太熟悉流程以至于非常紧张。面试官还是蛮 nice 的。题目已经不太记得了。印象深刻的是,面试官问我多久能配置好 LAMP 的全套环境。答曰:一天之内。面试官对我的回答很不满意:“一天?你一小时难道搞不定这些吗?” 总之他们家想要的是入职第一天就能干活的新手。

  • Airbnb:遇到了一道面经上的题。这道题已经被 Airbnb 用了半年多了,各大论坛上有铺天盖地的解答。想必大多数人都能迅速写出 bugfree 的代码。我没看过面经,写出了一个 bug,于是第二天收到了拒信。 (经验:一定要看面经)

  • Bloomreach 面试:最不开心的一个面试。他家给我的总体感觉就是:他们根本不 care 你在说什么。一开始跟 HR 聊天的时候,她自己 blahblah 地讲,根本不给我说话的机会。最后跟 CTO 聊天的时候,CTO 也是完全不听我解释,以至于曲解了我对项目的描述。总之是一次非常不开心的面试经验。 即使给 offer 也肯定不会去。

  • shopkick 面试:应该是 behavior 挂了。HR 问我如果 �shopkick 给我 offer,我会不会在一周之内签。我告诉他我会等 Google 的 return。挂。

  • Pinterest 面试:最开心的一个 onsite。P 家的工程师质量很高,妹子质量也很高。HR 很有效率,面试的节奏也很快。最后一面的面试官是一个很漂亮的 ABC姐姐。她之前在 f g rocketfuel 实习过,毕业后在 quora 全职工作一年,然后毅然加入当时只有10个人的 Pinterest。

  • linkedin:实习被拒简历,全职又被拒简历。不 match。

  • pure storage:八月一号在 techfair 上去了他家的 booth 做题,一周后被告知题目做得很好,要让我去 onsite。然而当时我实习快要结束,忙着赶项目,没有时间去 onsite,于是跟 HR 发邮件表示希望能在实习结束后,回匹兹堡之前去 onsite。然后石沉大海。。。直到快两个月了才收到回复。总之对 HR 的印象很差。

  • facebook: 貌似很喜欢 Google 的 intern。今年 Google 的 intern 几乎人手一个 facebook onsite。题目就不说了,总之都是 lc 原题,medium 难度。写出 bugfree 即可。

总结

facebook 非常注重代码的简洁程度。在不降低可读性的前提下,尽量用短小精悍的代码来解决问题。比如

int a;
if (isTrue()) {
    a = 1;
} else {
    a = 0;
}

可以用

int a = isTrue() ? 1 : 0;

来表示。以及

for (int i = 0; i < len; ++i) {
    sum += nums[i];
}

可以写为

for (int num : nums) {
    sum += num;
}

facebook 也很在意代码的时间复杂度。在白板上写代码的同时,别忘了记录每一行代码的复杂度。如果这一行的复杂度可以优化,不妨在旁边做一个标记,等完成全部代码之后再修改。值得一提的是,多了解几种 O(n) 的排序算法有奇效。

最后,�快速准确地写出高效优雅的代码固然重要,与面试官的交流也必不可少。

总结

心态

准备面试的过程中,尤其在拿到第一个 offer 之前,难免对自己有一些怀疑。这是很正常的。但不要因此变得消极。

教训

一定要看面经!

刷题

刷题不是万能的,但不刷题是万万不能的。

面试

八月初,我参加了 greylock techfair。这个techfair帮我拿到了70%的面试。

在 techfair 期间,通过跟公司代表聊天,我拿到了 Pinterest,Airbnb,Houzz,Shopkick,Fitbit 等公司的面试。techfair 结束之后,陆陆续续有 Facebook,Palantir 的 HR 来联系我(他们从 techfair 的简历簿里找到我的简历)。

实习/工作经历

在我看来,实习/工作经历是简历上最为重要的一项。今年各大公司普遍缩招,相应地bar也提高了一些。有一个好的实习经历无疑是一个巨大的plus。几乎所有面试官都会问我:你在Google实习做了什么呀?当然由于我的代码还没被launch,我只好笑着告诉他们我不能说。

今年facebook改了招聘战略:喜欢从实习生里招人。自家的实习生不够,就去抢隔壁Google的实习生。

课程和项目

对于转行的同学:一定要了解一些系统级的知识点。听说过有同学做出了算法题但挂在了系统知识题上,甚是惋惜。

最后的最后

一定要早准备!

时机很重要。今年linkedin的实习生可以refer。有同学被refer之后第二天拿到电面。我比该同学晚了一周招人,结果简历被秒拒。拒linkedin的员工透露,今年实习生refer得太多,导致到了后期没有headcount了,只好拒掉。

瞎扯

面试时刷题的最大动力就是为了能有朝一日与面试官谈笑风生,当然最后也实现了(笑)

你可能感兴趣的:(美国软件工程师求职小记)