课程定位:它不是纯粹的算法刷题课
看到“LeetCode+剑指Offer”这个标题,如果你以为这只是一门教你如何背诵代码模板、机械刷图的纯算法课,那可能误判了它的价值。结合资料包中的线索——涉及2PC(两阶段提交)、Base理论、Raft协议、CAP理论以及迪米特原则和模板方法设计模式——可以明确判断,这是一门面向C/C++后端岗位的“算法+分布式基础+系统设计”混合冲刺课。
它的核心解决场景是:你在准备国内互联网大厂或传统软件巨头的后端开发面试时,不仅需要在白板上写出正确的解法,还需要应对面试官关于分布式事务、一致性协议以及代码规范的设计类追问。市面上纯算法课往往只讲逻辑,不讲工程背景;而这门课试图补齐这块短板,让你在面试中能同时应对“算法题”和“八股文/设计题”的双重压力。
适合谁学?基础要求是什么?
适合人群:
- CS相关专业的应届生:校招面试对分布式基础(如CAP、Raft)有硬性要求,这门课能帮你梳理这些概念在面试中的标准答法。
- 有1-3年经验、想跳槽到中厂的C/C++后端工程师:工作后容易忽略理论体系,面试前需要快速回顾设计模式和底层协议,这门课适合考前突击。
- 自驱力较强的转行者:如果你已经具备基础的C++语法和数据结构知识,这门课可以作为进阶补充。
不适合人群:
- 零基础、连指针和内存管理还没搞清楚的初学者。这门课默认你已掌握C/C++基本语法,直接切入面试高频考点。
- 只准备外企或海外岗位的人。外企面试较少涉及Raft、2PC等国内高频考点,内容匹配度低。
资料怎么用?建议的学习路径
不要试图从头到尾线性看完所有视频,效率极低。建议按以下三步配合资料练习:
第一步:先测算法水位。找一道中等难度的链表或树结构题目(如剑指Offer中的典型题),限时30分钟手写代码。如果卡壳,说明你的数据结构基础薄弱,此时应先回头巩固基础,再来看算法部分的视频,重点听“解题思路”而非单纯抄代码。
第二步:重点攻克分布式与设计模式模块。资料中提到的2PC、Base理论、Raft协议是后端面试的重灾区。建议精看这部分视频,用自己的话复述每个协议解决了什么问题(例如:Raft解决了分布式系统中的 leader 选举和日志复制一致性)。对于设计模式,重点理解“迪米特原则”在实际代码重构中的应用,以及“模板方法”如何简化重复代码逻辑,能结合C++特性(如虚函数)来阐述更佳。
第三步:模拟面试输出。学完每个章节后,尝试闭卷口头回答:“什么是CAP?CAP在分布式系统中为什么难以兼顾?”、“请手写一个模板方法模式的C++示例”。只有能独立说清原理并写出代码,才算真正掌握。
总结:这门课的价值在于“复合”,它把算法训练与后端基础理论打包,适合那些希望在一次复习中覆盖面试更多维度的求职者。如果你时间充裕且目标明确指向国内后端岗位,它的性价比高于单一算法课。
课程介绍
sgwfmslhitnobs.jpg 2025-6-2 18:46 上传 jmky2vlq215obz.png (1.53 MB, ) 2025-6-2 18:46 上传 074343hiyvvv9ihrva396g.jpg 2025-6-2 18:43 上传 ├── 视频 │ ├── 10. 论,常见题型 │ │ ├── 21_03-什么是2PC_.mp4 │ │ ├── 21_02-什么是 Base 理论_.mp4 │ │ ├── 21_04-什么是Raft协议,解决了什么问题_.mp4 │ │ ├── 21_01-什么是 CAP 理论_.mp4 │ ├── 4.设计模式,常见题型【一、二】 │ │ ├── 6.4什么是迪米特原则_.mp4 │ │ ├── 7.5什么是模板方法?应用场景是什么
课程目录
sgwfmslhitnobs.jpg 2025-6-2 18:46 上传 jmky2vlq215obz.png (1.53 MB, ) 2025-6-2 18:46 上传 074343hiyvvv9ihrva396g.jpg 2025-6-2 18:43 上传 ├── 视频 │ ├── 10. 论,常见题型 │ │ ├── 21_03-什么是2PC_.mp4 │ │ ├── 21_02-什么是 Base 理论_.mp4 │ │ ├── 21_04-什么是Raft协议,解决了什么问题_.mp4 │ │ ├── 21_01-什么是 CAP 理论_.mp4 │ ├── 4.设计模式,常见题型【一、二】 │ │ ├── 6.4什么是迪米特原则_.mp4 │ │ ├── 7.5什么是模板方法?应用场景是什么?_.mp4 │ │ ├── 7.2什么是装饰器模式?应用场景是什么?_.mp4 │ │ ├── 6.6单例模式多线程?_.mp4 │ │ ├── 6.7什么是工厂模式?什么是抽象工厂?应用场景是什么?_.mp4 │ │ ├── 7.4什么是责任链模式?应用场景是什么?_.mp4 │ │ ├── 6.3什么是里氏替换原则_.mp4 │ │ ├── 7.7 什么是观察者模式?应用场景是什么?_.mp4 │ │ ├── 6.2简述开闭原则,哪些原则与它相关,分别是什么关系?_.mp4 │ │ ├── 6.1面对对象中有哪些设计原则_.mp4 │ │ ├── 7.1 什么是代理模式?应用场景是什么?_.mp4 │ │ ├── 7.3什么是组合模式,应用场景是什么?_.mp4 │ │ ├── 6.5什么是依赖倒置原则_.mp4 │ │ ├── 7.1 什么是策略模式?应用场景是什么?_.mp4 │ ├── 7.数据库MySQL,常见题型【一、二、三】 │ │ ├── 14_07-MySQL 索引的目的和代价_.mp4 │ │ ├── 16_03-不可重复读与幻读的区别_.mp4 │ │ ├── 14_03-如何定位以及优化 SQL 语句的性能问题_.mp4 │ │ ├── 16_06-MVCC 底层原理_.mp4 │ │ ├── 15_05-InnoDB 与 MyISAM 的区别_.mp4 │ │ ├── 15_06-索引为什么要用B+树而不是二叉树或B树_.mp4 │ │ ├── 16_04-SQL注入原理,如何避免SQL注入_.mp4 │ │ ├── 16_02-脏读、幻读、不可重复读出现的原因原理_.mp4 │ │ ├── 15_03-什么是最左匹配规则,原理是什么_.mp4 │ │ ├── 14_02-MySQL cpu 飙升,该怎么处理_.mp4 │ │ ├── 14_06-索引在什么情况下会失效_.mp4 │ │ ├── 14_08-主键索引和唯一索引的区别_.mp4 │ │ ├── 14.1数据库的三大范式_.mp4 │ │ ├── 15_04-什么是索引下推,原理是什么_.mp4 │ │ ├── 15_01-什么是覆盖索引_原理是什么_.mp4 │ │ ├── 16_01-数据库事务的四个特性以及含义_.mp4 │ │ ├── 16_05-MySQL死锁问题产生的原因以及如何解决_.mp4 │ │ ├── 14_09-聚集索引和辅助索引的区别_.mp4 │ │ ├── 14_05-SQL语句在MySQL是如何执行的_.mp4 │ │ ├── 14_04-什么是视图_为什么使用视图_.mp4 │ │ ├── 15_02-undolog和redolog有什么作用_.mp4 │ ├── 6. 操作系统,进程线程,常见题型【一、二】 │ │ ├── 13_06-写文件时进程宕机,数据会丢失吗_.mp4 │ │ ├── 12_04-后台进程有什么特点_.mp4 │ │ ├── 12_09-CPU 是怎么执行指令的_.mp4 │ │ ├── 12_01-进程和线程的区别?_.mp4 │ │ ├── 13_02-内存管理有哪几种方式_.mp4 │ │ ├── 13_07-磁盘调度算法有哪些_.mp4 │ │ ├── 12_05-进程间通信有哪几种方式_.mp4 │ │ ├── 12_02-操作系统中进程与线程的切换过程_.mp4 │ │ ├── 13_01-用户态和内核态的区别_.mp4 │ │ ├── 12_08-CAS是怎样的一种同步机制_.mp4 │ │ ├── 13_05-谈谈 cpu cache 一致性工作原理_.mp4 │ │ ├── 13_03-malloc 是如何分配内存的_.mp4 │ │ ├── 13_04-页面置换算法有哪些_.mp4 │ │ ├── 12_03-请描述系统调用整个流程_.mp4 │ │ ├── 12_07-线程同步的方式_.mp4 │ │ ├── 12_06-操作系统中进程调度策略有哪几种_.mp4 │ ├── 11.kafka,常见题型 │ │ ├── 22_02-zk对于kafka的作用是什么_.mp4 │ │ ├── 22_06-在分布式场景下如何保证消息的顺序消费_.mp4 │ │ ├── 22_10-kafka为什么性能这么高_.mp4 │ │ ├── 22_01-kafka是什么?解决了什么问题?_.mp4 │ │ ├── 22_07-kafka的高可用机制是什么_.mp4 │ │ ├── 22_09-kafka如何确保不消费重复数据_.mp4 │ │ ├── 22_05-kafka如何控制消费位置_.mp4 │ │ ├── 22_03-kafka如何判断一个节点是否还活着_.mp4 │ │ ├── 22_08-kafka如何减少数据丢失_.mp4 │ │ ├── 22_04-简述kafka的ack三种机制_.mp4 │ ├── 9.网络编程,常见题型【一、二】 │ │ ├── 20_02-CLOSE_WAIT和TIME_WAIT是什么_.mp4 │ │ ├── 20_08-linux系统如何收发网络包_.mp4 │ │ ├── 20_10-什么是MTU、MSS以及为什么要有MSS_.mp4 │ │ ├── 19_02-Reactor和Proactor的区别_.mp4 │ │ ├── 20_03-TCP三次握手过程_为啥不可两次_.mp4 │ │ ├── 19_03-连接断开有几种判定方式_.mp4 │ │ ├── 20_09-TCP是如何保证可靠性的_.mp4 │ │ ├── 20_05-什么是连接半打开,半关闭状态_.mp4 │ │ ├── 20_07-描述输入网址到网页显示整个流程_.mp4 │ │ ├── 20_06-UDP和TCP的区别_.mp4 │ │ ├── 19_01-简述 Reactor 网络编程模型_.mp4 │ │ ├── 20_01-水平触发和边缘触发的区别_.mp4 │ │ ├── 19_04-接收客户端连接有几种方式_.mp4 │ │ ├── 19_05-为什么用户态需要设置读写缓冲区_.mp4 │ │ ├── 20_04-TCP 四次挥手的过程_.mp4 │ ├── 12.gRPC,常见题型 │ │ ├── 23_08-客户端连接状态有哪些_.mp4 │ │ ├── 23_07-如何实现 gRPC 全链路追踪_.mp4 │ │ ├── 23_05-gRPC 如何自定义 resolver_.mp4 │ │ ├── 23_09-客户端如何获取服务端的服务函数列表_.mp4 │ │ ├── 23_03-keepalive 是针对连接设置_.mp4 │ │ ├── 23_06-gRPC如何自定义 balancer_.mp4 │ │ ├── 23_01-gRPC 服务端启动流程_.mp4 │ │ ├── 23_10-如何为每个stream进行限流_.mp4 │ │ ├── 23_02-gRPC 服务类型有哪些_.mp4 │ │ ├── 23_04-gRPC多路复用指的是什么_.mp4 │ ├── 16.设计方案,常见题型 │ │ ├── 27_06-Redis和MySQL缓存一致性_.mp4 │ │ ├── 27_07-现场手撕定时器_.mp4 │ │ ├── 27_05-岛问题_.mp4 │ │ ├── 27_04-40亿个非负整数中算中位数和找出现两次的数_.mp4 │ │ ├── 27_01-2G内存在20亿个整数中找出现次数最多的数_.mp4 │ │ ├── 27_02-100亿个URL中重复词汇的TOPK问题_.mp4 │ │ ├── 27_03-40亿个非负整数中找到未出现的数_.mp4 │ ├── 5. 构与算法,常见题型【一、二、三、四】 │ │ ├── 09_02-最长不含重复字符的子字符串_.mp4 │ │ ├── 11_02-换钱的方法数_.mp4 │ │ ├── 09_09-二叉树展开为链表_.mp4 │ │ ├── 10_04-二叉树节点间的最大距离_.mp4 │ │ ├── 09_06-重建二叉树_.mp4 │ │ ├── 11_04-最长公共子序列问题_.mp4 │ │ ├── 09_07-二叉树的下一个节点_.mp4 │ │ ├── 11_08-子矩阵的最大累加和问题_.mp4 │ │ ├── 09_05-把数字翻译成字符串_.mp4 │ │ ├── 11_05-最长公共子串问题_.mp4 │ │ ├── 08_03-队列的最大值_.mp4 │ │ ├── 09_08-树的子结构_.mp4 │ │ ├── 08_02-包含min函数的栈_.mp4 │ │ ├── 08_10-两个链表的第一个公共节点_.mp4 │ │ ├── 08_09-从尾到头打印链表_.mp4 │ │ ├── 11_01-矩阵的最小路径和_.mp4 │ │ ├── 11_06-数组中的最长连续序列_.mp4 │ │ ├── 10_08-二进制中1的个数_.mp4 │ │ ├── 10_05-二叉树中和为某一值的路径_.mp4 │ │ ├── 11_07-最长递增子序列_.mp4 │ │ ├── 08_08-反转链表_.mp4 │ │ ├── 08_06-链表中倒数第 k 个节点_.mp4 │ │ ├── 08_05-仅用递归和栈操作逆序一个栈_.mp4 │ │ ├── 10_02-从上到下打印二叉树_.mp4 │ │ ├── 08_01-用两个栈实现队列_.mp4 │ │ ├── 10_01-对称的二叉树_.mp4 │ │ ├── 10_03-序列化二叉树_.mp4 │ │ ├── 10_06-二叉树的最近公共祖先_.mp4 │ │ ├── 08_07-链表中环的入口节点_.mp4 │ │ ├── 09_04-反转字符串_.mp4 │ │ ├── 09_03-字符串的排列_.mp4 │ │ ├── 11_03-换钱的最小货币数_.mp4 │ │ ├── 08_04-用一个栈实现另一个栈的排序_.mp4 │ │ ├── 09_01-第一个只出现一次的字符_.mp4 │ │ ├── 10_07-剪绳子_.mp4 │ ├── 15.数据库集群,常见题型 │ │ ├── 26_03-简述redis高可用的方案_.mp4 │ │ ├── 26_02-MySQL分库分表_.mp4 │ │ ├── 26_04-简述redis-cluster集群的原理_.mp4 │ │ ├── 26_01-MySQL主从复制原理_.mp4 │ ├── 13.etcd,常见题型 │ │ ├── 24_03-如何防止候选者在遗漏数据的情况下成为总统_.mp4 │ │ ├── 24_07-etcd如何保证数据一致性_.mp4 │ │ ├── 24_01-etcd 中一个任期是什么意思_.mp4 │ │ ├── 24_02-etcd中raft状态机是怎么样切换的_.mp4 │ │ ├── 24_05-为什么raft算法不考虑拜占庭将军问题_.mp4 │ │ ├── 24_04-etcd某个节点宕机后会怎么做_.mp4 │ │ ├── 24_06-etcd 如何选举出leader节点_.mp4 │ ├── 1. cc++语言相关,常见题型 │ │ ├── 1.3如何避免野指针_.mp4 │ │ ├── 1.2引用与指针作用以及区别_.mp4 │ │ ├── 1.1static关键字的作用_.mp4 │ │ ├── 1.7cc++ 中强制类型转换使用场景?_.mp4 │ │ ├── 1.10c++ 什么是深拷贝,什么是浅拷贝_.mp4 │ │ ├── 1.9c++ 什么时候生成默认拷贝构造函数_.mp4 │ │ ├── 1.1const关键字的作用_.mp4 │ │ ├── 1.8c++ 什么时候生成默认构造函数_.mp4 │ │ ├── 1.5extern 关键字作用_.mp4 │ │ ├── 1.6简述 strcpy、sprintf 与 memcpy 的区别?_.mp4 │ │ ├── 1.4malloc free和new delete的区别_.mp4 │ ├── 14.dockerk8s,常见题型 │ │ ├── 25_06-dockerfile的onbuild指令_.mp4 │ │ ├── 25_07-如何在生产中监控 docker_.mp4 │ │ ├── 25_05-容器与主机之间的数据拷贝命令_.mp4 │ │ ├── 25_03-docker 容器有几种状态_.mp4 │ │ ├── 25_04-copy和add命令的区别_.mp4 │ │ ├── 25_08-构建docker镜像应该遵循哪些原则_.mp4 │ │ ├── 25_02-什么是 docker 容器_.mp4 │ │ ├── 25_09-容器退出后数据会丢失么_.mp4 │ │ ├── 25_01-什么是 docker 镜像_.mp4 │ ├── 3. c++面对对象,常见题型【一、二】 │ │ ├── 5.3 虚析构函数的作用_.mp4 │ │ ├── 4.1 面对对象的三大特征_.mp4 │ │ ├── 5.7 左值引用与右值引用的区别?右值引用的意义?_.mp4 │ │ ├── 5.2 虚函数表和虚函数表指针的创建时机_.mp4 │ │ ├── 4.6 function_lambda_bind之间的关系_.mp4 │ │ ├── 5.4 智能指针种类以及使用场景_.mp4 │ │ ├── 4.2 简述多态实现原理_.mp4 │ │ ├── 5.6 动态库与静态库的区别?_.mp4 │ │ ├── 4.4 关键字override_final的作用_.mp4 │ │ ├── 4.5 c++ 类型推导用法_.mp4 │ │ ├── 5.1 继承下的构造函数和析构函数执行顺序_.mp4 │ │ ├── 4.3 怎么解决菱形继承_.mp4 │ │ ├── 5.5 c++11用过哪些特性?_.mp4 │ ├── 2. cc++标准库,常见题型【一、二】 │ │ ├── 2.3vector中reserve和resize的区别_.mp4 │ │ ├── 3.3priority_queue 的底层实现原理_.mp4 │ │ ├── 2.5list 底层实现原理_.mp4 │ │ ├── 2.2vector 内存增长机制_.mp4 │ │ ├── 2.4vector 的元素类型为什么不能是引用_.mp4 │ │ ├── 3.1deque 底层实现原理_.mp4 │ │ ├── 3.5unordered_map 的底层实现原理_.mp4 │ │ ├── 3.8 STL 容器线程安全性_.mp4 │ │ ├── 3.6 迭代器底层实现原理?及其有哪些种类?_.mp4 │ │ ├── 3.4multiset 的底层实现原理_.mp4 │ │ ├── 2.1vector 底层实现原理_.mp4 │ │ ├── 3.2什么时候使用vector list deque_.mp4 │ │ ├── 3.7迭代器失效?连续和非连续存储容器的失效?_.mp4 │ ├── 8. Redis,常见题型【一、二】 │ │ ├── 18_05-分析redis中的事务_.mp4 │ │ ├── 18_02-redis不同持久化机制都有什么优缺点_.mp4 │ │ ├── 17.3相同数量的数据hash与zset 存储占用情况?_.mp4 │ │ ├── 17.4基于 redis 实现限流功能,有哪几种方式?_.mp4 │ │ ├── 18_04-Redis淘汰策略有哪些_.mp4 │ │ ├── 17.1什么是 redis?redis 的应用场景有哪些?_.mp4 │ │ ├── 18_01-redis怎么做高可用_.mp4 │ │ ├── 17.6redis 怎么实现分布式锁?有哪些缺陷?_.mp4 │ │ ├── 17.2redis 的对象类型以及底层实现的数据结构?_.mp4 │ │ ├── 17.5redis为什么是单线程?为什么这么快?_.mp4 │ │ ├── 18_03-什么是缓存雪崩、缓存穿透、缓存击穿_.mp4 │ ├── c++ 后端面试题课程介绍_.mp4 ├── 资料 │ ├── 05 c++面对对象,常见题型【二】 │ │ ├── 动态库与静态库的区别?.png │ │ ├── c++11用过哪些特性?.png │ │ ├── 左值引用与右值引用的区别?右值引用的意义?.png │ │ ├── 智能指针种类以及使用场景.png │ │ ├── 虚函数表和虚函数表指针(vptr)的创建时机.png │ │ ├── 虚析构函数的作用?.png │ │ ├── 继承下的构造函数和析构函数执行顺序.png │ ├── 04 c++面对对象,常见题型【一】 │ │ ├── 简述多态实现原理.png │ │ ├── 函数重载和重写的区别?.png │ │ ├── 面对对象的三大特征.png │ │ ├── 虚函数的调用过程?.png │ │ ├── 怎么解决菱形继承.png │ │ ├── 运行期多态的实现原理?.png │ ├── 06 设计模式,常见题型【一】 │ │ ├── 什么是依赖倒置原则?.png │ │ ├── 什么是里氏替换原则?.png │ │ ├── 什么是工厂模式?什么是抽象工厂?应用场景是什么?.png │ │ ├── 什么是迪米特原则.png │ │ ├── 面对对象中有哪些设计原则?.png │ │ ├── 单例模式多线程?.png │ │ ├── 开闭原则,哪些原则与它相关,分别是什么关系?.png │ ├── 02 cc++标准库,常见题型【一】 │ │ ├── list 底层实现原理.png │ │ ├── vector 内存增长机制.png │ │ ├── vector 底层实现原理.png │ │ ├── vector 中 reserve 和 resize 的区别?.png │ │ ├── vector 的元素类型为什么不能是引用?.png │ ├── 03 cc++标准库,常见题型【二】 │ │ ├── 迭代器失效?连续和非连续存储容器的失效?.png │ │ ├── unordered_map 的底层实现原理?哈希表原理.png │ │ ├── 迭代器底层实现原理?以及有哪些种类?.png │ │ ├── deque 底层实现原理.png │ │ ├── STL 容器线程安全性 .png │ │ ├── multiset 的底层实现原理?红黑树原理.png │ │ ├── priority_queue 的底层实现原理.png │ │ ├── 什么时候使用 vector、list、以及 deque?.png │ ├── 01 cc++语言相关,常见题型 │ │ ├── 简述 strcpy、sprintf 与 memcpy 的区别?.png │ │ ├── c_c++ 中强制类型转换使用场景.png │ │ ├── 引用与指针作用以及区别.png │ │ ├── const 关键字的作用.png │ │ ├── extern 关键字作用.png │ │ ├── c++ 什么是深拷贝?什么是浅拷贝?.png │ │ ├── malloc、free和new、delete的区别.png │ │ ├── static 关键字的作用.png │ │ ├── c++ 什么时候生成默认拷贝构造函数?.png │ │ ├── 如何避免野指针?.png │ ├── 07 设计模式,常见题型【二】 │ │ ├── 什么是模板方法?应用场景是什么?.png │ │ ├── 什么是装饰器模式?应用场景是什么?.png │ │ ├── 什么是组合模式,应用场景是什么?.png │ │ ├── 什么是责任链模式?应用场景是什么?.png │ │ ├── 什么是策略模式?应用场景是什么?.png │ │ ├── 什么是观察者模式?应用场景是什么?.png │ │ ├── 什么是代理模式?应用场景是什么?.png │ ├── 10家大厂面试题精选 含答案.zip






