面试经验分享平台

将近几年的名企精品面试汇总、筛选、整理,再分享给大家
经验详情
创新工场面试经验

创新工场面试题库(软件开发类)

 
首先询问对创新工场旗下的什么比较感兴趣,以后想从事什么方向;
项目介绍,利用什么算法实验,怎样识别;有何先进之处,为什么会选择它;
Linux—-对bash的语法,统计出一个班级中同学A的成绩,使用awk;
程序—-两个整型数组,找出其中相同的数打印出来;
对哈希函数的举例说明,怎样解决冲突问题;Linux开机启动过程;bootloader作用;Makefile作用及其优点;
进程与线程的区别;
static与全局变量区别;
一很长的数字串,删除其中相邻的相加为10的数(eg::12345645=>1234); 


创新工场电话面试常见问题及经验浅谈

面试题目总体偏简单,题目如下(根据回忆):
1、简历为什么没写全?(当时没怎么好好填。。。)
2、能实习多长时间?
3、有没有什么项目经验?谈一下你做过的项目?
4、重载与重写的区别?
5、C++怎样实现多态?要求从编译器的角度来解释
6、怎样判断两个单链表有交点?
7、有81匹马,9个赛道,问至少比赛多少次可以取跑的最快的前四名?
第六题有两种解法:
解1:遍历两个链表,得到两个链表的长度m,n,长的链表指针先走m-n步(假设m>n),然后一起走知道相遇,则说明有交点。
解2:将其中一个链表中的尾节点与头结点联系起来,则很容易发现问题转化为求有环链表的第一个在环里的节点,可以用快慢指针来解决。
第七题当时没想出来,结果回来之后和jb,dd讨论才做出来。
可以这么考虑,先赛九场,可得到每场最快的马,再将这九匹每组最快的马再赛一次,得到跑的最快的马,然后踢出最快的马,并将踢出的马所在的那组第二快的马补上,再将赛这九匹马,然后踢出最快的马,此时踢出的马为全部马中第二快的马,依次类推,所以总共要赛9+4=13次。
投创新工场是个偶然,虽然他们招的是android游戏开发,自己想往C++方向走。有机会就多试试吧。。

 

创新工场某公司电话面试——开膛手jack的“内心告白”

前天下午收到创新工厂的电话面试通知,仿佛自己一直坚持的道路前方有了一丝光明。不过对方要求我去他们公司做的是android手机游戏开发。这似乎与自己的坚持又有些背道而驰的味道,不过还是暂时决定试一试。于是开始谋划改变自己的实习与学习计划,正准备着手开始学习JAVA,但是面试的惨痛经历让我幡然醒悟。既然一直坚持,那就需继续保持,并且落到实处。
今天早上翘掉了单片机和WEB技术两节课,在寝室里看Android的资料,算是对它有了基本的认识。下午又继续翘掉了Linux跑到软测中心去机试,题目是:利用Myeclipse+tomcat+SQLserver构建一个web用户资料的管理系统。一直执着于C和C++的我自然是交了白卷。最后老师还是决定把我留下,写测试部分的代码。
说是交白卷其实并不确切,因为要检查的时候我的面试电话来了。我只好舍弃了被我瞪了2个小时的电脑去回答面试官的各种问题。
首先是自我介绍,没有任何经验的我,几乎是把简历上的内容复述了一遍。好在对方似乎也并不期望我能说出什么非常出彩的话来,于是就直接切入正题开始了面试考核。
第一道题:
怎样得到一棵二叉树的深度?
这其实就是一个二叉树的遍历问题,我当时很抽风的来了一句“这个可以用BFS来做”,结果后面讲的其实是中序遍历@@,后面说的也就是中序遍历。关键的地方其实是设全局的静态变量max,并且不断的更新它。使他与最大的节点高度相同。
第二道题:
一个12级的台阶,我们可以一次走1阶或是一次走2阶,问总共有多少种走法?
我当时条件发射的想到了高中数学竞赛的走格子。从(0,0)走到(12,12),然后跑回机试的机房去借纸和笔,算了好一会儿才发现根本不对。后来在面试官的循循诱导下,发现了这其实是一道简单的非波拉切数列题目。@@
第三道题
给定一个超过10万元素,每个元素均不大于1000的数组,怎样对其进行排序?
这个题目就要多亏了晓东。明显的是这些元素中会有很多重复的元素。计数排序无疑是最佳的方式。
第四道题:
怎样的到字符串的最长回文子串?
这道题目的来源是我在跟面试官聊到自己的ACM经历时说“一般我们是分工协作,简单题和字符串的题目归我做”,然后就来了这么一道强力的动规“字符串”题目。纠结了半天还是没有想出来,这让我觉得自己的算法设计和ACM搞得都十分的酱油!

二面是在寝室进行的,我晚饭也没吃就在寝室傻傻的等在手机前面,结果新的面试官似乎更加的强力。出的题目一道比一道犀利,或者说一道一道击垮了我膨胀的自信心。
第一道题:
给定一个链表的头节点,怎样反向输出该链表的各个节点?
这道题应该都会想到把链表节点指针保存在数组中,然后反向输出数组元素所对应的节点。但面试官似乎对我的答案不是很满意,后来一想这似乎可以利用一个临时指针将整个链表反向,然后再输出。不知道面试官是不是在等着个答案。后来打电话过去想和他讨论讨论,结果号码是总机号码,人家公司有好多分机。。。
第二道题:
对于STL中的set应当怎样设计?
我在简历上大言不惭的写着精通C++@@这才导致了这么犀利的问题。面试官首先是问我有没有研究过STL的源码。我只好承认自己看到各种template头疼了。他似乎还是很想给我一个机会,于是继续在STL的问题上面找容易切入的点。谈谈对set设计的看法?我自然是晕了,依稀还记得自己说了一个什么下标访问,当时就想抽自己。
第三道题:
怎么样的道一个类的唯一一个实例。
这还是自己在郭克华老师的JAVA面向对象课上与最近的C++培训中学到的:单体模式。
在类中声明一个静态变量,变量类型就是该类的指针。将类的构造函数私有化,然后定义一个共有的getInstance函数,用来得到类的静态指针。
第四道题:
给定一个数组(长度为n),怎样找到其中个数大于n/2的那个数?
这道题目前前后后给了好几种方法,都不行。
第一种:筛选。如果一个数上次出现的位置与当前位置之差大于n/2,则排除它。
第二种:统计。
第三种:冒泡。
上面各种方法都受到了无情的批判。只恨自己学艺不精啊!
这次电话面试经历给我敲响了警钟。一直似是而非的状态不能再持续下去了。既然坚持了三年学习C语言和C++就不应该临了了变挂,到最后只会什么都没有学到。

除此之外,一个关于这个学期学习发展的计划也在我心中渐渐明晰:
第一:把C语言和C++学踏实;
什么叫踏实,其实从STL那到题目就可以看出来我的C++还很烂!C语言不需要做出什么东西来,只需要把指针学懂,学精就好了,C++需要把STL部分深入的了解,至于界面,还是继续学我的Qt。
第二:把数据结构和算法设计两门功夫练熟;
BFS和DFS都分不清楚的ACM队员相信是个教练都不会要。至于自己一直恐惧的动态规划,则需要多练习来克服这种不知道从哪里冒出来的消极心态。
第三:现在是面向对象的天下;
其实我也不知道自己对于JAVA讨厌源自何处,一直都对他有排斥心理。这其实也是自己3年几乎没有碰过JAVA的根本原因。其实相对于C++,JAVA更能适应当下日益丰富的客户需求。面向对象的思想与基本方法也需得是自己多下功夫实践的方面。
第四:自信与充分的准备。
在电话面试中,我对于自己的不自信可谓体现的淋漓尽致。当然这也与实力和准备不充分相关。对方其实给了我2天的时间准备这次电话面试,结果我花了1天半的时间与隔壁寝室的少年们一起练习自己的dota技艺,这也是此次面试失败的主要原因之一。

在这里,想对301的诸位dota菜鸟们说:咱们不要这样练习了吧?再怎么练也只能开个淘宝店。。。兄弟们啊,前途与心爱的女生和我们渐行渐远啊。。。
2012年3月9日20:36
于昨天悲剧了的7层楼图书馆

 

真实记录我的创新工场面试

周五接到创新工厂的面试电话,让周一过去。我原先是投的实习岗位,毕竟NOKIA离学校太远了,想找个离学校近点的地方。咨询过原本去面试过的同学,说起来题目都很简单,无非是折半查找什么的,面试个把小时就结束了。结果到我这:我12点50到那,跟一个面试我的工程师一直面对面的聊到2点半,活活面了 1个半小时,悲惨~午饭都没吃。(面试完了,我才明白:那工程师以为我是来面正式员工的,所以~~)
我以前也参加过几个公司的面试,但是这次面试的经历是最nice的!以前去朗讯面试,基本上过去做了张试卷然后和team中的四个工程师随便聊了20分钟就被告知:明天就可以来入职了,当时自己还一愣一愣的(后来因为种种原因没去,非常可惜)。这次在创新工厂面试和笔试不是分开的,工程师找了一张桌子,我们俩就像朋友一样一起坐那,然后开始聊天一样的面试。刚开始主要是问我一些:以前自己做过的项目的经历,从框架设计上,设计模式使用上,具体问题解决上~~基本上都要巨细无遗的询问,我觉得:除非你真的有大的工程项目经验,否则真的蒙不过去。面试官还让我举出在项目中间我认为最难得一个问题,以及如何解决的,
我举了一个关于多线程之间冲突的解决方法:用的二维映射表来处理彼此之间的冲突。
我觉得让我不太好回答的问题是:你觉得所做项目的Bug-list中:你自己的问题所占比例有多少~  呵呵,这个我确实不知道该如何回答是好,最后勉勉强强说了个1/5,也不知道是多是少。其实认真的说:我确实不知道我自己编码上的问题所占比例,毕竟:基本上所有问题都是纠结在一起的,并没有划分那么详细。
面试官问了我一个很有意思的问题:你有过创业的打算吗?
我很直白的回答说:没有,因为我没有好的idea,没有资金没有经~balabala~   后来我才发觉:这样回答不太合适。因为面试官后来说:创新工厂是一个创业型公司什么的~汗一个~~
后来看我项目经验主要集中在移动开发上边,他就问我对symbian ,maemo,android,iphone这几个主流手机操作系统的看法。幸好以前我专门查过这方面的资料,上来直接就说:对个人而言:我不喜欢android,我觉得它是一种伪开源,然后balabala~~~呵呵~面试卷一边听一边在记着什么。
面试完出来后我才开始琢磨:这面试官不会是跟李开复老师从谷歌过来的吧?整不好以前就是做andorid的,我在他面前这么说android是不是有点不合适?呵呵~  然后他还问了很多symbain方面的东西以及让我说一下个人对这个os的看法,我就结合symbian在智能手机市场份额日益下降的现状说明了下这个操作系统的优劣势和现状,总体来说:自己对这方面还算比较了解,回答的都行。
项目经验问完之后,工程师出了一道算法题,我大概花了5min给出了解决方法,工程师看了之后让我算了下时间复杂度。说这个太高了,让我想办法再继续优化,降低时间复杂度。我可能因为前边的方法给思维固化了,想了有5min多,在那画图,后来终于想出来解决之法,结果还没等我开始编码实现的,那工程师可能觉得时间有点长了,就打断了我,跟我一起分析。结果他要说的方法跟我最后想出来的方法是一样的。呵呵·他也看到我上边画的图了,应该知道我也想出来了吧?谁知道~
这道题目结束后,整个面试就结束了。然后他说:我这没有问题了,你有什么问题吗?我壮着胆子问了下待遇问题以及传说中的加班问题。终于得到确切数字:一周至少工作70h。汗一个先~~(我不知道这个数字是针对正式员工还是也针对实习生)。他还问我:有没在网上搜过他们公司的信息,我说:搜过,但是很少,所以不是很清楚。
最后我问了一下创新工厂的研发主要集中在那几块,得到答复是:电子商务,移动互联网还有云计算。然后面试官问我对这几个方向都了解多少,我坦言像云计算这种概念过新,只有这么个概念,实际到底怎么回事不是很清楚。其实后边我很想斗胆问一下:创新工厂从开始到现在,什么产品都没做出来,没有什么实质性的进展,这是个什么问题?
这也是我大多数同学和朋友的疑问,但是最后我也没这个胆子问,呵呵~
在面试的整个过程中:只要我回答问题,面试官就一直在记着,可能是打分或者写评语吧,及其认真!而且所问的问题确实能考察简历的真实性!而且面试官人很 nice,在给我出算法题时:我笑着对他说:我可能不会。但是他也一笑,说:没关系,不行我们一起讨论。在我做题过程中:他并没有离开,一直坐我旁边等着。而且对同一个问题,我们会想同学讨论问题那样,一起在草稿纸上写写画画在那商量着解决,我受益匪浅!
创新工厂的面试经历给我的感觉非常nice!当然:我所见到的工厂内部的气氛和公司文化也和我以前见过的公司大不相同!!如果能有更多的这种面试经历,我很愿意去感受!!
外界对创新工厂现在的说法很多,但是我觉得李老师的开拓和创新精神始终是最值得肯定的!佩服之!!不管最后能不能拿到实习offer,这次面试经历始终是一次很好的经历!!

面试总结:创新工场是一家致力于早期阶段投资并提供全方位创业培育的投资机构,所以对求职者在企业早期发展以及创新领域的独特思路见解更为严格。


一封邮件引发对曾经创新工场面试的思考

 2009年某求职者面试经历:今天在整理邮件时,发现了在2009年最后一天去创新工场面试后写给创新工场的一封邮件,又重新回忆起了那段往事。
我到创新工场面试一共进行了两次,第一次是在12月24日,当时给我面试的是一位做手机开发的工程师,态度非常好,和我聊了一些手机软件开发方面的情况,基本没有问我什么问题。感觉他是一位技术上非常专注的人,人非常随和,在我第二次去面试时他还和我打招呼。
第二次面试是12月30日,大约是下午两点半开始,不过由于他们工程师有事情,所以推迟了一个小时左右。这次给我面试是两位工程师,他们一共给我出了两个题,第一个题是C++关于指针基础的问题:
void testFun(char* pArg);
调用:
char* ptr;
testFun(ptr);
这样调用有没有问题?为什么?
这道题由于我经常编写C++程序,所以知道这种情况通常需要如下调用:
void testFun(char** ppArg);
char* ptr;
testFun(&ptr);
应该回答得还算可以。
第二道题是将整数以32位二进制表示,将其倒序输出,并给了一张纸,让我写出程序。可能由于我当时比较紧张(因为我太想进入创新工场了,为此已经精心准备了两三个月,还辞了爱立信的工作),这道题没有考虑到边界条件,所以写了两次没有写对,所以面试就这样结束了。
我很沮丧,这个本来是很简单的问题,我居然没有答出来。所以我没有立即离开,而是静下心来,把程序重新写了一遍,然后又等了那两个面试官一个多小时,然后找到他们说:“我刚才太紧张了,我又重新做了一遍,您看一下吧!”当时他们的感觉是很惊奇,因为他们都已经把面试结果交上去了,我在说这样做没有什么意义了。不过他们还是出于礼貌,看了一下我的程序,说是没有问题,然后把我客气的送了出来。
我在回家的路上,非常不甘心,连夜验证了我后来给出的程序确实是正确的,同时,我想他们也许不仅要考一下这个简单的程序,还要考一些底层编程的知识。于是我把跨平台性、执行效率等方面,写了一封邮件给他们发了过去。
然而我又担心他们不会看我的邮件,所以第二天我又特意跑过去,经过辗转数次,终于找到了那个面试官,他很客气的接待了我,但是并没有看我的邮件,只是很客气的告诉我,他们只是负责技术评估,具体做决策是人力资源部门来做,最后非常客气的把我送出公司的大门。
同时我也在反思,我在爱立信做系统研发工作还可以,其中流媒体服务器在中国移动集团的流媒体规范测试中性能第一,负责开发了爱立信香港手机电视业务的客户端软件,该系统是爱立信最复杂的mobile TV项目,基于IMS系统的二次开发北京网通的通信支撑系统,而且与移动及联通的研究院及数据业务部门人脉也还可以,在爱立信又可以在第一时间接触到当前最新的移动互联网及增值业务,我觉得我作为一个技术负责人还是够格的。

反观创新工场的面试过程,由于应聘者众多,所以面试流程显然随意性很大,而且基本是一种单向机制,我后来连夜给他们的邮件他们肯定没有人会看,所以他们对我的评价一定停留在给我初次面试时的阶段。我想一定有一些人和我一样,经过这样过程挑选出来的人才,水平当然有,但是运气也会占很大的成分。这种机制是存在问题的,可能会影响他们的发展