本人工做1年多了,正在准备跳槽中。刚刚参加完微软西雅图的面试,来分享一下本身的面试过程。一共7轮面试,其中1轮电面,6轮Onsite。面试
第一轮是电面,先是让自我介绍,而后根据简历提了几个问题以后,就直接开始上题了。算法
给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你能够假定只有一个知足条件的最长回文子串。编程
LintCode原题:http://www.lintcode.com/problem/longest-palindromic-substring/
参考答案:http://www.jiuzhang.com/solutions/longest-palindromic-substring/
follow up: 问了相似于找出最长且长度为奇数/偶数的回文子串的这种问题。数组
电面整体感受还不错,没过多久HR联系我告知电面经过,能够作接下来的准备了,而且约定了Onsite 的时间。编程语言
面试官先进行了自我介绍,而后问了我3个最擅长的编程语言,聊了一下就开始coding 了。ide
最大正方形。在一个二维01矩阵中找到全为1的最大正方形。spa
LintCode原题:http://www.lintcode.com/problem/maximal-square/
参考答案:http://www.jiuzhang.com/solutions/maximal-square/设计
在一个二维01矩阵中找出1最多且连续的一行。code
在这轮只有1个问题,大约用了35分钟。orm
设计题,设计BitSet API
问了一道二叉树问题。
验证二叉查找树。给定一个二叉树,判断它是不是合法的二叉查找树(BST)。
LintCode原题:http://www.lintcode.com/problem/validate-binary-search-tree/
参考答案:http://www.jiuzhang.com/solutions/validate-binary-search-tree/
这一轮上来先让我作自我介绍。而后又让我讲了讲前面的几轮面试。后面就作了道算法题。
合并两个排序链表。将两个排序链表合并为一个新的排序链表。
LintCode原题:http://www.lintcode.com/problem/merge-two-sorted-lists/
参考答案:http://www.jiuzhang.com/solutions/merge-two-sorted-lists/
这一轮相对轻松了许多,基本上就是在聊天,主要针对我简历上写的项目经验问了一些问题,而后进行了coding。
1.对十亿个整型数排序,并尽量使用最小的存储量
面试官先问了我为何选择微软,还有理想的工做地点。而后问了一下以前作过的项目碰见过的最大的挑战是什么,接着问了一道算法题。
数据流中位数。数字是不断进入数组的,在每次添加一个新的数进入数组的同时返回当前新数组的中位数。
LintCode原题:http://www.lintcode.com/zh-cn/problem/data-stream-median/
参考答案:http://www.jiuzhang.com/solutions/median-in-data-stream/
基本上面试的过程就是这样了。