校招 未知部门 / 后端开发 / 二面

[面试日期] 2026-05-24 [面试时长] 未知
[学校背景] 兰州大学 | 985 [学历背景] 未知
[发布人] 面试之星官方收录
<h2>字节网络2面凉经 5.21 后端开发</h2> <ol> <li> <p>请先做个自我介绍。</p> </li> <li> <p>在实习项目中,有用 AI 辅助 coding 吗?</p> </li> <li> <p>实习项目相关(占大约一半面试)</p> </li> <li> <p>无锁队列的实现原理是什么?对比其他队列的优势和劣势?为什么不是所有场景都用无锁队列?</p> </li> <li> <p>锁的种类有哪些?各自的使用场景?</p> </li> <li> <p>TCP 保证可靠传输的机制有哪些?</p> </li> <li> <p>能讲一下 TCP 连接的状态机流转过程吗?</p> <blockquote> <p><strong>一、连接建立(三次握手)</strong></p> <p>假设客户端主动发起连接,服务器被动监听。</p> <table> <thead> <tr> <th>步骤</th> <th>客户端状态变化</th> <th>服务端状态变化</th> </tr> </thead> <tbody> <tr> <td>初始</td> <td><code>CLOSED</code></td> <td><code>LISTEN</code>(监听端口)</td> </tr> <tr> <td>1. 客户端发送 SYN</td> <td><code>SYN_SENT</code></td> <td>–</td> </tr> <tr> <td>2. 服务端收到 SYN,回复 SYN+ACK</td> <td>–</td> <td><code>SYN_RCVD</code></td> </tr> <tr> <td>3. 客户端收到 SYN+ACK,回复 ACK</td> <td><code>ESTABLISHED</code></td> <td>–</td> </tr> <tr> <td>4. 服务端收到 ACK</td> <td>–</td> <td><code>ESTABLISHED</code></td> </tr> </tbody> </table> <p><strong>状态说明</strong>:</p> <ul> <li><code>LISTEN</code>:服务器等待连接请求。</li> <li><code>SYN_SENT</code>:客户端已发送 SYN,等待服务端确认。</li> <li><code>SYN_RCVD</code>:服务端收到 SYN,已发送 SYN+ACK,等待客户端的 ACK。</li> <li><code>ESTABLISHED</code>:连接建立成功,可以传输数据。</li> </ul> <p><strong>二、连接释放(四次挥手)</strong></p> <p>假设客户端主动关闭,服务端被动关闭。</p> <table> <thead> <tr> <th>步骤</th> <th>主动关闭方(客户端)</th> <th>被动关闭方(服务端)</th> </tr> </thead> <tbody> <tr> <td>初始</td> <td><code>ESTABLISHED</code></td> <td><code>ESTABLISHED</code></td> </tr> <tr> <td>1. 主动方发送 FIN</td> <td><code>FIN_WAIT_1</code></td> <td>–</td> </tr> <tr> <td>2. 被动方收到 FIN,回复 ACK</td> <td>–</td> <td><code>CLOSE_WAIT</code></td> </tr> <tr> <td>3. 主动方收到 ACK</td> <td><code>FIN_WAIT_2</code></td> <td>–</td> </tr> <tr> <td>4. 被动方发送 FIN</td> <td>–</td> <td><code>LAST_ACK</code></td> </tr> <tr> <td>5. 主动方收到 FIN,回复 ACK</td> <td><code>TIME_WAIT</code></td> <td>–</td> </tr> <tr> <td>6. 被动方收到 ACK</td> <td>–</td> <td><code>CLOSED</code></td> </tr> <tr> <td>7. 主动方等待 2MSL 后关闭</td> <td><code>CLOSED</code></td> <td>–</td> </tr> </tbody> </table> <p><strong>状态说明</strong>:</p> <ul> <li><code>FIN_WAIT_1</code>:主动方已发送 FIN,等待对方 ACK。</li> <li><code>CLOSE_WAIT</code>:被动方收到 FIN,等待应用程序关闭连接。</li> <li><code>FIN_WAIT_2</code>:主动方收到 ACK,等待对方发送 FIN。</li> <li><code>LAST_ACK</code>:被动方已发送 FIN,等待对方 ACK。</li> <li><code>TIME_WAIT</code>:主动方收到 FIN 并回复 ACK,等待 2MSL(Maximum Segment Lifetime,通常 2 分钟)确保最后的 ACK 能被对方收到,并让旧报文在网络中消失。</li> <li><code>CLOSED</code>:完全关闭。</li> </ul> </blockquote> </li> <li> <p>进程间通信方式有哪些?共享内存的实现原理是什么?</p> </li> <li> <p>C++ STL 容器在插入/删除后,迭代器失效的情况?举例说明。</p> </li> <li> <p>C++11 之后的智能指针有哪些?使用场景?<code>shared_ptr</code> 多线程修改需要加锁吗?为什么?</p> </li> <li> <p>算法设计题:100 亿个 32 位整数,内存限制 256MB,如何找到中位数?</p> </li> <li> <p>设计题:管理 1000 万个定时任务,支持 add、超时回调、cancel 操作。请说出关键设计思路。</p> </li> <li> <p>手撕</p> </li> <li> <p>你对岗位有什么问题吗?(工作内容、实习生评估标准、实习时间等)</p> </li> </ol><a>#发面经攒人品#</a>
AI 推荐面试题