目录标题
- 1.linux系统的常见命令
- 2.线程的各种状态
- 3.线程池重要的参数
- 4.LinkedList和ArrayList的区别和联系
- 5.详细讲讲Hashmap,是不是线程安全的,put方法是头插还是尾插
- 6.用什么类代替hashmap并且保证线程安全
- 7.mysql的联合索引
- 8.如何查看在执行sql的过程中索引有没有命中(提到了explain)
- 9.对Swing的看法,有什么优缺点
- 10.什么是ssm
- 11.使用mybatis的感受,mybatis有什么优缺点,你是怎么改进的
- 12.spring的aop是怎么实现的
- 13.什么是反射
- 14.面向对象的几大特性,你是怎么理解的
- 15.TCP有几种状态
- 16.TCP为什么要三次握手四次挥手以及基本流程
- 17.红黑树的插入和删除
- 18.HashMap jdk1.7和jdk1.8的区别
- 19.redis的分布式锁怎么实现
- 20.mysql索引结构以及区别
- 21.B+树有什么好处
- 22.线程池的原理
- 23.spring的核心思想
- 24.synchronized和reentrantlock的区别
- 25.synchronized的优化(偏向锁和轻量级锁)
- 26.层序遍历建树&层序遍历树
- 27.TCP和UDP的区别
- 28.TCP的状态机图
- 29.线程间同步具体用什么函数
- 30.rpc的原理
- 31.resultfullApi的几个方法,以及区别(安全性,幂等性)
- 32.手撕单例模式
- 33.手撕hashmap
- 34I/O多路复用的区别
1.linux系统的常见命令
查看系统进程
2.线程的各种状态
- 新建:新建了一个线程对象
- 可运行:线程对象创建后,其他线程比如main线程调用了该对象的start()方法,该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu的使用权
- 运行:可运行状态的线程获得了cpu时间片,执行程序代码
- 阻塞:线程因为某种原因放弃了cpu使用权,暂时停止运行,直到线程进入可运行状态,才有机会获得cpu timeslice转到运行状态
- 等待阻塞:运行的线程执行wait方法,jvm会把该线程放入到等待队列中
- 同步阻塞,运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则jvm会把该线程放入锁池中
- 其他阻塞:运行的线程执行sleep或者join方法时,jvm会把该线程设置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时,线程重新转入可运行状态
- 死亡:线程run()、main()方法执行结束,或因异常退出了run方法,则该线程结束生命周期,死亡的线程不能再次复生
3.线程池重要的参数
ThreadPoolExecutor类是java线程池中的核心类
4.LinkedList和ArrayList的区别和联系
都实现了List接口,存储有序的数据
5.详细讲讲Hashmap,是不是线程安全的,put方法是头插还是尾插
不是线程安全的,是尾插
6.用什么类代替hashmap并且保证线程安全
Hashtable类,可以存储key-value数据,并且sychronized线程安全
7.mysql的联合索引
8.如何查看在执行sql的过程中索引有没有命中(提到了explain)
9.对Swing的看法,有什么优缺点
10.什么是ssm
11.使用mybatis的感受,mybatis有什么优缺点,你是怎么改进的
12.spring的aop是怎么实现的
13.什么是反射
14.面向对象的几大特性,你是怎么理解的
15.TCP有几种状态
16.TCP为什么要三次握手四次挥手以及基本流程
17.红黑树的插入和删除
18.HashMap jdk1.7和jdk1.8的区别
19.redis的分布式锁怎么实现
20.mysql索引结构以及区别
21.B+树有什么好处
- 磁盘读写代价更低,非叶子结点的信息更少,如果把同一结点的所有信息放在一个磁盘块中,则可以比B树放入更多的关键码,一次读入内存当中就能读入更多的关键码,所以降低了磁盘IO总数。B+树更加矮胖
- 查询效率更加稳定,对任何关键字的查找都必须从根节点走到叶子结点,路径长度相同,所以对每条数据的查询效率相当
- B+树叶子结点有链指针存在,所以遍历叶子结点就可以实现对整棵树的遍历,而在数据库中基于范围的查询是非常频繁的,B+树能更好的支持。