作为一个程序员,不管是初入职场的菜鸟还是做开发多年的老鸟,都希望有机会能进大厂,最近有不少小伙伴问腾讯好不好进?需要的技术栈是怎么样的?本文就给大家普及一下腾讯后台开发各级工程师(T1-T9)需要具备哪些能力 ?
后端开发首先肯定要精通C++语言,也要熟悉操作系统、计算机网络、Linux网络编程、设计模式、数据库,还有个常见的数据结构与算法以及各种后端中间件。
很多有c/c++语言基础的朋友,在面试后台岗的时候都会有一个疑问,面试大厂的时候,技术水平要到一个什么程度才能进?
这里就分为校招和社招。校招的话对于技术层面的要求会相对较低。会C with STL以及常见的数据结构与算法,并且笔试能当场做出leetcode中等难度以下的人就有70分了,如果笔试的时候对STL、auto、lambda等用法都很熟练,都有加分。对于实习生来说,表现不错就可以招进来,剩下网络编程和linux进去之后会再教你。
所以校招更看重的是你的基础和学习能力。实习进去之后再观察你的技术学习进度决定是否给你发offer。当然,如果你能提前掌握Linux环境编程,网络编程等技术更会加分,毕竟不管是哪个赛道,内卷都是有的。
下图是腾讯后台开发技术栈总览,不同级别所需要具备的能力要求不一样,只有最高级的T9才是所有能力都需要具备的。
下面就详细介绍各职级需要具备的能力:
腾讯后台开发T1级
1、开发环境搭建、运行第一个hello word
2、运用基本的数据类型、表达式与操作符进行简单开发
3、字符串、向量和数组
4、语句和函数
5、分支控制、循环
6、mysql服务器的安装与配置
7、数据表的新建、查询和删除操作
8、tjetping/ifconfig/telnet等命令查看计算机网络状况
9、常用的文件、目录操作命令使用
10、程序的编译与运行
腾讯后台开发T2级——除T1级所需要具备的能力外,新增技术点:
1、对象生命周期&垃圾回收
2、错误和异常处理
3、标准库使用
4、初识数据结构和算法-冒泡排序
5、数组、列表、栈,队列等基本线性数据结构
6、递归、排序、二分查找算法
7、标准语言SQL和CURD能力
8、表、主键、索引、视图
9、网络体系中每一层的作用和基本协议
10、shell脚本与vi使用
11、linux系统性能监控命令的使用
12、利用socket编程编写简单客户/服务器程序
腾讯后台开发T3级——除T2级所需要具备的能力外,新增技术点:
1、日志分析、断点调试等简单代码调试方法
2、面向对象设计原则
3、跳表、散列表、hash算法
4、二叉树、红黑树
5、表结构设计规范
6、事务的使用以及其ACID特性
7、不同存储引擎的区别
8、TCP和UDP的基本原理
9、http协议基础与应用
10、线程、进程的概念、创建与调度
11、用户态和内核态的基本概念、区别
12、CPU的上下文切换、中断处理与系统调度
13、基本TCP/UDP套接字编程
腾讯后台开发T4级——除T3级所需要具备的能力外,新增技术点:
1、单例模式、工厂模式等简单的设计模式
2、堆排序、归并排序、二分查找等高阶算法
3、字符串匹配、KMP算法
4、事务的隔离级别和实践原理
5、数据库的连接池管理
6、数据库的权限管理
7、SQL注入、web shell攻击的危害和规避方法
8、TCP协议的可靠传输机制
9、TCP协议的流量控制和拥塞控制
10、磁盘文件系统、虚拟文件系统与文件缓存
11、物理内存和虚拟内存
12、五种常见I/O模型
13、Docker原理与搭建
腾讯后台开发T5级——除T4级所需要具备的能力外,新增技术点:
1、gdb高级调试技巧和常用系统分析工具使用
2、熟悉图论算法:dijkstra算法、最小生成树、深度优先搜索等
3、贪心算法、动态规划
4、数据库的集群和高可用
5、SQL语句优化、索引和参数调优
6、Session、Cookie 与 Application
7、网络安全的加密算法与数字签名
8、https协议的基本原理
9、进程间通信机制
10、死锁的危害、出现原因、解决方法
11、I/O多路复用技术
12、time_wait、close_wait状态产生的原因、危害与避免方法
13、熟练掌握各种I/O模型的运用场景
14、掌握C10k问题的基本解决方案
15、简单rpc协议设计和框架搭建
16、rpc的服务寻址、数据流的序列化与反序列化和网路传输
17、分布式事务的学习
18、一致性算法
19、分布式锁的设计与实现
20、主流的微服务rpc框架
21、Kubernetes
腾讯后台开发T6级——除T5级所需要具备的能力外,新增技术点:
1、适配器模式、代理模式等常见设计模式
2、能够分析算法的执行效率和资源消耗、时间和空间复杂度分析
3、运用Redis进行数据缓存处理,提高系统性能
4、http2.0与http3.0特性
5、XSS攻击的危害和规避方法
6、Wireshark、tcpdump等网络抓包工具使用和结果分析
7、网络故障分析与问题解决
8、内存溢出、内存泄漏的原因与解决
9、网络框架学习
10、服务注册、服务发现
11、容器编排、容器网络
12、集成构建
腾讯后台开发T7级——除T6级所需要具备的能力外,新增技术点:
1、创建型、结构型、行为型设计模式的应用技巧
2、能够根据实际场景,选用合适的数据结构和算法进行程序设计
3、redis内存模型
4、redis的持久化、主从同步以及集群
5、如何高效利用CPU缓存
6、内存问题分析与性能优化
7、磁盘 I/O 性能优化
8、分布式trace、监控告警
9、负载均衡
10、云上常见的SaaS服务和组件
腾讯后台开发T8级——除T7级所需要具备的能力外,新增技术点:
1、系统网络性能评估与优化
2、主流分布式系统架构设计,比如分布式缓存、API网关、分布式消息组件
3、分布式系统的缓存设计、缓存雪崩、缓存击穿等现象
4、弹性扩缩容
腾讯后台开发T9级——除T8级所需要具备的能力外,新增技术点:
1、代码耦合的产生原因和规避方法
2、容灾保护、降级熔断、流量控制、故障隔离、故障恢复
3、分布式架构的高并发、高可用、可扩展
4、服务网格Istio和Serverless
5、需求分析
6、项目设计方法
7、项目流程管理
8、项目风险控制
9、跨部门合作
10、沟通技巧
11、组织协调
12、目标管理
总结:腾讯开发工程师之间的评级是比较严格的,从T1-T4为初级工程师,T5-T8为中级工程师,T9为高级工程师,小伙伴们可以对照上述各职能等级自评一下自已处于哪个级别的工程师,对于想进腾讯的小伙伴也可以根据以上技术点查漏补缺,为以后更好的进军腾讯做准备。
还不熟悉的朋友,这里可以先领取一份Linux c/c++开发新手学习资料包(入坑不亏):
【后端开发】
- 编程基本功扎实,掌握 C/C++/JAVA 等开发语言、常用算法和数据结构;
- 熟悉 TCP/UDP 网络协议及相关编程、进程间通讯编程;
- 了解 Python、Shell、Perl 等脚本语言;
- 了解 MYSQL 及 SQL 语言、编程,了解 NoSQL, key-value 存储原理;
- 全面、扎实的软件知识结构,掌握操作系统、软件工程、设计模式、数据结构、数据库系统、网络安全等专业知识;
- 了解分布式系统设计与开发、负载均衡技术,系统容灾设计,高可用系统等知识。
社招offer-腾讯T9-70W年薪
这里给大家推荐零声教育全网独家的【Linux C/C++开发】课程体系,通过原理技术+源码分析+案例分析+项目实战,全面解析Linux C/C++,8个上线项目,2W+行手写代码,全面解析:
Linux C/C++开发
1、精进基石专栏
(一)数据结构与算法
- 随处可见的红黑树
- 红黑树的应用场景进程调度cfs,内存管理
- 红黑树的数学证明与推导
- 手撕红黑树的左旋与右旋
- 红黑树添加的实现与添加三种情况的证明
- 红黑树删除的实现与删除四种情况的证明
- 红黑树的线程安全的做法
- 分析红黑树工程实用的特点
- 磁盘存储链式的B树与B+树
- 磁盘结构分析与数据存储原理
- 多叉树的运用以及B树的定义证明
- B树插入的两种分裂
- B树删除的前后借位与节点合并
- 手撕B树的插入,删除,遍历,查找
- B+树的定义与实现
- B+树叶子节点的前后指针
- B+树的应用场景与实用特点
- B+树的线程安全做法
- 海量数据去重的abhloriter bitap
- hash的原理与hash函数的实现
- hash的应用场景
- 分布式hash的实现原理
- 海量数据去重布隆过滤器
- 布隆过滤的数学推导与证明
(二)设计模式
- 创建型设计模式
- 单例模式
- 策略模式
- 观察者模式
- 工厂方法模式与抽象工厂模式
- 原型模式
- 结构型设计模式
- 适配器模式
- 代理模式
- 责任链模式
- 状态模式
- 桥接模式
- 组合模式
(三)c++新特性
- stI容器,智能指针,正则表达式
- unordered_ _map
- stl容器
- hash的用法与原理
- shared_ ptr,unique_ ptr
- basic_ regex,sub_ match
- 函数对象模板function, bind
- 新特性的线程,协程,原子操作,lamda表达式
- atomic的用法与原理
- thread_ local 与condition_ var iable
- 异常处理exception_ _ptr
- 错误处理error _ category
- coroutine的用法与原理
(四)Linux工程管理
- Makefi le/ cmake/conf igure
- Makefile的规则与make的工作原理
- 单文件编译与多文件编译
- Makefile的参数传递
- 多目录文件夹递归编译与嵌套执行make
- Makefile的通配符,伪目标,文件搜索
- Makefile的操作函数与特殊语法
- configure生成makefile的原则
- cmake的写法
- 分布式版本控制git
- git的工作流程
- 创建操作与基本操作
- 分支管理,查看提交历史
- git服务器搭建
- Linux系统运行时参数命令
- 进程间通信设施状态ipcs
- Linux系统运行时长upt ime
- CPU平均负载和磁盘活动iostat
- 监控,收集和汇报系统活动sar
- 监控多处理器使用情况mpstat
- 监控进程的内存使用情况pmap
- 系统管理员调优和基准测量工具nmon
- 密切关注Linux系统glances
- 查看系统调用strace
- ftp服务器基本信息ftptop
- 电量消耗和电源管理powertop
- 监控mysq| 的线程和性能mytop
- 系统运行参数分析htop/top/atop
- Linux网络统计监控工具netstat
- 显示和修改网络接口控制器ethtool
- 网络数据包分析利刃tcpdump
- 远程登陆服务的标准协议teInet
- 获取实时网络统计信息iptraf
- 显示主机上网络接口带宽使用情况iftop
2、高性能网络设计专栏
(一)网络编程异步网络库zvnet
- 网络io与io多路复用select/poll/epoll
- socket与文件描述符的关联
- 多路复用select/poll
- 代码实现LT/ET的区别
- 事件驱动reactor的原理与实现
- reactor针对业务实现的优点
- poll封装send_ cb/recv_ _cb/ accept_ _cb
- reactor多核实现
- 跨平台(select/epoll/kqueue)的封装reactor
- redis,memcached, nginx网 络组件
- http服务器的实现
- reactor sendbuffer与recvbuffer封装http协议
- http协议格式
- 有限状 态机fsm解析http
- 其他协议websocket, tcp文件传输
(二)网络原理
- 服务器百万并发实现(实操)
- 同步处理与异步处理的数据差异
- 网络io线程池异步处理
- ulimit的fd的百万级别支持
- sysctI. conf的rmem与wmem的调优
- conntrack的原理分析
- Posix API与网络协议栈
- connect,listen, accept与三次握 手
- listen参数backlog
- syn泛洪的解决方案
- close与四次挥手
- 11个状态迁移
- 大量close_ wait与time wait的原因与解决方案
- tcp keepalive与 应用层心跳包
- 拥塞控制与滑动窗口
- UDP的可靠传输协议QUIC
- udp的优缺点
- udp高并发的设计方案
- qq早期为什么选择udp作为通信协议
- udp可靠传输原理
- quic协议的设计原理
- quic的开源方案quiche
- kcp的设计方案与算法原理
- 协程调度器实现与性能测试
- 调度器的定义分析
- 超时集合,就绪队列,io等待集合的实现
- 协程调度的执行流程
- 协程接口实现,异步流程实现
- hook钩子的实现
- 协程实现mysql请求
- 协程多核方案分析
- 协程性能测试
(三)自研框架:基于dpdk的用户态协议栈的实现(已开源)
- 用户态协议栈设计实现
- 用户态协议栈的存在场景与实现原理
- netmap开源框架
- eth协议,ip协议, udp协议实现
- arp协议实现
- icmp协议实现
- 应用层posix api的具体实现
- socket/bind/listen的实现
- accept实现
- recv/send的实现
- 滑动窗口/慢启动讲解
- 重传定时器,坚持定时器,time_ wait定时器,keepalive定时器
- 手把手设计实现epoll
- epoll数据结构封装与线程安全实现
- 协议栈fd就绪回调实现
- epoll接口实现
- LT/ET的实现
- 高性能异步io机制io_ _uring
- 与epo1l媲美的io_ uring
- io_ _uring系统调用io_ _uring_ setup, io_ _ur ing_ register, io_ _ur ing_ enter
- liburng的io_ uring的关系
- io_ uring与epoll性能对比
- io_ _uring的共享内存机制
- io_ uring的使用场景
- io_ ur ing的accept, connect, recv, send实现机制
- io_ uring网络读写
- io_ uring磁盘读写
- proactor的实现