![]()
内容推荐 本书根据编者工作和面试经验,全面介绍了后端工程师求职面试需要掌握的知识和技能。主要内容分为五个部分:八股文、算法、场景设计题、项目和HR面试技巧。八股文章节涵盖了后端面试必备的重要知识点,包括综合知识、数据库、Redis、RocketMQ、操作系统、计算机网络、Spring、ZooKeeper、Dubbo等。算法章节整理分析了解决问题的核心思想,灵活运用这些思想可以(Algorithm Accepted)面试中高频出现的算法题。场景设计章节列举了在面试过程中反复出现的经典题目,预先思考这些问题在面试环节可以短时间内给出让面试官满意的答案。项目案例章节展示了如何向面试官介绍自己的项目,一般包括项目背景、系统领域划分和自己所在的位置、如何在成熟的业务中发现问题、解决项目的挑战、取得的成果以及未来待改进点。最后,HR面试技巧章节以与头部大厂HR访谈记录的形式向读者展示了HR面试内幕。本书的内容安排完全与面试要求匹配,根据历史经验,任何一场后端面试80%的问题都可以在本书中找到。阅读本书可以快速找到学习方向,树立求职信心,提高面试通过率。 本书适合希望从事互联网后端开发的读者,包括参加校园招聘和社会招聘的求职者。此外,后端开发与测试开发的技能要求有很多共同点,因此,本书对于从事测试工作的读者也有较大参考价值。 作者简介 布兜,硕士,曾多次获得网易云音乐、阿里巴巴、抖音、Tiktok、滴滴、华为等Offer,现任职于某互联网大厂,从事后端研发工作,经常参与企业员工的招聘面试工作,对现代流行和热点的后端开发技术有着丰富的实践经验。 目录 第1章 八股文 1.1 综合知识 1.1.1 单元化高可用架构演进历程 1.1.2 Java中5种重要的队列 1.1.3 IO多路复用 1.1.4 ReentrantLock锁与Syschronized锁 1.1.5 Java SPI机制 1.1.6 限流算法 1.1.7 领域驱动设计 1.1.8 HashMap的底层原理 1.1.9 JVM垃圾回收机制 1.1.10 零复制 1.1.11 TCC柔性事务 1.1.12 CAP与BASE 1.1.13 Volatile关键字 1.1.14 双亲委派类加载器 1.1.15 从微服务到Service Mesh 1.1.16 进程、线程与协程 1.1.17 强引用、软引用、弱引用、虚引用 1.1.18 ThreadLocal 1.1.19 线程池 1.1.20 控制访问某个资源或方法的并发数 1.1.21 Happens-Before 1.1.22 对Java的理解 1.1.23 缓存穿透、雪崩、击穿 1.1.24 虚拟机与容器对比 1.1.25 保障系统高可用的一般方法 1.1.26 伪共享 1.1.27 Caffeine缓存高性能分析 1.1.28 请自我介绍一下 1.2 数据库 1.2.1 一次SQL查询的执行过程 1.2.2 binlog日志备份的3种模式 1.2.3 事务的两阶段提交 1.2.4 二叉搜索树、平衡树、红黑树、B树、B+树的区别 1.2.5 MySQL存储引擎InnoDB与MyISAM的区别 1.2.6 聚集索引与非聚集索引的区别 1.2.7 数据库事务的4大特性 1.2.8 事务隔离级别与脏读、不可重复读、幻读 1.2.9 redo、undo、binlog数据库日志的作用 1.2.10 多版本并发控制 1.2.11 数据库行锁、表锁、乐观锁与悲观锁 1.2.12 当前读与快照读 1.2.13 幻读是怎么解决的 1.2.14 SQL索引优化 1.2.15 Dao层缓存先更新缓存还是先更新数据库 1.2.16 MySQL高可用架构 1.2.17 为什么遇到范围查询会停止索引的最左匹配 1.2.18 索引下推 1.2.19 索引覆盖 1.2.20 经典SQL语句考察:group by、join、having 1.2.21 避免数据库热点更新 1.2.22 线上环境如何修改表结构 1.3 Redis 1.3.1 Redis的5种基本数据类型及对应底层实现 1.3.2 Redis为什么这么快 1.3.3 Redis持久化之RDB与AOF 1.3.4 Redis实现分布式锁的关键点 1.3.5 Redis与Memcache的区别 1.3.6 Redis主从复制原理之SYNC与PSYNC 1.3.7 过期删除策略 1.3.8 Redis哈希槽 1.3.9 Redis Gossip协议 1.3.10 重定向moved与ask 1.3.11 Pipeline有什么好处 1.4 RocketMQ 1.4.1 RocketMQ的整体架构 1.4.2 消息队列典型的适用场景 1.4.3 消费者、消费者组、队列之间的关系 1.4.4 RocketMQ消息发送与消费流程 1.4.5 消息刷盘策略 1.4.6 底层文件存储设计 1.4.7 事务消息 1.4.8 延迟消息 1.4.9 如何保证消息不丢失 1.4.10 消息过滤 1.4.11 顺序消息 1.4.12 消费者offset管理 1.4.13 Rebalance的危害 1.4.14 RocketMQ与Kafka的对比 1.5 操作系统 1.5.1 进程与线程的区别 1.5.2 为什么页内存大小是4KB 1.5.3 进程间的通信方式 1.5.4 页面置换算法 1.5.5 虚拟内存 1.5.6 为什么多级页表可以节省内存 1.5.7 死锁及其产生的条件 1.5.8 线程状态转换 1.5.9 进程调度策略 1.5.10 线程同步有哪几种方式 1.5.11 内存颠簸 1.5.12 局部性原理 1.6 计算机网络 1.6.1 TCP与UDP的区别 1.6.2 滑动窗口 1.6.3 拥塞控制 1.6.4 重传机制 1.6.5 流量控制 1.6.6 三次握手与四次挥手 1.6.7 TCP四次挥手为什么要等待2MSL 1.6.8 一次完整的HTTP请求 1.6.9 HTTPS加密过程 1.6.10 TCP粘包与拆包 1.6.11 Nagle算法 1.7 Spring 1.7.1 Spring Bean的作用域 1.7.2 Spring Bean的生命周期 1.7.3 Spring IoC 1.7.4 Spring AOP 1.7.5 Spring三级缓存解决Bean循环依赖 1.7.6 Spring事务实现 1.7.7 Spring事务失效的典型场景 1.7.8 Spring中BeanFactory和ApplicationContext的区别 1.8 ZooKeeper 1.8.1 ZooKeeper典型使用场景 1.8.2 ZooKeeper四种节点类型 1.8.3 ZooKeeper的顺序一致性 1.8.4 ZooKeeper集群节点为什么是奇数个 1.8.5 ZooKeeper集群中的三种角色 1.8.6 ZooKeeper的选主机制 1.8.7 ZooKeeper与Eureka的区别 1.8.8 ZooKeeper Atomic Broadcast协议 1.9 Dubbo 1.9.1 Dubbo架构简述 1.9.2 路由机制 1.9.3 负载均衡 1.9.4 集群容错 1.9.5 Dubbo的序列化 1.9.6 有了HTTP请求为什么还需要RPC调用 1.9.7 Dubbo的SPI机制 第2章 算法题目 2 序言 笔者在准备面试阿里巴 巴、字节跳动、网易、滴滴 、华为、中兴、趋势科技等 国内知名互联网公司的过程 中,系统整理了很多资料, 经过多轮面试,抽取互联网 大厂面试的共同特点,总结 出高频面试题目(八股文、 算法、设计题、项目与HR 面试技巧),由此形成了本 书。实践发现,基本上任何 一场面试80%以上的提问均 可在本书中找到,按照本书 所讲的内容和学习路线准备 面试,笔者成功拿到了以上 所有公司的录用通知书 (Offer)。互联网大厂面 试考察的内容复杂零碎,IT 求职者往往需要数月的时间 准备相关的内容,本书可以 帮助求职者快速掌握面试核 心考点,同时熟悉面试流程 、面试技巧等,提高面试通 过率。笔者将自己的面试经 验以文章和视频的形式分享 在抖音等自媒体平台上,迅 速积累了8000粉丝,受到 了大众广泛好评和催更。可 在抖音搜索“布兜~”关注笔 者并进行交流。 本书内容涵盖了八股文 (数据库、Redis、消息队 列、操作系统、计算机网络 、Spring、ZooKeeper、 Dubbo以及其他零散的综合 知识)、算法题、设计题、 项目案例分析、后端系统以 及HR面试技巧。通过本书 的学习,读者能够快速掌握 后端系统的经典考题,提高 专业技术,提升面试通过率 。 本书以面试官口吻和一 问一答的形式来表现每一个 技术话题的核心内容,既追 求技术原理的详细分析,覆 盖考点,又抓住核心内容来 控制文章的篇幅,使读者能 够快速阅读,提高应试能力 与面试通过率,成为求职者 收割offer的利器。 除署名作者外,袁润川 也参与了本书的编写。本书 主要面向所有希望从事互联 网后端开发的人员,包括参 加校园招聘、社会招聘的求 职者。此外,后端开发与测 试开发的技能要求有很多是 相同的,因此,本书对于从 事测试工作的读者也有较大 参考价值。 编者 2023年5月于杭州 |