2019 Fall学习找工总结




这几天RSS feed上几乎被各种年终总结刷屏了,不过我没有写年终总结的习惯,就写写这半年在美国学习和找工的总结吧。

学习

我们专业的课程安排是每个人都是有相同的四门必修课(Data Structure & Algorithm, SoC Design, Object Oriented Design, Computer Architecture),在此基础上可以自由选择选修课,整个项目一共是30学分,也就是10门课。

国际学生在第一学期能且仅能选三门课,其中有两门(Data Structure & Algorithm, SoC Design)是被学校安排的。开学前我们曾经去问过SoC Design这门课能不能drop掉,等之后再选,被告知不行。最终我选的三门课是Data Structure & Algorithm, SoC Design, 和Database。

Roger Chen的Data Structure & Algorithm被往届学生评价为“值回票价的课程”。这门课确实很有用,尤其是对于我这样本科的数据结构基础打得并不扎实的学生来说,这门课覆盖了很多面试中高频但是之前没有深入了解过的内容,比如堆,树,等等。

不过这门课的load也确实大。这门课程一共六个作业,内容分别是链表merge sort,堆优化的prim和dijkstra,DFS/BFS,AVL,红黑树。前四个作业如果顺利的话平均能在3-5小时内搞定,最后两个作业基本上没有十几甚至20+小时是搞不定的。

另外期中和期末的考试也很硬核,期末考试的时候有两个题目分别是AVL和红黑树的操作(插入,删除等等)。我在复习的时候以为考试的时候一棵树最多也就10个节点,然而我看到题目就傻逼了,这两道题给出的树有30+个节点,要求做将近10个操作,我做题的时候光画树就画了好久。考完试之后一度感觉要挂了(核心课得C就要重修并且不能申请CPT),不过最后分数还不错,应该是curve了。但说实话,和学会30+个节点的红黑树操作相比,我宁可用这些时间多刷几道Leetcode(

另一门课必修课是Intro to SoC Design,这门课真的是一言难尽,作为一个纯软件背景的学生,每天上课都像是在听天书。好在有大佬carry加上考试不难,最后成绩还不错。

选修课我选的是Database Management System,当时是觉得已经被学校选了两门硬课了,需要选一个水课中和一下,不然担心第一学期会翻车。这门课虽然确实算是水课,但是收获很大。内容包括各种花式SQL查询,数据库设计,安全,Function,Stored Procedures等等。我之前用Laravel和Django都开发过不少项目,其中数据库的部分几乎都是使用ORM来获取数据,然后用一堆嵌套的for循环来处理数据,有时候就直接用一个text类型的字段来存JSON。上完这门课我才明白我之前使用数据库的方式有多么野蛮。

找工

相比之下找工的情况就要惨的多。目前的进展是海投及内推 100+家公司,其中7OA(白嫖不算在内),4面试,0offer。拿到面试的有下面几家:

Riot Games System Engineer – HR电面挂

最初了解到这家公司是在和朋友聊天,聊到有人投了他家正在做OA,于是回去在Handshake上海投了一下,同时投了SDE和System Engineer。我在投的当天才知道LOL是他家的。

很快来了OA,题目是四道种花题,难度不算太大,但是需要自己处理stdin的输入非常烦人。拳头是知名白嫖OA公司,但是抱着试一试的心态还是做了,testcase全过。

OA交上两周之后收到了HR的邮件,约了一个45分钟的phone screen(职位是System Engineer)。说实话我挺意外的,因为他家OA虽然发了很多,但是有Next Step的寥寥无几。

期间看了地里一些帖子,大家普遍反映拳头比较注重culture fit,也就是说不玩游戏的人可能不太容易被录取。为了强行创造和公司的联系我找到他家的tech blog,读了一些文章之后发现他家使用的运维技术(Jenkins,Docker这些)和我的简历正好匹配上了,我感觉这应该是我能收到面试的原因。我还专门下载了LOL玩了会,但是实在太菜了连新手村都出不去。

整个电面比较程式化,主要是问玩不玩LOL,介绍上一段实习,和一些比较常规的BQ问题。

整个过程大约持续45分钟左右,结束的时候HR说会在下周一通知我结果,然后周一中午收到拒信。

接下来的一周地里陆续出现了几个和我一样挂在HR电面,并且想不到挂点的帖子。被拒其实并不意外,毕竟他家招人少,bar也很高。

这次面试得到的一个教训是千万不要照稿念,哪怕是电话面试。暂且不讨论对方能不能听出在念稿的问题,回答问题时照稿念容易对稿子形成依赖,同时脑子就停止思考了。如果这是对方问了一个没有准备过的或者意料之外的问题,很容易就卡住了。亚麻VO的时候我有考虑过要不要在墙上贴cheetsheet,考虑了一下觉得还是算了。

Amazon SDE – VO挂

亚麻一直以来都是广大CS的玩家的救命稻草。之前地里一个帖子提到说”亚麻的面试可能是你最接近offer的一次面试,值得全力以赴去准备“。确实是这样的,对于很多像我一样学校和简历都不出彩的学生来说,亚麻甚至可能是整个招聘季中唯一能拿到面试的公司。

亚麻的整个招聘流程体验真的很糟糕。我在9月底让人内推了SDE Intern岗位,然后填了amazon.jobs上的申请。按理说我的申请应该在一周左右被同步到amazonuniversity.jobs的校招系统上,然后收到要求去校招Portal补全信息的邮件。

我等了两周之后依然没有动静,于是我试图在校招Portal上重置密码,第一次根本收不到重置密码的邮件,一周后再试重置成功了,但是里面的申请是空的。地里时不时就会出现询问类似内容的帖子,可见亚麻这个简历系统确实困扰了不少人。

眼看着几乎同一时间内推的朋友已经做完OA等面试了,我开始试着给university hiring的邮箱发邮件,然后在LinkedIn上加了近10个Amazon的recruiter问,但是无一回复。直到10月底,整整一个月之后,我终于收到了校招Portal的补全信息邮件。

补完信息之后很快收到了OA。因为当时只刷了120题出头,感觉面试很虚。所以每天一边疯狂刷题,一边把每个OA都拖到ddl的前一天才做。OA中我遇到的题目都是常规题目,几乎没什么难度,但是这个OA系统实在是太难用了,调试起来很费劲。OA3做完10天之后收到congrats。

之后就是漫长的等待了。11月是整个学期最忙的一个月,各种考试和作业,projects一个接着一个。每天白天上课+刷题和复习考试,晚上mock interview和做作业,就这样在一个月之内从120刷到了200。与此同时胆战心惊地等着VO invitation,既怕它来,又怕他不来。

12月中来了VO survey,约在了圣诞节前那周的周二。

面试官是alexa组的manager。互相自我介绍之后直接开始coding,题目是Binary Tree Vertical Order Traversal,有一点小改动。

我先讲了DFS+哈希表的方案,对方告诉我说不让用extra space。然后就陷入了江局,思考了一段时间之后没什么进展,期间跟他要hint,给了我两个hint,一个是一边遍历一边打印,另一个是可以找到root左右两侧的最远距离。当时没太理解他的意思,反而更迷惑了。整个过程体验很糟糕,对方口音重+通话质量一般,好多问题要反复确认好几遍。

僵持了近半小时后没有任何进展,最后让我用DFS+哈希表方案写出来了。过了一遍代码,跟我确认了几个语法上的细节,没跑case。

接着是两个BQ,都是常规题目。最后面试官问我有什么想问他的,我问了两个问题,其中一个是如果我被录用了,我应该在开始实习之前学习或者准备些什么。对方回答说Amazon的很多服务使用Java,所以应该练习下Java(

互相道谢后面试结束,欢声笑语中打出gg

我下来之后翻了下Leetcode讨论区,想了半天还是没明白这题究竟该怎么不用extra space做。直到地里有人给我回贴说这个题目可以先遍历整棵树获得宽度,然后每次遍历都只打印一列,复杂度为O(n^2)。

我感觉整个人都不好了,我在面试的时候一直在试图想出某种花式遍历能够只用O(n)复杂度得到结果,而完全没有想到O(n^2)的解法。这种解法确实有些违背思维惯性,我们一般都会习惯性地用空间去换时间,而很难想到用时间去换空间。

说遗憾其实也没什么可遗憾的,最遗憾的可能是填VO Survey之前没有先算一卦吧。

Naveego SDE – HR电面在约

Naveego位于MI州的Traverse City,规模比较小,员工大概只有50人左右。这本来只是一家不知名的小公司,然而大约11月的时候地里出现了一个帖子,讲了作者去年在Naveego实习的体验。这是一家做toB数据产品的startup,用的技术都很新,实习生也能有足够impact。我看到之后觉得还不错,就顺手投了一个。

投完一周之后来了OA。这个OA和其他公司都不太一样,要求去codewar(一个类似leetcode)的网站注册,做指定的三道题,然后把自己的用户名回复给HR,题目挺有意思,难度不大。

大约两周之后收到了面试邀请,但是在我点开链接的时候发现几乎所有可约的时间都已经在2020年了,2019年唯一的选项是在12月4日上午,但是当天我有一场考试,就在我犹豫的十几秒期间,这个位置就被抢了,于是只能约在了1月中。希望到时候能顺利吧。

TuSimple General SDE – VO挂

10月底的时候逛一亩三分地了解到了这家公司,看JD感觉不错,于是就不知天高地厚地投了一个,后来和朋友聊到才知道他家的bar比天还高。

投完一个月之后收到了OA,图森的OA比较奇特,需要像约面试那样预约一个时间,在约定时间对方会发来OA链接并打电话过来简单讲述一下这个平台怎么用。

OA的体验并不太好,面试官因为开会耽误了,鸽了50分钟,然后发来了一个类似CoderPad的平台的链接。这个OA比较特殊的一点是需要自己从stdin读取输入的数据。个人觉得使用CoderPad来做OA真的是惨无人道,我从CoderPad上直接运行Python代码,从stdin根本读不到数据,但是手动在虚拟机里运行py文件则是可以的。题目本身并不难,大多时间都花费在处理输入上了。我在结束之后给面试官发了短信说明了这个问题,面试官人很好,说会帮我转达。

我收到图森面试的时间正好在我收到亚麻拒信的半小时后,一封邮件硬生生地把我从躺床上看剧靠Soylent维持生命的自闭生活中拽了出来,然后把面试约在了圣诞节的前一天。

当我把面经题目整理出来之后发现事情并不简单。他家的面试题目几乎全是Hard题,内容大多是树和图。我试着做了几个题之后就被劝退了,一道题做一下午还一直WA的那种,实在太难了。

不过面试体验真的出乎意料的好,面试官全程用中文面的,题目是一个多叉树的题目。我开始先说了两种方法,都因为时间或者空间复杂度太高被否掉了,但是面试官很helpful,全程都在给hint,引导我一步步得出正确的答案。给人的感觉不是面试官出题我来答,而是面试官和我一起讨论和解答问题。整个面试持续了1个小时多一点,其中大约40分钟得出解决方法,剩下20分钟写代码。

面试后的第二天就是圣诞节,不到一周后收到拒信。虽然题目做出来了,但是和他家的bar相比显然是不够的。不过这次面试确实是个不错的体验。

复盘

还是那句话,个人的奋斗固然重要,但是也要考虑到历史的行程。找工不像考试或申学校那样,条件和结果大致成线性关系,但找工有更高的随机性,实力和运气二者缺一不可。

在很多人的找工总结中都提到,在很多人的思维中,我们拥有了条件ABC,就很大概率能拥有结果D。比如一个人有3.x的GPA,T1xx和G3xx,就大概率能拿到TOPxx学校的录取。这在学校中或许是适用的,然而求职的时候,水平一般的人靠着运气上了岸,而刷了800题天天投爆简历也拿不到面试的情况都很常见。除此之外还有很多随机性的因素,比如投简历投早了会当小白鼠,而投晚了就没HC了,能不能卡在最合适的时机上就全看脸。——我说这些并不是想为失败找借口,而是要正视实力之外的其他因素的影响。知乎的扬学始祖富兰克扬之前写过一遍文章,虽然很丧,但很真实。

一种可能会毁了你职业生涯的学生思维 – 知乎

还有令我比较迷惑的一点是学校Career Service的老师在workshop中经常提到的一点是,不要听信学长所说的需要投几百份简历才能找到一个实习,比疯狂投简历更重要的是去networking,和校友交流来寻求内推,或者在LinkedIn上勾搭recruiter。然而我问过周围的朋友,也自己尝试过,大家普遍反应效果并不好,比如在LinkedIn上给recruiter发InMail,十个里面能收到一个回复就已经很不错了。绕了一圈之后又回到了疯狂海投简历上来。

我相信没人愿意一个学期投几百份简历——你花了更多时间去投简历,HR花了更多时间去看简历,其他申请者投的简历沉在了池子里——这是个双输的局面。然而我目前看不到更好的解法,对于我这样条件一般的申请者,恐怕只能持续地努力,用数量来对抗玄学。而且很多时候一些经验只能靠真正的面试来堆,Mock interview的时候大家其实都很缺乏实际的面试经验,以至于很多问题发现不了——我从11月末开始几乎每天都会mock,但是每次真正面试都会发现全新的问题。

之前每到一个新环境之后的第一个学期都过得异常不顺,和高一数学考30分和大一挂两科相比,这次没挂科我已经很知足了。希望2020年能够顺利些吧。




Posted

in

by

Comments

14 responses to “2019 Fall学习找工总结”

  1. Ryoma Avatar
    Ryoma

    Amazon SDE – VO挂,第九段文字「陷入了江局」 maybe is =>「陷入了僵局」

  2. wenjie zhu Avatar
    wenjie zhu

    学长,我现在有NEU IS Seattle和SU CS WPI CS的ad了,SU整体找实习工作情况怎么样啊?我看了看SU CS课表还是蛮不错的,比较硬核,对面试笔试很有帮助,但也担心课程脱离业界情况,对简历帮助不大。现在比较纠结NEU IS和SU CS,担心SU不方便实习,找工作情况一般。

    1. Frank Avatar

      其他学校我不是很清楚,我只能从我的角度给你讲讲SU的情况。
      SU的CS课程总体评价不如CE,比如有一门必修课要用haskell,算法课不写代码纯推公式,CE的课程更实用一些。找工情况很一般,这边一是地理位置不好,而且找工氛围不好,我们有个周末刷题会,虽然群里有近70个人,但是每次来的都只有5个。目前为止中国人找到实习的恐怕很少,印度人找到实习的多一些,但是我跟印度人没什么交流,所以也不清楚细节。
      https://www.1point3acres.com/bbs/thread-581907-1-1.html 这篇是和我同届CE的朋友写的,供参考。

  3. wenjie zhu Avatar
    wenjie zhu

    Frank 学长雪城项目找实习是除了暑假其他时间也能出来实习吗?

    1. Frank Avatar

      是的,CPT可以用两次,可以用在秋季/春季学期或者假期,总共加起来不超过12个月即可,但是CPT要两个学期之后才可以用。

      1. wenjie zhu Avatar
        wenjie zhu

        那学长如果你这次春季出来实习就要用COOP吧

        1. Frank Avatar

          COOP仅限于和学校合作的公司。我认识的人里面没有做过COOP的,我觉得列表里的很多公司可能都不会招国际学生(SRC, lockheed-martin等等)。我不太清楚COOP需不需要申请CPT。
          正常的实习现在肯定是做不了的,因为至少需要2个学期之后才能申请CPT。

          1. wenjie zhu Avatar
            wenjie zhu

            学长SU master如果gpa还可以的话有机会平时去实验室吗,我看官网还有蛮多research的机会,那些想继续读PHD的学生可以在master阶段除上课以外去做科研吗?

            1. Frank Avatar

              按理说是可以的,但是我认识的人里面没有。

          2. Summer Avatar
            Summer

            你是NEU的吗?COOP是要申请CPT的 和intern一样的

            1. Frank Avatar

              不是,我是雪城的。我们的coop政策好像和NEU的还不太一样,不过我也不是很清楚细节。

    2. Frank Avatar

      学院有COOP,但是认识的人当中没有人做过。

  4. Monica Avatar
    Monica

    谢谢博主对Riot的分享,很有帮助!希望你能在接下来有好运!共同加油!

    1. Frank Avatar

      谢谢,祝找工顺利。

发表回复/Leave a Reply

您的电子邮箱地址不会被公开。/Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.