2~4月份被面试虐的很惨,今日来回馈一下牛客。历代战友无私奉献,前人栽树后人乘凉,牛客真是一个很好的平台。
- 字节跳动日常实习一面挂。
- 腾讯电话面,接着做了两道题,挂。
- 腾讯游戏客户端一面挂;
- 字节跳动暑期实习,三面挂。
- 阿里一面挂。
1. 面试流程
- 3.25 线上笔试
- 4.13 一面
- 4.17 二面
- 4.26 三面
- 4.30 出结果
注:一些小提示
- 全程邮件通知,确保及时查看邮箱、选择不易被拦截的邮箱。
- 一般是中文面试,偶尔有英文自我介绍,视具体情况而定。
- 编程一般是白板编程,每轮面试都有编程题。
- 面试官都非常nice,思路受阻时记得沟通讨论,把能说的都说出来,不要一声不吭到最后也没做出来也没沟通,那基本是GG的了。
- 一般一二面是平行面,相当于两次机会,过一个就行,三面再过的话就成功了。
- 每轮面试时间1h。
2. 具体面试
在参加微软面试之前,从师兄那听说的版本是这样的:面试官不多跟你唠嗑,上来就是两道题,做出来就通过,做不出来就回家。
真正参加了本次的实习面试,感觉与传说中还是有很大不一样的,具体的面试环节如下:
- 首先面试官会打个招呼或者自我介绍一下,然后让面试者简单介绍一下自己。听说有要求英文的,可提前准备,但我没遇到,挺幸运的,毕竟自己的英语口语不好听。
- 面试官让面试者挑一个最熟悉的项目介绍一下,然后根据项目实际情况问一些简单的问题,不会太深入,感觉是点到为止。
- 来1~2道面试题,可能白板编程,也可能是随意的(比如本地IDE+屏幕共享)。
- 提问阶段,面试官为面试者答疑解惑。
2.0 笔试
笔试和阿里的面试冲突了,因为阿里先约的面试,但微软的笔试只有一次,犹豫再三然后联系阿里面试官忐忑地换了时间。当晚感觉阿里面试地还不错,hard题也做出来了(原题)。微软的笔试环境类似leetcode吧,全英文,运行代码有错误提示的,设置了一些case,每个case过不过也有提示,就是好像不支持C++11,有点懵。笔试不是0分基本就是胜利了吧,我个人觉得太难了。
很久以后阿里发了感谢信,这可能是命吧。
2.1 一面
首先就是简单的自我介绍和项目提问,时间也不会很长,10~20分钟吧。
然后给我出了一个题,二叉搜索树的节点删除(leetcode 450),耻辱题,不会做。
确实很难想象一个很基础的题当时我没做出来,我最近一个月脑袋都不太清醒,很疲惫(说到底还是菜)。当时脑子里第一印象是扯到红黑树了,然后直接就被唬住了,其实就是个二叉搜索树。第二印象是分有无左右节点、有无父节点来讨论,乱成一锅粥了,一个很好的解法是递归,简单明了。
在此必须要给面试官点个赞,他一定是个大帅哥。我思路乱了好久,最后他主动说我们来讨论一下(相当于给我指路了),分了几种情况讨论,然后因为时间原因让我仅写了一种情况。
问题阶段我很沮丧,我问接下来还有机会吗?他鼓励我说肯定是有的,还说这题没做出来没关系的,我们就是讨论嘛,思路不清晰的时候我们一起讨论讨论就可以了,没关系的。真的是超级赞。
2.2 二面
首先就是简单的自我介绍和项目提问,时间也不会很长,10-20分钟吧。
然后就是出题,数组中重复的数和丢失的数,题意大概是这样的:长为N的数组中,每个值都是1-N范围内的,现在有某个数字出现了两次,某个数字丢失了,其他的数字仅出现一次,求重复的数和丢失的数。
- 一开始的版本很简单,情景是说顺序写数字的时候写错了,如[1,2,3,4]写成了[1,2,3,3]或[1,2,4,4],然后求解。这个就是顺序求解,因为是顺序写的,而且出错的两个数字时相邻的,很有规律。
- 然后问了有没有什么特殊的case,如果你来评判这个程序,你将怎么样设置case来测试?加上了长度过小的判断、写了几种例子。
- 题目变化。假设现在写错的数字和重复的数字没有规律,怎么求解?我说记录每一个数字出现的次数,然后出现0次和2次的数字就是结果。面试官说你先写吧,然后我就写了。
- 题目变化。假设现在不允许使用额外空间,怎么搞。我就说交换数字,写了代码。
- 面试官说了手写一下swap,也没难度,写了。然后***来了,我说其实还有不用额外空间进行交换的方法(异或实现swap)。可能声音太小没说清楚,面试官说既然你都这么说了,那么就写一下吧,如何不用额外空间、不交换数组值解决这题(此时面试官已经说了我们再来看一道题,但就此改变主意了)。我一脸懵逼,我说的不是这个啊!而且我还想不到方法,我给自己挖坑了啊!遂努力回想、努力转动脑子、经面试官提醒,说出了乘以负一的解法,因时间关系没有继续写代码。
2.3 三面
首先就是简单的自我介绍和项目提问,时间也不会很长,10-20分钟吧。
然后面试官竟然问了我一些C++的基础知识(因为我介绍说主要用C++,其它的不会)。我有点懵了,因为印象中微软不会问这些的……当然问的也比较基础,微软面试还是比较注重基础的。
然后出了一道题,大数加法(字符串表示)。挺基础的题,很快就写完了。
面试官又问,你会怎么设置case来测试程序呢?我说非法字符串(非数字),面试官问你怎么处理?我说在把错误信息包在返回值字符串中,返回一个“error”。面试官问为啥不用异常呢?我说平时很少用……我还是菜啊。
又说了一些case,比如前导0啊,进位啊啥的。
最后面试官又问我负数怎么处理(比如“-1234”+“345”),我扯了半天也说的磕磕绊绊,现场想了一个办法,但感觉很挫。面试官说你可能是想复杂了,回去再想想吧。我到现在也没想出来……一个负数、两个负数、结果有正有负感觉情况太多了。
问题阶段问了几个问题。
2.4 感想
微软的面试真的特别赞,面试官超级nice。面试态度很好,会鼓励、照顾面试者,面试完成竟然还说辛苦你了,我都不好意思了,面试官这么客气,你们才辛苦了~给你们点超级大的赞!
注:以上信息编写的时候已很小心地避开敏感信息,如有不合适的内容,请联系我立刻删除。
全部评论
(10) 回帖