七年大厂人解析大厂技术栈、对应岗位和面试重点
想进互联网大厂却因为要求高、竞争激烈而无从下手?其实大厂使用的技术有其共性,是有线索可循的。抓住线索,你就敲开了进互联网大厂的大门。本文就来跟你聊聊:
- 互联网大厂都有哪些技术栈
- 大厂面试后端最看重的技能
先看看技术栈,技术栈是用于开发应用程序的一系列技术的组合,包括编程语言、框架、数据库、前端和后端工具以及应用程序编程接口(API)。你在技术栈上的选择会产生重要的后续影响,包括你可以构建的集成类型以及你需要招聘的技能。从IaaS (Infrastructure as a Service) 和PaaS(Product as a Service)两个分类展开讲讲技术栈都有哪些。
IaaS (Infrastructure as a Service)
IaaS 提供了虚拟化的计算资源作为服务 ,包括网络、存储、虚拟服务器和操作系统等资源。IaaS 主要关注硬件资源的抽象和管理。
这部分技术栈对应的常见职位:
技术栈 | 职位 |
容器虚拟机 | 容器平台工程师、虚拟化工程师 |
内核 | 系统软件工程师、内核开发工程师 |
IDC | 数据中心工程师、IDC运维工程师 |
网络 | 网络工程师、网络安全工程师 |
服务器硬件 | 硬件工程师、服务器系统架构师 |
PaaS (Platform as a Service)
PaaS 提供了一个运行环境,包括操作系统、开发工具、数据库和基础架构,使开发人员能够方便地构建、测试、部署和扩展应用程序。
上述技术栈因公司规模不同,不一定都会具备。比较常用到的后端技术栈:
- RPC通信:现在国内互联网公司大多采用的微服务,所以服务间通信是基础能力。业界比较有名的开源框架:Dubbo(阿里),gRPC(谷歌),Thrift(Facebook),Motan(新浪微博)。
- 服务治理:服务治理是为了解决分布式系统中的一些关键问题,包括服务的发现与注册、服务的路由与负载均衡、服务的隔离与熔断、服务的安全与监控等。业界比较有名的开源框架:Dubbo(阿里),Spring Cloud(Pivotal团队,基于SpringBoot构建),Zookeeper(Apache)。
- 消息队列:消息队列(Message Queue)是一种常见的应用间通信方法解决方案,主要用于异步处理、缓解系统压力、解耦服务等。业界比较有名的开源框架:RocketMQ(阿里),Kafka(LinkedIn),RabbitMq。
- 关系型数据库:MySQL是当今业界最流行的开源关系型数据库管理系统。目前除了Oracle官方版本外,业界比较有名的分支有MariaDB、Percona。
- 分布式数据库:分布式数据库主要解决大数据存储、高并发访问、高可用性、数据一致性和故障快速恢复等问题。业界比较有名的产品OceanBase(蚂蚁金服)、PolarDB(阿里云)、Spanner(Google)。
- KV 存储:键值存储(Key-Value Storage),通常用于处理大量数据,其中的数据和查询需求可以简单地映射为查找键,获取值的模式。这种存储方式的优点是读写速度快,扩展性好,非常适合于存储大量的非结构化或半结构化数据。业界比较有名的开源KV存储:Redis : 内存型KV存储系统。适用规模较少,高性能稳定访问的大部分业务场景,如缓存。Dynamo(Amazon): 持久化存储系统。适用数据规模较大,冷热数据显著的业务场景。LevelDB (Google)、Rocks DB (Facebook)、Tair(阿里)。
- 分布式缓存治理:分布式缓存治理是为了解决在分布式服务场景下,业务应用使用缓存所面临的可用性、性能以及扩展性的问题。业界比较有名的开源框架: 直连 cachecloud(SohuTv),中间层代理Proxy: codis(CodisLab 豌豆荚),twemproxy(Twitter)。
- 扎实的编程语言基础
- 扎实的数据结构和算法功底
- 掌握数据库存储(MySQL)、缓存(Redis)、消息队列等常见组件
国内大厂后端面试重点
面试重点选取三个头部大厂(字节跳动、阿里、腾讯)作为分析case ,在这三个公司的招聘官网上随机各选取了一个业务研发的JD。可以发现:
1、倾向计算机相关专业(经验看这并非严格要求);
2、要求要有一门熟练应用的编程语言。另外还发现了一个有意思的小细节,虽然字节主开发语言是Go和Python,但并非严格要求,候选人具有其他编程语言开发经验也可以,如Java、PHP、C++、C。相比之下,阿里和腾讯等老牌大厂对编程语言要求就严格一些,也会要求熟悉开源框架Spring/Spring Cloud等。
3、具备扎实的数据结构和算法功底(经验看现在招聘至少一面都会考察数据结构和算法,是非常重要的基础)
4、对数据库存储(MySQL)、缓存(Redis)、消息队列有明确要求,会重点考察。(阿里甚至要求精通!)
5、熟悉各类常见的微服务框架(配置中心、日志平台、监控、服务治理等)是加分项。
6、软素质,三个大厂都重点要求候选人要具备良好的团队沟通协作能力 和 自驱学习能力。(经验看这一点对于职场人非常重要)
总结来说,互联网头部大厂业务研发对后端技术栈要求并非面面俱到,从面试应聘的角度,具备以下知识就已经拿到了大厂敲门砖:
数据结构该怎么学?MySQL怎么掌握?学编程总不开窍怎么办?如何保持平稳的自学心态?
……**********************我们持续为你带来程序员面试技巧、学习方法和职场干货。如果有其他问题***********随时给我们留言!