前言:
又是跳槽的好季节,准备跳槽的同学都摩拳擦掌准备大面好几场, 为大家准备了精选的面试题。
本套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]输出(阿里旅行)
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常见异常有哪些?
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 调优的参数都有哪些?
先一键三连哦