java面试八股文

柿子 5 2024-02-19

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

字符串,哈希表,列表,集合,有序集合