今年的金三银四了,又是跳槽的好季节,准备跳槽的同学都摩拳擦掌准备大面好几场, 为大家准备了精选的面试题。
本套Java面试题大全总共分为以下这六个模块:
- Java基础面试题
- 多线程面试题
- Redis面试题
- 数据结构与算法
- Java异常面试题
- JVM面试题
一、Java基础面试题
1、&和&&的区别?
2、int和 Integer 有什么区别?(基本数据类型有哪些?)(String不是基本数据类型)
3、String、StringBuffer、 StringBuilder 的区别?
4、String 类的常用方法都有那些?
5、String 字符串修改实现的原理?
6、两个对象的 hashCode() 相同,则 equals() 也一定为 true 吗?
7、解释下什么是面向对象?面向对象和面向过程的区别?
8、Java 是否支持多继承?
9、什么是构造函数?什么是构造函数重载?
10、Java 的泛型是如何工作的 ? 什么是类型擦除 ?
11、什么是泛型中的限定通配符和非限定通配符 ?
12、Java 中的 IO 流的分类?
二、多线程面试题
1、并发编程三要素?
2、实现可见性的方法有哪些?
3、多线程的价值?
4、创建线程的有哪些方式?
5、创建线程的三种方式的对比?
6、线程的状态流转图
7、Java线程具有五中基本状态
8、什么是线程池?有哪几种创建方式?
9、四种线程池的创建
10、线程池的优点?
11、常用的并发工具类有哪些?
12、CyclicBarrier和CountDownLatch的区别
13、synchronized的作用?
14、volatile关键字的作用
15、什么是CAS
16、CAS的问题
17、什么是Future?
18、什么是AQS
19、AQS支持两种同步方式:
20、ReadWriteLock是什么
21、FutureTask是什么
22、synchronized和ReentrantLock的区别
23、什么是乐观锁和悲观锁
24、线程B怎么知道线程A修改了变量
25、synchronized、volatile、CAS比较
26、sleep方法和wait方法有什么区别?
27、ThreadLocal是什么?有什么用?
28、为什么wait()方法和notify()/notifyAll()方法要在同步块中被调用
29、多线程同步有哪几种方法?
30、线程的调度策略
32、Linux环境下如何查找哪个线程使用CPU最长
33、Java死锁以及如何避免?
34、死锁的原因
35、怎么唤醒一个阻塞的线程
36、不可变对象对多线程有什么帮助
37、什么是多线程的上下文切换
38、如果你提交任务时,线程池队列已满,这时会发生什么
39、Java中用到的线程调度算法是什么
40、什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing)?
41、什么是自旋
42、线程类的构造方法、静态块是被哪个线程调用的
43、同步方法和同步块,哪个是更好的选择?
44、Java线程数过多会造成什么异常?
三、Redis面试题
1、redis常见性能问题和解决方案:
2、mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据
3、请用Redis和任意语言实现一段恶意登录保护的代码,限制1小时内每用户Id最多只能登录5次。具体登录函数或功能用空函数即可,不用详细写出。
4、为什么redis需要把所有数据放到内存中?
5、redis的并发竞争问题如何解决?
6、redis事物的了解CAS(check-and-set 操作实现乐观锁 )?
7、redis持久化的几种方式
8、redis的缓存失效策略和主键失效机制
9、Redis集群方案什么情况下会导致整个集群不可用?
10、说说Redis哈希槽的概念?
四、数据结构与算法:
1、常见的几大排序及查找算法及其时间复杂度?
2、求数组中最长连续序列长度
3、在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序, 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
4、两个栈实现一个队列。(美团、小米) 扩展:两个队列如何实现一个栈?
5、链表反转(单项链表的反转和双向链表的反转)
6、给Map排序---按照key的字母后按照格式[k1=v1:k2=v2]输出(阿里旅行)
五、Java异常面试题:
1、Error 和 Exception 区别是什么?
2、运行时异常和一般异常(受检异常)区别是什么?
3、JVM 是如何处理异常的?
4、throw 和 throws 的区别是什么?
5、final、finally、finalize 有什么区别?
6、NoClassDefFoundError 和 ClassNotFoundException 区别?
7、try-catch-finally 中哪个部分可以省略?
8、try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
9、类 ExampleA 继承 Exception,类 ExampleB 继承ExampleA?
10、常见的 RuntimeException 有哪些?
11、Java常见异常有哪些?
六、JVM面试题:
1、Java内存区域
- 说一下 JVM 的主要组成部分及其作用?
- 说一下 JVM 运行时数据区?
- 深拷贝和浅拷贝?
- 说一下堆栈的区别?
- 队列和栈是什么?有什么区别?
2、HotSpot虚拟机对象探秘
- 对象的创建
- 为对象分配内存
- 处理并发安全问题
- 对象的访问定位
3、内存溢出异常
Java会存在内存泄漏吗?请简单描述
4、垃圾收集器
- 简述Java垃圾回收机制
- GC是什么?为什么要GC
- 垃圾回收的优点和原理。并考虑2种回收机制
- 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
- Java 中都有哪些引用类型?
- 怎么判断对象是否可以被回收?
- 在Java中,对象什么时候可以被垃圾回收
- JVM中的永久代中会发生垃圾回收吗
- 说一下 JVM 有哪些垃圾回收算法?
- 说一下 JVM 有哪些垃圾回收器?
- 详细介绍一下 CMS 垃圾回收器?
- 新生代垃圾回收器和老年代垃圾回收器都有哪些?有什么区别?
- 简述分代垃圾回收器是怎么工作的?
5、内存分配策略
简述java内存分配与回收策率以及Minor GC和Major GC
- 对象优先在 Eden 区分配
- 大对象直接进入老年代
- 长期存活对象将进入老年代
6、虚拟机类加载机制
- 简述java类加载机制?
- 描述一下JVM加载Class文件的原理机制
- 什么是类加载器,类加载器有哪些?
- 说一下类装载的执行过程?
- 什么是双亲委派模型?
7、JVM调优
- 说一下 JVM 调优的工具?
- 常用的 JVM 调优的参数都有哪些?
总结
希望对大家有所帮助,有用的话点赞给我支持!