疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java程序员常见面试题一


 

一、Java基础
1、Arrays.sort实现原理和Collections.sort实现原理
2、foreach和while的区别(编译之后) 线程池的种类,区别和使用场景
3、分析线程池的实现原理和线程的调度过程
4、线程池如何调优
5、线程池的最大线程数目根据什么确定
6、动态代理的几种方式
7、HashMap的并发问题
8、了解LinkedHashMap的应用吗
9、反射的原理,反射创建类实例的三种方式是什么?
10、cloneable接口实现原理,浅拷贝or深拷贝
11、Java NIO使用
12、hashtable和hashmap的区别及实现原理,hashmap会问到数组索引,hash碰撞怎么解决
13、arraylist和linkedlist区别及实现原理
14、反射中,Class.forName和ClassLoader区别
15、String,Stringbuffer,StringBuilder的区别?
16、有没有可能2个不相等的对象有相同的hashcode
17、简述NIO的最佳实践,比如netty,mina 
18、TreeMap的实现原理
二、JVM相关
1、类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,他们的执行顺序
2、JVM内存分代
3、Java 8的内存分代改进
4、JVM垃圾回收机制,何时触发MinorGC等操作
5、jvm中一次完整的GC流程(从ygc到fgc)是怎样的,重点讲讲对象如何晋升到老年代,几种主要的jvm参数等
6、你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms,g1
7、新生代和老生代的内存回收策略
8、Eden和Survivor的比例分配等
9、深入分析了Classloader,双亲委派机制
10、JVM的编译优化
11、对Java内存模型的理解,以及其在并发中的应用
12、指令重排序,内存栅栏等
13、OOM错误,stackoverflow错误,permgen space错误
14、JVM常用参数
15、tomcat结构,类加载器流程
16、volatile的语义,它修饰的变量一定线程安全吗
17、g1和cms区别,吞吐量优先和响应优先的垃圾收集器选择
18、说一说你对环境变量classpath的理解?如果一个类不在classpath下,为什么会抛出ClassNotFoundException异常,如果在不改变这个类路径的前期下,怎样才能正确加载这个类?
19、说一下强引用、软引用、弱引用、虚引用以及他们之间和gc的关系
20、常见Java面试题大综合,非常值得一看,面试必备!!!
三、JUC/并发相关
1、ThreadLocal用过么,原理是什么,用的时候要注意什么
2、Synchronized和Lock的区别
3、synchronized 的原理,什么是自旋锁,偏向锁,轻量级锁,什么叫可重入锁,什么叫公平锁和非公平锁
4、concurrenthashmap具体实现及其原理,jdk8下的改版
5、用过哪些原子类,他们的参数以及原理是什么
6、cas是什么,他会产生什么问题(ABA问题的解决,如加入修改次数、版本号)
7、如果让你实现一个并发安全的链表,你会怎么做
8、简述ConcurrentLinkedQueue和LinkedBlockingQueue的用处和不同之处
9、简述AQS的实现原理
10、countdowlatch和cyclicbarrier的用法,以及相互之间的差别?
11、concurrent包中使用过哪些类?分别说说使用在什么场景?为什么要使用?
12、LockSupport工具
13、Condition接口及其实现原理
14、Fork/Join框架的理解
15、jdk8的parallelStream的理解
16、分段锁的原理,锁力度减小的思考
17、常见Java面试题大综合,非常值得一看,面试必备!!!