go基础:
-
数组和切片的区别 2020年06月16日22:01:39
-
协程同步的方式
-
waitgroup和context区别
-
如何处理异常
-
defer
-
mutex & atomic ,锁用了哪些cpu指令
-
map和sync.map,几sync.map的问题
-
cxt
-
make 和 new 区别
-
内存对齐
-
Go的反射包怎么找到对应的方法
-
DeepEqual是什么使用
-
go 调度,并涉及到哪些系统调用
-
go interface / iface / eface
-
闭包
-
协程、channel完美退出
-
runtime实现
-
死锁条件检测,如何避免、锁的竞争检测
-
go内存分配机制 -> mcentral和mcache
(mcentral是服务所有系统线程,mcache为系统线程独享,mcache缺少span时去mcentral->mheap 中取???)
-
go性能调优怎么做的?
-
goroutine泄露
-
gc 算法
-
client如何实现长连接 tcp?
-
go怎么从源码编译到二进制文件
-
sql连接池
-
pprof、火焰图
redis:
- 数据结构+哨兵+集群+主从同步+主从一致性
- 网络模型,存储模型
- 缓存穿透解决方案、击穿、雪崩
- 内存淘汰策略
- 解决的线上问题
mysql:
-
脏读、幻读、不可重复读、可重复读
-
index redo undo mvcc
-
锁:行锁、表锁、间隙锁
-
为什么是B+而不是平衡二叉树
-
磁盘查找过程,从磁盘寻址,内存页管理
-
查询慢的原因
-
MySQL的IO过高怎么查看,优化,分库分表及分区
-
主从同步,读写分离
-
LSM Tree 和 B+ Tree对比
-
myisam的索引结构
-
实际项目中进行了那些索引优化
-
tidb???
-
newsql???
操作系统:
- 守护进程是什么,怎么实现
- 进程间通信方式、线程间通信方式、协程间通信方式及相互的区别
- select、poll、epoll
- 说一下多路复用 http2、nio
- 孤儿进程,僵尸进程
- 进程虚拟空间分布,全局变量放哪里?
- 如何发送信号给一个进程
- 内存管理 & 为什么共享区效率最高
- cpu/内存飙高可能的原因
计算机网络及网络攻击:
- 输入url后涉及什么
- tcp 三次握手(半开连接队列、全开连接队列), 四次挥手(time_wait,close_wait,2msl)
- http header 干啥用的?
- TCP可靠性如何保证
- http 401,403 及大多响应码
- 粘包断包实现 -> negle算法
- udp 优缺点
- ddos、xss、csrf、固定token攻击
- tcp怎么找到哪个套接字
算法:
- 在1个10G大小的文件中,存储的都是int型的数据,如何在内存使用小于8M的情况下进行排序(大量数据)
- 查找一个字符串中最长的无重复字串 (DP)
- 在一个横向和纵向都是递增的有界二维坐标轴中,如何快速判断某个数是否存在于这个二维坐标中
- 各种排序的优缺点、是否稳定
- 判断二叉树是否为满二叉树
- 层次遍历二叉树,返回一个二维数组,每行表示一层
- 数据流,求中位数
- 最大非连续子数组的和
- https://github.com/greyireland/algorithm-pattern
etcd & raft:
- raft算法细节(选主 复制 脑裂 )
分布式:
- RPC相对于API调用的优缺点
- 分布式一致性、分布式事务
- 垂直拆分,水平拓展
- 分布式锁的特点
- 一致性hash
- 异地多活
nginx:
- nginx的负载均衡算法
linux性能优化:
- 怎么查看Linux服务器的负载,及判断哪些操作引起的负载过高
- 项目吞吐量,怎么优化的性能?
微服务
- 服务调度中心的感知与动态上下线
- 如何做服务发现(发布,订阅)、熔断、限流
- gRPC原理 HTTP2 (HPack) + Protocol buffer (压缩body)
开源项目:
- beego开源框架的源码
解决方案:
- 在面对未知的流量暴增,可以预先怎么处理
- 如何限流,限流算法
- 场景题: 某个下游服务的接口并发量大应该如何解决?
- 给出了一个复用资源(池)的思路,
- 追问:引入池后会出现哪些问题,如何预防?
- 打乱一个数组,不用rand
- 网络不可达如何排查,例如我当前打不开qq.com
- 大文件,小内存排序
- 程序并发受哪些因素影响。
设计题
- 以微博为例,有1个亿的用户,同时用户之间有关注和粉丝,用户的关注和取关操作比较频繁,如何设计架构和API接口
- 通用的http请求日志打印如何封装
- 实现消息队列(多生产者,多消费者) chan
- 设计一个kv存储
- LRU实现
其他:
- 工作有啥亮点?产出? 共识怎么做的?
- 项目代码回滚和rebase
- 怎么看一本书?
目前就这么多了...