要工作了,发个总结,祝福大家

原帖地址:米群网

准备动身去新地方工作了,应群主之邀发出面经。也算是报答大家这段时间无私的分享。
不想说些没用的,基本都是硬货,偶尔有彩蛋。

先说简历:
一开始投了10几封简历,没人鸟我。虽然背景弱,我想也不至于吧。于是找了个美国人帮忙改简历。花了150刀。又投了10封,前前后后投了20多家公司。拿到了5个面试。(由此看出简历能过HR很重要,有的同学其实根本不会写简历,就是你的project啊,经历啊其实没写清楚,投了n多连面试都没拿到的同学可以考虑找专业人士帮忙改。)

面试经历:
一共5个公司。
G:onsite悲剧。A,I,E:offer。 X:石沉大海

根据大家兴趣排个序(非按时间顺序)
先说GG。
店面是个人很Nice的白人大叔,为什么很nice呢?因为说话很友好,打字的时候自己在哼哼。。(就是发出嘟嘟嘟的声音)。题目有点有意思,大意是有个函数f(x),定义域为[a,b]. f(a)*f(b)<0. 求在a,b之间的一点x,使得f(x)~0. 我一听完就笑了。。。第一想法是看来这是第一道题后面还有一道,第二想法是看来面试跟简历有关。因为闲聊了5分钟,我说我本科数学专业,他还跟我聊了聊数学。所以出了道数学题。 于是乎我给他证了一遍。。。。。。。。 证完后他说,great, 你写代码吧。 = =。。。当时我就震惊了。。。原来是道code题。。。 我赶紧道歉并讲个笑话缓解下。不过,因为证明了一遍,所以答案比较明显,二分法。但突然意识到,有陷阱啊,double在java中最好不要用==表示相等。于是乎写了个helper函数。(不明白为什么的同学自己抽脸,并复习ctci数学那一章)。 总之边聊编写了20分钟。大叔很满意。然后闲聊了15分钟,45分钟准时结束。 Onsite的悲剧是在我意料之外的。因为面完感觉很好。GG onsite是我的最后一个面试,感觉面出经验了所以自我感觉良好。看来做人还是要低调。 第一轮是个白人大叔,他本来不是面我的,但我的面试官没来,他被临时派来了。开始聊了两句,他说没准备题,,,就问我简历,然后问我js和java有啥区别。。。。。 题目是count and say的升级版。就是要压缩的字符串可能包含任何char。我说了下我的想法,他说太麻烦了,就让写简单版本,就是字符串中不包含数字。写完,他照了张相就走了。 第二轮是个小年轻,先问hash表,但不是直接问,而是给了一些数据问我怎么存。。。但明显就是哈希表。我边面边想,不会这么简单吧。果然他又说现在要扩展,不难找字符串查询了,要根据前缀查询。问我用什么。肯定是trie啊。 总之这轮的目的,写出trieNode,和trie中得2个方法,add,和searchWithPrefix。 第三轮,是国人,题目topk和大量java容器类讨论。 第四轮,二维数组上的dfs。follow up是二维数组太大了内存放不下,怎么办。放不下就分开存呗。 ========================来发彩蛋============================= 说实话,看面经用处不太大,为什么呢,能遇到原题的几率很小。所以说点面试潜规则。 思路比答案要重要。 我给HR打电话问GG的feedback,他说各方面都good。明显是搪塞我,但是面完自己应该能感觉出来。应该是挂在第一轮上。当时第一轮中间处理字符串中出现数字时卡了5分钟,考官有点不耐烦,可以看出来GG对思维的要求比较高。 (当然这个大叔从头到尾都斜眼看我(真的),只能说把他临时换给我是天意,天意啊) 四轮,code都是bug free。说说技巧。在白板上写的时候最好边写边说,这在我所有面试中都有极大的帮助。同时,写完一行,用1,2秒快速扫一下,保证没错。写完一个block也快速扫一下。至于怎么让这个扫的过程流畅一点,写个彩蛋再说。 店面:find common in two sorted arrays。 这里有一点要说,遇到异常怎么办?比如input == null。返回特殊值?no! 记住常用的两个异常,null pointer和illegalArgument。 onsite题目不说了。我只能说都不难。但是: ===================================彩蛋2================ 面试口语模板 这是个很重要的东西。为什么呢?首先,交流很重要。其次,如果编写代码遍解释?然后,回答上个彩蛋的问题。 我举几个例子,面试官出完题后你要干嘛?当然是问问题进一步弄明白问题。比如输入和输出是什么类型?出现异常怎么办? 这种问题在哪里面试都能用到,就跟写作文一样,有没有那么一些模板你直接背出来就可以? 当然有,比如(我英语不好你不要说我)这句: from our previous conversion, I suppose the input should be an Integer and the output should be a list of Integer right? 再得到面试官的肯定回答后,这个方法就写出来了。 public static List XXX(int input) {}

再说留出时间解释和检查你的代码?
你写完一段就可以简单解释,如果你想检查一下,就直接说出来。比如:
let me check a litter bit here 然后赶紧检查。有时候我还会加上 because I am manipulating pointer here I want to be extra careful. (快点说,说利索点)

这种口语模板会让面试流程更加连贯。更重要的是更好的交流。你都事先背过了,能说的不溜么。

Amazon:

走的是最简洁路线,OA——workstyle——video。
过程很曲折,真不想吐槽A家了。谁申谁知道。

=======================你以为是彩蛋,其实只是普通的分割线===========

video的时候,好好想想你那两道编程题是怎么做的。不是怎么code的,而是怎么做的。也就是说先用中文,你给一个根本不会做这道题的人完完全全讲明白。再用英文翻译出来讲出来。
再次强调思路比一切都重要。当然口语要好,所以要事先准备。
举个栗子:我的问题是right rotate。
其实这个题不是那么简单,如果你没看过ctci你做做试试,做出最优的那种可能要20分钟。
面试官一上来就说我看你那道题做了4分钟(由此看出面试官可以看到OA里面的很多统计数据),你告诉我你怎么做的这么快。

我背过答案了,肯定做的快啊。
但不能这么说。所以我说你想如果是brute force怎么做?就假设每个位置都能分割,然后求出所有可能的string和输入比。有一个相等就true,不然就false。然后呢,我觉得太low了这个答案,我就想如果输入的string只有两个字母呢?
直接交换不就行了。但是输入不止2个字母,,怎么办。无所谓可以抽象成两部分,xy。如果这两部分交换后yx是第二个string就是true。怎么把xy变成yx呢?找出分割点是不行的(变成brute-force)了。但是xy后面再加上一个x不就有yx了么?
但是我们不知道x是什么。那就再加上一个xy不就有xyxy,也就是yx了么。。。。

累死我了。

于是这么一说,大爷很开心,还说no one ever told in this way before. 可以看出,A家面试官是一对多的。并且第三次强调,思路比答案重要。

说完大爷问我,你现在喜欢什么啊,将来想干哪方面啊,听说你们那里冻死我,我这里风和日丽啊。

Epic:

面经太多。要说的是口语练好就能行。

onsite面试选的是面试官未来的同事,保持低调,礼貌是应该的。但不要过于拘谨。面试过程要尽量流畅,所以模拟面试很重要。如果觉得自己面试过程很尴尬,可以多模拟面试情形,总结自己的口语模板。我只能说谁用谁知道。

X:小公司,莫名其妙,不说了。

=========================彩蛋======================

还剩几天闲置,需要模拟面试的也可以私信。

祝大家新年新气象,offer多多!!!!!
对了,别问我为啥没有f,L的面试。我也想有啊,没人refer,海投没消息有没有!!!!
求F,L大神以后内推罩我!!!!!!

对了,还有!!!!给未来的单位Indeed打个广告。这绝对是良心公司,base比GG还高。(哎,我又自己安慰自己了,不过这是真的)
等我混一阵子来给大家内推。

我总觉得还有什么没说。。。。但想不起来了。。。。等我想起来了另开个贴补上吧。