- 面向对象的特征(了解)
- Java 的基本数据类型有哪些(了解)
- JDK JRE JVM 的区别 (必会)
- 重载和重写的区别(必会)
- Java 中==和 equals 的区别(必会)
- String、StringBuffer、StringBuilder 三者之间的区别(必会)
- 接口和抽象类的区别是什么?(必会)
- string 常用的方法有哪些?(了解)
- 什么是单例模式?有几种?(必会)
- 反射(了解)
- jdk1.8 的新特性(高薪常问)
- Java 的异常(必会)
- BIO、NIO、AIO 有什么区别?(高薪常问)
- Threadloal 的原理(高薪常问)
- 同步锁、死锁、乐观锁、悲观锁 (高薪常问)
- 说一下 synchronized 底层实现原理?(高薪常问)
- synchronized 和 volatile 的区别是什么?(高薪常问)
- synchronized 和 Lock 有什么区别? (高薪常问)
- 手写冒泡排序?(必会)
- 集合(必会)
- 多线程(必会)
- 线程池
- Jvm
- Web
面试来源: Java面试宝典V9.0.pdf
面向对象的特征(了解)
-
Java 的基本数据类型有哪些(了解)
int 、long 、byte、shrot、boolean 、float、char、double
JDK JRE JVM 的区别 (必会)
jdk是Java的开发工具包
- jre是Java的运行环境
-
重载和重写的区别(必会)
重写:方法名相同、参数相同
-
Java 中==和 equals 的区别(必会)
==比较的是值是否相等
-
String、StringBuffer、StringBuilder 三者之间的区别(必会)
string是字符串常量
- stringBuffer是线程安全的
stringBuilder是线程不安全的,可以对字符串进行操作
接口和抽象类的区别是什么?(必会)
接口的实现类implements,抽象类的子类用extends来继承
- 抽象类有构造函数、接口不能
-
string 常用的方法有哪些?(了解)
replaceAll()替换
- substring()截取
- length()长度
- split()分割
-
什么是单例模式?有几种?(必会)
- 懒汉式
-
反射(了解)
-
jdk1.8 的新特性(高薪常问)
函数式接口
- stream流
-
Java 的异常(必会)
-
BIO、NIO、AIO 有什么区别?(高薪常问)
-
Threadloal 的原理(高薪常问)
-
同步锁、死锁、乐观锁、悲观锁 (高薪常问)
同步锁是在同一时间的锁住
- 死锁是在2个线程在争取一个资源
- 乐观锁是很乐观的态度,不会出现并发的情况synchronized ()
悲观锁是很悲惨的态度,假设每个地方都可以发生并发用version来判断每个方法都加了一个锁synchronized ()
说一下 synchronized 底层实现原理?(高薪常问)
-
synchronized 和 volatile 的区别是什么?(高薪常问)
-
synchronized 和 Lock 有什么区别? (高薪常问)
-
手写冒泡排序?(必会)
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
集合(必会)
集合有2大类collection与map
collection是list、set —-list存储重复的数据、可以用for运行遍历—-arraylist是底层数组实现—原因有下标来查询比较快,增删慢—-LinkedList底层是双向链表实现—原因链表的特性增删比较快,查询比较慢—-set存储不重复的数据、不能for—hashset存无序的、底层hashmap实现—-treeset用于排序底层是treemap实现
常见的数据结构(了解)
-
集合和数组的区别(了解)
-
List 和 Map、Set 的区别(必会)
map存储键值对
- set存储无序的、不能重复
-
List 和 Map、Set 的实现类(必会)
list 有序,可重复—-arraylist底层是数组、查询快,增删慢
- linkedlist底层链表、查询慢、增删快
- Vector 线程安全,已经弃用
- set 无序,唯一—-hashset底层哈希表 —linkedhashset链表和哈希表
- —treeset底层红黑树 用于排序
- map实现类—-hashmap底层map接口实现、非线程安全支持存null和null建
- hashtable线程安全、不支持null和null建
-
Hashmap 的底层原理(高薪常问)
hashmap在jdk1.8以前是数组+链表但是在 JDK1.8 后对 HashMap 进行了底层优化,改为了由 数组+链表或者数值+红黑树实现,主要的目的是提高查找效率
Hashmap 和 hashtable ConcurrentHashMap 区别(高薪常问)
hashmap线程安全的
- hashtable线程不安全的
ConcurrentHashMap 是juc并发包下的,解决多线程下并发问题,线程不安全的
多线程(必会)
什么是线程?线程和进程的区别?(了解)
进程是线程的最小单元
-
创建线程有几种方式(必会)
继承Thread
- 实现Callable
- 实现Runnable
-
Runnable 和 Callable 的区别?(必会)
-
如何启动一个新线程、调用 start 和 run 方法的区别?(必会)
-
线程有哪几种状态以及各种状态之间的转换?(必会)
-
线程相关的基本方法?(必会)
start()
- run()
-
wait()和 sleep()的区别?(必会)
线程等待
-
线程池
为什么需要线程池(了解)
-
线程池的分类(高薪常问)
-
核心参数(高薪常问)
-
线程池的原理(高薪常问)
-
拒绝策略(了解)
-
线程池的关闭(了解)
-
Jvm
JDK1.8 JVM 运行时内存(高薪)
-
JDK1.8 堆内存结构(高薪常问)
-
Gc 垃圾回收(高薪常问)
-
JVM 调优参数(了解)
-
Web
网络通讯部分
TCP 与 UDP 区别? (了解)
tcp是三次握手、四次挥手实现网络通信、网络可靠不会出现数据丢失问题
-
什么是 HTTP 协议?
-
TCP 的三次握手
HTTP 中重定向和请求转发的区别?
重定向是
-
Get 和 Post 的区别?
get路径传输
-
cookie 和 session 的区别?(必会)
cookie是服务端会话存储
-
Jsp 和 Servlet(了解)
jsp是后端就是写页面
-
Ajax 的介绍(必会)
通过ajax可以发送请求