概述
秋招去了微软面试,拿到了offer。经验分享给大家,希望有帮助。
先说我自身的情况。国内不知名双非院校本科,计算机专业。参加过ACM,最高China-Final金奖;参加过数学建模,最高国一;做过一年深度学习科研;做过大半年游戏开发;在腾讯实习四个月,做游戏客户端开发。
投的岗位是苏州的Software Engineer。事先没有笔试、电话面试环节。现场大概三十多人参加面试,女生有一半(不愧是微软)。
面试结束后半个月拿到offer。
基本流程:
- 09:30-11:00 听两个微软的大佬介绍公司情况
- 11:00-12:00 面试
- 12:00-13:00 和面试官一起吃饭
- 13:00-17:00 面试
第一轮
- 要求先做一个英文的自我介绍。自我感觉英语还行,所以没提前准备,建议还是准备一个英文自我介绍。
- 大致讲了一下腾讯实习做的项目
- 白板编程: 给出
123456789
的全排列中的一个,求恰好比它大的一个。例如,给出123456978
恰好比它大的是123456987
;给出123456789
恰好比它大的是123456798
关于题目,在现场我写了一个奇怪的算法,把面试官弄懵了。面试官又让我再写一个他想的那种做法。
这个题目在C++ STL里有一个对应函数next_permutation
。LeetCode 上有一个类似的题目 Next Permutation。
第二轮
- 讲面向对象的几大原则;谈对面向对象的看法
- 设计模式知道哪些?讲观察者模式
- 白板编程: 设计一个类,实现接口
Inc(key)
,Dec(key)
,Max()
,Min()
,要求这些操作时间复杂度都是O(1)。Inc(key)
表示key
计数加一;Dec(key)
表示key
计数减一;Max()
返回目前计数最大的key
;Min()
返回目前计数最小的key
关于题目,值得注意的是,直接使用List+HashMap是不行的,要考虑到有很多计数相等的 key
的情况。具体就不讲了,实在有问题可以私信我。
第三轮
- 讲了一个游戏项目中用到的算法
- 白板编程: 有一个整数序列,其中有一个数字出现一次,其他所有数字出现三次,求出现一次的那个数字
- 白板编程: 给定一个序列
a
,表示一棵树。a[i]
表示 结点a[i]
是结点i
的父亲。求树的深度
第一个题在LeetCode有原题:Single Number II
第二个题在LeetCode上有类似的:Maximum Depth of N-ary Tree
题都不难。我之前没遇到过,LeetCode是事后搜的。
第四轮
这一轮几乎全程英文
- 你有什么问题问吗?随便聊(主要是为了和你用英文聊天,这样就算你提前准备了自我介绍也会原形毕露)
- 自我介绍,中途会不停打断你,问你问题
- 白板编程: 给一个二叉搜索树上的结点,求下一个节点
- 白板编程: 给一个byte,求其二进制表示中1的个数,不要用循环
第一个题不说了。
第二题,先说用lowbit。面试官说,那还是有循环,要求更快。最后说的是,直接把一个byte所有情况的答案预处理了,他才总算满意。他就接着问,如果是给一个int呢?利用前面预处理的结果,分段处理(分块思想)。
然后一系列价值观问题:
- 公司的项目不喜欢你会怎么和别人说?
- manager给的工作来不及怎么办?
- 和别人发生争吵怎么办?
最后
以上就是负责洋葱为你收集整理的2018微软秋招面试经验(软件工程师岗位)的全部内容,希望文章能够帮你解决2018微软秋招面试经验(软件工程师岗位)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复