1、cpu
对于cpu我们主要介绍top,strace,perf,vmstat。
vmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的 IO、中断、上下问切换、CPU使用等。
2、网络
○ netstat命令 netstat命令用来打印Linux中网络系统的状态信息,
○ lsof 命令用于查看进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)
○ tcpdump 可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
3、内存
valgrind 是在Linux程序中广泛使用的调试应用程序。它尤其擅长发现内存管理的问题,可以检查程序运行时的内存泄漏问题等
4、 磁盘
iotop
iotop命令是一个用来监视磁盘I/O使用状况的top类工具。
俩阶段提交 准备阶段。提交阶段
问题 阻塞 脑裂 单点故障
三阶段提交 询问 准备 提交
问题 超时导致不一致
tcc try comfig cancel 模式
查询模式
补偿模式
异步确保模式
定期校对模式
1、HashMap底层实现
2、HashMap怎么解决多线程不安全 使用槽锁的方式,但是这样会导致有很多槽锁性能不好, 改进 . 可以使用二级索引。
3、Java垃圾回收机制 设计一个立即回收算法 使用分代回收,频繁的在年轻代进行回收,因为年轻代存储的对象大都是朝生夕死的。
4、字符串翻转 3种
5、面对高并发你怎么处理?
1.加机器,提升配置
2.分库分表,缓存、服务器等分布式部署做负载均衡
3.使用缓存代替数据库
4.复杂逻辑使用消息队列异步处理
5.实现请求幂等,可以过滤掉一部分重复请求
6.网页静态化,使用cdn
7.使用细粒度锁,减少竞争
6、JAVA有多少个类加载器,分别的作用是什么,一个class是怎么被加载到JVM里的,描述一下加载流程。
7、你知道哪些垃圾回收算法,垃圾回收的时候怎么判断一个对象是否可以被回收。
8、synchronized和Lock的区别是什么?
9、你知道哪些分布式缓存,如果要你设计一个分布式缓存,你会怎么去设计,有哪些难点和重点。
10、你以前做的系统中,分布式事务是怎么去实现的。
11、synchronized和可重入锁的区别是什么?
Lock从代码来看,最终调用的是本地方法来实现的,synchronized由JVM实现,实现的原理是在synchronized块的起始和结束位置分别添加了一个指令屏障
(又叫内存屏障,什么叫指令屏障不在这里详细讲了,请自行百度)。
Lock需要写代码主动释放锁,所以使用上相对麻烦,但是功能也更加强大,可以实现公平锁、非公平锁、条件锁,还有特定场景下性能提升较大的读写锁。
12、java:并发、hashmap;
13、数据结构:二叉排序树、散列表;
14、操作系统:调度算法、死锁;
15、数据库:acid,解释一下一致性;
16、计算机网络:osi七层模型、输入网址到访问服务器的过程,越详细越好;
17、spring框架:aop。