JavaEnvironment
2022-03-20 07:42:43 10 举报
AI智能生成
Java8基础面试题
作者其他创作
大纲/内容
集合
Collection
List
ArrayLsit
动态数组
线程不安全
查询快,增删慢
Vector
线程安全,但是效率低,只是方法加上synchronized关键字保证同步
LinkedList
双向链表
线程不安全
查询慢,增删快
Set
HashSet
TreeSet
Queue
LinkedList
ArrayBlockingQueue
PriorityBlockingQueue
DelayQueue
Map
HashMap
HashTable
TreeMap
ConcurrenHashMap
JUC
线程池
阻塞队列
BlockingQueue
一个线程持续产生对象到队列一端中,另一个线程从队列的另一端取出对象
当队列满或者队列为空时,线程阻塞
操作队列失败时的四种行为模式
抛出异常
返回false或者true
方法会产生阻塞
阻塞一定时间后,返回true或者false
ArrayBlockingQueue
DelayQueue
LinkedBlockingQueue
PriorityBlockingQueue
所有插入到 PriorityBlockingQueue 的元素必须实现 java.lang.Comparable 接口
无法插入null
SynchronousQueue
同步队列
BlockingDeque
可以从队列两端插入,取出元素
一般用于一个线程即使生产者又是消费者
并发问题的根源
c可见性
原子性
JVM指令重排序
怎么解决并发问题
volatile
防止指令重排序
内存可见
是基于内存屏障的实现
单次读或写的原子性,i++不行(包含读取i的值,加1后写入内存两个操作)
synchronized
final
I/O
注解
反射
类与接口
类
内部类
成员内部类
1.可以无条件访问外部类的所有成员变量和成员方法,包括private和static
2.当成员内部类拥有和外部类同名的成员变量和方法时,会发生隐藏现象,优先访问成员内部类的变量和方法
3.外部类想要访问成员内部类的属性必须先创建成员内部类的对象,前提是已有一个外部类对象
4.要想在外面实例化成员内部类,得先有外部类对象.
局部内部类
1.访问仅限于该方法内,而且只能访问该方法内有final修饰的变量
2.不能有public,protected,private,static修饰
3.只能在该类中实例化(在该方法内,该类后面可以实例化),只能调用该类中的方法,无法在外部实例化和调用
静态内部类
1.可以有public,protected,private修饰
2.只可以访问外部类的静态成员变量和静态成员方法
2.OuterClass.InnerClassStatic innerStatic = new OuterClass.InnerClassStatic();
匿名内部类
1.没有类的名称,必须借助接口或者父类
抽象类
1.可以有构造方法
2.可以有普通成员变量
3.访问类型可以是public和protected
4。一个类可以实现多个接口,但只能继承一个抽象类。
5。抽象类中可以有静态方法
接口
1.没有构造方法
2.没有成员变量,只可以定义常量
3.访问类型是public
4.一个类可以实现多个接口,但只能继承一个抽象类。
5.Jdk8后可以定义静态方法和默认方法
其他
Comparator和comparable
Netty
为什么不用JdkNio,而用netty?
netty做的更多,做得更好
1.支持常用的应用层协议,不用手动实现编码规则
2.决解了传输问题,粘包,半包
3.支持流量整形
4.完善了断连,idle等异常处理
Mybatis缓存
一级缓存
默认开启不能关闭
二级缓存
Mybatis
工作流程
1.读取配置文件,获取数据库连接信息
2.加载Sql映射文件
该文件配置了操作数据库的Sql语句,需要在mybatis-config.xml中配置
3.根据配置文件生成会话工厂SqlSessionFactory
4.会话工厂创建会话SqlSession
该对象包含了Sql语句的所有方法
5.Excutors接口根据SqlSesion传递的参数动态生成Sql语句,同时也负责查询缓存
6.MappedStatement对象,对映射信息进行封装,用于存储Sql语句的id,参数等信息
7.输入,输出参数映射
参数类型可以是Map,List,基本数据类型和POJO
收藏
0 条评论
下一页
为你推荐
查看更多
抱歉,暂无相关内容