java面试八股文
1. java哪几种方式创建线程执行任务
继承Thread类
实现Runnable接口
实现Callable接口
线程池来创建线程
2.springboot底层核心代码
3.线程池状态
3.1 running(正常)
3.2 shutdown(不接受新任务,但处理队列中的任务)
3.3 stop(既不接受新任务,也不处理队列中的任务)
3.4 tidying(没有线程在运行后)
3.5 terminated(完成)
4.jdk,jre,jvm
jdk(java标准开发包)
jre(java运行环境)
jvm(java虚拟机,java的一部分)
5.hashCode()和equals()之间的关系
6.泛型中extends和super的区别
7.==和equals区别
==基本数据类型比较值,引用类型比较地址
equals方法看具体的方法实现
8.重载和重写的区别
重载:同一个类中,方法名相同,但是参数类型不同
重写:发生在父子类中,方法名参数列表必须相同,返回值范围小于等于父类
异常范围小于等于父类,访问修饰符大于等于父类,父类private不能重写
9.list和set的区别
list:有序,可重复,允许多个null,可以使用lterator再遍历,还可以get()获取单个元素
set:无序,不可重复,取元素时只能lterator接口
10.ArrayList和LinkedList区别
ArrayList数组,适合随机查找
LinkedList链表,适合插入删除
11.java异常
父类Throwable(子类Exception和Error)
Error—重大错误
Exception—代码错误等
12.并发并行串行
并发:看起来同时,底层轮流排队,cpu调度
并行:多任务同时执行
串行:一个一个执行
13.避免死锁
避免资源被占用且不释放
14.线程池
队列+线程
15.ioc的理解
spring的ioc和aop
ioc:控制反转
控制:对象的创建,控制对象内属性的赋值
反转:对象的控制权转换给spring
15.单例Bean
16.Mybatis的优缺点
工作量大
灵活解耦合,便于管理
17.#{}和¥{}
#{}替换为问号?,防止sql注入
18.redis
字符串,哈希表,列表,集合,有序集合