关于Java面试,我的学员都准备了那些面试题
为什么重写equals方法要重写hashcode方法 |
√ |
final,finally和finalize区别 |
√ |
重载和重写区别 |
√ |
String,StringBuffer,StringBuilder区别 |
√ |
equals方法和== |
√ |
Object中的方法 |
√ |
Java异常有哪些? |
√ |
java中的泛型作用 |
√ |
List的实现类 |
√ |
ArrayList,Vector,LinkedList的底层实现,初始大小,是否线程安全,特性 |
√ |
hashmap底层实现,是否可以存空值,初始话大小,put过程,如何扩容 |
√ |
hashmap不安全的原因 说说bio nio和aio |
√ |
JVM |
|
一次编译到处运行是如何实现的 |
√ |
为什么jvm不直接把源码解析成机器码去执行 |
√ |
类加载机制的生命周期 |
√ |
Java的反射机制 |
√ |
说说类加载器 |
√ |
双亲委派机制,优点 |
√ |
loadClass和forName区别 |
|
JVM内存模型 |
|
分别介绍程序计数器,方法区,本地方法栈,虚拟机栈,堆 |
|
元空间和永久的的区别 |
|
JVM调优参数-Xms,-Xmx,-Xss的含义 |
|
堆和栈的区别-内存分配策略等方面 |
|
对象被判定为垃圾的标准,判断算法 |
|
可作为GCROOt的对象 |
|
说说垃圾回收算法 |
|
对象如何晋升老年代 |
|
常用的调优参数XX:survivorRatio:eden和survivor的比值默认8:1 XX:newRatio 老年代和年轻代内存大小的比值 |
|
触发FullGC的条件 |
|
常用的垃圾收集器 |
|
强引用 软引用 弱引用 虚引用 |
|
JAVA多线程 |
|
线程和进程的区别 |
|
run和start的区别 |
|
如何实现处理线程的返回值 |
|
如何给run方法传参 |
|
线程的状态 |
|
sleep和wait的区别 |
|
中断线程的正确方式 |
|
线程状态间的转换 |
|
线程池的参数 |
|
实现线程的方式 |
|
submit和execute的区别 |
|
线程同步的方式 |
|
线程通信的方式 |
|
守护线程的作用 |
|
多线程会带来什么问题 |
|
说一下JMM |
|
happens-before原则 |
|
如何创建线程安全的单例 |
|
notify和notifyall的区别 |
|
主内存和工作内存的关系 |
|
volatile的作用,适用场景 |
|
单例和并发的关系 |
|
volatile和synchronized的异同 |
|
什么是死锁,产生的必要条件,怎么避免死锁 |
|
JUC |
|
线程池增加线程的规则 |
|
线程池线程数量怎么设定 |
|
停止线程池的正确方法 |
|
线程池的状态 |
|
线程池的拒绝策略 |
|
使用线程池的注意点 |
|
ThreadLoacl的作用,原理,get方法过程,应用场景,内存泄露问题,如何避免泄露,空指针异常的原因 |
|
为什么要lock锁,为什么synchronized不够 |
|
介绍下面:乐观锁和悲观锁 |
|
可重入锁和非可重入锁 |
|
自旋锁和阻塞锁 |
|
公平锁和非公平锁 |
|
共享锁和排他锁 |
|
可中 |
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
针对Java简历中项目的功能进行提问,大家可以在评论区中解答/讨论;同时提供八股文