Java相关面试题

以下主要列出一些面试常见的Java问题,答案会在后续过程逐渐补充。

一.hashmap

1.hash碰撞冲突解决方案

2.红黑树优化方案(链表转红黑树,红黑树转链表)

3.扩容

4.缩容

5.Hashtable、Hashset、LinkedHashmap

6.Hashmap线程不安全原因分析(死锁)

7.Treemap

二.ConcurrentHashmap

1.如何实现线程安全

2.性能

3.jdk1.7与jdk1.8

三.hashcode和equals

1.equals与==

2.为什么重写equals必须重写hashcode

四.java基本类型及长度

五.String、StringBuilder、StringBuffer

六.反射

1.实现方式

2.性能

七.泛型

1.泛型擦除

2.<? extends T> <? super T>

八. .length与.length()

九.深拷贝与浅拷贝

十.ArrayList、LinkedList、Vector

十一.面向对象

1.封装(private,default,protected,public)

2.继承(抽象类和接口)

3.多态(重载和重写)

十二.线程池

1.线程池作用

2.newSingleThreadExecutor、newFixedThreadPool、newCachedThreadPool、newScheduledThreadPool

3.execute()与submit()

4.线程池参数

5.IO密集型和CPU密集型

6.线程池工作顺序

7.拒绝策略

十三.动态代理

十四.四种引用(强软弱虚)

十五.动态分配与静态分配

1.静态分配(重载)、动态分配(重写)

2.jvm实现动态分配

十六.Java传值还是传引用

十七.异常

1.exception、error

2.try、catch、finally

3.finally与return的顺序

十八.Object类方法

十九.IO相关

1.BIO、AIO、NIO

2.select、poll、epoll

3.阻塞IO、非阻塞IO、IO多路复用、异步IO

二十.jvm

1.jvm内存模型/运行时数据区

2.GC回收算法

(1)如何判断对象是否存活

(2)垃圾回收算法

3.Minor GC 和 Full GC

4.划分成年轻代和老年代

5.为什么要有Survivor,为什么要有两个survivor

6.类加载机制

(1)过程

(2)类的实例化顺序

(3)双亲委派模型(概念、意义)

(4)类加载器

7.垃圾回收器

8.OOM(堆内存溢出,栈内存溢出,永久代溢出)

二十一.多线程

1.volatile

2.线程状态与转换

3.乐观锁(Compare And Swap),悲观锁(synchronized/lock)

4.JUC并发包(Atomic,Lock/ReentrantLock)

5.锁(自旋锁(CAS),公平锁与非公平锁,可重入锁与非重入锁,独享锁和共享锁)

6.synchronized(手写双重校验锁单例)

7.并发和并行

8.ThreadLocal(ThreadLocalMap)

二十二.jdk8新特性(lambda表达式,Date TimeAPI,接口默认方法,Stream,Optional 类处理空指针异常)

猜你喜欢

转载自www.cnblogs.com/isshpan/p/12550575.html