微软算法面经秘籍

《AI未来星球》陪伴成长的人工智能社群,价值过万的各种内部资源及活动,限时特惠中,点击查看。

求职跳槽福利:为了便于大家求职、跳槽的准备,大白将45家大厂的面经,按照知识框架,整理成700多页的《人工智能算法岗江湖武林秘籍》,限时开放下载,点击查看下载。


面经整理历程:经过一年多的努力,大白整理了超过3500篇,各类大厂的算法面经资料。

并将涉及到的知识点,按照知识框架,分类汇总,每个公司整理成一篇,比如本文的微软面经

大家对照面经,可以了解心仪的公司,会根据你的简历,问哪些知识点?便于大家对掌握的知识,进行回顾梳理。

希望为大家在求职或者跳槽的道路上,提供一些帮助,为大家取得心仪的offer助力。

面经整理心得:大白也将整理所有面经的心得,写成了一篇文章,点击查看心得

其他大厂面经:国内其他大厂的面经汇总,点击查看目录

微软面经整理:江大白

1 微软面经汇总资料

1.1 面经汇总参考资料

① 参考资料:

(1)牛客网:微软面经-32篇,网页链接

(2)知乎面经:点击进入查看

(3)面试圈:点击进入查看

面经框架及参考答案:

(1)面经知识框架:点击进入查看

(2)面经参考答案:点击进入查看

1.2 面经涉及招聘岗位

(1)实习岗位类

【机器学习实习生】、【微软苏州SWE实习生】、【NLP实习生】、

(2)全职岗位类

【Bing团队算法工程师】、【苏州算法工程师】、【STCA算法工程师】、【苏州微软Multimedia Search组算法岗】

1.3 面试流程时间安排

PS以上流程为大白总结归纳所得,以供参考。

其他注意点:

● 实习时,是笔试+3轮远程面试,笔试是4道题,远程视频面,一共三面,每次50分钟,都是先讲15分钟左右项目,然后用skype共享桌面做题。

● 有的面试最后还有Boss面

● 微软的社招面试通常是先进行一轮电话面试,面试通过的话才会邀请进行现场面试

● 电话面试之后会约现场面试,通常会安排5-6轮的面试,每轮一小时,前3轮是基础面,面试结束后面试官商量决定要不要进行后续的面试,当然如果表现比较差,也可能在某一轮直接结束。

1.4 微软面试心得汇总

★ 想去微软的话,编程功底比专业知识重要的多,基本leetcode easy, mid都要刷一刷

★ onsite面试都是在黑板上写代码,写完告诉面试官逻辑就行。三面在collabedit上做,用自己的IDE调试,需要共享屏幕。

★ 做完每道题都会问你怎么测试自己的代码是正确的,考虑哪些边际情况。

★ 算法之前一定要冷静思考一下,想一想可能有的坑,要多与面试官沟通

★ 有的时候,那一轮面试遇到了英国面试官就变成了英文面试,所以英文介绍最好也要准备一下

★ 微软更注重的是编程能力,想面微软的同学建议好好刷题,微软一般每一面都有算法题。

★ 面试重点还是在做题上,而且大多都是剑指offer和LeetCode的原题,所以感觉研究面经不如多刷几个题。另外最好提前准备一个英文自我介绍和项目介绍,虽然我没遇到,但很多人遇到了。

★ 微软的面试整体偏向基础,英语能力考察仅限于个人简介和项目描述,如果运气好的话都是中国的面试官,没有英文面试。

★ 投递简历之后会有hr先和你聊一轮,要求做一个一分钟的英文自我介绍,然后会对英文能力做一个整体评估,告诉你应该怎么准备可能的英文面试。

2 微软面经涉及基础知识点

2.1 图像处理基础

2.2 深度学习:CNN卷积神经网络方面

2.2.1 讲解相关原理

2.2.1.1 卷积方面

● 反卷积具体怎么实现的?

● 为什么dropout能减少过拟合?

2.2.1.2 其他方面

● 问backpropagation的基本公式,问每一层之间是否能独立传播?

2.3 深度学习:RNN递归神经网络方面

● LSTM 模型结构?GRU 知道吗?LSTM 参数量是多少?

2.4 深度学习:CNN&RNN通用的问题

● 什么是过拟合吗?如何解决过拟合?如何判断过拟合了?

2.5 传统机器学习方面

2.5.1 讲解相关原理

2.5.1.1 数据准备

2.5.1.2 特征工程

2.5.1.3 有监督学习-分类和回归方面

● 介绍bagging和boosting?

● GBDT原理说一下?

● xgb和gbdt的区别 (几乎必问的题目,提前准备一下,说的要有条理,有哪些算法优化,哪些工程实现优化,可以适当扩展提一下lgb)

● 深度学习网络Factorize Machine相对于线性模型有什么好处?Spark用过吗?

● 如何构建一个分布式机器学习框架?

2.5.1.4 无监督学习-聚类方面

2.6 深度学习&机器学习面经通用知识点

3 微软面经涉及项目知识点

3.1 深度学习:CNN卷积神经网络方面

3.1.1 目标检测方面

● RCNN,Fast RCNN,Faster RCNN,Yolo,问了我具体的yolo的那个anchor,反正好多具体的东西?

3.2 深度学习:RNN递归神经网络方面

3.2.1 自然语言处理NLP

① Bert

● BERT有几种Embedding 编码,分词方法?

② Transformer

● Transformer 结构讲一下?

③ Word2vec

● Word2vec中,负采样相比层次化softmax,有什么优缺点?层次化softmax能保证概率归一化吗?

● word2vec原理?

④ 其他

● 文本分类的方法有哪些,深度学习和非深度学习的方法都说一下 ?

● 文本相似度计算方法有什么,当我说完后,面试官说你说的基本都是深度学习方面的,经典的NLP方法知道有哪些吗?

● Fasttext和textCNN说一下原理?

● CBOW和skip-gram?

3.3 强化学习

3.4 机器学习方面

3.4.1 推荐系统

● FM算法、ALS矩阵分解、协同过滤算法都说一下,并说下优缺点?

4 数据结构与算法分析相关知识点

4.1 数据结构与算法分析

4.1.1 线性表

4.1.1.1 数组

● rotate一次的数组,找target,例如 [3,4,0,1,2] 找4所在的位置,如果不存在返回-1,要求logn时间 (LeetCode medium原题,直接二分即可)

● 给一个有重复数字的有序数组和一个数 x, 找出 x 在数组中最左和最右的下标,不存在的返回 [-1, -1]?

● 在排序数组中用二分查找找到某数字的第一个位置?

● 无序数组找第k大的数

● 二维数组找递增target

● 有一个数组元素[a0, a1 ...],从数组中找出连续的数组和为最大。

● 有一个常数n,有一个数组元素[a0, a1 ...]无重复元素。从数组里面找出所有可能的组合加和是n,并且输出。

● 有一个数组(对,全是数组题目),从数组中找出连续数组乘积最大

● 连续子数组的最大和?

● 假设一个数组只有"a"和“b”两种string 组成。如何重新安排数组,使得最多有3个a相邻,3个b相邻。如果不能安排,返回None

● 求数组最大值时,从前往后遍历,候选值会被更新若干次,求这个次数的数学期望(说思路,我算出来是1+1/2 +…+ 1/n)

● 两个有序数组找第k大?

4.1.1.2 链表

● BST转双向链表?

● 单链表找交点?

● 如何判断两个链表是不是有交点?

● 实现两个链表排序?

● 链表栈哈希表的区别?哈希表的原理解决冲突什么的,排序函数以及分别适用的场合?

4.1.1.3 栈

● 给定一个温度的时间序列,判断高于当前温度的那一天在几天后出现?(先写了个n^2的,面试官说复杂度太高,短路想不出来,他说用栈,改了个O(n)的)

● 用栈模拟队列?

● 最小栈,空间优化?

4.1.1.4 字符串

● 两个字符串的编辑距离(增加、删除、替换一个字符距离为1) [动态规划]

● 中文字符串,比如一千五百亿八千九百万六百二十这种形式,转换成long long的整数?要我考虑很多非法输入。

● 找出字符串中所有连续字母的subset?

● 字符串中最长连续不重复子序列长度? [一次遍历,额外数组记录字符最后一次出现的位置]

● 一个字符串 切分成多个回文串,返回所有可能,如aab要返回 [[aa,b],[a,a,b]] 3

● 给定一个字符串,判断是不是合法IP地址?

● 假设有a,b两个int,转成二进制后 c = a | b. 假设从0->1, 1->0理解为一个action。最少需要多少个action计算c = a|b?

● 给定一串字符串,输出该串字符串的全排列(完全相同的字符串算一个),同时需要满足条件『相邻字符不能相同』。

4.1.2 树

● 非递归前序遍历二叉树?

● 前序遍历、中序遍历、后序遍历,知道那些可以恢复二叉树?原因?

● sorted linked list 从头到尾翻转一次?二叉树搜索。

●  字典树

4.1.3 排序

● 写归并排序,非递归

● Top K

● 写一个快排,非递归?

● 将一堆大小写字母根据大小写排序?

● 写快排,问时间复杂度和空间复杂度,然后要求输出排序后对应元素的原下标?

● 堆排序以及很多变体?

4.2 算法思想实战及智力题

4.2.1 算法思想实战

● 丑陋数变体。手撕代码,推出了int型的丑陋数上限并分析复杂度?

● 给一个100万规模的词典,一个长文档,如何快速从里面标注出所有的词,写一下代码?

● 给一句英文,in-place把每个词顺序翻转;给一个全排列的某个情况,找到这个permutation在全排列中的index?

● 给定一个字符串,判断是否是有效的IP地址?(提示,有效的IP地址格式是xxx.xxx.xxx.xxx, xxx在0-255之间)(输入不保证都是这种格式,要自己判断,同时001这种是否有效要问面试官)

● 找最深的左括号,follow up:括号匹配。

● 【二极管能显示的数字】

一组二极管有七个,能表示0-9十个数,现在有n组二极管,每组二极管中有一些亮,有一些灭,灭可能是因为坏了也可能是因为不需要亮。要求出这n组二极管能显示的所有数字的组合

输入:二维数组,每行代表一组二极管,每行七个,0代表灭,1代表亮

输出:所有可以显示的数字组合

例:现在两组二极管,显示的是23,那输出23,83,88,28,用了个回溯

● 从(0,0)出发,每一步有上下左右和停留五种选择,问k步之后回到原点的概率有多大,不能超出边界?( 先用了回溯,后面用了dp,面试官说我最开始不该暴力,应该直接给出最优解)

● 两个长度为m的无序数组A,B,对于任意不相交的区间ab和cd,val[ab]=sum(A,a,b)- sum(B,a,b),val[cd] = sum(B,c,d)- sum(A,c, d)

● 求abcd,使val[ab] + val[cd]最大 (这题比较难,先写了个暴力解法,然后和面试官逐步讨论优化,没有给出最优解法)

● 汉字数字转数字,如 一百二十转化成120

4.2.2 智力题

● 丢两个骰子,最可能出现的点数和是多少?3个骰子呢,不能枚举,面试官让快速估计。

● 给定二维平面一些点,问用一个半径为1的圆最多可框住多少个点(说思路:每两个点确定两个对称的圆,当然两点距离不能超过直径2)

● 给一个N*M的棋盘,从(1, 1)移动到(N, M),只能向右或向下,计算方案数,如果N和M很大怎么办?

4.3 其他方面

4.3.1 概率分析

● 给一个随机函数fun,30%的概率产生1,70%产生0,如何用fun产生等概率的0和1?

4.3.2 矩阵运算

● 顺时针旋转正方形矩阵90度;在时间复杂度O(log(m+n))的要求下寻找两个有序数组合并后的中位数?

4.3.3 其他

● 给定一堆序列标号(标号用整数),形式为[a,b],表示标号为a,b的两个物体的体积关系满足:a > b,用合适的数据结构存储数据,并判断这堆序列是否有效?

● KMP算法有什么缺点?除了KMP,还有什么算法可以快速做字符串查找?

4.4 Leetcode&剑指offer原题

● Leetcode 72

● Leetcode 137:写通用解法,要求时间复杂度O(n),空间复杂度O(1)?

● LeetCode 283:原地移动数组,使得元素对应顺序不变,0 值移动到末尾

● LeetCode 543:二叉树直径

● LeetCode 1497:问复杂度

● Leetcode原题:股票只能买入卖出一次,和买入卖出多次?

● LeetCode原题:最大子数组和

● LeetCode原题:实现atoi 考虑所有情况,考虑所有异常情况,包括溢出

● 剑指offer原题:一个矩阵,每一行从左到右递增,每一列从上到下递增,给一个值,判断这个值是否在矩阵中?面试官后面要求用binary search做,问了下时间复杂度。

5 编程高频问题:Python&C/C++方面

5.1 python方面

5.2 C/C++方面

6 操作系统高频问题:数据库&线程&常用命令等

6.1 数据库方面

● 数据库的索引有了解过吗,有哪些优缺点?

6.2 操作系统方面

● 什么是死锁,造成死锁的原因有哪些?

7 技术&产品&开放性问题

7.1 技术方面

● 场景题:如何给问答系统中的新问题推荐答案 ?

● 场景题:单词纠错怎么做?

● 场景题:如何让对话机器人产生的回答更具情感性,面试官简化了问题:机器人产生回答后,我们给回答加前缀,比如问“今天吃饭了吗?”,回答“【嗯呀】,我吃了”,如何从大规模QA数据中统计出要加哪些前缀(如上面的“嗯呀”),然后判断是否需要加前缀,需要加什么前缀?

● 场景题:对话机器人说了一句话后,如何判断该话是否含有***、暴力元素,有标注数据怎么做,无标注数据怎么做?

● n个准确率为50%的分类器,可以通过什么方式提升准确吗?60%呢?如果可以,提升到96%需要多少个?

7.2 产品方面

● 一些推荐算法相关,比如搜搞笑,推荐的视频如何排序,怎么区分推荐的视频是不是重复的等等?

本文由 大白智能 作者:凯哲 发表,其版权均为 大白智能 所有,文章内容系作者个人观点,不代表 大白智能 对观点赞同或支持。如需转载,请注明文章来源。

发表评论

This site is protected by wp-copyrightpro.com