面试记录
一面:
Q:掷骰子,12我赢,345你赢,6继续掷,你赢的概率
A:3/5
Q:1分1个桃,3个桃核换一个桃,给你1块你最多吃几个桃
A:14
Q:你剩了什么
A:2个桃核
Q:那这两个桃核能在吃一个桃吗
A:如果能借一个桃那就可以 借一个,再还3个桃核
Q:给你一个有序数组,其中一个数出现次数超过一半,找到这个数
A(紧张脑抽):这个问题无序数组也能做吧
Q:对,但有序数组有更好的复杂度
A(继续脑抽):那个是O(n),能更好......找到中间数字,O(1)
Q:那现在我们不知道是否存在这样一个数了,需要你来判断
A:找到中间数字左右扫,O(n)
Q:更优?
A:二分
Q:两有序数组求交集
A:双指针
Q:k个有序数组求并集
A:O(nklogk)
Q:操作系统,内核态和用户态
A:...答得很烂,说了个表面...
......一些无聊的家常......
Q:来写个算法题,两个可能有环的单向链表判断是否相交
A:....写了个空间时间都是O(n)的做法...
Q:写个更优的
A:自闭很久,佛洛依德判环法...空间O(1)
end.
二面:
手写代码,copy一个可能有环的链表
允许O(n)空间,爽啊,在结构体里搞个vis美滋滋
然后就忘记把最后一个元素的next也copy了
写个个非常麻烦的补救,过
1个1s能完成的任务随机分成3份并行执行,0.5s内完成的概率
3维空间的一个截面,算啊算,算错2次才得到1/4
4份?
算啊算,3维空间的体积,1/2
n份?
把问题变成离散的,令x1+x2+...+xn=k,xi均为整数,k无穷大时和原问题等价
此时分配方案有C(k-1, n-1)个
目标是0<=xi<=k/2,考虑不满足目标的情况,最多有一个xi>k/2
我们令xi=xi-k/2,就有了x1+...+xn=k/2
所以不满足目标的情况是C(n,1)*C(k/2-1,n-1)
k无穷大时可以把k-1化成k,k/2-1化成k/2
然后两个方案一比得到不满足目标的概率是n/(2^(n-1))
所以满足目标的概率是1-n/(2^(n-1))
...后面介绍了一下公司...反正给的都是正向反馈...希望不是出于礼貌...
三面:
Q:介绍一下你自己
A:...懵逼了一会。然后背简历...
Q:你对c++的static变量的理解
A:在函数中申请的静态变量只会被创建和初始化一次
类中的静态变量和类绑定,与类的对象无关
Q:我们一个c程序到变成可执行文件的过程
A:分析阶段,词法分析,语法分析,语义分析
提词,构语法数,类型检查
综合阶段,我忘了,反正就出来可执行文件了
Q:c++程序的常数优化
A:IO优化
位运算优化
指针优化(指针速度比数组快
(register优化?编译器能自己优化了,不需要我做)
Q:tcp和udp的应用
A:tcp常见应用应该是http协议...卡住
Q:tcp和udp区别
A:tcp需要双方建立通信,udp不需要...卡主
Q:进程和线程区别
A:终于有个我准备的了...一顿说
Q:算法题...哦你队主代码手啊,那没事了
Q:大数据懂么?不懂。机器学习?不懂。
哦中间问了个三角形切几刀能拼出长方形,想了下两刀。
End.