本帖最后由 antty 于 2014-5-17 21:19 编辑 终面终于面完了(目测已跪),虽然已经没有希望,但熬到终面了怎么说对得起自己了。苏州这边面试才刚开始(现场面的话应该是直接搞完3面),以后应该会陆续收到面试通知,写点经历,仅供参考。 3月份微软来苏州宣讲,让我等众屌丝相信屌丝似乎是有春天的。可以说微软还是很厚道的,无论简历写的怎样都不会刷你,不像阿里腾讯简历不过看你不帅连笔试的机会都不给你。 大家都觉得报苏州竞争比较小,其实我也这么觉得,只不过当时SB了点了Beijing,提交简历之后就感觉自己命不久矣死到临头了。 线上测试 R1: 线上测试以ACM比赛的方式,两个小时,最终400分的总分打了200分(我实验室的男神打了225)。比赛完后题目我都研究过了,总体来说不太难,不会设计一些很高深的算法,基本上if while for语句组合一下都能得到解法,反正这关很多人都过了,这里就不再细说,想知道题目怎么做的可以私聊。 线上测试 R2: 恶心的逻辑题,智力题,性格测试题。不想多说了,说多了都是泪... ...漫长的等待,等啊等啊,期间一定有不少童鞋拿了offer 线上面试 R1 & R2: 5.8号收到了线上面试通知,我还以为我挂了,因为离上次测试足足有二十多天的时间。线上面试我也不知道自己准备啥。硬着头皮就上战场了。 这次远程面试从下午1点开始一共连着两轮。一轮一小时,一轮一个面试官。面试的方式都是一样的。 第1个面试没怎么跟我闲聊,上来就连着把我简历上的项目都要我讲一遍。这个我觉得咱们软院找实习的小伙伴们这点吹牛逼的能力是必须要有的,不然你怎么找实习,扯项目经验无非就是3分靠技术,7分靠吹牛,但你也得防着面试官问你问题。 然后给我出了道算题: 给你一堆IP地址,根据相同的字段合并起来: 比如 1.2.124.1~4 1.2.124.5~255 1.3.1.1~128 合起来就是 1.2.124.1~255 1.3.1.1~128 三条变成了两条。 大概构思了一下,之前学习了王道面试宝典上的字典树的写法,果断写了一颗字典树。 我大概的做法就是把每条单个的IP地址都改成01串,然后存在字典树里面,然后再合并。 代码写了很久,估计面试官也不耐烦了。貌似我写的跟他期望的有些出入。我说我没写完,因为字典树的代码确实有些长。面试官说:我大概能看懂你写的什么意思,你能告诉我接下来你要怎么写吗?我就胡乱说了一遍,其实自己心里也没底。最后他说:“你只要blablabla...(没太记得他的方法,反正他的口气让我觉得这道题很简单),可能我一开始没解释清楚,可能你这个方法搜的会快些。 R2: 第一个面试既然这么说了,心里也就踏实了些,接着又接进来第二个面试官。这个面试官很nice,感觉跟咱们的年龄差不多大。闲扯几句之后又来coding 了... 第一题:写链表逆置换的函数,返回逆置后的头结点 List *reverse(List * head) {} 这里我要高调一句,不要觉得链表操作题很简单,这个考你基本功,更考你细节,你看看自己写的时候第一句话是不是这样的: if (!head) { return 0; } 我敢说很多人都不会考虑到这个。 很快写出来后继续问第二个问题:给个N x M的方格,从左上角走到右下角,只能向右和向下。问走到右下角有多少种走法。 还好上学期学过组合数学。我说这题直接用组合数C就行。他又问我怎么防止计算C的时候溢出,我说用杨辉三角。 他又问我组合数C有没有比这更快的方法(尼玛,真是要一个问题问到死的节奏啊) 我说能不能让我想想,想了几十秒有点慌了...我说虽然没想到减少时间复杂度的方法,但是我想到了一个减少空间复杂度的方法,算杨辉三角只要一维数组就可以了。(我觉得我够装逼了,起码让面试官知道我在思考) 像这种情况面试官都会开始引导你:能不能通过因式分解的方法。 这时候我立马反应过来了,之前看编程之美有一个很奇葩的公式,比如算N!有多少个2. 公式是 N/2 + N/4 + N/8 ......N/(2^k) 这样组合数C可以写成 2^a1 * 3^a2 * 5^a3..... / 2^b1 * 3^b2 * 5^b3..... 做乘法只要对应指数相加,减法对应相减。他好像对我的解答挺满意的。 接下来给我一个数组,只有两个整数出现奇数次,其他都出现偶数次,用最快的方法找出来。 运气有点好,我接触过类似,当时没慌,思考了几十秒,最终想出了正确的解法。(想不出来的自己百度) 最后问我两个C++特性的简单题,虚函数和纯虚函数,我想大部分人这种题目都能生吃吧。问了些设计模式,他叫我描述一下策略模式,上学期高软接触过一点,胡乱滴讲了讲。 总的来说两轮面试还是挺顺利的,运气的成分占了很大一部分。 线上面试 R3: 现场面的话应该是直接三面,我就搞不懂第三面的通知邮件上还“很高兴通知我通过了前两轮面试”。上周五面试,终面的通知终于在这周三千呼万唤始出来。周四下午一点半。既然是终面了,我以为该是跟漂漂的HR姐姐聊聊理想谈谈人生了吧,周三晚上还呕心沥血准备了一小段鸟语的自我介绍。 没想到这是我噩梦的开始。 终面了,怎么说还是有点紧张的。面试官的语速超级快,一上来就让我挑一个项目给他讲讲。讲项目还是秉承了3分靠技术,7分靠吹牛的宗旨,讲了个人感觉比较高大上的编译实验。(这课很痛苦,但真正做实验了的小伙伴们没有一个说后悔的) 紧接着面试官说:咱们来写个题吧... 给你一棵二叉排序树和一个值,把这棵树分开成两棵排序二叉树树,一棵所有的结点都比它小,另一棵都比他大。 简单构思了一下,也没太想好,靠第一直觉咔咔就写了,写了一个错误的算法。因为算法那是错误的,写不下去了,时间也过了很久,面试官有点不耐烦了,问我怎么想,他很轻易地举了个反例,然后不断引导我,最后想出一个较为接近,但仍然不是他想要的理想答案,而且他一再强调这个问题很简单。 他要我问有什么问题,其实每次我都会问:针对我这次面试您能不能给我些建议。他说:我看你写代码的习惯还不错,对数据结构的理解还有待加强,这是个很简单的问题。 他既然这么说了,我也就跪了。 总结: 第二轮面试官跟我说:微软面试的时候不会看你做过什么项目,会什么东西,只考你解决问题的能力和代码的能力,碰到问题想不出来不要紧,要通过已有的条件去解决未知的问题。微软更看重实习生的潜力。 我想他的话就表达了我对这次长达一个多月的拉锯战的感想。虽然已跪,但是收获了很多。把这些写下来希望能对征战苏州的小伙伴们有所帮助,据说机试120以上就能去面试,没收到的别着急,一定会有的。我坚信咱们软院一定会出几个进微软的高富帅,男神(可是貌似这个时候很多人已经签了,签了我也建议大家去一去,去他们的公司,感受一下这种IT大寡头的面试是怎么样的,感受一下那种氛围) 跪了就跪了,不想多说什么,还是有差距,不后悔,认识我的人就不要再黑我了,叫我什么微软哥的都滚一边去吧,再说我真的要挖个洞洞钻进去了。 第二天依然要奔赴在看似没有尽头的找实习之路上。正所谓 理科很难我流泪,编程再易我崩溃。 理科难,编程难,多歧路,今安在! 屌丝逆袭会有时,直挂云帆济沧海。 激励一下自己,也激励一下还没有offer的小伙伴们。在这里我要放一句不太恰当的话:软院有500人,我不明白为什么科大软院会招这么多人(当然不招这么多我也进不了),实习怎么解决,就业率哪来的100%,我不相信学校不帮咱们解决,前提你不能总是等着别人来亲自喂你吃。 |
[招聘|实习·全职·内推] 微软实习生(北京)面试经历(终面已跪)希望对战苏州的 ...
J_Mat
· 发布于 2014-05-16 00:37
· 9840 次阅读
转载文章时务必注明原作者及原始链接,并注明「发表于 软院网 RuanYuan.Net 」,并不得对作品进行修改。
本帖最后由 budaoweng123 于 2014-5-16 11:06 编辑 夜深了,趁还在泡脚,也来写点观后感吧,大神离我很近,近到可以直接过来起脚踹我房门,呵呵,言辞如有得罪还请海涵…… 虽然没有真正面试过微软,但是从大学一直从传闻某某去面了微软,然后就问人家这些事情,现在听到微软也已经没有以前的那些新奇和冲动,当 然想是肯定的,只要我还在计算机行当混,就一直想去微软混混,微软现在虽然不如以前那么强劲,但还是很有相当竞争力的,业界已经传说大牛级别 的人,一般不去微软的,微软已经不具备强竞争力的,去了某某初创公司,这些都是后话,闲扯,不关紧要。 微软的实习生笔试题还是有点意思的,ACM赛制,体型还是acm的水题的,甚至水题都算不上,熟练的ACMer,几个不常见的stl函数就差不多可以搞 定,虽然倒也不是很难,但是如果不具备很熟练的知识储备,想在120分钟内拿到300+的分数,估计也会很难,但是不排除笔试第二天就有人贴出了题 解,按照这样的节奏,肯定有人拿400分的,无所谓了,反正我只拿到了160+的分数,一道满分,一道过了一些用力,作为曾经的水货ACMer,深深的 自惭形秽,我竟然在输入输出上反复调试,在输入格式上过不了关,我竟然不知道怎么去获取换行后截断输入(目前我是Java流,希佳佳的基础有点薄, 只是记得这么写过,所以就一直在那里试),此后就一直没关,也没收到微软通知,不知为何…… 在线测试的话,逻辑,智力题,这些做法倒是很常见,不知道大家有没做过多益和CVTE(这家公司待遇超好,我有本科同学在那,刚进去就8k+)的 在线笔试,都是些智力题,有逻辑推理啥的,有图形类啥的题目,反正我是没在指定的时间做完,这类题目一般都有点技巧性,在规定时间内打完的话 也足可以说明你的智商是可以信赖的,呵呵,这么说我的智商不是可以信赖的,根据hr招人的老把,只要能打出一定数量的题目,就可以,不必要全部 答对,当然全部答对最好,通过上周的实习招聘周相信大家也有了些感性的认识,想Tradeshift的题目也不是要求你全部正确,这种题目也不知道考的是 啥,难道仅仅是考察你的智商够不够?我想没那么简单,光印刷这些就要花费不少的费用,另外这类微软笔试题还是外包的,这也需要钱,也许这可以 输掉一些智商实在抓鸡的人吧。 一面&二面的话,虽然考的都还不同,但是只有一个目标就是尽量让实习生展示自己的才能,良好的思维,微软这类企业的面试既然进入了二面就 会给你足够的机会展示自己的能力,如果自己能力实在不行的话,那微软只能说抱歉了,朱神的面试中,链表逆置和链表插入归并(详见微软2013年实 习生招聘21题),组合数这些都是中规中矩的问题,另外一点朱神你错了,咱们软院的学生我想大部分都不会忘记判空指针,我曾经也这样以为,但是自 从我看到了313以为同学的手写代码后我就发现我完全错了,那只是我自己坐井观天的看法,write solid code里会学到这样的注意点,剑指offer里会学到 这个,编程之美里会学到这个,所以这现在都不叫事儿了,大家都会注意,另外组合数的因数分解问题,我曾经碰到过,也想过,但是要我去当场说出 来,还是有点困难的,大神能在当场想到这个并且大胆的说出来还是说明具备一定实力的,如果曾经做过这类题目,回答上来也不费事,另外设计模式 中的策略模式通俗理解就假如我是卖冰糖葫芦的,我有好多样式的,还可以定制,但是只能定制山楂片的,这就是接口,你用户怎么做自己选,ok,还应 该会画设计模式中的相应模式的UML图,这些都应该具备的知识,面Tradesfhit的时候就让我画抽象设计模式来着,还balabala的解释来着…… 三面的题目,我想大神面的时候也想到了解决办法,只是在解题的时候紧张或者其他什么原因导致不能正常运行,贴出我的思路,有任何逻辑问题还请批评指正,时间匆忙,洗脚水都凉凉: [C++] 纯文本查看 复制代码 思路一: struct Node{ int data; struct Node *left,*right; } void splitTwotrees(Node * root,int value){ if(!root) return; Node *tmp = root; while(tmp->data >= value) tmp = tmp->left; while(tmp->data<= value) tmp = tmp->right; rebuildTree(tmp,NULL); rebuildTree(root,tmp);} void rebuildTree(Node *root,Node * rejectNode){ if(!root) return; Node *newNode = root; if(!root->left) { newNode->left=root->left; if(rejectNode == NULL){ rebuildTree(root->left,NULL); }else return; } } if(!root->right){ newNode->right=root->right; if(rejectNode == NULL){ rebuildTree(root->right,NULL); }else return; } } } 思路二: 先中序把树遍历,将顺序存入数组,然后在这个有序数组中二分查找最后一个比他小的数字,然后将其拆分成两数组,分别用这些数字建立二叉排序树(明显可以用递归实现)…… 方法很多……,略去不表 总的来说,大神展现的风采还是很好的,但是也暴露了些缺点,知识储备还存些问题,不够,不够深,另外面还有待加强(程序设计中的组合数学现在 体会到了用处了吧,大神 ^_^),面试的时候应当没什么畏惧的,想当初面腾讯的时候,我虽然有点惧(怕不要,但是想去),但是还是镇定,在不失态 的情况下,可以当作聊天,我随便扯,瞎扯,因为有些我也不知道,比如c++里面的构造函数里面如果有虚函数会怎样,完全不知道呀,我去……, 大神说的三分技术,七分吹牛说的还是蛮在理的,技术好的人不一定有好的工作机会和待遇,相反技术好但是能吹的人比纯粹技术好的人的工资要高, 这已经是不争的事实了,在深圳,甚至在企鹅内部就有些这样的人通过吹皮进去的(通过某群知道的),当然要吹还是要有点技术底子的,否则人家hr都 可以面死你,谁说hr就完全不懂技术,人家QQ还有前台哥哥看c语言的呢。 另外大神是个好人,技术不错,性格也蛮好,曾经就说过想一致做技术,我觉得做技术也蛮好,简单,没那么多的狐狸花哨,妹子们赶紧的哦,此 男可是八块腹肌的哦,卧推50公斤的哦,不得不说生活习惯也蛮好,按时就寝,按时吃饭,这样的程序员真的不多了,尔等拿命抗的人迟早要落伍 的,驾崩也只是迟早的事,呵呵,所以说软院的妹子们,单身的请联系朱大神,…… 另外正式通知也还没下来,说不定还是有机会的,至少调剂苏州也还是有可能的,静待消息吧,微软不会错过任何有才华的人。 打累了,睡觉,明早还得实验,我怎么起得来…… |
评分
看看,看看 |
太屌了,这是要怒点一百个赞的节奏 |
粗略看了3楼同学的代码,发现有点小问题,当while()循环到tmp为NULL时,判断tmp->data>=value时会引起程序崩溃 |
点评
lanseshuiyu 发表于 2014-5-16 10:15 欢迎指正,希望能看到你的完整源代码,我那份代码有问题,边界没处理好,还有点逻辑上的问题…… |
学习一个啊! |
微软面试的时候不会看你做过什么项目,会什么东西,只考你解决问题的能力和代码的能力,碰到问题想不出来不要紧,要通过已有的条件去解决未知的问题。微软更看重实习生的潜力 没错 ,就是这样,不会没有关系,面试官会提示和启发。我觉得你的表现比我强多了。 我面苏州的,但是再怎么启发我都答不出,我都想放弃了还给我提示,我都感觉自己是笨蛋了。 |
本帖最后由 小莫 于 2014-5-16 19:18 编辑 IP地址题目,我的思路: 先N个IP地址存在数组a[N][5],比如第i个IP:1.2.124.1~4为a={1,2,124,1,4} 然后按照a[0],a[1],a[2],a[3]的优先级对每个地址排序(这样就有序了) 然后i=0开始 检测 a[5]+1 格式转化后如果==a[i+1] 合并a,a[i+1] (可以取a=0,a[i+1]=a+a[i+1]) 一直到i=N-2. a[]不是0的即为想要的结果。 好饿 吃饭去。。。 学长加油~~~~~能到终极还是不错的啦,只是前面运气用的有点多。。。最后一面运气差了点啦 |
[ 本帖最后由 小莫 于 2014-5-16 22:17 编辑 ]\n\n上面的写漏了。。。[i]被自动整没了... 重写下(捣鼓了下,要把附加选项里的禁用编辑器代码勾上!我说呢,咋回事) IP地址题目,我的思路: 先N个IP地址存在数组a[N][5],比如第i个IP:1.2.124.1~4为a[i]={1,2,124,1,4} 然后按照a[i] [0],a[i] [1],a[i] [2],a[i] [3]的优先级对每个地址排序(这样就有序了) 然后i=0开始 检测a[i]如果a[i][5]+1 [color=Red]格式转化[/color]后==a[i+1],那么合并a[i],a[i+1] (可以取a[i] =0,a[i+1]=a[i]+a[i+1]) 一直到i=N-2. a[i]不是0的即为想要的结果。 |
看看,谢谢楼主分享 |
天天在实验室享受着朱神自带的大神光环,内心真挺激动的。编程狂人,为人和善,现在这样的好男人不多了。。。现在最终结果还没出,当然有希望。再说了,是金子在哪都会发光的,长风破浪会有时,朱神加油! |
GW名言——幸福总是来得太突然! 互勉之! |