求职季结束,面经(apple, MS, indeed, square, quantcast …)+match+offer选择

原帖地址:一亩三分地

历时3个月的求职季,终于落下序幕了..最后拿到了(按时间顺序)Indeed, Apple, QuantCast, Microsoft, Square的 offer。在拿到apple之后argue pkg的时候,因为期末降至,很愚蠢的cancel了google和snapchat的面试,留下了一点遗憾。作为ee到美国转来cs的**,感觉应该知足了,不过,觉得自己在投简历,match pkg,选择offer的时候有很多失误,所以感觉比较遗憾,写出来希望大家以后可以避免这些教训。
先说一下,大致的准备情况:
背景:在国内某985高校ee毕业后,来美国某学校读了个ms..学校在公立中算不错的,身边同学水平都不错,有一部分科技公司在这里设有分部,且IT巨头一般也回来,所以身边同学基本这学期也都找到工作了.
转专业找到工作的难度其实不是很大,就业形式现在也没有传言的那么糟糕,我觉得只要积极主动的去准备,并不会有什么问题。我自己感觉准备最主要的就是:刷题 + 建立自己的social network(linkedin+学长学姐+career fair)。两者都很重要,前者决定你通过面试的成功率,后者决定你得到的机会多少。成功 = 成功率 * 机会次数。

暑期,因为在北美某著名养老公司实习,周末有充足时间刷题。起初每晚回家也打算刷题(不过自制力太差,后来就演变成了回家打游戏,逃
在暑假结束前,重新开始做了200道题不到(之前找实习的时候做过100道出头)…暑假结束后,出去玩了一趟,回来发现自己的对题目的认识和熟练度,完全没有达到理想的程度,于是利用开学前一周,和开学初2周的时间,把剩余的题目刷完,分章节和一个大神同学整理讨论了一遍,自己又把所有题目全都看了2遍,其中感觉重点的题目又重新写了一遍。大概这个过程结束的时候,career fair就开始了。然后我混乱的求职经历就开始了

求职经历:
career fair上,我投简历的策略出现了很大的问题,因为当时实习公司是给了一个口头的return offer(我并没有很积极的去要求尽快确定,因为希望能有更多时间去试一下更好的机会),但因为这样的不确定性,我当时投简历的策略就是大小公司一起投,保证一定有工作,这样最后面试的压力是非常大的,再加上学业的压力,在整个10月中旬-11月中旬,基本每天都在面试或者准备明天的面试,leetcode在这期间一道题都没有看过,是literally的一道都没有..这里就犯了第一个错误:因为定位不是很清晰,对就业形势估计比较糟糕,甚至投了一些非常普通的三流公司(一些local的startup),浪费了很多精力。我觉得,如果对自己背景有一定自信的同学,完全可以有一定的target范围,我身边很多同学就是这样做的,轻松+效果好 后果其实是很严重的,比如uber没有好好准备面试,导致直接挂在一道面经题上,google,snapchat没有时间经历去面试,直接cancel了(hr倒是很好,说以后有机会,随时可以再面,这里留下一个伏笔先)。所以,建议以后再去career fair前,对每个公司做一定的研究,选择一定的公司去投简历。

表刷:fb,linkedin
没有onsite(店面/campus interview被拒):hbk, uber
拿到onsite面试 airwatch, apple, citrix ,indeed, microsoft, quantcast, yahoo, schlumberge
拿到offer: Indeed, Apple, QuantCast, Microsoft, Square
onsite默拒: airwatch
onsite没去:yahoo, schlumberger, citrix
在2面前被取消了面试,因为说公司转而招聘experienced engineers, rather than new grads: Zenefits

面经 按拿到 onsite顺序:
Airwatch: 1面,如果在计算一个后缀表达式 (stack) , 找到一个undirected tree中最长的路径,掏出一个网站(url shortening service),我当时就说在backend弄一个类似于map的东西redirect一下,印度小哥貌似比较满意,后来才知道这里有这么个东西:http://www.hiredintech.com/system-design
onsite: 1轮:group interview(提供一个存储social netwrok的方法,比如1认识2,2不认识1,1认识3,3也认识1,类似的,尽量主动一点)
2轮 : coding challenge,问了一个two pointers的,好像是把负数全换到最后。然后问了一个改错题。。
3轮 : 3个brain teaser, 都不太难,只能记大概: 1000个犯人,喝10瓶毒酒,有一瓶没毒,找出这一瓶。1000 < 2^10 = 1024. 8个球,一个质量不好,用天平找出,尽快找出来。(决策树模型,只要小于9 = 3^2,就是2次)。最后一个,香蕉橘子苹果全都贴错标签了,怎么吃一次,就全矫正回来。 感觉onsite表现还可以,但已经2个月都没音信,中间收到邮件说,那个组出国了,要过些时间联系,问你现在需不需要马上要结果,因为那时已经有更好的offer,就没回复。这也成了唯一被rej的onsite了。 Citrix, 因为拿到onsite没去,所以只能写一下2轮店面的 1论店面: 非常详细的问了restful api, athentication,dns 的机制.athentication真真不会,现场Google了一下..结果后面水果家onsite还问到了..一个brain teaser 2论店面: virtue function是什么,大概怎么实现,什么用;还问简单的coding(binary tree找指定元素,bst找指定元素),一个brain teaser,如果两个人在不同的地方,1人一把锁,想把加密的东西从一个人这里,安全发给另外一个人,怎么办?顺利做完后,聊了聊对citrix的问题,就挂了。过了几天发来店面。 hbk: 当时面试迟到了10min,他问的东西乱七八糟的,感觉也不是很难,最后很快被rej了。好像是先mergesort一个linkedlist,然后时间不够就简单问了问deserialize/serialize tree怎么设计,没让写。 Apple:因为真的很爱水果,签了nda, onsite 就不说了,一面,超级nice的abc小哥:聊了聊对于该领域的认识,一些基本的想法,比如你用siri或者apple maps 搜星巴克,那在sfo搜到nyc的星巴克肯定是不合理的,你怎么设计去检测评价这个结果..我:什么设计voting algorith,machine learning,human judgement..balabala,知道的东西瞎说了一通.然后小哥笑笑,介绍了下他们的做法,问了几个基本的数据结构知识.. 二面,30mins,写一下 copy linkedlist with random pointer,楼主用hashmap写的,写完跑通过之后,面试官说别用额外复杂度..当时花了1分钟没想出来知道自己肯定想不出来了,就问hint,他说完,我写了一下,通过测试,他也算满意。 Onsite:水果onsite每轮都有medium,或者hard中偏比较简单的lc类似题,刷完lc coding不会有问题,但是要有一定的database,js,design的基本素养,他们涉及的面比较广。我的js答的不好,但那轮的面试官说没关系,我现在知道你能看懂js代码,但对于js中的tricky stuff不熟悉,这没问题,因为你写了,你是要找backend. 水果家的offer真心还是不好拿,前前后后总共组里9个人都面了一下。最后拿到offer,作为果粉很开心,但最后主要也是因为apple 给人感觉偏硬件了,技术不如m家那个azure ds sql sever组强,new fresh graduate坚持做技术的原则,所以还是没去。但对水果家面试工程师的态度点32个赞!!! Indeed, 校面很水,基本都过了,就不说了,细心一点。onsite签字了nda,面经很多了,大家看看就好,可能会有新题,把lc刷熟,问题不大。隔了2天就给offer效率赞! Quantcast: linkeding上hr 自己来找的我,搜了一下在pre ipo,就表示愿意下一步 先一个coding challenge。这个coding challenge真尼玛难,生生做了4个多小时才写完,word search II, 但给你的不再是一个2d array,而是一个没有存好的,蜂巢形的字典,让你自己先把字典按要求生成.. 然后店面,具体忘了,但都不是coding,一些cs的基本知识,比如post/get区别之类的,耐心准备过相关知识问题不大. onsite:1 设计电梯 2 几道coding,都是lc medium/hard中偏简单的,具体记不清了,刷熟肯定没问题3 按照要求,在大文本文件找几个字特别字符,一块天天准备的大神指导过hadoop,所以逢凶化吉。4 一个很怪的题目,具体细节忘了,我们现在有很多备份,根据read-heavy的write-heavy不同需求,设计架构。如果有时候我们不想有down time,怎么设计这套机制。这题我觉得设计的很好,比一般先coding题目有技术含量多了,在他提示下,最后勉强做了出来。 Yahoo: 店面:sql读写的基本操作,简单的算法(好像是给一个class按特定规则排序),乱七八糟很多os,dns的知识。。楼主一面嘴上要求重复问题,一面暗中google对答。后来apple先到了,就没去。 schlumberge:校园面试问了一堆乱七八糟的,比如c++基本知识,java基本知识,简历。然后就发了onsite,后来没去。 square: pair interview,人超级nice,coding问的很有水平 1面:一对任务,有priority怎么解决。priority queue,写一下,然后问thread safe怎么设计 2面 : 好像是一堆任务,按照优先级输出,backtracking + dfs, 又问了一下multithread情况下怎样 1,2面没有说的这么简单,因为是pair interview,他还会不停的问一些其他的问题,比如尽量private variable,尽量用已有的数据结构, function signature要尽量合理,test cases自己怎么尽量合理的设计。 onsite : 2轮, 1轮抽象出来是topological sort 还有 1轮实在想不起来了… microsoft: 1面,问了个牛顿迭代法,其实就是2分法求方程的根,然后问了一个lru cache..当时以为三哥要挂我。。30分钟整这么麻烦的两道,没做过lc怎么可能做得出来。。。 ONSITE: 从了ms,签了nda就不说啦。。。 还有一些小公司给了面试,零零散散的没什么普遍意义就不上了。 snapchate, zenefits的coding challenge都一样的,大家上网自己搜一搜,zenefits如果,你真的拿到的话(因为现在应该不招new grads了),一定好好看看面经,test case很变态! pkg信息 Indeed: Seattle 125K base + 10K signon + 10K anniversary bonusstock(10k unit, $3 each share),因为stock的ttl比较坑,所以一般不把stock加进去,green card policy 理论上3年后给办,但公司发展越来越好,所以应该也很可能可以提前 Apple (sunnyvale,貌似明年搬到太空船): 115k base + 120k$ rsu/4years + 15k signon Quantcast SFO: 106k + 40k 股票(hr说 IPO 保守估计$7 each share, 里面学姐说 传言$10, 但不上市就是纸..) /4years Square SFO: 115k + 120k shares of stock(大约150k usd)/4 years + 17K5 signon Microsoft Redmond: ms因为当时面试表现尚可,又和apple,indeed match了,pkg还是比较给力的,最后数值比以上几家都略好一些,因为最后从了ms,就不透露了pkg了 pkg match,当时本人主要在quantcast, ms, apple几家中选,qc因为公司小,表示只可能给股票,钱没办法多,一个劲说silicon valley dream,但不上市就真的是白纸(1刀1股内部价)… ms第一轮pkg比较慷慨Stock(120k),基本double了标配的stock(65k),apple 很无耻的在加州选择了全面match ms。 ms第一轮的pkg发来同时,很有诚意的承诺是negotiable的。。因为当时楼主在几家公司犹豫不定,就和ms说,你们再加点,越高越可能来..导致他们第二个pkg发来的时候,只是简单的double了signon,后来才知道ms的pkg是可以argue很多很多的。。而lz很天真的只argue了signon…argue的技巧,一定在于,设定一个自己满意的expectation,不要简单的说你们多给点(better signon bonus),一次要到位,不要多次去要,不然别人很反感。事实上楼主考虑到以后可能是工作的上司,double signon以后,也就没有敢再去要了。 选择offer,我当时选择offer的时候,过于看中pkg,因为觉得公司都不错,pkg是数字,最好比较,拿某工具还算了西雅图和湾区薪水后,就接了ms。接了之后,在回国登机前,收到apple挽留的邮件,心里很后悔,但已经签字了。在飞机上,拿着乔布斯传看(本来打算接受offer后看的),百感交集。最后,才觉得其实其他方面也很重要,比如人员配备(diversity,至少别三哥太多),对公司的喜欢程度。不妨做一个表格,每个权重设好,最后加权选择。千万不要匆忙决定,决定的过程,至少要对得起自己曾经准备所付出的汗水。不过,anyway,综合考虑之后,还是觉得很难说清,既然去了ms,就只好心里暗示ms更好啦,哈哈。 前面说的埋下伏笔,是因为,按上面说的,楼主觉得选择其实未必正确,匆忙在圣诞回国前签了ms后,略有点后悔。学长们又说,其实..你可以下学期继续面google, snapchat, 如果有可能,因为有一些offer了,可以试一下找人推airbnb,pinterest的,因为反正it公司(至少ms)是有at will employment的..请教一下,这样真的可以么?如果微软现在要求提供h1b申请的信息,怎么处理呢?