Java 基础
# Java基础
# 1. 八种基本数据 (opens new window)类型的大小,以及他们的封装类
# 2. 引用数据 (opens new window)类型
# 3. Switch能否用string做参数
# 4. equals与==的区别
# 自动装箱,常量池
# Object有哪些公用方法
# Java的四种引用,强弱软虚,用到的场景
- 强引用:平时声明的变量类型,这类引用就算在虚拟机内存不够的情况下也不会进行回收,而是抛出OOM
- 软引用:比强引用弱一点的引用,这类引用平时不会进行回收,当可用的内存空间不足时,为了防止出现OOM而需要回收
只有
软引用引用的对象 - 弱引用:若引用比软引用更弱一点,不管虚拟机内存是否足够,每次gc的时候都会收回只有弱引用引用的内存空间,通常被用在映射中,例如JDK提供的ThreadLocal类中。
- 虚引用:虚引用是四种引用类型中最弱的一种引用,随时都会被回收,在使用虚引用的时候需要注意的是虚引用必须和引用队列想关联。垃圾回收期准备回收一个对象的时候,如果发现它还有虚引用,就会把这个虚引用加入到想关联的引用队列中。这样程序就可以通过判断引用队列中是否已经加入了需引用来查看被引用的对象是否即将被垃圾回收。如果程序发现某个虚引用已经被加入到引用队列,则可以在所引用的对象内存被回收之前采取必要的操作。
# Hashcode的作用
# HashMap的hashcode的作用
# 为什么重载hashCode方法?
# ArrayList、LinkedList、Vector的区别
# String、StringBuffer与StringBuilder的区别
# Map、Set、List、Queue、Stack的特点与用法
# HashMap和HashTable的区别
# JDK7与JDK8中HashMap的实现
# HashMap和ConcurrentHashMap的区别,HashMap的底层源码
# ConcurrentHashMap能完全替代HashTable吗
# 为什么HashMap是线程不安全的
# 如何线程安全的使用HashMap
# 多并发情况下HashMap是否还会产生死循环
# TreeMap、HashMap、LindedHashMap的区别
# Collection包结构,与Collections的区别
# try?catch?finally,try里有return,finally还执行么
# Excption与Error包结构,OOM你遇到过哪些情况,SOF你遇到过哪些情况
# Java(OOP)面向对象的三个特征与含义
# Override和Overload的含义去区别
# Interface与abstract类的区别
# Static?class?与non?static?class的区别
# java多态的实现原理
# foreach与正常for循环效率对比
# Java?IO与NIO
# java反射的作用于原理
# 泛型常用特点
# 解析XML的几种方式的原理与特点:DOM、SAX
# Java1.7与1.8,1.9,10 新特性
# 设计模式:单例、工厂、适配器、责任链、观察者等等
# JNI的使用
# AOP是什么
# OOP是什么
# AOP与OOP的区别
finally 块中的代码什么时候被执行?
finally 是不是一定会被执行到?
try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
try-catch-finally 中那个部分可以省略?
Error 和 Exception 的区别?
运行时异常与受检异常有何异同?
throw 和 throws 的区别?
常见的异常类有哪些?
主线程可以捕获到子线程的异常吗?
1.说说Java中常用的容器有哪些?
2.详细说说 Arraylist 和 LinkedList的区别?
3.ArrayList实现 RandomAccess接口有何作用?
4.说一说Vector 和 ArrayList 的区别?
5.说说ArrayList 的扩容机制?
6.Array和ArrayList有何区别?
7.遍历一个List有哪些不同的方式?
8.comparable和comparator的区别?
9.Collection和Collections有什么区别?
10.说一下PriorityQueue?
11.说一下HashSet的实现原理?
12.HashMap的实现原理/底层数据结构?
13.HashMap 的长度为什么是 2 的幂次方?
14.说说HashMap的put方法执行流程?
15.说说HashMap的get方法执行流程?
16.说说HashMap的resize方法执行过程?
17.HashMap什么时候会树化?
18.HashMap底层为什么选择红黑树而不用其他树,比如二叉查找树?
19.HashMap扩容(加载)因子为何默认是 0.75f?
20.HashMap怎么计算 key 的 hash 值的?
21.HashMap是怎么解决哈希冲突的?
22.HashMap多线程操作导致死循环问题知道吗?
23.说说LinkedHashMap 的实现原理?
24.说说HashMap 和 HashSet 区别?
25.说下HashMap 和 Hashtable 的区别?
26.说一下HashMap 和 TreeMap 区别?
27.为什么HashMap中String、Integer这样的包装类适合作为Key?
28.说一下Queue 与 Deque 的区别?
29.说说ArrayDeque 与 LinkedList 的区别?
30.说一下 HashSet、LinkedHashSet 和 TreeSet 三者的异同?
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、线程的调度策略
31、ConcurrentHashMap 的并发度是什么
32、Linux 环境下如何查找哪个线程使用 CPU 最长
33、Java 死锁以及如何避免?
34、死锁的原因
35、怎么唤醒一个阻塞的线程
36、不可变对象对多线程有什么帮助
37、什么是多线程的上下文切换
38、如果你提交任务时,线程池队列已满,这时会发生什么
39、Java 中用到的线程调度算法是什么
40 、 什 么 是 线 程 调 度 器 (Thread Scheduler) 和 时 间 分 片 (TimeSlicing)?
41、什么是自旋
42、Java Concurrency API 中的 Lock 接口(Lock interface)是什么?对比同步它有什么优势?
43、单例模式的线程安全性
44、Semaphore 有什么作用
45、Executors 类是什么?
46、线程类的构造方法、静态块是被哪个线程调用的
47、同步方法和同步块,哪个是更好的选择?
48、Java 线程数过多会造成什么异常?