└── README.md /README.md: -------------------------------------------------------------------------------- 1 | [toc] 2 | 3 | ### Golang_coder_interview 4 | 5 | 6 | 7 | #### Algo 8 | 9 | ##### 1.字符串 10 | 11 | - [ ] 如何原地交换两个数 12 | - [ ] 字符串之间保留一个空格之后将字符串翻转 13 | - [ ] 找到字符串的最长无重复字符子串 14 | - [ ] 最短回文串 15 | - [ ] 最长回文子串长度 16 | - [ ] 数组中重复的数据 17 | - [ ] 1到n乱序排列的数据,少了其中一个,找出这个数 18 | - [ ] 26进制字母求和 19 | - [ ] 两个字符串最长公共子串 20 | - [ ] ⼀个40亿的⽆序数字,请找出不存在的数字 21 | 22 | 23 | 24 | ##### 2.dp 25 | 26 | - [ ] 盛最多水的容器 27 | - [ ] 爬楼梯问题 28 | - [ ] 接雨水 29 | - [ ] 岛屿问题(高频) 30 | - [ ] 力扣 221最大正方形 31 | - [ ] 力扣 279 完全平方数 32 | - [ ] 力扣 70 爬楼梯 33 | - [ ] 力扣 121 买卖股票的最佳时机 34 | - [ ] 力扣 62 不同路径 35 | - [ ] 力扣 509 斐波那契数 36 | 37 | 38 | 39 | ##### 3.数组 40 | 41 | - [ ] 力扣 485 最大连续1的个数 42 | - [ ] 力扣 283 移动零 43 | - [ ] 力扣 27 移除元素 44 | - [ ] 力扣 933 最近的请求次数 45 | - [ ] 力扣 225 用队列实现栈 46 | - [ ] 力扣 622 设计循环队列 47 | - [ ] 力扣 641 设计循环双端队列 48 | - [ ] 两个有序数组合并 49 | - [ ] 两个有序数组合并,返回合并之后的中位数 50 | - [ ] 数组中值出现了一次的数字 51 | - [ ] 寻找两个升序数组的第K大值 52 | - [ ] 无序数组找中位数 53 | - [ ] 多数组 笛卡尔积,例:['s',['a', 'b'], [1, 2], 'x'],输出:[["s","a",1,"x"],["s","a",2,"x"],["s","b",1,"x"],["s","b",2,"x"]] 54 | - [ ] ⼀个很⼤的List,⾥⾯都是int类型,如何实现加和?因为电⾯,就说了⼀下思路 55 | 56 | 57 | 58 | ##### 4.树 59 | 60 | - [ ] 二叉树的右视图 61 | - [ ] 二叉数中序遍历 62 | - [ ] 判断二叉树是否为平衡二叉树 63 | - [ ] 二叉树节点的公共祖先 64 | - [ ] 二叉树的最大深度 65 | - [ ] 通过中序遍历序列和先序序列恢复二叉树 66 | - [ ] 二叉树的中序遍历和层次遍历 67 | - [x] [二叉树的后续遍历](https://leetcode-cn.com/problems/binary-tree-postorder-traversal/) 68 | 69 | 70 | 71 | ##### 5.排列 72 | 73 | - [ ] 接口怎么设计,需要实现方实现什么 74 | - [ ] 怎么调用这个通用的排序方法 75 | - [ ] 全排列 76 | 77 | 78 | 79 | ##### 6.链表 80 | 81 | - [ ] 力扣 206 反转链表 82 | - [ ] 力扣 203 移除链表元素 83 | - [ ] 合并两个有序的单链表 84 | - [ ] 链表奇递增 偶递减,整体递增 85 | - [ ] 单链表逆序 86 | - [ ] LRU缓存机制 (考虑并发访问)(高频) LRU实现--针对hash存储的方式,如何改进 87 | - [ ] 单向链表排序 88 | - [ ] 取单链表的倒数第K个结点 89 | - [ ] ⼀个链表,输⼊k,⽐如k=3,翻转前3个链表值 90 | 91 | 92 | 93 | ##### 7.hash 94 | 95 | - [ ] 字符串hash算法的实现 96 | - [ ] 敏感词过滤 97 | - [ ] 力扣 217 存在重复元素 98 | - [ ] 力扣 389 找不同 99 | - [ ] 力扣 496 下一个更大的元素 100 | 101 | 102 | 103 | 104 | 105 | ##### 8.other 106 | 107 | - [ ] 25匹马,每次只能比赛5组,最快几次找到前3名 108 | 109 | 110 | 111 | ##### 9.海量数据处理 112 | 113 | - [ ] hash 114 | - [ ] 字典树 115 | - [ ] bitmap 116 | - [ ] 布隆过滤器 117 | - [ ] MapReduce 118 | - [ ] 桶 119 | - [ ] 亿级数据,每一行两列,如何按照第一列升序 第二列降序排列?数据分布不均或较为集中的情况又如何处理更好? 120 | - [ ] 几十亿行数据,记录当天的抖音用户 uid 登录时间 登出时间 如何计算出日活峰值在哪个时间(精确到秒),以及持续了几秒。 121 | 122 | 123 | 124 | ##### 10. 栈 125 | 126 | - [x] 力扣 20 有效的括号 127 | - [ ] 力扣 496 下一个更大的元素 128 | - [ ] 力扣 232 用栈实现队列 129 | 130 | 131 | 132 | ##### 11.集合 133 | 134 | - [ ] 力扣 217 存在重复元素 135 | - [ ] 力扣 705 设计哈希集合 136 | 137 | 138 | 139 | ##### 12.堆 140 | 141 | - [ ] 力扣 215 数组中的第K个最大元素 142 | - [ ] 力扣 692 前K个高频单词 143 | 144 | 145 | 146 | ##### 13.双指针算法 147 | 148 | - [ ] 力扣 141 环形链表 149 | - [ ] 力扣 344 反转字符串 150 | - [ ] 力扣 881 救生艇 151 | 152 | 153 | 154 | ##### 14.二分查找法 155 | 156 | - [ ] 力扣 704 二分查找 157 | - [ ] 力扣 35 搜索插入位置 158 | - [ ] 力扣 162 寻找峰值 159 | - [ ] 力扣 74 搜索二维矩阵 160 | 161 | 162 | 163 | ##### 15.拓扑排序 164 | 165 | - [ ] 力扣 210 课程表 II 166 | - [ ] 力扣 207 课程表 167 | 168 | 169 | 170 | ##### 16.Trie(前缀树) 171 | 172 | - [ ] 力扣 208 实现Trie 173 | - [ ] 力扣 720 词典中最长的单词 174 | - [ ] 力扣 692 前K个高频单词 175 | 176 | 177 | 178 | ##### 17.滑动窗口 179 | 180 | - [ ] 力扣 209 长度最小的子数组 181 | - [ ] 力扣 1456 定长子串中元音的最大数目 182 | 183 | 184 | 185 | ##### 18.递归算法 186 | 187 | - [ ] 力扣 509 斐波那契数 188 | - [ ] 力扣 206 反转链表 189 | - [ ] 力扣 344 反转字符串 190 | - [ ] 力扣 687 最长同值路径 191 | 192 | 193 | 194 | ##### 19.分治算法 195 | 196 | - [ ] 力扣 169 多数元素 197 | - [ ] 力扣 53 最大子序和 198 | 199 | 200 | 201 | ##### 20.回溯算法 202 | 203 | - [ ] 力扣 22 括号生成 204 | - [ ] 力扣 78 子集 205 | - [ ] 力扣 77 组合 206 | - [ ] 力扣 46 全排列 207 | 208 | 209 | 210 | **深度优先算法 DFS** 211 | 212 | | 力扣 938 | 二叉搜索树的范围和 \| Range Sum of BST | 213 | | -------- | -------------------------------------- | 214 | | 力扣 78 | 子集 \| Subsets | 215 | | 力扣 200 | 岛屿数量 \| Number of Islands | 216 | 217 | 218 | 219 | **宽度优先算法 BFS** 220 | 221 | | 力扣 102 | 二叉树的层序遍历 \| Binary Tree Level Order Traversal | 222 | | -------- | ----------------------------------------------------------- | 223 | | 力扣 107 | 二叉树的层序遍历 II \| Binary Tree Level Order Traversal II | 224 | | 力扣 200 | 岛屿数量 \| Number of Islands | 225 | 226 | 227 | 228 | **并查集 Union Find** 229 | 230 | | 力扣 200 | 岛屿数量 \| Number of Islands | 231 | | -------- | ------------------------------- | 232 | | 力扣 547 | 省份数量 \| Number of Provinces | 233 | | 力扣 721 | 账户合并 \| Accounts Merge | 234 | 235 | 236 | 237 | **贪心算法 Greedy** 238 | 239 | | 力扣 322 | 零钱兑换 \| Coin Change | 240 | | --------- | --------------------------------------------------------- | 241 | | 力扣 1217 | 玩筹码 \| Minimum Cost to Move Chips to The Same Position | 242 | | 力扣 55 | 跳跃游戏 \| Jump Game | 243 | 244 | 245 | 246 | **记忆化搜索 Memoization** 247 | 248 | | 力扣 509 | 斐波那契数 \| Fibonacci Number | 249 | | -------- | ------------------------------ | 250 | | 力扣 322 | 零钱兑换 \| Coin Change | 251 | 252 | 253 | 254 | 255 | 256 | #### Redis 257 | 258 | ##### 1.数据结构 259 | 260 | - [ ] zset的底层实现 261 | - [ ] Redis 3.1 都⽤过哪些数据类型?分别介绍下使⽤场景? 262 | 263 | 264 | 265 | ##### 2.使用场景 266 | 267 | - [ ] 分布式锁 268 | - [ ] 缓存雪崩、缓存击穿、缓存穿透 269 | - [ ] redis超时是什么引起的 270 | - [ ] redis缓存穿透,缓存雪崩 271 | 272 | 273 | 274 | 275 | 276 | ##### 3.架构 277 | 278 | - [ ] redis是单线程的吗 279 | - [ ] redis底层网络原理 280 | - [ ] redis的发布/订阅的原理 281 | - [ ] 数据缓存过期策略 282 | - [ ] redis的部署模式 283 | - [ ] redis为什么速度比较快 284 | - [ ] reids的大key、热key的处理 285 | - [ ] 持久化策略及其对比:RDB和AOF区别,AOF重写 286 | - [ ] redis内存淘汰策略(说说 redis 中到期删除是怎么实现的) 287 | - [ ] redis主从复制过程 288 | - [ ] redis哨兵选leader过程、槽相关、redis-cluster和codis扩展 289 | - [ ] redis incr实现 290 | - [ ] redis大key会有什么问题,如何解决 291 | - [ ] redis 的删除策略。定时 定期 惰性 lru(LRU高频) 292 | - [ ] 3.2 持久化机制,AOF、RDB具体区别有哪些? 293 | - [ ] 3.3 Redis 主从同步机制是怎么样的,⽐如slave启动之后同步过程? 294 | - [ ] 3.4 Redis Cluster集群如何选主的? 295 | - [ ] 3.5 Redis Cluster 跟哨兵模式有什么区别吗? 296 | - [ ] 3.6 Sentinel 哨兵模式是如何选主的? 297 | - [ ] 这⾥说跟cluster差不多,追问了下,其实还是有些区别的, sdown odown 主观宕机、客观宕机⽅式不太⼀样 298 | 299 | 300 | 301 | 302 | 303 | #### MySQL 304 | 305 | ##### 1.索引 306 | 307 | - [ ] 对 a b c 建索引,找 b c 时会不会走索引? 精准找 a 范围 b 精准 c 呢? ###3. Redis 308 | - [ ] 创建索引后,查询读取I/O的次数 309 | - [ ] 索引的分类 310 | - [ ] 聚簇索引和非聚簇索引的区别 311 | - [ ] 创建索引后,查询读取I/O的次数 312 | - [ ] 索引的最左前缀原则 313 | - [ ] mysql数据的索引优化以及失效 314 | - [ ] 联合索引怎么存储? 315 | - [ ] 覆盖索引相关问题 316 | - [ ] 假设有⼀个表字段⼏⼗个,索引如何创建的?所有字段都能建吗?区分度、选择性、列基数 317 | 318 | ##### 2.锁 319 | 320 | - [ ] 数据库中的乐观锁悲观锁 321 | - [ ] 排他锁(x锁) 322 | - [ ] 什么是死锁,如何避免 323 | - [ ] mysql的隔离级别?处理什么问题的(脏读、幻读、不可重复读)(高频) 324 | - [ ] 间隙锁坏处,如何避免 325 | - [ ] 说说这些间隙锁的底层实现 ( 我真的学不动了 ) 326 | 327 | 328 | 329 | ##### 3.日志 330 | 331 | - [ ] undo log 332 | - [ ] redo log 333 | - [ ] binlog 334 | 335 | ##### 4.架构 336 | 337 | - [ ] mysql的主从复制过程? 338 | - [ ] mysql的大表优化方式 339 | 340 | ##### 5.引擎 341 | 342 | - [ ] 如果Innodb没主键怎么办? 343 | - [ ] 为什么选择B+树实现索引?一般深度为多少?b+树和红黑树的区别?(高频) 344 | - [ ] MySQL为什么是B + 树的结构,为什么不能是红⿊树呢?优化的是什么,优化的是磁盘IO,减少磁盘寻址。 345 | - [ ] MySQL数据库底层实现结构?B+树结构,也讲了数据⻚,以及⻚⽬录相关的 346 | - [ ] Innodb 默认是哪个隔离级别 347 | - [ ] 说说 innodb 如何避免各种读的 348 | - [ ] 说说 mvcc 的底层实现 349 | - [ ] innodb的B+树原理,如何做页分裂和页合并?查询时间复杂度? 350 | - [ ] 聚簇索引和非聚簇索引区别?如何避免回表查询? 351 | - [ ] 数据库的ACID原理和各个隔离级别,实现原理? 352 | 353 | ##### 6.事务 354 | 355 | - [ ] 356 | 357 | 358 | 359 | ##### 7.SQL 360 | 361 | - [ ] 从学生表中查询每个班的分数的前3名 362 | - [ ] 写一条sql统计, 统计当天访问量前10的ip ip visit_time url 102.12.12.1 2020-03-25 10:10:10 363 | 364 | 365 | 366 | #### MQ 367 | 368 | ##### 1.设计相关 369 | 370 | - [ ] kafka使用场景 371 | - [ ] Kafka如何保证消息可靠,Kafak为什么那么快 372 | - [ ] Kafka 4.1 ⽣产端是如何发送⼀条消息到Broker的? 373 | - [ ] 4.2 具体可以调整哪些参数提升吞吐量? 374 | - [ ] 4.3 消费端发⽣rebalance的过程是怎样的? 375 | - [ ] ⽐如有⼀个新的consumer加⼊ 到了Group中是个什么流程? 376 | - [ ] RabbitMQ如何保证⾼可⽤的?queue数据在节点之间如何同步的?死信队列 如何实现的? 377 | - [ ] kafka的offset怎么管理 378 | - [ ] 消息队列消费端的推和拉有什么区别 379 | - [ ] MQ队列⽤了哪些,Kafka,那⾦融场景下,Kafka如何保证消息不丢失?ack = -1,Leader-->ISR写⼊所有的follower 380 | 381 | 382 | 383 | #### Network 384 | 385 | ##### 1.TCP/UDP 386 | 387 | - [ ] TCP和UDP的区别,TCP三次握手?SEQ 是干什么的?两次握手行不行? TCP Fast Open了解么,TCP的拥塞控制是怎么做的 388 | - [ ] tcp 拥塞策略(高频) 389 | - [ ] tcp协议栈中TIME_WAIT字段的作用(高频) 390 | - [ ] tcp的和colse_wait状态 391 | - [ ] 如何解决tcp的粘包问题,tcp的拆包粘包怎么处理?为什么会有TIME_WAIT? 392 | - [ ] 如何理解网络模型 393 | - [ ] tcp的send函数返回一定代表数据从网卡发送出去了么?我说只是发送到了内核缓冲区。又问这个缓冲区也是属于该进程的么?回答是。又继续问,一个数据接收过程发生了几次用户态到内核态的拷贝? 394 | 395 | ##### 2.DNS 396 | 397 | - [ ] 说说CDN的架构,缓存的实现, 用户的访问流程,调度是怎么选择机房的 398 | - [ ] DNS 查询过程,递归查询和迭代查询的区别 399 | 400 | ##### 3.HTTP 401 | 402 | - [ ] HTTP协议的发展,HTTP缓存实现方式,跟HTTP缓存相关的头部字段,HTTP 302了解么 403 | - [ ] HTTP和HTTPS有什么区别、HTTPS的访问流程、CA中心是什么,确定加密协议过程 404 | - [ ] http的状态码含义:502 504区别 301 302区别,分析一下系统 502 和504 可能的原因 405 | - [ ] http2的优势 406 | - [ ] http header有哪些部分 407 | - [ ] 长连接 http长连接和websocket对比 408 | - [ ] 长轮询和短轮询了解吗 409 | - [ ] rpc和http优劣 410 | 411 | ##### 4.其他 412 | 413 | - [ ] session cookie区别,分别存哪里?跨域问题如何解决 414 | - [ ] 415 | 416 | 417 | 418 | 419 | 420 | #### System 421 | 422 | - [ ] 进程、线程和协程的区别? 423 | - [ ] 栈和堆的特点?那个效率更高效? 424 | - [ ] 进程间通信方式?哪种方式最快?为什么共享内存要比socket快? 425 | 我说了共享内存最快,面试官接着问为什么比socket快,我说了socket走网络,面试官继续问,要是本地回环呢?我想到socket涉及到用户态内核态数据拷贝,而共享内存采用mmap就可以。 426 | - [ ] 线程间通信方式有哪些?线程通信跟线程同步有何区别? 427 | - [ ] Linux最基本的两个锁是什么?说一下各自的特点 428 | 429 | #### Nginx 430 | 431 | - [ ] nginx反向代理怎么配置 432 | - [ ] nginx平滑重启什么原理 433 | 434 | 435 | 436 | #### Your project 437 | 438 | 439 | 440 | #### Golang 441 | 442 | ##### 1. 并发 443 | 444 | - [ ] sync.map、sync.pool、sync.once 的原理 445 | - [ ] sync.pool 如果采用该方案实现连接池,会不会出现连接断开情况? 446 | 447 | ##### 2.底层原理 448 | 449 | - [ ] map 底层实现&sync.Map的区别 450 | - [ ] Context 的使用,用法,有无父子关系?怎么去做并发控制?底层实现(高频) 451 | - [ ] go内存分配 452 | - [ ] 聊到了内存对齐,说说为什么要内存对齐,原理原因 453 | - [ ] chan 底层实现 、 make(chan struct {}) 和 make(chan bool) 在chan的源码实现上有什么区别,chan,什么时候会panic 454 | - [ ] go gc的实现与触发机制 455 | - [ ] go 内存分配 456 | - [ ] go gmp 调度模型实现。从早期1.x版本演进到1.14,做了哪些大改变? time.sleep阻塞时,网络请求阻塞时,调用系统方法时,GMP怎么流转的? 457 | - [ ] go 读写锁和互斥锁的区别和使用场景 458 | - [ ] go panic 的机制。defer,recover的结合使用(golang的panic怎么理解,怎么处理,recover 一般怎么处理) 459 | - [ ] interface 底层实现,怎么判空? 460 | - [ ] reflect 的使用 461 | - [ ] 是否有必要使用协程池?好坏处?举个使用场景 462 | - [ ] go timer底层的实现 . 时间调度可以用哪些数据结构来实现?( 如 回答 时间轮: nginx 。最小堆: go timer 链表等 ) 463 | - [ ] 谁负责来标记抢占? 有如下代码 go func(){ for{}}() 死循环,能否被抢占?1.14版本前会有什么问题? 464 | - [ ] etcd 中 watch 底层是如何实现的? 465 | - [ ] for(i<1000000;i++){go fun(){ …time.sleep(10秒)}()} 同时启动100万协程。会有什么问题?影响面: 如(gc 检查,死锁检查) 怎么解决? 466 | - [ ] go 调度模型。发生网络io.会怎么调度。发生阻塞的IO会怎么调度。epoll 467 | 468 | 469 | 470 | ##### 3.基本问题 471 | 472 | - [ ] goroutine(协程)和线程是什么关系,goroutine是如何调度的? 473 | - [ ] 如何控制goroutine并发数? 474 | - [ ] 逃逸分析能做什么?如何进行逃逸分析? 475 | - [ ] 有缓冲channel和无缓冲channel区别? 476 | - [ ] slice 和 array的区别? 477 | - [ ] slice的底层实现 478 | - [ ] init函数如何使用? 479 | - [ ] []byte{} string 的区别 480 | - [ ] context 的使用,context是否并发安全? 481 | - [ ] defer关键字的作用, 多个defer的调用顺序? 482 | - [ ] go 内存分配,大小对象内存分配区别?多级分配的优点是什么? 483 | - [ ] new和make的区别(高频) 484 | - [ ] go 性能问题的定位( pprof,各项指标) 485 | - [ ] 讲一下Golang 空结构体 486 | - [ ] golang 的map 插入顺序和输出顺序是一样的吗?随机输出 487 | - [ ] 实现一个并发模型。生产者消费者 488 | - [ ] select和epoll的区别 489 | 490 | 491 | 492 | #### design 493 | 494 | - [ ] 如何设计一个秒杀系统 495 | - [ ] trace了解吗 496 | - [ ] 实时战力前100排行榜怎么设计 497 | - [ ] rank系统怎么设计 498 | - [ ] 有10亿用户,让你设计一个社区架构。包括点赞 发帖 删帖 的积分架构、期间一直在追问设计合不合理 499 | - [ ] 给你1亿个URL 。爬取信息。会遇到什么问题?从 CPU 磁盘 网络 等方面。这个聊了很多。 500 | - [ ] 描述 推送架构设计 501 | - [ ] 线上熔断降级怎么做的 502 | - [ ] 全站Push 的 运营误操作如何防止 503 | - [ ] 亿级帖子,对应的评论表如何设计 504 | - [ ] 设计一个短连(一个长的url地址,转为一个短的) 505 | - [ ] 设计一个高可用的稳定的并发模型处理HTTP请求 506 | - [ ] 一致性hash算法 507 | - [ ] 限流策略 508 | - [ ] 高并发的生产者消费者模式 509 | - [ ] 编码过程中你比较注意哪一些 510 | - [ ] 你负责的系统中,你一般关注哪些点,怎么保证你关注的点不出问题 511 | - [ ] 实现MapReduce中的Map,例如: cat file.txt | ./go-reader -cmd "${cmd} " > result.txt 512 | - go-reader为接受cat file.txt的输入lines,将lines给${cmd}处理,最后输出结果 513 | - 进程间怎么通信,go-reader要考虑协程池吗,为什么 514 | - [ ] 不用定时任务的方式,实现一条消息定时发送或者任务到点执行 515 | - [ ] 说说定时任务系统怎么做的,什么是一个任务,一个任务的生命周期是什么样的 516 | - [ ] 设计一个高并发、高可用的架构 517 | - 读比较多怎么设计 518 | - 写比较多怎么设计 519 | - 服务的负载均衡怎么做 520 | - MySQL 怎么部署,读写分离怎么做 521 | - MySQL索引是什么,什么数据结构,MyISAM与InnoDB索引的区别,假设有一张表,有a,b两个索引,索引会怎么选择?(a,b) 是联合索引时会怎么选择 522 | - MySQL的事物,有什么特征,ACID是怎么实现的,隔离级别有几种,MVCC是怎么实现的,乐观锁,悲观锁 523 | - 缓存的热Key和大Key怎么处理 524 | - 简单说说kafka的架构,我要实现消息的顺序消费怎么办 525 | 526 | 527 | 528 | #### 分布式 529 | 530 | - [ ] 分布式事务了解 531 | - [ ] 分布式事务讲⼀下?结合项⽬想讲的可靠消息⼀致性实现⽅案 + 最⼤努⼒送达通知⽅案,最后也提到了单应⽤多DB(JPA)、TCC事务以及适⽤场景。 532 | - [ ] 分布式锁 533 | - [ ] 缓存和数据库⼀致性如何保证的?谈到了分布式锁,那详细讲讲分布式锁实现?redis setnx、redisson、zookeeper 534 | - [ ] 介绍平滑负载均衡算法,实现 535 | 536 | 537 | 538 | 539 | 540 | #### other 541 | 542 | - [ ] 对比 mysql redis http 连接池的实现 543 | 544 | 545 | 546 | 547 | 548 | ### 问题 549 | 550 | 在并发条件下有没有问题 551 | 552 | 在分布式条件下有没有问题 553 | 554 | 网络挂了怎么办 555 | 556 | 机器挂了怎么办 557 | 558 | DB挂了怎么办 559 | 560 | 561 | 562 | 563 | 564 | 565 | 566 | #### answer 567 | 568 | [go_interview](https://github.com/xiaowei520/go_interview/blob/master/%E9%A2%98%E7%9B%AE%E8%AE%A8%E8%AE%BA/2020-04-14.md) 569 | 570 | [gopher_reading](https://github.com/qichengzx/gopher-reading-list-zh_CN) 571 | 572 | [go_question](https://github.com/qcrao/Go-Questions) 573 | 574 | [raft_rule](http://thesecretlivesofdata.com/raft/) 575 | 576 | 577 | 578 | --------------------------------------------------------------------------------