苏州微软Software Engineer一+三面面经
一面 2.28
一、首先自我介绍(中文)
二、然后根据简历(我是前端技术栈)问了以下问题:
1、讲讲js的闭包?如何回收闭包?js的垃圾回收机制?
2、html中div和span的区别?
3、null和undefined的区别?
三、接下来到了算法环节,共享屏幕,自选编辑器即可
1、格雷码编码
面试官很详细地解释了格雷码是什么,然后就开始coding...
完成后问了算法的时间复杂度,以及20+21+...+2n的计算结果是什么
2、最长递增子序列
这题口头讲一下思路,选择了动态规划算法,但是我的dp公式写错了...面试官很有耐心地引导了一下,然后让我自己举例去发现漏洞,最终实现了一个完整的思路就OK了!
四、反问面试官环节
我问的是自己面试过程中的不足,面试官说:前端基础还可以,但是coding速度比较慢😂但是微软本身就很注重算法,给出的建议是让我在算法上再精进一下
一面的小哥哥态度很好,面试体验一流!一面后两天(3.2号)收到了三面的邀请
三面 3.4
一、首先自我介绍(中文)
二、根据简历询问项目内容
1、讲讲你的项目
2、项目过程中遇到的问题(这里我没有提前准备好,回答的时候感觉逻辑性差了些...)
然后随口问了一些其他项目细节,就来到了令我无语的技术问题环节
三、回答的很拉跨的提问环节
面试官问了我几个计算机基础和数据库的问题,还有C语言类的问题,我都没听说过哇😭现场一度十分尴尬
最后面试官看我不太会就努力地问了几个和前端相关的问题:😭
1、函数内定义的变量和全局变量之间的访问顺序(我回答的是执行上下文+作用域链)
2、平时网页出了问题用什么工具debug(我说的是chrome的dev tools)
3、从输入网址到页面返回的过程(前端的经典面经题了
3、网页是如何缓存的(我答的强制缓存+协商缓存
面试官问了上面几个问题后就开始了coding环节
四、算法环节,共享屏幕,自选编辑器
题目是:两个有序序列合并后找其第k大的数据
我刚开始想的是用两个ind做,然后面试官问了时间复杂度后问我有什么改进方案(这个阶段还都是交流阶段,并没有实际开写)
然后我回答了二分法,想了一会儿后用vscode写下了自己的思路,和面试官讨论后确认了思路的正确性后开始coding
这期间也有一些小问题,面试官也会帮助我思考
最后debug成功后就到了反问环节
五、反问面试官环节
问的是面试官对自己的意见,面试官说了一套很官方的说辞(对应届生注重算法和计算机基础啊之类的),并没有针对我个人的意见
感觉凉凉了……