软件开发岗(微软)社招面经
一面
自我介绍+项目
计算机网络
TCP三次握手和四次挥手
挥手时ACK包丢失,Client端和Server端如何处理?
操作系统
使用512k内存,存放(key,value)键值对,key和value均为string型,如何高效利用内存,实现快速的add()和get()操作
编程题(共享桌面,本地编译器)
求整数数组中未出现的最小正整数
如:arr=[1,4,3,5],return 2;
arr=[1,2,3,4],return 5;
(arr[i]全为正时,借助辅助数组newarr,令newarr[arr[i]]=1;返回newarr中第一个(忽略newarr[0])不等于1的元素索引)
数组中存在负数或者大数时,如何优化?
(数组大小为n,则未出现的最小正整数值在0~n+1之间,负数和>n+1的大数可以忽略,空间优化:不借助辅助数组,arr内部中交换元素)
二面
自我介绍+项目、工作经验
编程题(JudgeCode,类似手撕)
1.统计一个二进制数中1的位数
(剑指offer #15)
如:n=6 二进制 110 return 2;
n=5 二进制 101 return 2;
2.查找链表中倒数第k个节点
(双指针||剑指offer #22)
3.求数组中最大和最小值(递归+非递归)
(非递归遍历||递归 二分)
三面
自我介绍+项目
编程题(JudgeCode+本地运行结果)
I have a few lucky numbers between 0 to 9. And given a large integer N, find an integer that only contains my lucky numbers, and not bigger than N.
N can be very big, like an integer contains millions of digits.
如:LuckyNum=[8,9] N=129 return 99;
LuckyNum=[7,8,9] N=902 return 999;
(大数问题string解决,输入N和返回值res均用string类型存储
if N[0]>=luckyNum.min{
res与N长度相同 ;
res[0]=luckyNum中不超过res[0]的上界;
res[k]=luckyNum.max k=1...
}
else{
res比N的长度少1;
res[k]=LuckuNum.max k=0...
} )
四面
聊天(英语)
1.闲聊
2.聊工作经历
3.聊项目
系统设计(中文)
1.PowerPoint如何通过ML方法优化?
2.设计一个弹窗系统,根据员工的邮件信息,为准备休假或正在休假的员工,自动弹出会议列表,员工选择不能参加的会议,弹窗系统如何设计?
3.如果邮件中存在隐私不可见的部分,ML该如何处理?
4.项目中如何保证代码的可靠性?
1.老板很忙,但是对于项目你有很多问题,你该怎么办?
2.老板在开会时要求你用方法A完成某项任务,但你认为方法B比方法A更好,你该怎么办?
3.你是新员工,开会时跟老员工观点不一致,该怎么办?
#面经##社招##微软##软件研发工程师#