前言
之前导师跟我说他认识一朋友在微软可以帮我内推,我说能够内推苏州就好,上海或北京不考虑。后来导师询问了之后发现那朋友所在部门在上海,而且在苏州并没有分部,遂作罢。
所以微软直接走的正式批,投的STCA苏州的software engineer。然后等到了统一的笔试,想着不能重蹈覆辙了。
微软这次的笔试平台换成了amcat,而且笔试全程不允许切换窗口、鼠标不能离开窗口,这对我们来说难度突然增大了,因为微软笔试就是几个算法题,不能跳出窗口、全程手撸代码就太恐怖了。
出乎所有人意料的就是微软今年的算法题突然简单了许多,可以说手撸代码完全没问题。一共五题,好几题就是简单几行代码就能写出来了,最难的一个就是换硬币了,其实就是非常明显的动态规划。所以笔试毫无压力,只有两三个测试用例没有通过,坐等面试通知了。
等了好几天后收到了微软苏州现场面试的通知,值得一提的是,同实验室好几个笔试做的不错的同学没有收到面试通知,所以微软恐怕不是单纯根据笔试成绩来发面试通知的。
之后就是去苏州微软现场面试了,签到的时候就看到签到表上密密麻麻全是南大和浙大的学生。面试一共四轮,在一个会议室坐着,面试官带出去面试的模式。微软的面试模式出了名是啥都不问直接白班写代码,这次也不例外。
面试题目
对于面试的准备,算法建议对着牛客网刷下《剑指Offer》和《算法》,然后之前项目中用到的第三方框架,了解其核心实现流程和框架特色与一些实现比较巧妙的细节。对于Java基础,推荐《深入理解Java虚拟机》《Effective Java》《Java并发编程之美》,Android推荐阅读《Android开发艺术探索》和《Android 源码设计模式解析与实战》,Android这两本都是点到为止,没有特别的深入,可以作为一个目录纲领,引子,借此做更深入的学习。除此之外对于之前所做过的项目,写在简历上的项目都要做深度的挖掘和探索,发掘抽离其中的知识点和亮点。
Android篇
- Handler实现机制,同步屏障,IdleHandler
- Looper可以在子线程创建吗
- Handler如何实现对于消息的定时发送
- HandlerThread的实现原理
- 事件传递机制,结合滑动冲突具体场景解决问题
- View绘制流程,从Vsync信号到ViewRootImpl到最终View的draw
- Apk打包流程(点击 Android Studio 的 build 按钮后发生了什么 )
- Apk安装过程
- 内存泄漏,Handler如何导致Activity内存泄漏,如何做检测,引用的链路到GCRoot
- Fragment生命周期<