105 道 Java 面试题,认真思考对你面试很有价值

本文汇总了105道Java面试题,涵盖了Java基础、线程并发、Spring框架、数据库、Redis、分布式与微服务等多个方面。深入探讨了JVM、线程安全、Spring AOP、MySQL索引原理、Redis过期策略等关键知识点。是Java开发者面试准备的宝贵资料。
摘要由CSDN通过智能技术生成

一、Java 基础

1、什么是面向对象?

2、JDK JRE JVM

3、==和 equals 比较

4、hashCode 与 equals

5、final

6、String、StringBuffer、StringBuilder

7、重载和重写的区别

8、接口和抽象类的区别

9、List 和 Set 的区别

10、ArrayList 和 LinkedList 区别

11、HashMap 和 HashTable 有什么区别?其底层实现是什么?

12、ConcurrentHashMap 原理,jdk7 和 jdk8 版本的区别?

13、什么是字节码?采用字节码的好处是什么?

14、Java 中的异常体系

15、Java 类加载器

16、双亲委托模型

17、GC 如何判断对象可以被回收


选择 Java 基础里的其中一道解答

JDK JRE JVM

JDK:

Java Develpment Kit java 开发工具

JRE:

Java Runtime Environment java 运行时环境

JVM:

java Virtual Machine java 虚拟机

二、线程、并发相关

1、线程的生命周期?线程有几种状态

2、sleep()、wait()、join()、yield()的区别

3、对线程安全的理解

4、Thread、Runable 的区别

5、对守护线程的理解

6、ThreadLocal 的原理和使用场景

7、ThreadLocal 内存泄露原因,如何避免

8、并发、并行、串行的区别

9、并发的三大特性

10、volatile

11、为什么用线程池?解释下线程池参数?

12、简述线程池处理流程

13、线程池中阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?

14、线程池中线程复用原理


选择 Java 线程与并发里的其中一道解答

volatile

(1)保证被 volatile 修饰的共享变量对所有线程总是可见的,也就是当一个线程修改了一个被 volatile 修饰共享变量的值,新值总是可以被其他线程立即得知。

//线程1
boolean stop = false;
while(!stop){
  
doSomething();
}
//线程2
stop = true;

复制代码

如果线程 2 改变了 stop 的值,线程 1 一定会停止吗?不一定。当线程 2 更改了 stop 变量的值之后,但是还没来得及写入主存当中,线程 2 转去做其他事情了,那么线程 1 由

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值