好像很多人问我面试的东西,就分享一下,求大神轻拍,要看简历神马的私下找我吧。Good luck。
高盛:
career fair之前,1月20号投的简历,3月22号左右直接给的on site,目测我是人招不够另外补招的。
有两个team面我,一个是Equity Technology,一个是Financial Risk Technology,每个team出3个人面你,每个人半小时。每个team之间有半小时休息。
Equity Technology:
第一轮:
一个中国大叔,一上来我还小套了一下近乎,可是好像不吃这套。先问了下学过什么课,写过什么project。然后开始问问题,比如linux里environment variable怎么设,++i和i++有什么区别,哪个效率比较高?然后写了一个c string reverse的代码。
第二轮:
一个美国大叔,问了一下龙之谷外挂的细节,还有hackthon project的细节,用了一些什么算法,为什么选那个算法。其实hackthon我打了个酱油,主要是抱几个大腿去蹭个经验的,算法的细节我也不了解,不过后来做过traveling salesman problem,觉着应该差不多,就按那个扯了一通。后来问了一两个编程题,都很简单。
第三轮:
一个美国小哥加一个印度小哥。上来也是先聊project,还有上过什么课。然后出了两道题,一个是bizz buzz game,就是逢3逢5逢15分别输出不同的东西,特别水,他们说:" We just wanna see if you can write some code“。。。。不用饥渴到这种程度吧。他们只要写伪代码,我用c++写了,他们很开心地说:"I can actual compile this." 简单的程序一次写出无bug的代码还是有加分的。。最后问了一下我有什么其他问题,就结束了。
Financial Risk Technology:
第一轮:
一个印度小哥,出了一点小插曲,给我的时间表错了,导致我放了他半小时鸽子,然后后面的interview全部延后半小时。常规套路,上来问一下Project,上过什么课,然后问了一些hash table和database的问题。因为我写了一个概率统计的project在简历上,他又问了一个:如果有两个query,一个执行速度的mean是5,standard deviation是10,另一个执行速度的mean是8,standard deviation是8,你要怎么选择?我觉着没固定答案的,根据不同情况选,他也没说对还是错,也就稍微讨论了一下两个query在现实里可能会有的不同后果。
第二轮:
一个印度大叔,特别慈祥。。上来问我为什么选择高盛,我表示我对Finance这个field很好奇,也很好奇Financial Risk平常都是做什么的。他听了特别开心地跟我解释了不同的Financial Risk,还有平常主要处理的事情,用的database之类的。最后出了一个link list的题,怎么判断link list是否有循环。
第三轮:
一个美国小伙,特别geek。。也是先跟我聊一个project,然后问我hashtable是怎么实现的,我选了用link list处理collision的方法。他问我为什么选这个,我说这个比较直观,好实现。。。他表示用linear probing会比较有效率,因为临近的bucket会一起读到cache里面。后来就扯了一下学什么课比较好,平时做的什么事,超时了20分钟,应该算表现得还不错。
结果:
拿到两个组的offer,然后拒掉了。
关键应该是博好感,自然一点,让他们觉得你是一个活生生的人,不是一个面试机器。Finance的公司对编程基础的要求不会很高,看的是你有没有可塑性,展示出你的可塑性比炫技重要的多。
BlackRock:
1面:问了为什么想在这个field工作。那段经历让你interested的。会不会Java? (立马回答不会了。。。)
就object-C问了MCV模型,还问了不同的Inheritance类型。
2面:我没有参加,下面的信息是一位外国友人提供的:
二面大概有10个人,6个来自卡耐基,4个来自UM,基本全是亚洲人。
二面分4轮左右,每轮一个问题:
1. 一个stack,除了基本push和pop功能,加一个O(1)时间的min() 或者max(),返回当前stack的最大值或者最小值。这个略水,用一个pair的stack存最大值或者最小值,或者再开一个min或者max的stack也行。
2. 什么是singleton,这个在1面也问过。概念自行百科。(4个面试过的,3个人都被问到了)
3. 一个array,存着unsorted的数字,1到1000。其中有一个数少掉了,所以只有999个数,现在用O(n)时间复杂度和O(1)空间复杂度找出少掉的数字:
解法:从头加到尾,然后跟1加到1000相减,差就是少的数。
升级版:如果这个array少了两个数怎么办。
安神提供解法:in place bucket sort。我的理解是,在array尾巴加两个bucket,凑成1000个bucket。从array头开始swap,比如array开头是60,就把它存到第60个bucket,然后把第60个bucket的东西再取出来,存到它该存的地方。用两个变量记录空bucket的位置,最后所有bucket都sort之后,空bucket的位置就是丢失数字的位置。这样应该是O(n)时间,O(1)空间。
4. 有25匹马,5条赛道,怎么用最少的比赛选出最快的3匹。
解法:先跑5轮,选出每轮的第一,跑一次,称这次为排名为A,B,C,D,E。A是最快的。排除掉跟D,E同一组的马。排除掉跟C同一组的其他马,排除掉跟B同一组的3、4、5名。剩下5匹,再跑一次得出2nd和3rd。5+1+1=7次。
5. 写quick sort代码。
Black Rock会问你为什么不选择google跟apple,估计是以前跳槽的人太多,跳怕了。然后如果你简历上跟编程相关的东西比较多,他会问比较多让你写代码的题,如果你简历上跟编程相关的经历不多,问算法题比较多。
过了一周发拒信。
后续:
作为第一次面试就被打击到的孩子,是很不甘心的。第一次被拒是在career fair之前,ENGenius拿到的面试。然后在Career fair上又去找他们聊了一下,可惜后来还是没鸟我。但是自从许百珅大神拿到面试之后,我就问她拿了下recruiter的email,直接发了个email表忠心,然后附上简历问下能不能给个电面。
大概10天之后,不知道是不是有人拒了offer,他居然发了个邮件问我什么时候有空电面。那时候已经拿到Bloomberg的offer了,就用这个offer催了他们一下,于是周三下午1点电面,周三下午5点给了on site的机票。
这次的电面跟前面的题目都不大一样,不过都不难,因为没有直接写代码的题,下面上题:
一面(电面):
1. 怎么把一个array里的东西挨个读取。答案(for int i=0; i<size; i++)
为什么从0 开始,到哪个数字停下?(这题估计是看你有没有上过101的吧。。。)
2. 有一个文件夹,里面的文件分布之类的都不知道,求一个算法,把所有文件里出现过某字符串的,替换成另外一组字符串。
其实就是个树,in order traversal遍历一遍就好了。
3. 搜索的时候遇到一个文件夹,有什么不同的搜索方式?BFS,DFS。具体怎么实现?略。
4. 怎么让替换的过程更robust?backup每次替换,每次替换前询问用户是否替换。
5. 输入网址到网页出现,中间经过了哪些个步骤?用什么协议进行传输的?这个。。我是蒙出来的,大家自行百度科普一下吧。
其实还有一些behaviour question,大同小异,就不列举了。
二面(on site):
更新得晚,细节有点不太记得了。
第一轮:
一个印度女面试官,问了一些SQL的语法,聊了一下对database的理解,还有她现在在做的project,感觉不是很出彩,印象不深。
第二轮:
一个美国大叔,问了一下我做过什么project,然后就不说话了,等我开话题。然后我就一个人在那里讲我做过的project,似乎最后问了一两道题,不难,秒掉的,也没印象了。
第三轮:
一个美国小伙,上来就问我龙之谷脚本的事情。然后我就说了下写外挂的几种思路,还有为什么我选择用那种思路。然后他表示他以前也写过外挂,暗黑破坏神的,然后聊了一下写外挂遇到的瓶颈。然后他拿了一张题目表,开始问,全部都是刷过的题,比如stack增加min和max功能之类的。我告诉他这些题都做过了,就开始聊iOS的应用。他问了下autorelease的工作原理,还有retain的工作原理,release pool怎么管理,iOS 6比5加了什么功能。这轮似乎还蛮好的。
第四轮:
一个看起来有点nerd的美国小伙,没问我project,直接上来刷题,又是一堆做过的题,然后刷到最后有一题:swap int a和int b,不用额外的空间。这个280讲过。。忘记了,想了20分钟,然后就结束了。
面试完2小时,在等飞机的时候打了个电话给offer。最后去了这家。
X by 2:
一家做软件架构的公司,有点像软件咨询公司。是一个大胡子男人面试的,肤色像白人,可是长得像中东的。。
=。=
一开始先问了学了哪些课,做过project的一些detail。
然后开始问object-oriented的问题,比如C语言是不是object-oriented,为什么?library和object的概念有什么不同之类的。
可能是因为看到我有在上operating system,就问了一些关于multi-thread的问题,比如thread跟process的区别,不同thread之间哪些data是公用的,哪些是private,要怎么保护public的data.
然后再问compiler是怎么compile的,assembly code是存在什么文件的,machine code是在哪个文件,linker是不是assembler。
然后再问了一点网络架构的工作方式,比如server之间怎么传消息的,这个我一点没学过,就很快过了。
然后问data structure,两组没有排序过的单词,怎么找出相同的单词:一开始我的解法是先排序,然后双指针过一遍,把相同的存到新数组。他问了时间复杂度,我说O(nlogn),他说为什么,worst case是多少?然后他又问can you do better?个么好了,O(nlogn)都不满意,那就只能O(n)了,就是说每个词只能O(1),那么就用个hash table,遇到collide就放到输出堆。
最后问了个非programming的问题。。脑子一抽,短路了。。问题是:一个人上山和下山的时间一样长,速度变化未知,求在山上是否存在一个点,使得那个人的位置一样,时间也一样。
脑抽的我想用中值定理证明,但是最后被他提示了好几轮,然后才想到画个图就搞定了,学弱智商捉鸡啊。
过了两周发拒信。
Bloomberg:
最想去的公司之一,特别效率。
一面:
上来先问你自己最喜欢的一个项目,我说的是以前写过的龙之谷挂机脚本,提了一下里面用到的伪多任务的方法。
然后开始上题:
1. 设计一个email box,我把数据分成两块,一块是联系人,一块是邮件。联系人用hash table存,这个他们没问。邮件用dequeue存,理由是方便更改。面试官不满意对邮件的处理,问我有没有更好的方法,然后给了个提示,说点开邮件的时候特别快。我说把显示出来的邮件放到hash table里,把hash table当buffer用。over。
2. 手写代码,实现 size_t strspn (const char *str1, constr char* str2);
是C string library的一个函数,具体内容自行百度。
3. 手写代码,实现3n+1 problem, 自行百度。实现:int cycle_length(int input_num); 返回找到1需要几步。
面完之后马上就让第二天再来面一次。一面的recruiter很nice,有什么问题卡住了都会给提示什么的。
二面:
跟昨天差不多,问了一下why bloomberg,然后上题:
1. 一个class:有private member: int *x, int*y。要求写constructor, destructor, setter, getter, "=“ operation。然后问要求从这个类继承一个类表示3D point,问怎么实现。还有constructor 跟destrutor怎么写?能call父类的destructor吗?
2. 设计一个news的data structure, 其实就是设计databse. news有不同分类,可以属于多个分类。user有3种preference: 1. 得到关于某个分类的news 2. 得到很多人看过的news. 3. 得到在某个分类里很多人看过的news。然后我画了一个ER图,他又让我说明了一下有那几个table,然后纠正了几个错。
over.
三面:
三面是两个recruiter 面的。
第一个recruiter问了下why bloomberg, 然后再问了下以前做过的project,有没有遇到问题,怎么解决的。基本上都是我在说,说了半个多小时。
第二个recruiter问了差不多的问题。两个加起来一个小时左右。
这轮面得还是不错的,第一个是Project Manager,第二个是HR,HR没聊多久,不过Project Manager聊了蛮多,我把做龙之谷挂机脚本的整个过程讲了一遍,从怎么用沙盘隔离游戏跟脚本,怎么学用按键精灵,怎么加login跟logout的插件,怎么从挂单个游戏到挂多个,再到怎么设置重启自动挂机,讲故事一样讲了半个多小时,看得出来他还是挺满意的。
平时没事自己做点project,在面试的时候讲得生动一点,加分蛮多的。
不过也有听说Bloomberg要求挺宽的,who knows?
周三周四面试,下周一晚上电话给了offer。
Tango:
一家Startup的公司,做手机视频聊天的app,app里有加简单的小游戏。
一面:
一面被放了一次鸽子,没有什么解释,就说reschedule。原本挺不爽的,后来一想我一Junior屌毛线啊,然后还是reschedule了。一面就是跟他们的Engineer聊聊自己的project经历,大概让他们知道会些什么,没有technical的问题,蛮实在的。半个小时左右。
Areyouhuman:
一架Startup的公司,做新一代验证码的,就是做一个小图片,上面有个拖拽式的穿衣小游戏什么的。
一面:
一面分两个人:
第一个人还蛮好玩的,面我的是在career fair上跟我聊过的recruiter,是个developer。上来先问两个问题:
1. 你如果可以拥有一种超能力,你会要哪一种:预见未来十分钟,克隆一个自己。
2. 你觉得1200刀买把椅子划算不?(等我回答之后。。。开始炫耀自己公司的椅子每把都是1200刀买的,给这geek跪了。。。)
然后开始聊project,又是我一个人讲故事讲了十几分钟,然后他问了一些detail,比如游戏是3D的还是2D的,怎么判断人物是在哪个场景。
接下来拿出他们的验证码,问我怎么写个程序干掉他们的验证码。然后我就他们的验证码模式分析了一下,提供了一个算法。。。(其实遇到这种情况,干不掉的话夸夸他们应该也行)
第二个人是非程序猿,然后就聊了一下behavior question,比如你最proud的事情是什么,最大的fail是什么,除了程序猿,最想做的工作是什么,有没有跟人发生过冲突?怎么解决的?以前去哪些地方玩过?
总共一个小时,前一个人大概40分钟,后一个20分钟吧
Livio:
一家Startup的公司,做用汽车操作手机app的连接器吧。
特别没意思的面试,我好像对电话面试不太感冒,不知道怎么电面的样子
一开始上来问了下除了resume上的东西,有什么要讲的,然后我就讲了下我以前去旅游过的地方。
然后又问了下用过哪些语言,熟悉哪些开发环境,SDK,最喜欢哪个。
如果去他们公司想做什么project。
最后问了个代码题,写个判断一个词是不是palindrome的函数。
Google:
一面(电面):
好吧,虽然没有很想去,但是也是招牌公司,NASDAQ权重股什么的,面一下长长见识:
第一轮:
1. link-list 和 array 的区别 【这题怎么这么热门。。。】
2. Binary Search Tree 和 Hash table的区别
3. virtual function是什么?干什么用的?
4. 写代码:
进阶版:
如果只能用+,- ,不能用*, / , %,怎么写?
第二轮:
1. 有一个message的数据库,按照time stamp排列,现在让你取出sender是你女喷油的所有message【=。= 程序猿怎么会有女喷油?】linear search.
2. 如果要取出sender是你女喷油,你妈妈,粑粑的message呢?还是得linear search啊。。。
3. 如果要取出很多人的message,取出来之后怎么存? Hash Table... 目测所有google题都能用hash table
Hash table的key是什么?value是什么?
4. 怎么找到一个人的first degree friend? second degree friend? third degree fiend? 请写代码
5. 存一个最大是10^6的数,至少需要多少bit? 20....
小结一下,如果问算法题,就边讲思路边写代码,如果问概念题,会的就说清楚,不会的就说不会,不然被扩展下去就挂了。如果问behavior question,记得提前准备段子,到时候不要冷场。