前言

  • 最近刚好离职了,决定开始进行真正的项目化工程化做事,包括离职总结,书写简历,面试技巧和面试题整理。
  • 这个页面专门用来展示需要做的事,先定义一些简单的 ToDo 吧。

一、离职那些事

  • 和公司争取 n+1
  • 离职总结。
  • 简单的修改一下简历。
  • 到一些公司面试查看技术方向。
  • 根据以上的技术方向确定后面稳定方向,不要再因为业务性原因换语言了。
  • 对自己的求职开启项目化工程化,并拆分各个子项目进行。

二、查漏补缺

  • go-spring 学习
  • Go 语言的性能测试,和各种性能测试工具的使用
  • 数据库优化,索引创建(级联索引在各种情况下的效果)
  • Go 1.4 到 1.13 的新版特性
  • Redis 数据结构
  • 各种语言 GC 的特性
  • 进程,线程,协程的各种语言的区别
  • 离开公司的理由
  • 为什么做程序员
  • 职业规划
  • 做哪个项目成就感最高
  • 如何适应变化
  • hash 函数
  • hash 表
  • 链表环查找
  • 链表中间节点查找
  • 用英文介绍之前做的项目
  • 数据库主从复制
  • Go channel 实现
  • 微服务的服务发现
  • 微服务的有状态服务(Redis)持久化
  • Redis 除了常见的使用还有哪些能力
  • 微服务如何排查问题
  • 为什么选择 golang, 为什么又从动态语言切换到 golang
  • 今后的目标学习定位 (云原生,分布式)
  • 为什么从之前的公司离职
  • 实现一个 sync.Map
  • 之前工作服务的流量和瓶颈
  • 数据库引擎,一致性,锁
  • 分布式选主方案
  • 进程通信方式
  • Golang gc 调优
  • linux下的 /proc 目录
  • map, slice 实现和如何查找源代码
  • Go 线程协程调度模型(gpm) G: goroutine (协程) M: thread (线程) P: Processor (调度器) 数量来自 GOMAXPROCS 设置
  • 如何给一个未加密的 linux 系统盘安装软件
  • context.Context 实现 Done() chan struct {} 一个无缓存 chan 以关闭为信号来通知所有监听了该通道的方案。 context.TODO()Done 返回的是一个 nilchan 对于 nilchan 发送和接收都会一直阻塞。
  • http 断开信号的代理传递 connReader
  • 如何检查一个 api 访问性能和稳定性 参考 PrometheusHistogramSummary 如何利用Prometheus监控你的应用
  • 二叉搜索树的排名查找
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    type BinaryTree struct {
        value int
        left  *BinaryTree
        right *BinaryTree
    }
    
    // 查询该树的节点数量
    func size(node *BinaryTree) int {
        if node == nil {
            return 0
        }
        return 1 + size(node.left) + size(node.right)
    }
    
    func (p *BinaryTree) Rank(val int) (rank int) {
        if p == nil {
            // 说明没有找到
            rank = 1
        } else if val == p.value {
            // 匹配的排名为左树节点数量 +1
            rank = size(p.left) + 1
        } else if val > p.value {
            // 每次需要去右树查找就加上现有左树的数量
            rank = size(p.left) + p.right.Rank(val) + 1
        } else {
            // 递归到左树查找
            rank = p.left.Rank(val)
        }
        return
    }
    
  • 10亿日流量的点赞后端实现,不考虑后端内存问题(实际应用场景为抖音视频点赞)。 累计服务设计: 一个线上服务,对用户行为进行计数,可以支持可变时间端(最近 x 分钟,最新 x 小时)的给定用户给定用户行为(评论,点赞,关注,发帖)次数查询。查询来自 api 服务(调用量较大)
  • 限流桶,漏桶限制 qps,(场景压测)。
  • etcd, k8s 源码。
  • 事务实现,undo,redo, 幻读,mvcc,当前读,快照读。
  • go gc 垃圾回收,三色标记,混合写屏障。
  • raft 分布试一致原理。
  • tidb 实现原理,如何使用一个分布式的 kvdb 制作上层的 sql 数据库或者其它的定制数据库。