写于Nov. 11, 4:47 PM
Oct. 20, 4:00-4:40 PM
Hulu的形式是正是电面前20min发一封邮件,里面是两页code,然后电面的时候问与code相关的问题。我很倒霉地完全没有时间看code(也可以说是有幸因为当时是在和Mobiata的cofounder聊天讨论Yumney的设计),一回到家上楼的瞬间电话就响了,急匆匆打开电脑上网查邮件,结果发现没有耳机,只好腾出一直手拿着手机。
对面是上次info session聊得很high的B,没有多说话,直接让我说第一页code写的是什么。我抱歉说没有时间提前看,他说没事我们一起看,结果他就没有再讲话了,我也就(很蠢地)没有讲话只管看code。由于第一次电面没有经验(完全不知道电面是要话越多越好啊!),环节又没有准备好,所以异常紧张,看code很慢还总是想到一半卡住。总之整个40min交流很少,就是我想错了之后他开始跟我循循善诱,然后在一个类似docs的写作编辑页面上写代码。
两页都是recursion。第一页code其实就是一个palindrome,很短的代码但是recursion在我的紧张情绪下变得很混乱。好不容易看懂了还不知道这个词怎么说,只好描述一遍,B说这个词叫palindrome,我就又很蠢地说哦哦对对……第二页是一整个class,和几行调用这个class的代码,最后再用class里的一个输出函数这个class的东西。用java写的不过好歹看得懂。问了一点细节之后,花了点时间看出来这是个multiple-child的树结构,简单来说就是一个directory下面所有子文件和子文件夹的名字的一个树,单个字母作为一个node,比如home/newfolder和home/newfile,存放方法就是h-o-m-e-/-n-e-w-下面分两个叉是-f-o-l-d-e-r和-f-i-l-e。可悲的是print的函数无限recursion,而且还是在print的过程中做的排序,就是这个例子中newfile要print在newfolder前面,搞得我一团浆糊。最后在B的提示下一步步来,其实也并不难。
做完就很尴尬地说结束了,也没有更多的互动,感觉他很遗憾花了他40min的时间。是啊其实如果实现看了20min题并且不是那么紧张的情况下的话,没准10min就搞定code的内容然后扩展更多的问题呢,结果……
小结:跟紧流程,电面的时候要尽量说话,一直让对方知道自己在想什么,而不是一个劲自己想。
Nov. 10, 2:00-2:35 PM
面Twitter前我准备了一上午,过了一遍OS,看了点network的东西因为是twitter嘛,列了好多张sticky note包括要问的问题啦、写code的注意点啦、类似cheating sheet的啦。
结果面我的人是搞WebCore的R,上来直接问我些底层的东西,new是干什么的,new和malloc的区别(之前看那本Effective C++的时候看到过但是印象很模糊没答好),stack和heap是干什么的(之前刚被另一家问过结果还是答得不到点上),objc的memory management怎么样。然后让我在写作编辑网页上实现getElementByClassName的函数,input是一个html内所有node组成的multiple-child tree,output一开始就print,然后改成返回一个array。然后又recursion开了……期间还有一些input的询问。这次答得还行,边想边说边写,我确定他清楚我的意图,这个反馈很好。写完后他发现有一个小bug,改了一下然后就好了。他自己自言自语说不是很熟悉c++了,所以我有的地方赖皮了点,还好没被发现就过了。
然后就是问问题了。问了他是干吗的(我有做research啦但是就是查不到他在twitter的职位),是写web后台framework的,所谓的middle ware,还有确保在IE7上可以顺利运行什么的。他问我是不是想做手机这边,我就拿出我的motivation cheating sheet说我前端有点经验所以ok,不过对后台的哪些哪些也很感兴趣,如果有机会也想做。再问他开发team的大小,他说手机端的20-25人(!),80%都在SFO。另外他们不像apple,是没有什么内部软件开发的。面了35min后他要去吃午饭了。最后问他下一步是什么,他说会有recruiter联系我。(一阵汗颜,twitter的recruiter那边效率好低阿还一直搞错时间,很无奈。)
小结:准备不够,临阵磨枪的东西都没用到,还是积累重要(所以晚上我立马看了objc的memory management,还相应修改了我原来写的code)。交流上大有进步。
Nov. 11, 2:00-2:55 PM
由于我时间搞错了,白等了一个小时,错过了398的discussion,身体也不是很舒服,加上电面的人看起来像是阿三我实在担心交流问题,所以在不太抱希望的情况下接了电话……结果一听到S的声音就来了精神,很年轻很友善的感觉。对了他是Mobiata的iOS老大,对我这个菜鸟来说颇有压力阿。
上来先赞了我一下一周前的email coding问题,他说他们以前面别人的时候一直想得到O(n)的答案,终于被我答出来了(这个coding问题是他前一个公司遇到的一个实际问题,其实不难,算法什么的最有意思了哈哈~)。再说了些我的个人情况,毕业时间,工作时间,工作地点偏好、想去mobiata的原因什么的。
然后聊fetchnotes的活,细节聊到了我是如何提建议改进两次interface的过程,我还小暗示了下在短短三周内从零(没有任何code、几乎没有经验)开始做了3种prototype,感觉这样说效果不错。还问了我们打算什么时候整合mail和gtask的问题,他说他们和expedia也有类似的功能。跳转到暑假的research,聊了当时的目的、我实现的功能、最后的效果,挺详细的。然后问了我在学objc的时候遇到了什么问题,我就很happy地把我前一晚上刚搞懂(一些)的memory management说出来了,也提到了之前遇到的autorelease的bug。
这样就过了半小时了(可见聊得多详细。期间我不知道为什么突然狂咳嗽不止,他倒是很nice地好几次笑着说没事。后来还换成了skype因为他那边信号不太好),我以为快结束了,结果他说,好那我们现在开始说一些technical的问题…………我心里一紧,还oh了一声,他又笑了,让人很放松。
结果并不是写code的,而是一些看我理解和脑力的。怎么样不用for和while来返回一个string的reverse string,我停顿了半分钟突然想到了,正是他要的答案,很满意的说。
然后是OOP的几个问题,先让我说multiple-inherited class、method visibility的概念。再让我给chess program设计classes,我说了chessboard、chesspiece、opponents,在想用什么词语来说piece的时候他意识到我可能不太熟悉chess,就给我换了一个也是OOP的但是类似的问题,并且更强调是在objc的环境下,所以我考虑到了MVC的设计,给M和V都来了个class,还有一个专门的class和server talk(嗯pty的观点)。他有问我谁来管理server talk,我说有个大的controller的话怎么怎么样。其实我不确定答案,所以我说完后就直接问他应该正确是怎么做的,因为我自己做的两个app也需要面对这样的问题,结果他告诉我应该是让controller来控制的,model就是纯粹存储的,不应该handle动作(我觉得这个挺加分的,因为我真的care这个原理而不是纯粹面试答案对错)。还问了我delegate的概念,这个我很慌阿几乎不懂的,半说半问(再)半讨论地说下来,我答得不偏,不过根本来说就是为了把view和controller更好分离的一个概念。
接下来让我说我知道的data structure,我就报了一串,最后才想到tree,他终于罢休了。然后问我list和array什么时候该用什么,小case~再接下来问我在一个文件夹下有好多文件,要找出有所有带有电话号码的文件,一开始我理解成要找特定的号码了,hash一说出口他就再解释了一下,我就说reg exp,又轻松过了(他说他想听到的就是reg exp或者grep,还好不是后者我还真不懂)。
最后问问题。我问了我接触后台的机会,他给予肯定。问了他们被expedia收购后的开发方向,他说了很多,总得来说Mobiata虽然被买了但是仍旧有很强的自主权,可以开发与travel相关的任何自己想做的产品,并且expedia也放手让他们做,没有太多限制(我趁机很协调地谈到了自己有很多idea想做,他说很不错而且在mobiatau有发展空间,唯一条件是要和travel相关的,这个也很赞)。又问了内部软件开发的问题,如我所想也是没有的。问了他在expedia的经历,他算是元老了,让人感觉他对mobiata有很强烈的归属感,顿时觉得mobiata很有引力。还问了什么忘记了,基本就是这些。
最后说是接下来一步是会和Ben(!)或者另一个product manager Jason联系,就不太是technical的了而会更多涉及我对mobiata的看法,并且建议我去了解一下他们的产品(大部分是要付钱的阿哥哥……)。圆满结束~
补充:还问了我最喜欢用的app是什么,我就说了groupme,因为实用+界面好。
小结:没有实际写code的面试就不是那么紧张了,回答问题很诚恳也讲得很详细,brain teaser幸好答了出来,在恰当时候切入一些个人的闪光点也恰到好处,聊得也很愉快。重要的是对我来说,我觉得mobiata是个很不错的公司,光从Ben和S身上就体会到了强大的引力,让人很有热情想和他们一起工作。
总结:三次电面所幸是一次比一次好的,当然遇到mobiata这样投缘的算是运气(还搞砸了Hulu呵呵)。最大的感受就是,累积知识很重要,平时学得太浅了,没有钻研下去,需要更用心些才行(这样说来感到对学习一下子心里踏实了些)。
最后这篇日志先保存着,等到万一被哪家录了再发布。twitter可能性50%吧,mobiata挺高的。对了这周一还和apple的UX老大初面了一回,效果也不错,不过之后至少还有2轮。说实话,要是t和m都录的话,我会去m的,他们的凝聚力和活力很符合我对雇佣公司的期望,而且相对于t有更清晰的盈利模式,团队也不是很大,话语权更多,我相信去m能让我体验到很重要的东西,而去t也许能接触到非常强大的后台管理,却少了些我很想学习和体验的东西。不过如果是apple和m的话,也许会犹豫了。呵呵说得早了,也许根本去不了apple的下一轮呢,就算去了也得看他们给我的感觉,如果个个像career fair上那个傲慢的家伙那样,我也不会去的。
No comments:
Post a Comment