概述:5月7号面试,腾讯会议,30分钟,问的不多,主要是项目,问了少量八股
面试流程:
1.自我介绍
2.项目来源
3.什么是协程(用户态线程,用户栈,用户态切换)
4.协程和线程相比有什么优势(轻量级、切换快、开销小,用户管理,配合非阻塞IO更好地实现异步并发)
5.更好地实现异步并发是怎么理解的(IO操作时检测到需要等待缓冲时切换协程)
6.线程也可以在等待时切换,协程的优势是什么(用户自己操作)
7.轻量级怎么理解(线程的栈是MB级别的,协程的栈是KB级别的,线程在内核中切换,协程在用户态中切换)
8.怎么设置非阻塞(fctnl)
9.返回EAGAIN是什么意思(缓冲区没准备好)
10.互斥锁怎么实现的(访问锁时如果锁被占用就阻塞,加入阻塞队列,锁被释放时唤醒阻塞队列的中的线程进入就绪队列)
11.http协议怎么解析的(引入了其他项目的解析器)
12.http是什么格式(消息行 消息头 消息体)
13.N:M的协程调度器是什么(N线程处理M协程)
14.如何调度(先来先服务,线程依次去协程队列取任务执行,如果没有任务就执行空闲协程,陷入epoll_wait,有任务时再唤醒空闲线程去执行任务)
15.如果所有线程都不空闲呢(说明已经很大程度的利用上了CPU)
16.其他协程就不调度了吗
17.堆排序时间复杂度(O(nlogn),建堆后n次下滤)
18.快速排序时间复杂度(平均O(logn),最坏O(n2))
19.shared_ptr和unique_ptr的区别(共享和独占)
20.shared_ptr的实现(维护计数器的指针,多一个共享指针时计数器+1,释放一个指针时计数器-1)
21.shared_ptr如何避免循环引用问题(weak_ptr,监视shared_ptr,不会改变引用计数,使用前先检测shared_ptr是否存在,存在则使用)
22.tcp协议怎么保证可靠性(丢片后重传)
23.怎么发现丢片(确认号)
24.介绍下实验室项目的背景和难点
25.反问:业务和流程
总结:有点意外,问的其实挺少的,答的比较流畅
#我的实习求职记录##软件开发2024笔面经#