数据结构和算法(67) #
- 复杂度分析:如何分析算法的执行效率和资源消耗? 【答案】
- 复杂度分析:浅析最好、最坏、平均、平摊时间复杂度 【答案】
- 数组:为什么很多编程语言中数组都从0开始编号?
- 链表:原理、应用场景、优缺点、如何实现?
- 链表:如何实现LRU缓存淘汰算法?
- 栈:原理、应用场景、优缺点、如何实现?
- 栈:如何实现浏览器的前进和后退功能?
- 队列:原理、应用场景、优缺点、如何实现?
- 队列:如何实现线程池等有限资源池等请求排队功能?
- 递归:原理、应用场景、优缺点、如何实现?
- 递归:如何用三行代码找到“最终推荐人”?
- 排序:插入排序,原理、应用场景、优缺点、如何实现?
- 排序:为什么插入排序比冒泡排序更受欢迎?
- 排序:快速排序,原理、应用场景、优缺点、如何实现?
- 排序:如何用快排思想在O(n)内查找第K大元素?
- 排序:线性排序,如何根据年龄给100万用户数据排序?
- 排序:排序优化,如何实现一个通用的、高性能的排序函数?
- 二分查找:如何用最省内存的方式实现快速查找功能?
- 二分查找:如何快速定位IP对应的省份地址?
- 跳表:原理、应用场景、优缺点、如何实现?
- 跳表:为什么Redis一定要用跳表实现有序集合?
- 散列表:原理、应用场景、优缺点、如何实现?
- 散列表:Word文档的单词拼写检查功能是如何实现的?
- 散列表:如何打造一个工业级水平的散列表?
- 散列表:为什么经常把散列表和链表放在一起使用?
- 哈希算法:原理、应用场景、优缺点、如何实现?
- 哈希算法:如何防止数据库中的用户信息被脱库?
- 哈希算法:哈希算法在分布式系统中有哪些应用?
- 二叉树:原理、应用场景、优缺点、如何实现?
- 二叉树:什么样的二叉树适合用数组来存储?
- 二叉树:有了高效的散列表,为什么还用二叉树?
- 红黑树:原理、应用场景、优缺点、如何实现?
- 红黑树:为什么工程中都喜欢用红黑树这种平衡二叉树?
- 递归树:如何借助递归树来分析递归算法的时间复杂度?
- 堆和堆排序:为什么说堆排序没有快速排序快?
- 堆和堆排序:如何寻找TOP10热门搜索关键词?
- 堆和堆排序:最大堆,原理、应用场景、优缺点、如何实现?
- 堆和堆排序:斐波那契堆,原理、应用场景、优缺点、如何实现?
- B+树:原理、应用场景、优缺点、如何实现?
- B+树:MySQL数据库索引是如何实现的?
- 图:原理、应用场景、优缺点、如何实现?
- 图:如何存储微博、微信等社交网络中的好友关系?
- 图算法:拓扑排序,原理、应用场景、优缺点、如何实现?
- 图算法:拓扑排序,如何确定代码源文件的编译依赖关系?
- 图算法:广度优先搜索,原理、应用场景、优缺点、如何实现?
- 图算法:深度优先搜索,原理、应用场景、优缺点、如何实现?
- 深度和广度优先搜索:原理、应用场景、优缺点、如何实现?
- 深度和广度优先搜索:如何找出社交网络中的三度好友关系?
- 前缀树(Trie):原理、应用场景、优缺点、如何实现?
- 前缀树(Trie):如何实现搜索引擎的搜索关键词提示功能?
- AC自动机:如何用多模式串匹配实现敏感词过滤功能?
- 贪心算法:原理、应用场景、优缺点、如何实现?
- 贪心算法:如何用贪心算法实现Huffman压缩编码?
- 分治算法:谈一谈大规模计算框架MapReduce中的分治思想
- 回溯算法:原理、应用场景、优缺点、如何实现?
- 回溯算法:从电影《蝴蝶效应》中学习回溯算法的核心思想
- 动态规划:原理、应用场景、优缺点、如何实现?
- 动态规划:如何巧妙解决“双十一”购物时的凑单问题?
- 动态规划:最优子结构、无后效性和重复子问题
- 动态规划:如何实现搜索引擎中的拼写纠错功能?
- 最短路径:地图软件是如何计算出最优出行路径的?
- 位图:如何实现网页爬虫中的URL去重功能?
- 统计问题:如何利用朴素贝叶斯算法过滤垃圾短信?
- 向量空间:如何实现一个简单的音乐推荐系统?
- 搜索:如何用A*搜索算法实现游戏中的寻路功能?
- 并行算法:如何利用并行处理提高算法的执行效率?
- Kruskal算法和Prim算法,原理、应用场景、优缺点、如何实现?
编程语言:Python(28) #
- 基础:Python2和Python3的区别?
- 基础:什么是Python的命名空间?
- 基础:Python数组和列表有什么区别?
- 基础:Python中Lambda函数是什么,举例说明的它的应用场景。
- 基础:为什么Python中的lambda形式没有语句?
- 基础:Python中迭代器和生成器
- 基础:Python中为什么没有函数重载?
- 基础:Python中的self是什么?
- 基础:__init__和__new__方法有什么区别?
- 基础:函数参数*arg和**kwargs分别代表什么?
- 基础:什么是鸭子类型(duck typing)?
- 基础:Python中变量的作用域
- 基础:Python中局部变量和全局变量的规则是什么?
- 基础:range和xrange有什么区别?
- 基础:namedtuple的用法和作用
- 基础:remove()函数和del语句有什么区别?
- 基础:Python装饰器是什么?
- 基础:闭包
- 基础:Python中模块和包的理解
- 基础:“猴子补丁”(monkey patching)
- 基础:Python中的多线程和多进程的应用场景和优缺点
- 基础:线程池的工作原理
- 内存:Python中的浅拷贝和深拷贝
- 内存:Python是如何实现内存管理的?
- 异常:Python的异常处理机制
- 性能:如何剖析Python代码的执行性能?
- 性能:关于Python程序的运行方面,有什么手段能提升性能?
- 工具:静态代码分析
编程语言:Golang(54) #
- 基础:Golang中make和new的区别?
- 基础:数组和切片的区别?
- 基础:for range的时候它的地址会发生变化么?for循环遍历slice有什么问题?
- 基础:go defer,多个defer的顺序,defer在什么时机会修改返回值?
- 基础:uint类型溢出
- 基础:介绍rune类型
- 基础:golang中解析tag是怎么实现的?反射原理是什么?
- 基础:调用函数传入结构体时,应该传值还是指针?
- 基础:silce遇到过哪些坑?
- 基础:go struct能不能比较?
- 基础:Go闭包
- Context:context结构是什么样的?
- Context:context使用场景和用途?
- Channel:channel是否线程安全?锁用在什么地方?
- Channel:go channel 的底层实现原理(数据结构)
- Channel:nil、关闭的channel、有数据的channel,再进行读、写、关闭会怎么样?(各类变种题型)例如:go channel close 后读的问题,向为 nil 的 channel 发送数据会怎么样?
- Channel:向channel发送数据和从channel读数据的流程是什么样的?
- Map:map使用注意的点,并发安全?
- Map:map循环是有序的还是无序的?
- Map:map中删除一个key,它的内存会释放么?
- Map:怎么处理对map进行并发访问?有没有其他方案? 区别是什么?
- Map:nil map和空map有何不同?
- Map:map的数据结构是什么?是怎么实现扩容?
- Map:map取一个key,然后修改这个值,原map数据的值会不会变化
- GMP:什么是GMP?调度过程是什么样的?
- GMP:进程、线程、协程有什么区别?
- GMP:Goroutine调度策略
- GMP:抢占式调度是如何抢占的?
- GMP:M和P的数量问题?
- GMP:协程怎么退出?
- GMP:map如何顺序读取?
- 锁:除了mutex以外还有那些方式安全读写共享变量?
- 锁:golang如何实现原子操作?
- 锁:Mutex是悲观锁还是乐观锁?悲观锁、乐观锁是什么?
- 锁:Mutex有几种模式?
- 锁:goroutine的自旋占用资源如何解决
- 锁:读写锁底层是怎么实现的?
- 同步原语:知道哪些sync同步原语?各有什么作用?
- 同步原语:sync.WaitGroup
- 并发:怎么控制并发数?
- 并发:多个goroutine对同一个map写会panic,异常是否可以用defer捕获?
- 并发:如何优雅的实现一个goroutine池?
- 并发:select 可以用于什么?
- 并发:主协程如何等其余协程完再操作?
- GC:golang gc时会发生什么?
- GC:golang的gc算法是怎么实现的?
- GC:gc中stw时机,各个阶段是如何解决的?
- GC:gc的触发时机?
- 内存:谈谈内存泄露,什么情况下内存会泄露?怎么定位排查内存泄漏问题?
- 内存:golang的内存逃逸是什么?什么情况下会发生内存逃逸?
- 内存:简述golang是如何分配内存的?Channel分配在栈上还是堆上?哪些对象分配在堆上,哪些对象分配在栈上?
- 内存:介绍一下大对象小对象,为什么小对象多了会造成gc压力?
- 内存:堆和栈的区别?golang栈空间管理是怎么样的?
- 内存:当golang服务部署到线上了,发现有内存泄露,该怎么处理?
面向对象与设计模式(74) #
- 面向对象:当我们再谈论面向对象的时候,我们到底在谈论什么?
- 面向对象:封装、继承、多态分别能解决哪些编程问题?
- 面向对象:面向对象相比面向过程有哪些优势?面向过程真的过时了吗?
- 面向对象:有哪些代码设计看似是面向对象,实际上是面向过程风格?
- 面向对象:接口vs抽象类的区别?如何用普通类语法模拟接口和抽象类?
- 面向对象:为何要基于接口而非实现编程?有必要为每个类都定义接口吗?
- 面向对象:为何说要多用组合少用继承?如何决定该用组合还是继承?
- 设计原则:设计模式有哪些原则?
- 设计原则:对于单一职责原则,如何判定一个类的职责是否够“单一”?
- 设计原则:如果做到“对扩展开放、修改关闭”?如何设计可扩展代码?
- 设计原则:里氏替换(LSP)跟多态有何区别?哪些代码违背了LSP?
- 设计原则:接口隔离原则有哪三种应用?原则中的“接口”该如何理解?
- 设计原则:控制反转、依赖反转、依赖注入,这三者有何区别和联系?
- 设计原则:为何说KISS、YAGNI原则看似简单,却经常被用错?
- 设计原则:重复代码就一定违背DRY吗?如何提高代码的复用性?
- 设计原则:如何利用迪米特法则(LOD)实现“高内聚、松耦合”?
- 重构:什么情况下要重构?到底重构什么?又该如何重构?
- 重构:为了保证重构不出错,有哪些非常能落地的技术手段?
- 重构:什么是代码可测试性?如何写出可测试性好的代码?
- 重构:如何通过封装、抽象、模块化、中间层等解耦代码?
- 设计模式:设计模式的分类?
- 设计模式:创建型模式-单例模式(Singleton Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:创建型模式-单例模式,为什么说支持懒加载的双重检测不比饿汉式更优?
- 设计模式:创建型模式-单例模式,为什么不推荐使用单例模式?又有何替代方案?
- 设计模式:创建型模式-单例模式,如何实现多例模式和集群下的分布式单例模式?
- 设计模式:创建型模式-抽象工厂模式(Abstract Factory Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:创建型模式-工厂方法模式(Factory Method Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:创建型模式-工厂模式,为什么说没事不要随便使用工厂模式创建对象?
- 设计模式:创建型模式-工厂模式,如何设计一个 Dependency Injection 框架?
- 设计模式:创建型模式-生成器模式(Builder Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:创建型模式-生成器模式,如何设计实现一个简洁易用的SQL语句生成框架?
- 设计模式:创建型模式-原型模式(Prototype Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:创建型模式-原型模式,如何最快速地深度clone一个HashMap散列表?
- 设计模式:结构型模式-代理模式(Proxy Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:结构型模式-代理模式,代理模式在RPC、缓存、监控等场景中的应用
- 设计模式:结构型模式-桥接模式(Bridge Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:结构型模式-桥接模式,如何实现不同格式和渠道的消息推送系统?
- 设计模式:结构型模式-装饰器模式(Decorator Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:结构型模式-适配器模式(Adapter Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:结构型模式-适配器模式,代理、适配器、桥接、装饰,这四个模式有何区别?
- 设计模式:结构型模式-外观模式(Facade Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:结构型模式-外观模式,如何设计合理的借口粒度以兼顾接口的易用性和通用性?
- 设计模式:结构型模式-组合模式(Composite Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:结构型模式-组合模式,如何设计实现支持递归遍历的文件系统目录树结构?
- 设计模式:结构型模式-享元模式(Flyweight Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:结构型模式-享元模式,如何利用享元模式优化文本编辑器的内存占用?
- 设计模式:行为型模式-观察者模式(Observer Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:行为型模式-观察者模式,详解各种应用场景下观察者模式的不同实现方式
- 设计模式:行为型模式-观察者模式,如何实现一个异步非阻塞的EventBus框架?
- 设计模式:行为型模式-模版方法模式(Template Method Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:行为型模式-模版模式,模版模式与callback回调函数有何区别和联系?
- 设计模式:行为型模式-策略模式(Strategy Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:行为型模式-策略模式,如何避免冗长的if-else/switch分支判断代码?
- 设计模式:行为型模式-策略模式,如何实现一个可以给不同大小文件排序的小程序?
- 设计模式:行为型模式-责任链模式(Chain of Responsibility)原理、核心思想、应用场景、如何实现?
- 设计模式:行为型模式-责任链模式,如何实现可灵活扩展算法的敏感信息过滤框架?
- 设计模式:行为型模式-责任链模式,框架中常用的过滤器、拦截器是如何实现的?
- 设计模式:行为型模式-状态模式(State Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:行为型模式-状态模式,游戏、工作流引擎中常用的状态机是如何实现的?
- 设计模式:行为型模式-迭代器模式(Iterator Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:行为型模式-迭代器模式,相比直接遍历集合数据,使用迭代器有哪些优势?
- 设计模式:行为型模式-迭代器模式,在遍历集合的同时为什么不能增删集合元素?
- 设计模式:行为型模式-迭代器模式,如何设计实现一个支持“快照”功能的iterator?
- 设计模式:行为型模式-访问者模式(Visitor Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:行为型模式-访问者模式,访问者模式诞生的思维过程
- 设计模式:行为型模式-访问者模式,为什么支持双分派的语言就不需要访问者模式?
- 设计模式:行为型模式-备忘录模式(Memento Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:行为型模式-备忘录模式,对于大对象的备份和恢复,如何优化内存和时间的消耗?
- 设计模式:行为型模式-命令模式(Command Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:行为型模式-命令模式,如何利用命令模式加轮训机制搭建手游后端架构?
- 设计模式:行为型模式-解释器模式(Interpreter Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:行为型模式-解释器模式,如何设计实现一个自定义接口告警规则功能?
- 设计模式:行为型模式-中介模式(Mediator Pattern)原理、核心思想、应用场景、如何实现?
- 设计模式:行为型模式-中介模式,什么时候用中介模式?什么时候用观察者模式?
操作系统(47) #
- 基础:什么是操作系统?
- 基础:操作系统主要有哪些功能?
- 基础:什么是用户态和内核态?
- 基础:为什么要有用户态和内核态?只有一个内核态不行么?
- 基础:用户态和内核态是如何切换的?
- 基础:什么是系统调用?
- 基础:系统调用的过程是怎么样的?
- 进程与线程:什么是进程和线程?
- 进程与线程:进程和线程的区别是什么?
- 进程与线程:有了进程为什么还需要线程?
- 进程与线程:为什么要使用多线程?
- 进程与线程:线程间的同步的方式有哪些?
- 进程与线程:PCB 是什么?包含哪些信息?
- 进程与线程:进程有哪几种状态?
- 进程与线程:进程间的通信方式有哪些?
- 进程与线程:进程的调度算法有哪些?
- 进程与线程:什么是僵尸进程和孤儿进程?
- 进程与线程:如何查看是否有僵尸进程?
- 死锁:什么是死锁?
- 死锁:列举一个操作系统发生死锁的例子?
- 死锁:产生死锁的四个必要条件是什么?
- 死锁:写一个模拟产生死锁的代码?
- 死锁:解决死锁的方法
- 内存管理:内存管理主要做了什么?
- 内存管理:什么是内存碎片?
- 内存管理:常见的内存管理方式有哪些?
- 内存管理-虚拟内存:什么是虚拟内存?有什么用?
- 内存管理-虚拟内存:没有虚拟内存有什么问题?
- 内存管理-虚拟内存:什么是虚拟地址和物理地址?
- 内存管理-虚拟内存:什么是虚拟地址空间和物理地址空间?
- 内存管理-虚拟内存:虚拟地址与物理内存地址是如何映射的?
- 内存管理-分段机制:段表有什么用?地址翻译过程是怎样的?
- 内存管理-分段机制:分段机制为什么会导致内存外部碎片?
- 内存管理-分页机制:页表有什么用?地址翻译过程是怎样的?
- 内存管理-分页机制:单级页表有什么问题?为什么需要多级页表?
- 内存管理-分页机制:TLB 有什么用?使用 TLB 之后的地址翻译流程是怎样的?
- 内存管理-分页机制:换页机制有什么用
- 内存管理-分页机制:什么是页缺失?
- 内存管理-分页机制:常见的页面置换算法有哪些?
- 内存管理:分页机制和分段机制有哪些共同点和区别?
- 内存管理:段页机制
- 内存管理:局部性原理
- 文件系统:文件系统主要做了什么?
- 文件系统:硬链接和软链接有什么区别?
- 文件系统:硬链接为什么不能跨文件系统?
- 文件系统:提高文件系统性能的方式有哪些?
- 文件系统:常见的磁盘调度算法有哪些?
网络(62) #
- 基础:计算机网络体系结构
- 基础:计算机网络体系结构每一层对应的网络协议有哪些?
- 基础:数据在各层之间是怎么传输的?
- 基础:从浏览器地址栏输入URL到显示主页的过程?
- 基础:DNS的解析过程?
- 基础:WebSocket与Socket的区别?
- HTTP:HTTP常用的状态码及其含义?
- HTTP:HTTP有哪些请求方式?
- HTTP:GET和POST的区别?
- HTTP:GET的长度限制是多少?
- HTTP:HTTP请求的过程与原理?
- HTTP:HTTP的报文结构?
- HTTP:URI和URL有什么区别?
- HTTP:HTTP 1.0,1.1,2.0的区别?
- HTTP:HTTP/3
- HTTP:HTTP如何实现长连接?在什么时候会超时?
- HTTP:HTTP与HTTPS有哪些区别?
- HTTP:为什么要用HTTPS?解决了哪些问题?
- HTTP:HTTPS工作流程是怎样的?
- HTTP:客户端怎么去校验证书的合法性?
- HTTP:如何理解HTTP协议是无状态的?
- HTTP:Session和Cookie有什么联系和区别?
- TCP:TCP的三次握手机制
- TCP:TCP握手为什么是三次,为什么不能是两次?不能是四次?
- TCP:三次握手中每一次没收到报文会发生什么情况?
- TCP:第二次握手传回了ACK,为什么还要传回SYN?
- TCP:第3次握手可以携带数据吗?
- TCP:半连接队列和SYN Flood攻击的关系?
- TCP:TCP四次挥手的过程?
- TCP:TCP挥手为什么需要四次呢?
- TCP:TCP四次挥手过程中,为什么需要等待 2MSL, 才进入CLOSED关闭状态?
- TCP:保活计时器有什么用?
- TCP:CLOSE-WAIT和TIME-WAIT的状态和意义?
- TCP:TIME_WAIT状态过多会导致什么问题?怎么解决?
- TCP:TCP报文头部的格式?
- TCP:TCP是如何保证可靠性的?
- TCP:TCP的流量控制
- TCP:TCP的滑动窗口
- TCP:Nagle算法和延迟确认
- TCP:TCP的拥塞控制
- TCP:TCP的重传机制
- TCP:TCP的粘包和拆包
- TCP:一个TCP连接可以发送多少次HTTP请求?
- UDP:TCP和UDP的区别?
- UDP:为什么QQ采用UDP协议?
- UDP:UDP协议为什么不可靠?
- UDP:DNS为什么要用UDP?
- IP:IP协议的定义和作用?
- IP:IP地址有哪些分类?
- IP:域名和IP的关系?一个IP可以对应多个域名吗?
- IP:IPV4地址不够如何解决?
- IP:ARP协议的工作过程?
- IP:为什么既有IP地址,又有MAC地址?
- IP:ICMP协议的功能?
- IP:Ping的原理?
- 网络安全:有哪些安全攻击?
- 网络安全:DNS劫持
- 网络安全:什么是CSRF攻击?如何避免?
- 网络安全:什么是DoS、DDoS、DRDoS攻击?
- 网络安全:什么是XSS攻击,如何避免?
- 网络安全:对称加密与非对称加密有什么区别?
- 网络安全:RSA和AES算法有什么区别?
数据库(73) #
- 范式:三大范式
- 范式:为什么会有三大范式?
- 范式:什么场景下不用遵循三大范式?举例
- 概念:什么是最左前缀原则?
- 概念:WAL 是什么?有什么好处?
- 概念:什么是幻读,脏读,不可重复读呢?
- 概念:什么是内连接、外连接、交叉连接、笛卡尔积?
- 概念:MySQL的内连接、左连接、右连接有什么区别?
- 类型:MySQL中varchar与char的区别?
- 类型:MySQL中blob和tex的区别?
- 类型:MySQL中DATETIME和TIMESTAMP的异同?
- 类型:MySQL中in和exists的区别?
- 类型:MySQL中drop、delete与truncate的区别?
- 类型:MySQL中UNION与UNION ALL的区别?
- 类型:SQL的隐式数据类型转换?
- 存储:MyISAM与InnoDB的区别是什么?
- 索引:什么是索引?
- 索引:索引失效的场景有哪些?
- 索引:什么是回表?
- 索引:什么是索引下推?
- 索引:什么是覆盖索引?
- 索引:聚集索引与非聚集索引的区别
- 索引:MySQL索引使用有哪些注意事项呢?
- 视图:为什么要使用视图?什么是视图?
- 视图:视图有哪些特点?哪些使用场景?
- 视图:视图的优点、缺点
- 事务:什么是事务?其特性是什么?
- 事务:事务的隔离级别有哪些?MySQL的默认隔离级别是什么?
- 事务:MySQL事务的四大特性以及实现原理
- 存储过程:什么是存储过程?有哪些优缺点?
- 日志:MySQL中binlog是做什么的?
- 日志:MySQL中undolog是做什么的?
- 日志:MySQL中relaylog是做什么的?
- 日志:MySQL中redolog是做什么的?
- 日志:MySQL中redolog是怎么记录日志的?
- 日志:MySQL中redolog和binlog的区别是什么?
- 锁:MySQL中有哪些锁?
- 锁:数据库的乐观锁和悲观锁
- 锁:MySQL遇到过死锁问题吗,你是如何解决的?
- 原理:为什么VarChar建议不要超过255?
- 原理:MySQL中MVCC有什么作用?
- 原理:MySQL中buffer pool是做什么的?
- 原理:MySQL主从之间是怎么同步数据的?
- 原理:MySQL分布式事务怎么实现?
- 原理:MySQL一行记录是怎么存储的?
- 原理:MySQL中一条查询语句是怎么执行的?
- 原理:MySQL使用InnoDB的情况下,一条更新语句是怎么执行的?
- 原理:InnoDB事务为什么要两阶段提交?
- 原理:MySQL为什么采用B+树,而不是B-树?
- 原理:MySQL删除表数据后表的大小却没有变动,这是为什么?
- 原理:为什么不要使用长事务?
- 应用设计:在MySQL中怎么存储emoji?
- 应用设计:在MySQL中记录货币用什么字段类型比较好?
- 应用设计:MySQL中count(1)、count(*)与count(列名)的区别?
- 应用设计:普通索引和唯一索引该怎么选择?
- 应用设计:一条SQL语句查询一直慢会是什么原因?
- 应用设计:一条SQL语句查询偶尔慢会是什么原因?
- 应用设计:分库与分表的设计
- 应用设计:SQL性能调优思路
- 应用设计:为什么推荐使用自增id作为主键?
- 应用设计:如何选择合适的分布式主键方案?
- 应用设计:在高并发情况下,如何做到安全的修改同一行数据?
- 应用设计:如果某个表有近千万数据,CRUD比较慢,如何优化?
- 应用设计:如何写sql能够有效的使用到复合索引?
- 应用设计:大表查询的优化方案
- 应用设计:什么是数据库连接池?为什么需要数据库连接池呢?
- 应用设计:百万级别或以上的数据,你是如何删除的?
- 应用设计:如何优化慢查询?
- 集群维护:MySQL主从延迟要怎么解决?
- 集群维护:MySQL集群配置调优思路
- 集群维护:MySQL故障诊断思路
- 集群维护:MySQL如何备份恢复?
消息队列(16) #
- 消息模型:主题和队列有什么区别?
- 选型:为什么需要消息队列?或者说消息队列主要解决哪几类场景问题?
- 选型:如何选择消息队列?
- 原理:Kafka和RocketMQ的消息复制实现的差异点在哪?
- 原理:Kafka与RocketMQ如何实现事务?
- 原理:Kafka如何实现高性能IO?
- 原理:Kafka Consumer消息消费的实现过程
- 设计:如何利用事务消息实现分布式事务?
- 设计:如何确保消息不丢失?
- 设计:消息积压了该如何处理?
- 设计:如何使用异步设计提升系统性能?
- 设计:如何实现高性能的异步网络传输?
- 序列化与反序列化:如何通过网络传输结构化数据?
- MQTT协议:如何支持海量的在线IoT设备?
缓存(31) #
- 选型:为什么用缓存?
- 原理:缓存如何实现高性能?
- 原理:缓存如何实现高并发?
- Redis数据结构:Redis的数据类型和使用场景
- Redis数据结构:五种常见的Redis数据类型是怎么实现?
- Redis线程模型:Redis是单线程的吗?
- Redis线程模型:Redis的单线程模型
- Redis线程模型:为什么Redis单线程模型也能效率这么高?
- Redis线程模型:Redis 6.0之前为什么使用单线程?
- Redis线程模型:Redis 6.0之后为什么引入了多线程?
- Redis持久化:Redis如何实现数据不丢失?
- Redis持久化:AOF日志是如何实现的?
- Redis持久化:RDB快照是如何实现的呢?
- Redis持久化:为什么会有混合持久化?
- Redis集群:Redis如何实现服务高可用?
- Redis集群:集群脑裂导致数据丢失怎么办?
- Redis集群:Redis的哨兵原理
- Redis过期删除与内存淘汰:Redis使用的过期删除策略是什么?
- Redis过期删除与内存淘汰:Redis 持久化时,对过期键会如何处理的?
- Redis过期删除与内存淘汰:Redis 主从模式中,对过期键会如何处理?
- Redis过期删除与内存淘汰:Redis 内存满了,会发生什么?
- Redis过期删除与内存淘汰:Redis 内存淘汰策略有哪些?
- Redis过期删除与内存淘汰:LRU 算法和 LFU 算法有什么区别?
- 缓存设计:用缓存可能出现的问题
- 缓存设计:如何避免缓存穿透的问题?
- 缓存设计:如何避免缓存雪崩的问题?
- 缓存设计:如何避免缓存击穿的问题?
- 缓存设计:如何设计一个缓存策略,可以动态缓存热点数据呢?
- 缓存设计:如何保证缓存和数据库数据的一致性?
- 缓存设计:当查询缓存报错时,怎么提高可用性?
- 缓存设计:缓存数据的淘汰策略有哪些?
Elasticsearch(12) #
- 原理:Elasticsearch是如何实现master选举的?
- 原理:什么是倒排索引?它在Elasticsearch中的作用是什么?
- 原理:Elasticsearch索引文档的过程
- 原理:Elasticsearch搜索的过程
- 原理:Elasticsearch更新和删除的过程
- 原理:Elasticsearch在高并发下如何保证读写一致性?
- 使用:如何在Elasticsearch中执行模糊搜索(Fuzzy Search)?
- 使用:如何在Elasticsearch中执行复杂的聚合操作?
- 使用:如何处理Elasticsearch中的数据一致性?
- 维护:如何优化Elasticsearch的性能?
- 维护:如何保护Elasticsearch中的数据安全性?
- 维护:如何处理Elasticsearch中的数据同步和复制?
云原生(70) #
- 概念:Linux Namespaces
- 概念:Linux Cgroups
- 概念:OCI
- 概念:CNI、CSI、CRI
- 概念:Kubernetes的适用场景、优势及特点?
- 概念:Kubernetes的缺点或当前的不足?
- 概念:Kubernetes和Docker的关系?
- 概念:Kubernetes的核心组件有哪些?作用是什么?
- 概念:Kubernetes中命名空间的作用是什么?
- 概念:Kubernetes中什么是静态Pod?
- 概念:Kubernetes中Pod可能位于的状态?
- 概念:Kubernetes针对pod资源对象的健康监测机制?
- 概念:Kubernetes就绪探针(ReadinessProbe探针)与存活探针(livenessProbe探针)区别是什么?
- 概念:Kubernetes中Pod的重启策略?
- 概念:Kubernetes Pod的常见调度方式?
- 概念:Kubernetes初始化容器(init container)
- 概念:Kubernetes标签与标签选择器的作用是什么?
- 概念:Kubernetes常用的标签分类有哪些?
- 概念:Kubernetes有几种查看标签的方式?
- 概念:Kubernetes Deployment升级过程
- 概念:Kubernetes Deployment升级策略
- 概念:Kubernetes DaemonSet类型的资源特性
- 概念:Kubernetes自动扩容机制
- 概念:Kubernetes Service类型
- 概念:Kubernetes Service分发后端的策略
- 概念:Kubernetes Headless Service
- 概念:Kubernetes外部如何访问集群内的服务?
- 概念:Kubernetes ingress
- 概念:Kubernetes镜像的下载策略
- 概念:Kubernetes RBAC及其特点(优势)
- 概念:Kubernetes Secret作用
- 概念:Kubernetes Secret有哪些使用方式
- 概念:Kubernetes PodSecurityPolicy机制
- 概念:Kubernetes PodSecurityPolicy机制能实现哪些安全策略
- 概念:Kubernetes共享存储的作用
- 概念:Kubernetes数据持久化的方式有哪些
- 概念:Kubernetes PV和PVC
- 概念:Kubernetes PV生命周期内的阶段
- 概念:Kubernetes所支持的存储供应模式
- 原理:容器和主机部署应用的区别是什么?
- 原理:Kubernetes如何实现集群管理?
- 原理:Kubernetes各模块如何与API Server通信?
- 原理:Kubernetes Scheduler作用及实现原理
- 原理:Kubernetes Scheduler使用哪两种算法将Pod绑定到worker节点?
- 原理:Kubernetes kubelet的作用
- 原理:Kubernetes kubelet监控Worker节点资源是使用什么组件来实现的
- 原理:Kubernetes 各个pod是如何访问kube-api-server的?
- 原理:Kubernetes 创建一个 pod 的过程是怎么样的?
- 原理:Kubernetes 删除一个 pod 的过程是怎么样的?
- 原理:Kubernetes RC的机制
- 原理:Kubernetes Replica Set和Replication Controller之间有什么区别?
- 原理:Kubernetes网络模型
- 原理:Kubernetes CNI模型
- 原理:Kubernetes中flannel的作用
- 原理:Kubernetes Calico网络组件实现原理
- 原理:Kubernetes kube-proxy的作用?
- 原理:Kubernetes kube-proxy iptables的原理?
- 原理:Kubernetes kube-proxy ipvs的原理?
- 原理:Kubernetes kube-proxy ipvs和iptables的异同?
- 原理:Kubernetes如何保证集群的安全性?
- 原理:Kubernetes准入机制
- 原理:Kubernetes CSI模型
- 原理:Kubernetes Worker节点加入集群的过程
- 原理:Kubernetes Pod如何实现对节点的资源控制
- 原理:Kubernetes Requests和Limits如何影响Pod的调度
- 原理:Kubernetes Operator模式
- 维护:Kubernetes pod一致处于pending状态一般有哪些情况,怎么排查?
- 维护:Kubernetes如何进行优雅的节点关机维护?
- 维护:Kubernetes集群联邦
- 维护:Prometheus+Grafana监控
AI(23) #
- LLM:生成式语言模型的工作机理
- LLM:解释LLM中token的概念
- LLM:在NLP任务中,使用Transformer的架构与使用RNN的架构相比,有什么优势?
- LLM:如何评估LLM的性能?
- LLM:LLM是如何预训练的?
- LLM:NSP预训练任务
- LLM:LLM中的tokenisation技术
- LLM:在开发LLM时,怎样通过人为方法减少LLM的偏见?
- LLM:哪些因素会导致LLM中的偏见?
- LLM:在Transformer中,同一个单词在不同的句子中可以有不同的注意力权重吗?
- LLM:LLM中的因果语言建模CLM与屏蔽语言建模MLM有什么区别?
- LLM:RLHF完整训练过程是什么?
- LLM:GPT和bert有什么不一样?
- LLM:Wordpiece与BPE之间有什么区别?
- LLM:BERT中的word embedding、position embedding和positional encoding有什么区别?
- LLM:Adaptive Softmax在LLM中有何用处?
- LLM:如何减轻LLM中的“幻觉”现象?
- LLM:有哪些方法可以降低LLM训练时的显存占用?
- LLM:Lora微调方法的局限性
- LLM:bf16、fp16半精度训练的区别?
- LLM:解释混合精度训练的具体流程
- LLM:RLHF过程中RM随着训练过程得分越来越高,效果就一定好吗?有没有极端情况?
- LLM:解释P-tuning 的工作原理,并说明它与传统的 fine-tuning方法的不同之处。
场景和系统设计(19) #
- 概念:分布式系统设计的8个错误假设
- 概念:CAP、ACID、BASE
- 概念:一致性、一致性模型
- 概念:可用性、可用性模式
- 概念:负载均衡(七层、四层)、负载均衡算法
- 概念:“4+1"视图、C4、UML
- 系统设计:如何处理一个系统设计的面试题?
- 系统设计:设计分布式ID生成器
- 系统设计:设计短网址服务
- 系统设计:设计一个信息流(news feed)。例如Facebook用户首页的信息流,微博用户的信息流,等等。
- 系统设计:给定一个公共API,限制每个用户每秒只能调用1000次,如何实现?
- 系统设计:设计一个定时任务调度器
- 系统设计:设计一个线程安全的HashMap
- 系统设计:实时输出最近一个小时内访问频率最高的10个IP
- 系统设计:设计一个负载均衡器
- 系统设计:设计一个Key-Value存储引擎
- 系统设计:设计一个网络爬虫,包含实现并发下载、网址去重、防IP被禁等等
- 系统设计:实现PageRank算法,基于分布式场景
- 系统设计:设计一个搜索引擎,包含下载、索引、分析、查询系统
参考资料 #
- 数据结构与算法之美,极客时间
- Python面试宝典-基础篇-2020
- Python面试题和答案(2024年收集更新)
- 最强面试题整理第一弹:Python 基础面试题(附答案)
- Golang常见面试题
- Go 进阶面试题汇总
- 设计模式之美,极客时间
- 2.1万字,30张图详解操作系统常见面试题(收藏版)
- 计算机网络面试题,63道计算机网络八股文
- 面试八股文之 MySQL
- MySQL面试题,79道MySQL八股文
- MySQL数据库经典面试题解析
- 消息队列高手课,极客时间
- 缓存面试题
- 相关缓存面试问题总结(一)
- Redis 常见面试题
- 小林 x 图解计算机基础
- 精选 8 道 ES 高频面试题和答案
- 干货 | BAT等一线大厂 Elasticsearch面试题解读
- Elasticsearch搜索引擎常见面试题总结
- 云原生面试题
- 23 个必知必会的 Kubernetes 高频面试题
- 尼恩面试宝典专题38:K8S面试题(史上最全、持续更新)
- 91道常见的Kubernetes面试题总结
- zixian2021/AI-interview-cards: 最完整的AI算法面试题目仓库
- donnemarti/system-design-primer
- 系统设计面试题精选