<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title>求职复盘与面经 · Amigoer‘s Blog</title><subtitle>记录 Go 后端开发求职历程，包含云原生考点与面试心得。</subtitle><link href="https://www.amigoer.com/interview/" rel="alternate" type="text/html"/><link href="https://www.amigoer.com/interview/atom.xml" rel="self" type="application/atom+xml"/><id>https://www.amigoer.com/interview/</id><updated>2026-06-13T04:46:30Z</updated><rights>© 2026 Amigoer</rights><generator uri="https://gohugo.io/">Hugo + amigoer</generator><author><name>Amigoer</name><email>i@amigoer.com</email></author><entry><title>字节OD - 北京 - Golang</title><link href="https://www.amigoer.com/interview/bytedance/od-beijing-golang-api-safe/" rel="alternate" type="text/html"/><id>https://www.amigoer.com/interview/bytedance/od-beijing-golang-api-safe/</id><published>2026-03-05T21:42:00+08:00</published><updated>2026-03-05T21:42:00+08:00</updated><author><name>Amigoer</name><email>i@amigoer.com</email></author><summary type="html"> 岗位名称 OD-TTP-Base Platform-O Security安全云服务开发工程师
一面 2026.1.29 面试官介绍业务，自我介绍 项目深挖 Go 中的 Slice 和 Map 初始化，为啥 Slice 不用 make 也可以初始化呢？ Slice 底层架构、扩容机制、缩容机制 MySQL 的 InnoDB 的索引的底层结构，为啥不用 B 树？ 唯一索引的查询过程，回表查询 查询的…</summary><content type="html"><![CDATA[<blockquote>
<p>岗位名称 OD-TTP-Base Platform-O Security安全云服务开发工程师</p>
</blockquote>
<h2 id="一面-2026129">一面 2026.1.29</h2>
<ol>
<li>面试官介绍业务，自我介绍</li>
<li>项目深挖</li>
<li>Go 中的 Slice 和 Map 初始化，为啥 Slice 不用 make 也可以初始化呢？</li>
<li>Slice 底层架构、扩容机制、缩容机制</li>
<li>MySQL 的 InnoDB 的索引的底层结构，为啥不用 B 树？</li>
<li>唯一索引的查询过程，回表查询</li>
<li>查询的时候需要开启事务吗？</li>
<li>算法题：最长无重复字符的子串 和 写一个开方或者平方的应用题 二选一</li>
</ol>
<h2 id="二面-202622">二面 2026.2.2</h2>
<ol>
<li>自我介绍</li>
<li>项目深挖</li>
<li>一些八股忘记了</li>
<li>算法题：滑动窗口的最大值</li>
</ol>
<blockquote>
<p>二面完第二天早上就发了 Offer</p>
</blockquote>

]]></content></entry><entry><title>腾讯瑞驰 (西安) - 应用开发工程师 - Golang</title><link href="https://www.amigoer.com/interview/tencent/ruichi-xian-golang/" rel="alternate" type="text/html"/><id>https://www.amigoer.com/interview/tencent/ruichi-xian-golang/</id><published>2026-03-05T00:27:04+08:00</published><updated>2026-03-05T00:27:04+08:00</updated><author><name>Amigoer</name><email>i@amigoer.com</email></author><summary type="html">写在前面 这是我在腾讯瑞驰（西安）Golang 开发岗位的完整面试复盘。整体面试流程推进比较快，面试官的技术素养很高，问的问题既有扎实的底层基础（八股），也会结合项目场景进行深挖。在部分高并发场景的解决方案上，也给我指出了现有架构的薄弱点，收获颇丰。</summary><content type="html"><![CDATA[<h2 id="写在前面">写在前面</h2>
<p>这是我在腾讯瑞驰（西安）Golang 开发岗位的完整面试复盘。整体面试流程推进比较快，面试官的技术素养很高，问的问题既有扎实的底层基础（八股），也会结合项目场景进行深挖。在部分高并发场景的解决方案上，也给我指出了现有架构的薄弱点，收获颇丰。</p>
<hr>
<h2 id="-一面技术初面-2026年1月7日">🕒 一面（技术初面）| 2026年1月7日</h2>
<p>一面主要考察了 <strong>Golang 基础、数据库、以及项目中的实际痛点解决思路</strong>，最后带了一道动态规划的手撕算法。</p>
<h3 id="项目与架构深挖">项目与架构深挖</h3>
<ol>
<li><strong>自我介绍</strong>（教育背景、技术经历、工作经历）。</li>
<li><strong>为什么项目中的技术栈不统一（同时存在 Java 和 Go）？</strong>
<ul>
<li><strong>回答</strong>：解释了由于历史遗留和早期团队同事的技术栈限制，早期版本使用的是 Java；后来因为边缘服务器配置有限（内存/CPU资源吃紧），团队逐渐将重计算、高并发模块转向更轻量的 Go 语言重构。</li>
</ul>
</li>
<li><strong>协程与线程的区别？项目中如何控制并发度？</strong>
<ul>
<li><strong>回答</strong>：解释了协程（Goroutine）在用户态调度、极小内存占用的轻量化优势。但坦诚自己在项目中未使用协程池，<strong>暴露出方案在规模化时的潜在瓶颈</strong>。当时提出可以用带缓冲的 <code>channel</code> 来控制并发度。</li>
<li><strong>面试官反馈</strong>：无限制创建协程会导致 CPU 过载甚至引发 OOM，一针见血地指出当前方案在极端情况下存在稳定性风险。</li>
</ul>
</li>
<li><strong>项目的 QPS 大概是多少？</strong>
<ul>
<li><strong>回答</strong>：预估在 500 左右。</li>
<li><strong>复盘</strong>：被质疑这可能不算严格意义上的“高并发”。当我透露部署环境仅为 <code>2核2G</code> 的单点时，暴露了基础设施的薄弱环节。面试官直接点出了单点故障（SPOF）的隐患。</li>
</ul>
</li>
</ol>
<h3 id="中间件与基础组件">中间件与基础组件</h3>
<ol start="5">
<li><strong>MySQL 数据库的数据量巨大时如何处理？</strong>
<ul>
<li><strong>回答</strong>：冷热数据分离，时间序列数据只存近一个月的到 MySQL 中，更早的历史数据持久化归档到更廉价的磁盘或大数据组件中。</li>
</ul>
</li>
<li><strong>Redis 缓存一致性如何保证？</strong>
<ul>
<li><strong>回答</strong>：采用 <strong>Cache Aside</strong> 模式（先写数据库再删缓存），能最大程度保证最终一致性，但在极端并发下仍可能存在短暂的数据不一致或查询延迟。</li>
</ul>
</li>
<li><strong>如何保证数据库（MySQL）和消息队列（MQ）中数据的一致性？</strong>
<ul>
<li><strong>回答</strong>：通过监听、解析并投递 Binlog 日志（类似 Canal 的机制），实现异步的数据最终一致性。</li>
</ul>
</li>
</ol>
<h3 id="语言基础与八股">语言基础与八股</h3>
<ol start="8">
<li><strong>数据结构</strong>：栈和队列的区别？二叉树的遍历方式有哪些？</li>
<li><strong>数据库优化：MySQL 慢查询如何排查？建索引的优化策略？</strong>
<ul>
<li><strong>回答</strong>：开启慢查询日志 -&gt; 使用 <code>EXPLAIN</code> 分析执行计划 -&gt; 关注 type、key 等字段看是否走了全表扫描。</li>
<li><strong>追问</strong>：索引的底层数据结构？答：B+ 树。</li>
</ul>
</li>
<li><strong>Go 语言基础：切片 (Slice) 的底层实现？</strong>
<ul>
<li>结合底层的 <code>array</code> 指针、<code>len</code>、<code>cap</code> 以及扩容机制进行了详细说明。</li>
</ul>
</li>
<li><strong>微服务设计：API 接口的设计规范应该包含哪些？</strong>
<ul>
<li><strong>复盘</strong>：这块答得不是很好，只说了 HTTP 中间件思想（Prev/After 钩子）。实际上考察的是 <strong>RESTful 语义规范、统一的响应结构体封装判断、版本控制（v1/v2）、限流、鉴权（JWT/OAuth）</strong> 等综合素养。</li>
</ul>
</li>
</ol>
<h3 id="算法与反问">算法与反问</h3>
<ol start="12">
<li><strong>手撕代码：打家劫舍（LeetCode 198</strong>）
<ul>
<li>经典动态规划题。先与面试官同步状态转移方程思路，确认没问题后迅速编码通过。</li>
</ul>
</li>
<li><strong>反问环节</strong>：主要了解了当前部门的业务方向与技术栈建设情况。</li>
</ol>
<hr>
<h2 id="-二面技术深挖-2026年1月12日">🕒 二面（技术深挖）| 2026年1月12日</h2>
<p>二面相比一面，抛弃了单纯的八股背诵，更多地是<strong>从我的过往项目出发，拷问架构设计的取舍与各类异常场景的应对方案</strong>。</p>
<ol>
<li><strong>自我介绍 &amp; 软素质考量</strong>
<ul>
<li>本科成绩情况？金融专业转码的动机到底是什么？</li>
</ul>
</li>
<li><strong>Web3 项目深挖：是否有现成的管理系统，为什么选择自研？</strong>
<ul>
<li><strong>回答</strong>：当时确实考虑过直接上 K8s 生态，但碍于业务需求中有大量定制化的配置项以及私有云底层环境限制，最终决定自研调度系统。</li>
</ul>
</li>
<li><strong>网络连接协议选型：为什么从 WebSocket 换到了 HTTP？</strong>
<ul>
<li><strong>回答</strong>：边缘节点和中心节点之间存在 VPN 隧道机制，WebSocket 久持连接容易因 VPN 负载波动而频繁断掉，维护心跳包的成本太高；改用 HTTP 短连接/批量上报的模式反而更稳定。</li>
</ul>
</li>
<li><strong>客户端程序的安装升级方式？</strong>
<ul>
<li>依赖并执行对应业务的 Shell 启动脚本配置拉取。</li>
</ul>
</li>
<li><strong>通信失败时的重试机制如何处理？</strong>
<ul>
<li>回答了 <strong>指数退避算法（Exponential Backoff）</strong> + 本地数据缓冲池（防止数据彻底丢失）。</li>
</ul>
</li>
<li><strong>弱网环境下的数据积压如何解决？</strong>
<ul>
<li>本地写入 WAL 暂存，等网络恢复后批量压缩异步上传，以此缓解恢复时的带宽与内存压力。</li>
</ul>
</li>
<li><strong>探讨 MQ 消费数据时的一致性问题。</strong></li>
<li><strong>Redis 在项目中的实际使用场景深入剖析。</strong></li>
<li><strong>MySQL 数据库分表机制。</strong></li>
<li><strong>如果直接“暴力重启”客户端，会带来什么影响？</strong>
<ul>
<li>讨论了 <strong>优雅停机（Graceful Shutdown）</strong> 的重要性：如何监听 OS 信号（SIGTERM）、等待当前处理中的请求执行完毕、释放文件资源等。</li>
</ul>
</li>
<li><strong>关于系统真实的 QPS 及服务可靠性（SLA）指标的深入探讨。</strong></li>
<li><strong>基础知识：MySQL 的索引底层结构为什么是 B+ 树？（与 B 树和红黑树对比优势）</strong></li>
<li><strong>跨域问题如何解决？</strong>
<ul>
<li>Nginx 反向代理解决同源策略，或后端开启 CORS 跨域资源配置。</li>
</ul>
</li>
<li><strong>安全防范：黑客攻击导致 Token 泄露问题怎么防范？</strong>
<ul>
<li>缩短 Token 有效期、引入 Refresh Token 机制或绑定客户端设备指纹进行校验。</li>
</ul>
</li>
<li><strong>手撕代码：有效的括号验证（LeetCode 20）</strong>
<ul>
<li>栈的经典应用场景，几分钟 Bug-free。</li>
</ul>
</li>
<li><strong>无反问环节。</strong></li>
</ol>
<hr>
<h2 id="-三面hr-综合面-2026年1月14日">🕒 三面（HR 综合面）| 2026年1月14日</h2>
<p>纯综合素质沟通，主要排查潜在风险、摸底期望薪资以及考察入职稳定性。</p>
<ol>
<li><strong>自我介绍</strong>。</li>
<li><strong>学历经历追问</strong>：为什么选择转码？为什么第二学位中途选择退学？（如实说明自己的职业规划与当时的选择判断）。</li>
<li><strong>解释简历上的空窗期</strong>。</li>
<li><strong>之前的离职原因？</strong>
<ul>
<li>回答重点：不愿转岗运维，依然想在研发领域继续深造。</li>
</ul>
</li>
<li><strong>目前手上的 Offer 以及期望情况</strong>。
<ul>
<li>坦诚沟通了还在流程中的阿里云、度小满外包等，并交流了具体的薪资基准。</li>
</ul>
</li>
<li><strong>未来的职业规划、技术发展方向。</strong></li>
<li><strong>家庭背景调查</strong>（户籍所在地、家庭成员结构、是否考虑在西安成家定居）。</li>
<li>HR 善意提醒由于临近年关，Offer 审批与入职流程可能会稍微晚一些，建议先同步推进手里其它的 Offer 流程。</li>
</ol>
<hr>
<h2 id="-后续进展">📝 后续进展</h2>
<ul>
<li><strong>2026年1月20日</strong>：提交薪资流水等 Offer 审批必备材料。</li>
<li><strong>2026年1月27日</strong>：正式收到<strong>口头 OC</strong>。</li>
</ul>

]]></content><category term="腾讯瑞驰"/><category term="Golang"/><category term="后端开发"/><category term="西安"/></entry></feed>