2023-09-22 15:34:39
腾讯TEG数据平台部后台开发26届后端Java暑期实习一面面经总结如下:
面试流程与核心环节自我介绍
需简洁清晰,重点突出技术栈、项目经历及与岗位匹配的能力(如分布式系统开发、数据库优化经验等)。
项目深挖(约20分钟)
考察重点:项目设计思路、技术选型原因、难点解决能力及对细节的掌握程度。
关键问题示例:
分表策略:需说明分表维度(如用户ID哈希、时间范围)、分表数量规划依据及扩容方案。
任务量生产过快处理:需结合项目场景,提出具体解决方案,例如:
消息队列削峰:使用Kafka/RocketMQ缓冲突发流量,异步处理任务。
动态扩容:基于云服务(如腾讯云CVM)自动扩展计算资源。
限流降级:通过Sentinel等工具限制并发请求,保障系统稳定性。
Java基础与JVM
JDK版本垃圾回收机制对比:
JDK 1.8默认GC:Parallel Scavenge(年轻代)+ Serial Old(老年代),强调吞吐量优先。
JDK 11+默认GC:G1(Garbage-First),面向大堆内存,通过Region划分实现低停顿。
JDK 17+新增ZGC:基于染色指针技术,实现毫秒级停顿,适用于超低延迟场景。
关键区别:GC算法(标记-清除 vs 复制 vs 标记-整理)、停顿时间、适用场景(吞吐量 vs 延迟)。
计算机网络与系统原理
输入URL后发生的事件:
DNS解析:递归查询域名对应IP地址。
TCP连接:三次握手建立连接,SYN/ACK状态转换。
HTTP请求:封装请求行、头部、正文,通过TCP发送至服务器。
服务器处理:Nginx反向代理分发请求,应用服务器(如Tomcat)解析请求并调用业务逻辑。
数据库交互:执行SQL查询或更新,返回结果至应用层。
响应返回:服务器封装HTTP响应,TCP四次挥手关闭连接。
浏览器渲染:解析HTML/CSS/JS,生成DOM树并渲染页面。
算法与SQL优化
合并K个有序链表:
思路:使用优先队列(最小堆)维护各链表当前节点,每次取出最小值加入结果链表,并移动该链表指针至下一节点。
时间复杂度:O(NlogK),其中N为总节点数。
面试反馈:代码运行失败不影响评价,核心考察逻辑清晰度与边界条件处理(如空链表、重复值)。
SQL优化方向:
索引优化:为高频查询字段(如WHERE、JOIN条件)添加索引,避免全表扫描。
执行计划分析:通过EXPLAIN识别慢查询,优化索引使用或调整SQL写法。
分库分表:对大数据量表按范围或哈希拆分,减少单表压力。
项目复盘:
梳理项目架构图、技术难点及解决方案,准备量化成果(如QPS提升、响应时间缩短)。
针对分表、限流、扩容等高频问题,提前设计多种方案并对比优劣。
八股文巩固:
JVM:重点掌握GC算法、内存模型(堆/栈/方法区)、OOM排查方法。
网络:熟记TCP/IP协议栈、HTTP/HTTPS区别、三次握手/四次挥手流程。
数据库:索引原理(B+树)、事务隔离级别、锁机制(乐观锁/悲观锁)。
算法刷题:
聚焦链表、树、动态规划等高频题型,注重代码规范性(边界条件、变量命名)。
面试中若代码无法运行,需口头说明调试思路(如打印中间变量、模拟小规模数据)。
模拟面试:
通过牛客网等平台进行模拟面试,适应高压环境,提升表达逻辑性。
总结:腾讯TEG一面以项目为核心,考察技术深度与问题解决能力,同时覆盖Java基础、网络、算法等通用技能。需在项目中体现技术驱动思维,并在基础题中展现扎实功底。