字节网络2面凉经 5.21 后端开发

  1. 请先做个自我介绍。

  2. 在实习项目中,有用 AI 辅助 coding 吗?

  3. 实习项目相关(占大约一半面试)

  4. 无锁队列的实现原理是什么?对比其他队列的优势和劣势?为什么不是所有场景都用无锁队列?

  5. 锁的种类有哪些?各自的使用场景?

  6. TCP 保证可靠传输的机制有哪些?

  7. 能讲一下 TCP 连接的状态机流转过程吗?

    一、连接建立(三次握手)

    假设客户端主动发起连接,服务器被动监听。

    步骤 客户端状态变化 服务端状态变化
    初始 CLOSED LISTEN(监听端口)
    1. 客户端发送 SYN SYN_SENT
    2. 服务端收到 SYN,回复 SYN+ACK SYN_RCVD
    3. 客户端收到 SYN+ACK,回复 ACK ESTABLISHED
    4. 服务端收到 ACK ESTABLISHED

    状态说明

    • LISTEN:服务器等待连接请求。
    • SYN_SENT:客户端已发送 SYN,等待服务端确认。
    • SYN_RCVD:服务端收到 SYN,已发送 SYN+ACK,等待客户端的 ACK。
    • ESTABLISHED:连接建立成功,可以传输数据。

    二、连接释放(四次挥手)

    假设客户端主动关闭,服务端被动关闭。

    步骤 主动关闭方(客户端) 被动关闭方(服务端)
    初始 ESTABLISHED ESTABLISHED
    1. 主动方发送 FIN FIN_WAIT_1
    2. 被动方收到 FIN,回复 ACK CLOSE_WAIT
    3. 主动方收到 ACK FIN_WAIT_2
    4. 被动方发送 FIN LAST_ACK
    5. 主动方收到 FIN,回复 ACK TIME_WAIT
    6. 被动方收到 ACK CLOSED
    7. 主动方等待 2MSL 后关闭 CLOSED

    状态说明

    • FIN_WAIT_1:主动方已发送 FIN,等待对方 ACK。
    • CLOSE_WAIT:被动方收到 FIN,等待应用程序关闭连接。
    • FIN_WAIT_2:主动方收到 ACK,等待对方发送 FIN。
    • LAST_ACK:被动方已发送 FIN,等待对方 ACK。
    • TIME_WAIT:主动方收到 FIN 并回复 ACK,等待 2MSL(Maximum Segment Lifetime,通常 2 分钟)确保最后的 ACK 能被对方收到,并让旧报文在网络中消失。
    • CLOSED:完全关闭。
  8. 进程间通信方式有哪些?共享内存的实现原理是什么?

  9. C++ STL 容器在插入/删除后,迭代器失效的情况?举例说明。

  10. C++11 之后的智能指针有哪些?使用场景?shared_ptr 多线程修改需要加锁吗?为什么?

  11. 算法设计题:100 亿个 32 位整数,内存限制 256MB,如何找到中位数?

  12. 设计题:管理 1000 万个定时任务,支持 add、超时回调、cancel 操作。请说出关键设计思路。

  13. 手撕

  14. 你对岗位有什么问题吗?(工作内容、实习生评估标准、实习时间等)

#发面经攒人品#
全部评论
这种算法设计题怎么答呀
点赞 回复 分享
发布于 05-26 15:39 广东

相关推荐

05-29 20:08
西南大学 golang
点赞 评论 收藏
分享
05-18 23:10
门头沟学院 C++
查看15道真题和解析
点赞 评论 收藏
分享
评论
3
18
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务