算法

  1. 三数之和

    https://leetcode-cn.com/problems/3sum/

  2. 删除字符串里面的 n 个数字来得到最小数字

  3. 二叉树的 Z 字遍历

  4. 一个整数序列,找出任意一个峰值

  5. 一个数组 nums 表示零钱面额,每种面额无限张,求金额 N 的组成有多少种

  6. 一个数组找出第一个不存在的正整数

  7. 长度为 n 的数组,数字范围为 0 – n-1,找出重复数字?时间复杂度 O(n),空间复杂度 O(1)

  8. 数组 a 的长度为 n,n >= 3, a[0] < a[1], a[n-2] > a[n-1] 相邻元素不相等,找出其中一个 m,使得 a[m-1] < a[m] && a[m] > a[m+1] 例如:[-1,8,0,9,10,1] => m=1,4

  9. 合并两个有序数组

  10. 实现一个找一棵树两个节点的最近父节点 时间复杂度O(1)

  11. 合并矩阵

  12. 给一个字典和一个字符串,写一个函数返回这个字符串是否可以由这个字典里面的单词组成

  13. 两个栈实现队列

  14. 输入一个数组,数组由 0 或 1 组成,输入数字 K,最多能把 K 个 0 变成 1,求最长的 1 的子数组长度(双指针)

  15. 两个树合并成一个,同位置相加

  16. 复杂链表的复制 时间复杂度 O(1) 空间复杂度 O(n) 有向图的复制 、分隔链表

  17. 将一颗二叉树转化成单链表?将每个节点的左子树插入该节点和其右子树之间,左子树指向 NULL

  18. 最长不重复连续子串

  19. 无序数组 a+b+c=0 leetcode 15 题

  20. K 个有序链表合并

  21. 字符匹配子串

  22. 二叉树找多个节点的公共祖先

  23. 旋转升序数组,23 30 45 67 90 1 6 12 19 ,给出 target,返回地理位置,不存在则返回 -1

  24. 给一个无序整数数组,对于自然数 1,2,…n,找出第一个丢失的自然数。比如 5,9,-1,3,1 返回 2,对于 7,4,2,9,5 返回 1,对于 -1,3,1,2,4,-2 返回 5。需要 O(1),O(n) 时间复杂度

语言

  1. golang defer – 解决
  2. c++ core dump 如何调试的 – 解决
  3. 怎么分析内存泄露? tcmalloc 具体算法?malloc 函数是线程安全的吗?为什么? malloc 线程安全但是不可重入
  4. 进程分配的内存什么时候会释放回给操作系统?
  5. c++ 宏和内联的区别?内联在什么情况下会失效?— 解决
  6. do {}while(0); 这种代码的作用?作为宏的时候不会出错 – 解决
  7. c++ 智能指针?线程安全吗?为什么?– 解决
  8. 函数指针和访函数的区别?仿函数的目的是?
  9. 闭包是什么?c++ 闭包的实现?
  10. go 协程是怎么切换的? io 阻塞操作时后流程 gmp – 解决
  11. 垃圾回收 – 解决

组件

kafka:

  1. kafka broker 和 partition 的关系 – 解决
  2. kafka 和 rabbitmq 的选型时如何进行选择的 – 解决
  3. kafka 中如何保障消息的稳定性?如何处理消息堆积? – 解决
  4. zookeeper 原理 选举原理?zookeeper 的obverser 有什么作用
  5. kafka 和 zookeeper

mysql:

  1. mysql 事务隔离级别?存储结构?聚簇索引、覆盖索引、索引自增ID 好处?主从同步方式 – 解决
  2. mysql 隔离级别 锁 索引 B+ 树和 B 树的比较 索引优化手段?慢查询如何定位?explain 相关字段 – 慢查询
  3. MySQL 的聚簇索引和非聚簇索引的差别是什么? – 解决
  4. MYSQL MVCC ACID – 解决
  5. 保证数据库和缓存的一致性有哪些方法?— 解决 架构 缓存的使用
  6. 数据库 乐观锁、如何实现一个乐观锁 – 解决
  7. MySQL 保证数据一致性 – 解决
  8. MySQL MVCC 介绍 如何实现 – 解决
  9. MySQL 的联合索引?原理 – 解决
  10. MySQL 持久化数据 – 解决
  11. 使用 MySQL 时,在读多写少以及读少写多两种场景下如何做相关优化
  12. 关系型数据库的性能优化

redis:

  1. redis cluster 数据结构 string zset list hash 实现 新增删除节点的操作 各个类型的原理 跳表索引怎么维护,插入一个数据索引怎么变化的?
  2. codis 是否了解,redis 集群方式?redis cluster 和 codis 对比,增删节点操作有什么差别?
  3. Redis 数据过期策略,数据持久化策略 RDB 实现。fork cow(写时拷贝 copy on write) 原理 – 解决
  4. Redis 的 zset 实现原理(跳表)跳表时间复杂度 – 解决
  5. redis 和 mysql 的不同?有什么特点? — 解决
  6. redis 的扩缩容
  7. redis 持久化存储 redis 重点/源码 – 解决

nginx:

  1. nginx 为什么支持高并发?基于什么原理?有哪些负载均衡模式?说一下不同模式的应用场景?— 解决
  2. nginx 轮询方式?以及区分?惊群效应?nginx 如何解脱惊群效应 – 解决

其他:

  1. protobuf 的编解码
  2. docker 怎么隔离资源 – 解决
  3. ServiceMesh 原理
  4. select 和 apoll 的差别是什么?为什么 epoll 的处理速度要高于 select ? — 解决
  5. 服务治理都有哪些模块?注册中心原理?链路监控的原理,并发调用多个下游服务如何区分这些请求?
  6. 全链路压测怎么做?

操作系统和网络

  1. TCP 三次握手 四次挥手 TCP 交互过程中的各个状态 滑动窗口的作用。什么时候滑动窗口为 0
  2. TCP 的 time_wait 状态是怎么产生?为什么会有这个状态?time_wait 为什么要等 2MSL 时间?TCP 重传?
  3. http 的 get 和 post 的区别,怎么使用 – 解决
  4. https tls/ssl 握手的基本流程?两个随机数是干什么的? – 解决
  5. RSA – 解决
  6. HTTP2 vs HTTP 1.1 – 解决
  7. 孤儿进程和守护进程?
  8. 虚拟内存、进程切换、进程通信
  9. TCP 端口号范围 TCP与UDP段结构中端口地址都是16比特,可以有在0—65535范围内的端口号。 对于这65536个端口号有以下的使用规定 : (1)端口号小于256的定义为常用端口,服务器一般都是通过常用端口号来识别的。 — 解决
  10. B 类 IP 地址范围 128.0.0.0~191.255.255.255,默认网络掩码为:255.255.0.0;B类地址分配给一般的中型网络 – 解决
  11. 多路复用 – 解决

架构设计

  1. zeekeeper 在 kafka 中的作用?— 解决

ZooKeeper 的作用有:broker 注册、topic 注册、producer 和 consumer 负载均衡、维护 partition 与 consumer 的关系、记录消息消费的进度以及 consumer 注册等

https://gitbook.cn/books/5ae1e77197c22f130e67ec4e/index.html#:~:text=%E5%9C%A8%E5%9F%BA%E4%BA%8EKafka%20%E7%9A%84%E5%88%86%E5%B8%83,%E8%BF%9B%E5%BA%A6%E4%BB%A5%E5%8F%8Aconsumer%20%E6%B3%A8%E5%86%8C%E7%AD%89%E3%80%82

  1. 分布式 Id 如何生成 – 解决

UUID、基于数据库自增ID、基于数据库集群模式、基于数据库的号段模式、基于 Reids 模式、基于雪花算法模式

https://zhuanlan.zhihu.com/p/107939861

  1. 两个微服务相互依赖怎么办?
  2. 缓存一致性,怎么解决?追问先缓存写版本号,再更新数据库,再写缓存这个方案怎么样?
  3. 怎么理解微服务、高可用
  4. 线程池
  5. 微服务如何通信
  6. 系统设计,直播答题,答对 10 道题能分大奖,如何设计这个系统,如果有 100 万用户同时答题会怎么样?如何现实用户的实时排名?
  7. 千万用户的榜单怎么设计?– 解决
  8. 实现一小时内访问频度最大的十个 ID 的返回?
  9. 二维表里随机一些点,如何找一条直线上点更多
  10. 一个文件很大,一行一个字符串,如何找出现最多的 K 个字符串
  11. 微信红包设计 1. 发红包给个人或者是群里,可以等分可以随机分 2K qps。2. 拆红包,按顺序来, 2K qps 3. 从用户维度查询红包列表。 4. 从红包维度查询红包详情列表,10 亿数据
  12. 一个生成者消费者模式
  13. 设计一个限流组件、限流算法 (漏桶、令牌桶)重要 – 解决
  14. 怎么实现 LRU — 解决
  15. 微信点赞好友可见的方案及优化
  16. 设计一个负载均衡系统 – 解决
  17. 如何解决缓存穿透?– 解决
  18. 甲乙两个人从两堆个数为 10 的石子中,两人每次均只能取出 1-5 个并且不允许同时从两堆中去,甲先手,请问两人中谁有必胜的策略,策略是什么?
  19. 给一个正整数 n,如果 n 为奇数,可赋值为 n+1 或者 n-1;如果 n 为偶数,可赋值 n/2;求 n 通过最少多少次赋值变为 1
  20. 有一千瓶水,其中 1 瓶有毒,猪喝水后毒会在一个小时后发作,请问 1 个小时的时候,最少用多少头猪,可以试出那瓶有毒的水?
  21. 发货系统的架构和细节?比如数据一致性
  22. 秒杀活动的系统,更宏观的设计

其他

  1. 最近遇到有挑战的事情?怎么解决?难度最大
  2. 工作中遇到最难解决的问题?怎么解决
  3. 最近在看什么书?学习哪些内容
  4. 你认为什么是高质量的代码
  5. 你的工作经历,有哪些可拓展性的设计
  6. 你觉得自己最突然的特质是什么
  7. 为什么要换工作?

准备监控相关的知识,不同监控系统之间的对比,全链路监控?

20-4月前:https://docs.qq.com/doc/DWUx1WHh4SFpPemNL

增加题目

mysql 索引优化
mysql 主从同步
mysql 扩容
mysql 索引下推
select * from t_name order by limit 100000 10 优化

redis 为什么这么快 单线程、多路复用、c语言实现、内存数据库
redis 扩缩容 增量式、并发进行
redis 主从复制
redis 批量操作

什么是关系型数据库,关系的意思

https 如何验证ca证书
特殊IP地址

tcmalloc 算法分配内存
fork cow 原理
守护进程
信号量
cpu 100% 问题
内存溢出和内存泄露 如何避免
内存分段分页

分布式事务
分布式锁

go map 的扩容机制
sync.map
sync.mutex