年前开始面的,面到三月初,最近拿到了offer,只能说拖的有够久。。。是全职工。
不用背八股文,面试只有问项目或者算法题的环节。项目最好是自己亲手做的,面试官细节会问的非常细非常细,包括为什么要采取这个指标评估模型都会问。
重头戏个人感觉还是算法题部分。项目是自己做的,有真实性,算法题做出来感觉就成了。
微软没有想象中那么那么难,大家可以多多尝试一下。
个人准备:研究生nlp相关在读,有一个自己是第一作者的nlp项目。
有字节跳动的实习。
leetcode top100刷了三遍。easy medium要求自己十秒内说出思路,hard要求大部分会做。
一面
- 自我介绍
- 研究项目
- 最小编辑距离(leetcode 72 hard)
- 一个文件,每一行都有一个单词。读取这个文件,输出一个词典,包含单词出现的个数(用python dic或者c++ map很容易实现)
- 拓展1:假设这个文件特别大,用数据流的形式才可以读入呢?(将文件分为几个部分,每个部分单独读取,最后依次读取词典完成合并)
- 拓展2:假设储存的词典内存都放不下怎么办(所以必须连词典都要拆分)?(使用前缀树将文件按照开头字母分为26个文件,可以保证每个文件中出现的单词永远不会出现在其他文件中。对于每个文件进行单独的词典构筑,最后得到26个词典,词典相互不会交叉)
- 前缀树是面试官提醒的,当时没想出来。事后觉得也可以给每一个字母一个非1的独立质数,每次读单词的时候将每个单词的字母质数相互乘起来,根据积的大小做区分
二面
- 自我介绍
- 研究项目
- AUC值的物理含义
- 语言模型怎么计算sentence representation
- Attention mechanism的工作机理
- 一个词语被token化之后如果被拆分成多个subword,怎么计算这个词语的representation
- 2 sum问题(leetcode 1 easy)返回一个结果就ok
- 2 sum搞成3 sum 结果不能重复(leetcode 15 medium)
- 3 sum不需要返回实际的可以组成target的元素,判断有几种可能就行(leetcode有一个不限制长度的组合问题,这个限定了3个,所以递归的时候要增加一个数量判断)
- 例如[1,1,1], target = 2,有三种可能。如果是前面一道题只需要返回(1,1)就行
三面
- 自我介绍
- 什么是attention machanism
- 逆转链表(空间复杂度 时间复杂度)
- 一个字符串的全排列(leetcode 46 medium)
- 拓展:结果不能重复例如abb的全排列有6种,但是去除重复的只有3种
- 空间复杂度 时间复杂度
四面
- 自我介绍
- 研究生阶段和本科生阶段的区别
- 研究生阶段你遇到的最大的挑战
- 项目介绍
- 这次头一次没问问题,对面挺满意
- 二叉树离得最远的两个节点的距离(leetcode 543 easy)
- 数据结构设计(设计前缀树):给了一大堆英文单词,找个数据结构存储他们。要求实现的功能:插入单词,搜索单词存不存在,给一个字符串收集存储的以这个字符串作为前缀的所有单词(leetcode 208 medium 前缀那个有点出入,找到前缀节点之后做一次深度优先遍历就行)
五面
- 自我介绍
- 项目介绍
- 讲一下BERT的特点(项目用了)
- 介绍一个项目中你自己实现的算法
- 介绍一下多任务学习框架(项目用了)
- 当时是怎么想到用多任务的
- 证明多任务训练对于项目的有效性
- 闲聊环节
- 为啥选择来微软
- 后面会投递其他公司吗(当时听到感觉有戏了)
- 实习的感受
- 还有一点奇奇怪怪的问题
算法题感觉自己运气不错,都是top100经典题。写代码的时候一定要理解,不然时间复杂度和空间复杂度部分可能不太好说。
自我介绍我印象中好几次都被夸奖了,不知道大家自我介绍是什么感受。
项目一定一定不能过分吹嘘,把自己的工作想法好好和面试官交流就好。
我个人把面试看成一个展示自我的舞台,技巧性还是蛮高的。我个人每次面完都感觉已经尽力展现自己了,就算不过也没什么遗憾的。
去年春天的时候,看到微软暑期实习生的招聘。当时觉得微软离自己很遥远,自己这种菜比根本配不上。一路以来走到了现在。希望大家也可以对自己更加自信一些,勇敢去尝试。不做无法实现的梦!
全部评论
(12) 回帖