微软面经|微软上海C+AI暑期实习 一面二面三面面经
10433
2022.02.25
2022.02.28
发布于 未知归属地

前两轮是平行面,只要通过一轮就可以进终面,都是英文面试,有且仅有最后的反问环节可以说中文
英文面试其实有优势的,只需要讲出大致意思就行,比中文面试问的稍微浅一些
一面:
英文自我介绍,详细聊实习中的两个项目,详细问各个部分用了什么技术,聊实习的收获,聊学校实验室是做什么的,实验室的课题是什么。
算法题: 2080. 区间内查询数字的频率
一开始用的哈希表+前缀和差分,后来优化成哈希表+二分查找,本地ide共享屏幕的,要写测试用例,输出,自定义类,成员变量构造函数什么的,比leetcode麻烦点

二面:
英文自我介绍,实习项目介绍,问细节,项目中http发送request服务端返回response,那么如果任务执行失败怎么办,怎么查看,答有:前端平台记录了log信息和任务status
算法题: 34. 在排序数组中查找元素的第一个和最后一个位置

二分查找很快写出来了,面试官:I didn't expect that you solved the problem so quickly,然后问如果这个数组是一个数据流的形式,怎么做,我只说了从左往右O(N)遍历,面试官说只是因为剩的时间比较多,所以探索性的问问,如果没见过很难现场想出来,就没追问了
后面就是介绍部门情况,技术栈,前端还是后端,实习生的安排是怎么样。面试官介绍了很多,还讲了转正流程

面试后复盘:我觉得如果不能得到数组的长度,可以用2的n次方的形式从左往右遍历数组,找到一个合适的右边界。比如说依次访问数组下标为1,2,4,8,16,32,64的值,如果这个位置的值大于给定的数字就把这个数设置成右边界,然后同样二分去找,但会有越界问题,需要处理这种error,时间复杂度是O(logN)

三面:
先是英文自我介绍,还是全程英文交流,面试官竟然问我这是第几轮面试……
问研究生为什么转了专业,我就说兴趣原因,问喜欢做算法还是开发,我说开发实现某个功能会比较有成就感
然后问现在在哪里,我说在上海字节实习,问实习多久了,问最近参与的项目是什么,我详细介绍了一个项目。项目聊了很多细节,前面都是介绍性质的,基本是我准备过的仔细说一遍
然后给我想了一个场景,如果多个任务同时访问一个临界变量是否会产生冲突,要怎么解决问题。
划知识点:critical resources 临界资源/变量,我反复确认才明白这个词的意思
解决方法:死锁的解决方法里面有几条是可行的,哲学家就餐问题解决方法类似的,但是提问是根据我的项目场景问的,所以我带入项目里聊了一下实现,面试官说是可行的,还帮我补充说了一种方法

算法题: 844. 比较含退格的字符串 挺简单的,开两个栈或者数组都可以,不过这样需要O(n)的空间复杂度,写了一版之后让优化,又写了一个双指针的,这个只能是从右往左遍历的双指针,再加一个记录‘#’个数的变量,遇到‘#’加一,遇到字母减一,还会有一些边界情况要讨论,略麻烦。一开始有一些重复的可复用的代码,面试官问应该怎么做,我说可以merge into a function,追问好处是什么,一个是代码简洁,另一个是改动的时候只需要改动函数就行了

后面是聊了一下部门的各种情况

如果发offer了我回来说一声

已offer,由于一些原因拒了

评论 (31)