1.自我介绍
2.java的基本数据类型?各自的字节数?

3.基本数据类型和包装数据类型的区别,int和Integer有什么区别?
基本数据类型和包装类型的区别:
4.浮点数据类型使用的时候要注意什么,精度丢失的原因?
Java的浮点类型有两种:float和double。其中float表示单精度浮点数,占4字节,32位,double表示双精度浮点数,占8字节,84位。
因为Java浮点数使用二进制数据的科学记数法来表示浮点数,因此可能不能精确表示一个浮点数,使用double类型的浮点数比float类型的浮点数更精确,但如果浮点数的精度足够高,依然可能发生这种情况,如果开发者需要精确保存一个浮点数,则可以考虑使用BigDecimal类。
更加详细分析请看这篇博客:【Java基础】浮点数精度丢失问题剖析
5.java面对对象的特征,具体表现是什么,接口和抽象类的区别和共同点?继承的优缺点?
共同点:
1、都可以生成.Class文件
2、他们都不能实例化对象
3、都可以包含抽象方法(接口中默认隐式声明为public abstract)
4、声明的方法必须被继承的类全部实现
区别:
1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
2、抽象类要被子类继承,接口要被类实现。
3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现 (其实jdk1.8以后的接口也支持静态的方法实现)
public interface Test {
int NUM = 0; //接口中所有变量都被系统用public final修饰过
void testMethod(); //接口中所有方法都被public修饰过
static void testStatic(){ //jdk1.8以后的接口支持静态的方法体
System.out.println("这里是Static方法");
}
}
4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。
6、抽象方法只能申明,不能实现,接口是设计的结果 ,抽象类是重构的结果
7、抽象类里可以没有抽象方法
8、如果一个类里有抽象方法,那么这个类只能是抽象类
9、抽象方法要被实现,所以不能是静态的,也不能是私有的。
10、接口可继承接口,并可多继承接口,但类只能单根继承。
6.==和equals区别?
详情查看这篇博客:java经典面试题:== 和 equals 的区别是什么?
7.hashcode?
详情查看这篇博客:Java中hashCode的作用
8.java里面的异常,之间的区别,说几个常见异常;
Java中的异常分类:

8.1 Error(错误)
Error是指程序运行时系统的内部错误和资源耗尽错误。程序不会抛出该类对象。如果出现了Error,代表程序运行时JVM出现了重大问题,比如常见的OutOfMemoryError(OOM),这时应当告知用户并尽量让程序安全结束。
8.2 Exception(异常)
Exception是指程序可以自身处理的异常。Exception又分为检查异常(CheckedException)和运行异常(RuntimeException):
CheckedException:检查异常一般是外部错误,都发送在编译阶段,是我们在编码时应当可以预计会发生的异常情况,编译器通常会提示我们去捕获这些异常并进行处理。我们可以通过try-catch来捕获或者throws语句来抛出,否则编译器会提示不通过。常见的有:FileNotFoundException,SQLException,ClassNotFoundException。
RuntimeException:运行异常一般是Java虚拟机正常运行期间抛出的异常的超类,程序中可以处理这些异常,也可以不处理这些异常,编译器并不会提示我们来处理这些异常。但是这些异常通常都是编码出现了错误导致的,我们应当尽量避免出现这些异常。常见的有:NullPointerException(空指针),IndexOutOfBoundsException(下标越界),ClassCastException(类型强制转换异常)。
8.3 异常处理方法
在Java中,异常处理机制主要是:抛出异常和捕获异常。
9.反射是什么?优缺点,反射的应用场景
反射请看这篇博客:【Java基础】Java基础之反射
10.讲下注解(解释了自定义注解我的实现);
参考博文:自定义注解的实现
11.ArrayLsit 和 LinkedList讲一讲,是线程安全的嘛? Arraylist初始化大小,怎么从0变到10的?(扩容算法实现的)
参考博客:【Java基础】ArrayLsit 和 LinkedList区别、底层原理以及扩容算法
12.HashMap底层数据结构和原理;为什么转化成红黑树?是线程安全嘛?想用安全的HashMap,该怎么做?
参考博客:【Java基础】HashMap底层数据结构及其原理
13.ConcurrentHashmap怎么实现的线程安全?
参考博客:ConcurrentHashMap是如何保证线程安全的?
14.jvm的数据区域,1.8的元空间了解吗?
参考博客:【JVM】JVM内存模型详解
15.堆的结构,垃圾回收的区域都有哪些?怎么判断死亡?引用计数法的缺点?
参考博客:【JVM】深入理解JVM垃圾回收机制及其垃圾回收算法
16.垃圾回收算法和常见垃圾回收器,讲了cms和g1,年轻代有哪些垃圾收集器?说下g1和摒弃分代的优点(也太紧张忘了,应该是最大区域回收)
同上
17.类的生命周期(类加载),讲下双亲委派机制,最顶层的类加载器是什么;
18.了解系统调用嘛,哪些用户态会转换到系统态?
请看这篇博文:
系统调用原理与用户态以及内核态相互切换过程,以linux系统为主
19.进程和线程的区别,线程的状态,进程间的通信方式,同步方式?
参考博客:【操作系统】「不得不看」线程的那些知识
20.volatile了解吗,有原子性嘛,多线程怎么实现原子性,用过synchronize 嘛,讲一讲?synchronize可以作用到什么上面,和ReentrantLock的区别
参考博客:
【操作系统】volatile关键字深层解析
【Java基础】全面讲解Java中的各种锁
21.Threadlocal讲一讲;
参考博客:【Java基础】ThreadLocal的底层原理以及应用场景
22.线程池的运行流程;
线程池内部是通过队列+线程实现的,当我们利用线程池执行任务时:
23.网络的七层模型,tcp和udp在哪一层,区别是什么?
参考博文:
【网络基础】浏览器输入一个URL之后,都发生了什么(详细讲解)
24.http属于那一层,常见的状态码?说下400,302;
参考博文:
http协议的状态码——301,302,400,401,403,404,500,502,503等常见服务器请求状态码
25.redis除了做缓存还能用来干什么,数据结构,缓存过期是怎么清理的,随便讲一个淘汰算法?
(1)redis的应用场景:Redis常用数据结构及应用场景
(2)redis的过期清除策略:
1、定期清除:定期清除是指 redis会定期随机挑选一些key,检查其是否过期,如果过期,则清除。
2、惰性删除:在用户要查看key时,redis会检查一下这个key是否过期,如果过期,则清除。这样的话,则存在一种情况,就是缓存既没有被用户使用,也没有被随机挑选到,那么这样的缓存就会一直堆积在内存中无法被清除(此时应考虑缓存淘汰策略)。
(3)redis的缓存淘汰策略:
noeviction 不进行缓存淘汰,存满以后拒绝继续存。
volatile-ttl 在即将过期的键值对中,移除即将过期的键值对
volatile-random 在即将过期的键值对,随机移除键值对
volatile-lru:在设置了过期时间的键值对中,移除最近最少使用的键值对
volatile-lfu:在设置了过期时间的键值对中,移除最近最不频繁使用的键值对
allkeys-random:在所有键值对中,随机移除某个key
allkeys-lru:在所有的键值对中,移除最近最少使用的键值对
allkeys-lfu:在所有的键值对中,移除最近最不频繁使用的键值对
26.spring的bean生命周期;
参考博文:Spring 中Bean 的生命周期
27.讲下IOC;
IoC是一种面向对象编程的设计思想。在不采用这种思想的情况下,我们需要自己维护对象与对象之间的依赖关系,很容易造成对象之间的耦合度过高,在一个大型的项目中这十分的不利于代码的维护。IoC则可以解决这种问题,它可以帮我们维护对象与对象之间的依赖关系,并且降低对象之间的耦合度。
我们将对象的创建以及对象内属性的赋值都交给spring来管理,对象的控制权就会转交给spring,由spring来管理和维护对象与对象之间的依赖关系。
说到IoC就不得不说DI,DI是依赖注入的意思,它是IoC实现的实现方式。实现依赖注入的关键是IoC容器,它的本质就是一个工厂。
Spring提供的服务和EJB并没有什么区别,只是在具体怎样获取服务的方式上两者的设计有很大不同:Spring IoC提供了一个基本的JavaBean容器,通过IoC模式管理依赖关系,并通过依赖注入和AOP切面增强了为JavaBean这样的POJO对象服务于事务管理、生命周期管理等基本功能;
28.sentinel和nacos的主要作用和原理;
29.问了问项目;
30.问了个模块我的数据库设计;
31.我在项目里怎么用的数据库表的素引;
32.分布式锁怎么用的?我讲了redission锁
参考博文:Redis中是如何实现分布式锁的?
参考博文:redis之redission锁机制
33.算法:二分查找**