CMS算法中哪些阶段是STOP THE WORLD的?
hashmap冲突的key多了如何去优化?
在linux环境下如何去查询java进程的线程运行情况,用什么工具去打印内存情况?
组合索引添加策略,索引结构,存储结构
NOSQ和传统MYSQL区别,优缺点在哪里?
并发:
用过哪些MQ,他们的区别是什么?
MQ中client和broker的通信协议
MQ常用的消息模型
配置中心:
配置中心的作用是什么?动态配置中国内心如何避免冲突和竞争?如何保证配置信息一致性?
单元测试、集成测试(Todo)
业务场景系统设计:
一个秒杀,抢购系统设计实现(考察高并发场景下性能优化)
分布式系统里面如何执行非幂等的任务
基础知识
HTTP协议:
cookie和session区别,举几个使用场景
WEB 表单提交,GET/POST方法,防止CSRF攻击有啥区别
301、302、307有什么区别
TCP协议
SSL/TLS协议
ssl/tls如何实现信息加密传输
ssl session id和session ticket的原理是什么
对于keepalive的链接是否还会进行ssl握手
证书是如何生成的
CA的作用是什么
RSA和ECC算法有什么区别
如何实现0-rtt的ssl握手
tls1.3有什么改进
如何防止ssl重放攻击
如何提高HTTPS页面的性能
HSTS有什么作用
Linux/运维能力
shell使用:
基本语法
find/grep/sed/awk
如何探测本机java监听的端口
查看本机文件系统的格式
查看本机线程数
Linux如何终止D状态的进程
如何批量执行一些命令
磁盘满了如何处理,哪些情况下磁盘空间无法释放
为什么有时候df看到的内容和du会不一样,原因是什么?
哪些情况下磁盘显示有剩余空间,但是无法创建新的文件了
如何让nobody用户的程序监听在80端口?
如何防止文件被误删除,或者被误修改。
如何删除-开头的文件,例如 -a这个文件
malloc是如何工作的
如何检查一个程序为什么cpu占用率很高
如何轮转日志
sudo 和 su的区别
操作系统
什么是僵尸进程,如何防止僵尸进程?
select,poll和epoll有什么区别。
如何调整一个进程的内存使用的优先级
什么是死锁,请写一个死锁的程序。
什么是inode,它存储了哪些信息?
如果想知道一个命令具体执行了哪些系统调用,应该如何做(例如我想知道ls somefilename这个命令做了哪些系统调用)
EXT3和EXT4的区别有哪些?
什么是虚拟内存?
segmentfault是什么意思,为什么会发生?
SIGTERM 和SIGKILL的区别是什么
Load是如何计算的,它和哪些因素有关系,当load高的时候,我们应该如何排查问题
网络
rst问题可能是什么原因
如何动态修改一个进程的limit限制(例如open file的限制)
如何统计每个进程使用的网卡流量,io磁盘读写带宽?
交换机和路由器是如何工作的
BGP的原理
anycast技术的原理
Docker使用:
Docker 容器和镜像关系
容器如何挂载一个数据卷,用完后如何删除?
容器如何暴露端口?
Dockfile
排查线上问题思路
代码题
实现装饰器
单向链表逆序
实现快速排序算法
实现一个generator,产生fabonacci数列
有一个大日志是按照时间进行排序,按照时间用二分法搜索某个时间段的日志记录
实现一个二叉树的数据结构,实现其深度遍历算法(反转算法,广度遍历等等)
具体代码题见这里
系统设计
分布式cache系统如何设计
数据sharding问题
如何应对机器宕机
热点问题
数据如何进行迁移
如何支持单机高并发量
key逐出算法,如何设计数据结构
如何在扩容新机器的时候保证数据不进行大量的迁移
value的大小会不一样,可能几个字节,也可能几十~几百KB,甚至上MB,如何去分配内存空间。
如何设计分布式消息系统
如何设计四层、七层load balancer