好几天没有写了,最近一直在调代码,多线程实在是熬人啊,多线程+网络通信+加密真是难调至极。。。一个小问题就是一下午……
剩最后一篇面试经历了,也是我最终去的公司。
微软篇
要说起来,应该从去年开始。先是自己实验室的师兄去微软实习了,并且实习回来拿到了offer。开始举得微软离自己也没有想象中那么遥远了,向师兄取经之后,就决定先抓住来年4月份的实习机会,争取也能走实习然后留下的路子。最开始复习的是《编程之美》和《Effective C++》。(其实充分准备准备实习是很好的,我身边很多朋友,阿里,腾讯什么的,实习的大部分都留下了,还有一个朋友去微软实习,最终也拿到了offer,所以不要轻视这次机会。)
复习了一整,一直到来年实习招聘开始,一直感觉都挺顺利的,参加微软笔试,电话面试,最终到了最后面试,结果撇了……现在想想,但是没通过,真不知道是祸是福呢。说说失败原因,主要还是没准备好,并且自己以为准备好了。就看了那么2本书,最终去面试前花了2晚上看了看《剑指offer》就觉得自己很厉害了。
从电话面开始吧,邮件通知了一个时间段会有电话面试,没有通知具体某天某时,在第一天晚上就接到了电话,真是非常意外。(如果有类似情况,推荐大家提前准备一下,比如自我介绍,项目之类的)幸亏我前天有准备自我介绍。其实对方是询问我当天是否有空,当时真是脑子有点热,一方面也是因为正在忙自己的事吧,就答应了,电话面就这么仓促的开始了。先做了自我介绍,基本情况,项目情况,其他的一些经历、特长和性格,大概就是3分钟左右。然后我们简单的聊了聊项目,不是很深入,我感觉是为了缓和缓和气氛吧,随意的聊天。接着就进入正式话题了,开始Coding(我是纯电话面的,我有朋友是网上面试,通过共享桌面等方式,会让你直接打开编译器写代码并编译结果)。问了我两个题目,都不是很难,第一个是字符串的,第二个是拓扑排序的题目。(对方不会直接说明,比如不会直接告诉你是拓扑排序,会告诉你一个实际情况然后让你解决,并且拓扑排序大家一般熟悉的就是基于邻接矩阵和邻接表的方式处理,面试官不会满足于此,会让你提出其他数据结构的解决办法。)给了他一个满意的结果后,最后让我把代码敲出来然后通过邮件发给他,一共面试40-50分钟左右。
过了一周多收到通过电面的邮件,到了面试当天,去酒店参加最后面试。最后面试一共2面,第一面是一个很nice的面试官,问了一个丑数的题(太惭愧了,《剑指offer》上原题,但是我只草草看了,竟然一点印象都没有)。第一次面试,真的很紧张,头脑有点空白,并且遇到一个没思路的题,最终在面试官不断提示下,才给出了一个答案。(后来想想,那个答案其实基本思路对,但根本就不能算答出来)。接着面试官又问了一个除法的题目并要求写出完整代码,我写完后,他告诉我不是最优算法,我提出改进方案后,没有让我继续写了(下一位面试者来了,在敲门,我这一面前耽搁了一点时间)。面试官很好,一直告诉我不要放在心上,很抱歉之前耽搁了点时间,面的时间太短了。我忐忑的走向二面房间。
二面开始了,面试官问了几个C++基本机制后,出了一个链表删除重复元素的题目。面试官问我有什么问题么,我问了几个后,就开始思考。(这道题其实完整写出来挺麻烦的,多种情况,无环,一个有环,两个有环,还有是否相交等情况,很麻烦)。我当时很窘迫,很快就写了一个版本,在设计测试用例时候发现有情况,然后改代码,改着改着又发现新问题,最终代码改的很乱。(强烈提醒大家,在下笔前一定要想清楚,如果你有20分钟来写代码,那你至少应该思考10分钟,甚至15分钟!!)。二面就这么完了,自己感觉都糟糕透了,结果自然也是拜了。
回头想想,当时真是不行,至少和现在比起来,懂的太少了。现在想想,当时如果实习通过了,去参加实习,实习2个月,这期间基本是没什么时间来复习了,实习结束后去参加面试,面试上了当然很好,面试不上,那后果真心不太好。别人用这暑假2个月,好好复习了2个月,你这2个月,只是实习,让简历更加丰富,当然能学到东西,但肯定很窄,不如自己复习系统。当然,实习时候的表现,也会给你面试加分的, 比如部门主管很欣赏你,那你只要面的不差就差不多了。所以我也不知道该如何建议,只能提出我自己感觉的两条路的利弊供大家参考了。
今天先写到这吧,下篇在写下一次面试微软。