春招CSIG腾讯云一面
1、虚函数继承原理、线程进程区别、进程调度算法
2、进程内存空间分布
[参考](https://blog.csdn.net/Miracle_ps/article/details/132221089)
3、网卡接收到数据然后发送的具体过程
[参考](https://www.cnblogs.com/zwj-199306231519/articles/17816668.html)
4、TCP 保证可靠性
5、nginx 了解多少,多进程和多线程比较,多线程一定好吗
6、IO 复用,select/poll/epoll,**epoll_wait 等待的时候会释放 CPU 吗**
7、最长上升子序列的长度、词频统计 TOPk、有环链表、二叉树遍历
#软件开发2024笔面经##腾讯云#
2、进程内存空间分布
[参考](https://blog.csdn.net/Miracle_ps/article/details/132221089)
3、网卡接收到数据然后发送的具体过程
[参考](https://www.cnblogs.com/zwj-199306231519/articles/17816668.html)
4、TCP 保证可靠性
5、nginx 了解多少,多进程和多线程比较,多线程一定好吗
6、IO 复用,select/poll/epoll,**epoll_wait 等待的时候会释放 CPU 吗**
7、最长上升子序列的长度、词频统计 TOPk、有环链表、二叉树遍历
#软件开发2024笔面经##腾讯云#
全部评论
在IO多路复用中使用epoll_wait等待IO事件的时候,进程会释放CPU。在Linux中,进程状态将会变成"S"(可中断睡眠状态)或"D"(不可中断睡眠状态,通常等待IO)。两个状态下,进程都不会占用CPU资源,因为它们都是不同形式的睡眠状态,CPU会切换到其他进程或线程继续工作。
"S"状态是可中断的睡眠状态,表示进程正在等待某个条件的满足或某个事件的发生。这种状态下的等待是可以被信号打断的,例如,系统调用如read()在没有数据可读时会使进程进入"S"状态,但接收到信号后,进程可以从系统调用中返回,处理信号。
"D"状态则是不可中断的睡眠状态,进程在这种状态下一般是正在等待某个硬件级别的IO操作完成,例如,等待磁盘IO或网络IO。这种状态的进程不能被信号打断,因为它们通常涉及到一些必须完成的硬件操作。
当你调用epoll_wait时,如果当前没有IO事件,进程会进入"S"状态。如果系统调用涉及到硬件级别的不可中断IO操作,进程可以进入"D"状态。这样设计是为了在IO操作期间不消耗CPU资源,同时允许其他进程或线程使用CPU。
所以,使用epoll_wait时,进程会进入睡眠状态直到事件发生,从而释放CPU。
来自 gpt4 的回答
佬看看得物春招呀
这么手撕?裂开
欢迎投递
相关推荐
投递百度等公司10个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享