Skip to content

揭秘大厂后端面试硬核考点

这篇文章是在一个粉丝分享的某大厂面经的基础上,进一步整理的后端面试题。文中涵盖了数据库、消息队列、分布式限流等问题以及解析,适合想要冲击大厂的朋友参考。

整体情况

适用范围:有一定后端开发经验,正在冲击大厂后端岗位的朋友。

笔者情况:经过多轮技术面的锤炼,积累了丰富的面试实战经验,并在技术面中收获了宝贵的成长。

笔者感言:后端面试侧重于系统架构、数据处理和分布式技术等方面的深度考查。大厂在后端领域对原理的理解和实践经验的要求极高,每一个问题都考验你的综合能力,下面就详细说说这些面试问题。

数据库相关

引擎选择与特性

数据库用什么引擎好,innodb 有何优势,rocksdb 是怎样的?

在众多数据库引擎中,InnoDB 是 MySQL 的默认事务引擎,具有很强的事务支持能力。它支持 ACID 属性,能保证数据的一致性和完整性。在并发处理方面表现出色,通过** MVCC(多版本并发控制)** 实现了高效的读写并发操作,可有效减少锁冲突,提高系统性能。例如在高并发的电商订单处理场景中,InnoDB 能很好地应对大量的读写请求,确保数据准确无误。

RocksDB 则是一款基于 LSM-Tree(日志结构合并树)的高性能键值存储引擎。它具有出色的写性能,适合处理大量的写入操作,如日志记录、实时数据采集等场景。其架构设计使其能够在存储大规模数据时保持较好的性能,并且支持数据的快速随机读写。

分库分表策略

数据如何进行分库分表,容量又该怎么确定?

分库分表是应对大数据量和高并发的重要手段。常见的分库分表策略有垂直分库分表和水平分库分表。

垂直分库是按照业务模块将数据库拆分成不同的库。例如将电商系统中的用户库、订单库、商品库分开。这样可以降低单个库的复杂度,提高维护性和扩展性。垂直分表则是将一个表中字段较多且部分字段访问频率较低的情况,将常用字段和不常用字段拆分成不同的表,减少数据查询时的 I/O 开销。

水平分库分表是基于数据量或数据范围进行拆分。比如按照用户 ID 取模的方式将数据均匀分布到多个库或表中。确定容量时,需要综合考虑业务的增长趋势、硬件资源(如服务器的磁盘空间、内存、CPU 性能)以及当前系统的性能瓶颈等因素。可以通过对历史业务数据量的分析和预估未来的业务增长速度,来合理规划分库分表的规模,确保系统在未来一段时间内能够稳定运行。