尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

腾讯后台校招全解析:技能栈、面试题与备战策略

腾讯后台校招全解析:技能栈、面试题与备战策略 1. 2020年腾讯后台校招到底在招什么人每年7月腾讯的校招官网一开放后台开发岗位总是投递量最大的方向之一。2020届校招也不例外。当时我身边几乎每个学计算机的同学都投了腾讯后台岗大家私下交流的群从7月一直活跃到10月光笔试通知、面试进度、HR面后等OCOffer Call的状态同步就不知道刷了多少屏。先说个基本盘腾讯2020届校招后台开发主要面向2020届毕业生也就是2019年秋季到2020年春季这个招聘季。整个流程分秋招和春招补录两个阶段秋招规模最大、岗位最多春招主要看业务部门有没有剩余HC。后台开发岗位在腾讯内部的分布非常广IEG互动娱乐事业群的游戏后台、WXG微信事业群的微信后台、CSIG云与智慧产业事业群的腾讯云后台、PCG平台与内容事业群的QQ、腾讯视频后台几乎每个事业群都有大量后台岗位需求。很多人会问腾讯后台开发到底做什么这里直接说大白话——你用的微信、QQ你玩的王者荣耀、和平精英你看的腾讯视频、腾讯新闻这些产品的服务器端逻辑、数据存储、接口服务、消息推送、风控策略全都是后台团队在支撑。后台开发岗的日常工作就是设计接口、写业务逻辑、优化数据库、排查线上故障、做性能调优跟运维、前端、产品经理、测试频繁对接。所以腾讯后台校招考察的核心从来不是某一门语言写得有多熟练而是你的计算机基础扎不扎实、能不能上手解决真实问题、有没有系统思维。这一点贯穿了简历筛选、笔试、技术面、HR面的全过程。2020届秋招腾讯的面试风格已经比较稳定了——算法题不是每轮都有但计算机基础一定会深挖到底尤其是网络、操作系统、数据库这三块。我在后面几个部分会把这个岗位的真实考察逻辑、技术栈要求、笔试面试准备方法包括我实操过程中踩过的坑全部拆开来讲。这篇文章不是那种“目标导向”的鸡汤帖而是把腾讯后台校招这条路上的每一个关卡从里到外扒给你看。2. 后台开发技能栈哪些是必须啃下来的硬骨头2.1 编程语言C是主线Go是加分项腾讯后台开发的编程语言长期以来以C为主。微信后台、QQ后台、游戏服务器的核心模块基本都是C写的这是历史沉淀也是性能要求使然。2020届校招的JD职位描述里绝大多数后台岗位都会写“熟悉C/C了解Go、Java、Python中的至少一种”。实话实说校招生写C的项目经历往往不多很多人简历上写的是Java或者Python项目。这种情况不用慌腾讯的面试官不太会因为你简历里是Java项目就把你挂掉他们更关心的是你懂不懂内存布局、懂不懂指针和引用、懂不懂STL底层原理、懂不懂多线程并发、懂不懂RAII。这些知识点跨语言都是相通的。我自己当时是Java主语言C只能算“看得懂但写不利索”的水平。为了应对腾讯的面试我花了大概三周时间专门补C的基础指针和引用区别、内存分区、堆栈区别、虚函数和虚表、STL容器的底层数据结构、智能指针的引用计数原理、C11的move语义。这些几乎构成了腾讯后台面试中语言考察的“标配题库”。Go在腾讯的渗透率从2018年之后明显提升主要体现在腾讯云的存储、消息队列、网关等中间件方向。如果简历里写了Go面试官会问goroutine和线程的区别、channel的底层实现、GMP模型这些需要专门准备不要觉得“会语法”就等于“会Go”。2.2 计算机基础网络、操作系统、数据结构一个都不能少腾讯后台技术面有一个很鲜明的特点不按套路出题但万变不离其宗。所谓“不按套路”是因为面试官经常会从你简历里的一个项目点延伸出去连环追问到底层原理所谓“不离其宗”是因为无论怎么追问最终都会落到计算机基础。网络是考察权重最高的一块没有之一。TCP三次握手、四次挥手、TIME_WAIT状态、拥塞控制、滑动窗口这些是必背的基础款HTTP和HTTPS的区别、HTTP/2的多路复用、DNS解析流程、Cookie和Session的关系、TCP和UDP的选择场景这是进阶款再往上会被问到连接池是怎么回事、Nginx反向代理为什么性能高、WebSocket和HTTP的长轮询有什么区别。操作系统这块进程和线程的区别、协程、进程间通信方式、线程同步机制、死锁的产生条件和解决、虚拟内存和物理内存、页面置换算法、用户态和内核态的切换都是高频考点。腾讯尤其喜欢问“如果一个服务CPU飙到100%你怎么排查”这类实战型问题这要求你不仅懂概念还得有实际排查思路。数据结构和算法不用多说笔试阶段主要靠LCLeetCode题量面试现场一般不会出特别难的Hard题但Medium难度的题目要求快速写出无bug的代码。二叉树遍历、链表反转、动态规划、回溯、二分查找、哈希表使用这些是最常见的现场题范围。2.3 数据库与中间件MySQL、Redis、消息队列数据库方面MySQL是绝对的重点。索引的数据结构B树为什么适合做索引、聚簇索引和非聚簇索引的区别、最左前缀原则、事务的ACID、隔离级别和MVCC、锁机制行锁、表锁、间隙锁、慢查询优化、explain的使用这些是腾讯后台岗位面试中问到数据库时的核心范围。Redis也是腾讯后台的基础设施几乎每个业务都会用到。高频问题包括Redis为什么快、Redis的数据类型和底层数据结构、持久化机制RDB和AOF的区别、怎么选、过期删除策略、内存淘汰策略、缓存穿透/击穿/雪崩的解决方案、分布式锁的实现。消息队列在腾讯内部的使用也极为广泛自研的TDMQ基于Pulsar开源的Kafka、RocketMQ也都有落地场景。校招面试对消息队列的考察一般不会很深但至少要知道消息队列解决什么问题解耦、异步、削峰、怎么保证消息不丢失、怎么保证消息顺序、怎么处理重复消息。做后台开发不是光写接口你得理解数据是怎么存的、流量是怎么走的、故障是怎么发生的这些基础打不牢后面工作中遇到线上问题会非常吃力。腾讯校招面试之所以这么重视基础本质上就是想确认你有没有快速上手业务的能力。3. 简历、笔试、三轮面试全流程拆解与准备策略3.1 简历怎么写才不会被筛掉2020届腾讯后台岗的简历筛选通过率说实话不太高。我身边投递简历的同学里大约只有一半能收到笔试通知。腾讯的简历筛选核心看三样东西学校背景、实习经历、项目含金量。学校背景这块我们改变不了但实习和项目是可以主动经营的。实习经历在简历筛选中权重极高。有BAT、TMD等大厂后台实习经历或者有腾讯日常实习经历的话简历通过率会明显提高。没有大厂实习的可以写实验室项目、开源项目、自己从0到1做的完整项目但一定不能只写“我用了Spring BootMyBatis做了个XX管理系统”这种流水账写法。项目描述要突出技术难点和解决方案。举个例子同样是写一个秒杀系统低质量的写法是“实现了商品秒杀功能支持高并发”高质量的写法是“基于Redis预扣库存MQ异步下单将接口QPS从800提升到5000通过Lua脚本保证库存扣减原子性引入令牌桶限流防止刷单”。后者一眼就能让面试官看出你的技术深度和思考过程也会让后续面试有更多可聊的细节。简历长度控制在一页以内项目写2到3个就够不要贪多。排在第一个的项目必须是你最熟悉、最能经得起深挖的那个。我见过不少同学简历写得非常华丽结果面试官顺着项目问了三层就答不上来了这种情况比简历朴素但答得扎实要糟糕得多。3.2 笔试算法题的刷法决定你能不能进面试腾讯的校招笔试是统一在线笔试后台开发岗位的卷子一般包含选择题和编程题两类。选择题覆盖计算机网络、操作系统、数据库、C语法、数据结构等范围很广编程题一般是3到4道难度从Easy到Medium偶尔有一道接近Hard。编程题的时间很紧张我当时做的时候有些同学连题目都没来得及看完就到交卷时间了。所以笔试准备的核心就是刷题量和刷题质量并重。LeetCode建议按标签刷数组、链表、字符串、哈希表、二叉树、动态规划、栈和队列、贪心、回溯、二分查找每个标签至少刷20到30道总量在200到300道之间覆盖高频题型。笔试中比较吃亏的情况是“看题有思路但代码写不出来”。这没有捷径只能靠手写代码训练。我当时的方法是每天在纸上手写3道题的完整代码练到肌肉记忆的程度。笔试是机器判题编译错误、超时、数组越界都会直接判错所以代码的准确性甚至比思路的巧妙程度更重要。另外建议提前熟悉牛客网的在线编程环境腾讯笔试用的是类牛客系统不是LeetCode那种IDE自动补全、代码提示都没有全靠手打。如果平时习惯了IDE的智能提示考试时很容易出现“库函数名拼写错”“头文件忘记include”这种低级失误。3.3 一面、二面、三面的考察侧重点腾讯后台岗的技术面一般是两轮再加上一轮HR面但有些部门会安排三轮技术面初试、复试、终面整体面试节奏大约是每轮间隔一周左右。一面通常由组内资深工程师面考察重点集中在项目深挖 计算机基础 一道算法题。项目会按照简历上写的细节逐一追问比如你用了Redis他会问为什么选Redis不选Memcached你做了分库分表他会问分片键怎么选、扩容怎么做。基础方面网络、操作系统、数据库各问2到3个问题只要准备充分都能应对。算法一般是一道Medium题要求在15到20分钟内写出可运行的代码。二面的面试官一般是技术Leader考察重点偏向设计能力和业务思维。常见问法“如果让你设计一个短链接系统你会怎么设计”“用户量从100万涨到1000万你的系统哪些环节会成为瓶颈”“线上接口突然超时率增高你怎么排查”这些问题没有标准答案但能反映你的系统设计能力和解决问题的思路。回答时不要上来就堆技术名词而是先明确需求和约束再逐步给出方案遇到不确定的边界条件主动和面试官确认。终面有时候是总监面或交叉面除了技术深度之外也会看重候选人的学习能力、沟通表达、对技术方向的热情。问题可能会比较开放比如“你最近在关注什么新技术”“你怎么看待微服务和单体架构的取舍”。这种问题没有对错关键是展示思考过程的条理化。HR面通常问职业规划、优缺点、薪资期望、对腾讯的看法、手上有没有其他Offer。这块不卡技术但要注意表达真诚自然不要背模板。一个比较容易忽略的细节是HR会在意你对我们部门业务的了解程度——如果你连面的这个部门是做什么的都不知道会被认为对岗位缺乏热情。4. 高频面试题复盘与答题思路4.1 网络与操作系统必考题这一节我直接列一些我在准备过程中总结的高频题以及参考答案的框架。这些不是标准答案但按照这个思路回答基本能让面试官认可你的基础扎实度。TCP为什么需要三次握手答题要点三次握手的主要目的是同步双方的初始序列号ISN并确认双方的收发能力正常。第一次握手客户端发送SYN服务端能确认自己收能力和客户端发能力正常第二次握手服务端发送SYNACK客户端能确认自己发能力、服务端收能力、服务端发能力正常第三次握手客户端发送ACK服务端确认自己发能力正常。如果把三次握手简化成两次服务端无法确认客户端的接收能力是否正常还可能导致已失效的连接请求突然传到服务端造成资源浪费。什么是TIME_WAIT为什么需要它答题要点TIME_WAIT出现在主动关闭连接的一方等待时间为2MSL。存在两个原因一是确保最终的ACK能被对方收到如果ACK丢失对方会重发FINTIME_WAIT状态可以重发ACK二是让旧连接的所有报文在网络中自然消失避免端口复用时旧连接报文干扰新连接。面试官可能会接着问“TIME_WAIT太多怎么办”这是线上真实问题可以答调整内核参数、开启tcp_tw_reuse、长连接代替短连接等方案。进程和线程的区别是什么协程又是什么答题要点进程是资源分配的基本单位线程是CPU调度的基本单位。同一个进程内的线程共享进程的地址空间、文件描述符等资源而进程之间相互独立。线程切换的开销小于进程切换但多线程编程需要考虑同步互斥问题。协程是用户态线程由程序自身调度切换不需要陷入内核态所以切换成本更低。Go里的goroutine就是协程的典型实现配合channel的使用是Go并发编程的核心模式。面试官顺着问“协程为什么切换成本低”答案要点是协程切换只保存和恢复寄存器和栈不涉及内核态/用户态切换所以开销很小。进程间通信的方式有哪些答题要点常见的IPC方式有管道无名管道用于父子进程有名管道可以无亲缘关系、消息队列、共享内存、信号量、Socket、信号。其中共享内存是效率最高的方式因为数据不需要在内核态和用户态之间拷贝但需要配合信号量做同步互斥。问到这里部分面试官会继续问“Redis的通信为什么不用共享内存”这属于延伸考察。4.2 数据库与分布式必考题解释MySQL的B树索引为什么不用哈希索引或者红黑树答题要点B树是平衡多路搜索树所有数据都存储在叶子节点并且叶子节点之间有指针相连方便范围查询。哈希索引的等值查询确实是O(1)复杂度但无法支持范围查询和排序所以InnoDB默认索引用B树。红黑树是平衡二叉树树的高度相对B树更高磁盘IO次数更多不适合磁盘存储场景。B树的非叶子节点只存索引不存数据所以树更矮更宽一次磁盘IO能读到的索引更多查询效率更高。Redis的持久化机制RDB和AOF怎么选答题要点RDB是定时全量快照恢复速度快、文件紧凑但可能丢失最后一次快照之后的数据AOF是追加写入每次写命令数据更安全可配置everysec、always但文件体积大、恢复速度慢。生产环境经常是RDBAOF混合使用或者直接开启Redis 4.0之后的混合持久化RDB作为AOF重写的基础。面试官会继续问“AOF重写是什么”“RDB触发条件怎么配置”这些都要能答上来。缓存穿透、缓存击穿、缓存雪崩分别是什么怎么解决答题要点穿透是查询不存在的数据缓存和数据库都没有每次请求直接打到数据库——解决方式是布隆过滤器、缓存空值击穿是某个热点key过期瞬间大量请求同时查询这个key打到数据库——解决方式是互斥锁、逻辑过期、热点key永不过期雪崩是大量key同时过期或Redis宕机导致数据库压力暴涨——解决方式是过期时间加随机值、集群高可用、限流降级、多级缓存。分布式系统里怎么保证数据一致性答题要点简单场景可以用分布式事务2PC、TCC、Saga高频场景一般用最终一致性——本地消息表、事务消息RocketMQ、基于定期对账。腾讯后台业务里大量使用消息队列做最终一致性方案比如订单状态变更后发送消息下游系统消费消息更新数据配合对账机制保证不丢不重。4.3 场景设计题考察的不是答案是思路二面和终面出现场景题的频率很高这里给一道典型题目的参考思路“让你设计一个高并发短链接服务你会怎么做”第一步先明确需求短链接生成的QPS预估多少、总量多少、是否需要自定义短码、是否需要统计点击数据。第二步再给方案短码生成可以用发号器雪花算法、数据库自增ID 62进制转换或者随机数 哈希去重存储用MySQL存映射关系 Redis热点链接缓存读多写少的场景下增加CDN缓存和本地缓存点击统计通过MQ异步处理避免影响主链路。第三步说扩展如果QPS再翻十倍怎么扩容、怎么做地域化部署、怎么保证多机房数据同步。场景设计题的核心逻辑是“需求分析 - 架构选型 - 核心方案 - 扩展性思考”四段式面试官其实不期待一个完美方案而是通过你的思路来判断你是否具备独立设计系统的能力。准备这类题目建议多看《大型网站技术架构》里关于高并发、高可用、可扩展的经典方案再用“五w分析法”What/Why/When/Where/How去拆解题目思路就不容易乱。5. 校招避坑实录我亲身踩过和见过的坑5.1 简历阶段最容易犯的错第一个坑是“简历上写的技术栈太多太杂”。有些同学把Java、Python、C、Go、React、Vue、Docker、K8s全都写上去看起来很全但面试官一眼就能看出来深度不够。后台岗不需要写前端技能写上反而误导面试官。正确的做法是只写自己真正深入用过的技术并且标注熟练度。第二个坑是“项目没有数据支撑”。纯功能描述型项目比如“实现了用户登录注册”“实现了商品管理”在腾讯的简历筛选中几乎没有任何竞争力。项目一定要有量化指标接口QPS、响应时间优化前后对比、数据量级、服务数量、容错率。哪怕是自己做的练手项目也要想办法去压测、去测量把数据跑出来写上去。第三个坑是“隐藏了自己的短板”。比如你项目里用到了Redis但你其实只用了set/get命令对持久化、集群、分布式锁完全不了解。面试官只要多问一句“你们Redis挂了怎么恢复”就会露馅。我会建议在简历上只写你被追问三代都答得上来的技术点。5.2 笔试阶段最常见的翻车点笔试翻车最容易的原因不是题不会做而是前面的选择题耗时太多。腾讯后台笔试的选择题范围太广有些人为了追求满分在选择题上磨了四十分钟结果编程题只剩二十分钟。我的经验是选择题遇到没把握的快速标记后跳过先保证编程题有时间写完。一台机器判卷编程题AC一道就比选择题多答对五题加分多。另外笔试过程中要养成自己造测试用例的习惯。很多编程题不是让你实现复杂算法而是考察边界处理——数组为空、输入为负数、字符串超长、数值溢出。写完核心逻辑后手动代入几个边界用例往往能救回很多不应该丢的分。还有一个很容易被忽略的坑本地IDE能跑、提交到判题系统就是编译错误。原因是本地IDEA自动帮你做了隐式导包或者自动补全但考试系统没有这些智能功能。备考期间建议直接用牛客网或者力扣的在线编辑器做题让肌肉记忆去适应无辅助环境。5.3 面试阶段的高频失误面试中最大的坑是“被问到不会的问题就慌硬编答案”。腾讯的面试官特别擅长连续追问很多问题本身就是开放性的没有唯一答案。如果你确实不会正确的做法是坦诚说“这块我了解得还不深入”然后尝试从已有知识出发推导一个思路。面试官更在意你的推导过程而不是你有没有背过答案。第二个坑是“过于被动只会回答不会提问”。面试最后一般会留时间让你反问很多应届生直接说“没有问题”。这个会显得你对岗位和团队缺乏兴趣。建议提前准备两三个有质量的问题比如“这个岗位所在的团队目前主要业务方向是什么”“团队对新人有什么培养机制”“后台这块未来的技术规划是什么”。问这些既显得你认真也能帮你判断这个岗位适不适合自己。第三个坑是“状态前紧后松”前面几轮过了就以为稳了。腾讯的流程里就算技术面全过了HR面也有淘汰的可能。HR面虽然不考技术但你的表达、态度、职业规划如果明显不匹配同样会影响最终结果。我见过有人在HR面被问“你未来三到五年的规划是什么”时答了个“我想先赚够钱然后回老家考公务员”这种答案基本就是在给自己挖坑。5.4 关于Offer选择的经验之谈如果足够幸运你可能同时拿到腾讯不同事业群的后台Offer也可能在腾讯和其他公司之间做选择。我个人的建议是不要只看年薪要看团队的技术氛围、业务发展速度、你的直接Leader是否愿意带人。应届生第一份工作成长速度比起薪更重要一个好的技术团队三年能把你带到另一个层次一个业务萎缩的团队三年可能只让你重复写CRUD。另外腾讯内部不同事业群的后台技术栈差别很大IEG偏C和游戏后台WXG偏C和自研框架CSIG偏Go和云原生。选择Offer时先想清楚自己未来两到三年的主攻方向再匹配对应的团队这一点比“腾讯”这个牌子本身更重要。6. 时间线与备战的实用节奏建议最后分享一个我从7月到10月亲自验证过的备考时间线供2020届和之后的校招同学参考也适合现在正在准备大厂后台岗的朋友们对照调整。7月初到7月中旬定位与补基础阶段。先花两周时间明确自己投递的方向后台、算法、前端、客户端去腾讯校招官网看目标岗位的JD把岗位要求里的技术名词逐个对照哪些不会就补哪些。同时把计算机网络、操作系统、数据库的经典八股刷一遍这一步是后面所有环节的地基。7月中旬到8月中旬刷题和项目优化阶段。保持每天4到6道LeetCode的节奏重点刷链表、二叉树、动态规划、回溯四大类高频题。同时把简历上的2到3个项目重新梳理一遍给每个项目补充架构图、核心接口说明、技术选型理由确保自己能在30分钟内把每个项目讲清楚。8月中旬到9月初笔试冲刺阶段。每周至少做两套完整的在线笔试模拟卷控制时间在80分钟内完成培养考场手感。同时把高频八股整理成自己的精简笔记每天早中晚各过一遍。腾讯秋招的正式批笔试通常集中在8月底到9月中旬提前准备好能占据时间主动权。9月到10月面试实战阶段。前期的积累在这个阶段转化为临场表现。每次面试结束后当天时间允许的话就做复盘把没答上来的问题整理进错题本过两天重新自测。一面到三面之间一般会有两周左右的间隔好好利用这段时间查漏补缺。整个面试季结束后无论结果如何把整轮经历整理成一份个人总结这对春招补录和未来社招面试都有巨大价值。我的感受是腾讯后台校招这条路并不容易竞争对手来自全国各地题目范围非常广面试流程也比较长。但反过来看整个准备过程其实是一个系统性强化的过程哪怕最终没有拿到Offer这几个月打下的基础也足够你在其他任何一家公司的后台岗面试中占到优势。2020届已经过去但这个岗位的考察逻辑在之后几年并没有本质变化扎实的基础、清晰的表达、稳定的心态永远是这张通关文牒上的三块拼图。
返回列表