一次偶然,从朋友那里得到一份“java高分面试指南”,里面涵盖了25个分类的面试题以及详细的解析:JavaOOP、Java集合/泛型、Java中的IO与NIO、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、Memcached、MongoDB、Spring、Spring Boot、Spring Cloud、RabbitMQ、Dubbo 、MyBatis 、ZooKeeper 、数据结构、算法、Elasticsearch 、Kafka 、微服务、Linux。这不,马上就要到2021年2月份了,很多朋友又开始准备“金三银四”的春招啦,那我想这份“java高分面试指南”应该起到不小的作用,所以今天想给大家分享一下。
专题1:JavaOOP
-
1、什么是B/S架构?什么是C/S架构
-
2、Java都有哪些开发平台?
-
3、什么是JDK?什么是JRE?
-
4、Java语言有哪些特点
-
5、面向对象和面向过程的区别
-
6、什么是数据结构?
-
7、Java的数据结构有哪些?
-
8、什么是OOP?
-
9、类与对象的关系?
-
10、Java中有几种数据类型
-
11、标识符的命名规则。
-
12、instanceof关键字的作用
-
13、什么是隐式转换,什么是显式转换
-
14、Char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型
-
15、什么是拆装箱?
-
16、Java中的包装类都是哪些?
-
17、一个java类中包含哪些内容?
-
18、那针对浮点型数据运算出现的误差的问题,你怎么解决?
-
19、面向对象的特征有哪些方面?
-
20、访问修饰符 public,private,protected,以及不写(默认) 时的区别?
-
21、String 是最基本的数据类型吗?
-
22、float f=3.4;是否正确?
-
23、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1; 有错吗?
-
24、重载和重写的区别
-
25、equals与==的区别
-
36、++i与i++的区别
-
37、程序的结构有哪些?
-
38、数组实例化有几种方式?
-
39、Java中各种数据默认值
-
40、Java常用包有哪些?
-
41、Object类常用方法有哪些?
-
42、java中有没有指针?
-
43、java中是值传递引用传递?
-
44、实例化数组后,能不能改变数组长度呢?
-
45、假设数组内有5个元素,如果对数组进行反序,该如何做?
-
46、形参与实参区别
-
47、构造方法能不能显式调用?
-
48、什么是方法重载?
-
49、构造方法能不能重写?能不能重载?
-
50、内部类与静态内部类的区别?
-
51、Static关键字有什么作用?
-
52、final在java中的作用,有哪些用法?
-
53、StringString StringBuffffer 和 StringBuilder 的区别是什么?
-
54、String str=”aaa”,与String str=new String(“aaa”)一样吗?
-
55、讲下java中的math类有那些常用方法?
-
56、String类的常用方法有哪些?
-
57、Java中的继承是单继承还是多继承
-
58、Super与this表示什么?
-
59、普通类与抽象类有什么区别?
-
60、什么是接口?为什么需要接口?
-
61、接口有什么特点?
-
62、抽象类和接口的区别?
-
63、Hashcode的作用
-
64、 Java的四种引用,强弱软虚
-
65、Java创建对象有几种方式?
-
66、有没有可能两个不相等的对象有相同的hashcode
-
67、拷贝和浅拷贝的区别是什么?
-
68、static都有哪些用法?
-
69、a=a+b与a+=b有什么区别吗?
-
70、final、finalize()、finally
-
71、JDBC操作的步骤
-
72、在使用jdbc的时候,如何防止出现sql注入的问题。
-
73、怎么在JDBC内调用一个存储过程
-
74、是否了解连接池,使用连接池有什么好处?
-
75、你所了解的数据源技术有那些?使用数据源有什么好处?
-
76、&和&&的区别
-
77、静态内部类如何定义
-
78、什么是成员内部类
-
79、Static Nested Class 和 Inner Class的不同
-
80、什么时候用assert
-
81、Java有没有goto
-
82、数组有没有length()这个方法? String有没有length()这个方法
-
83、用最有效率的方法算出2乘以8等於几
-
84、float型float f=3.4是否正确?
-
85、排序都有哪几种方法?请列举
-
86、静态变量和实例变量的区别?
-
87、说出一些常用的类,包,接口,请各举5个
-
88、a.hashCode() 有什么用?与 a.equals(b) 有什么关系?
-
89、Java 中的编译期常量是什么?使用它又什么风险?
-
90、在 Java 中,如何跳出当前的多重嵌套循环?
-
91、构造器(constructor)是否可被重写(override)?
-
92、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
-
93、是否可以继承 String 类?
-
94、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
-
95、String 和 StringBuilder、StringBuffer 的区别?
-
96、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?
-
97、char 型变量中能不能存贮一个中文汉字,为什么?
-
98、抽象类(abstract class)和接口(interface)有什么异同 ?
-
99、静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?
-
100、Java 中会存在内存泄漏吗,请简单描述。
-
101、抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被 synchronized修饰?
-
102、是否可以从一个静态(static)方法内部发出对非静态(non-static)方法的调用?
-
103、如何实现对象克隆?
-
104、接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?
-
105、一个”.java”源文件中是否可以包含多个类(不是内部类)?有什么限制?
-
106、Anonymous Inner Class(匿名内部类)是否可以继承其它类?是否可以实现接口?
-
107、内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制?
-
108、Java 中的 final 关键字有哪些用法?
专题2:Java集合/泛型
-
1、ArrayList和linkedList的区别
-
2、 HashMap和HashTable的区别
-
3、Collection包结构,与Collections的区别
-
4、泛型常用特点 (待补充)
-
5、说说List,Set,Map三者的区别
-
6、Array与ArrayList有什么不一样?
-
7、Map有什么特点
-
8、集合类存放于 Java.util 包中, 主要有几 种接口
-
9、什么是list接口
-
10、说说ArrayList(数组)
-
11、Vector( 数组实现、 线程同步)
-
12、说说LinkList(链表)
-
13、什么Set集合
-
14、HashSet( Hash 表)
-
15、什么是TreeSet(二叉树)
-
16、说说LinkHashSet( HashSet+LinkedHashMap)
-
17、HashMap(数组+链表+红黑树)
-
18、说说ConcurrentHashMap
-
19、HashTable(线程安全)
-
20、TreeMap(可排序)
-
21、LinkHashMap(记录插入顺序)
-
22、泛型类
-
23、类型通配符?
-
24、类型擦除
专题3:Java中的IO与NIO
-
1、Java 中 IO 流?
-
2、Java IO与 NIO的区别
-
3、常用io类有那些
-
4、字节流与字符流的区别
-
5、阻塞 IO 模型
-
6、非阻塞 IO 模型
-
7、多路复用 IO 模型
-
8、信号驱动 IO 模型
-
9、异步 IO 模型
-
10、JAVA NIO
-
11、NIO 的缓冲区
-
12、NIO 的非阻塞
-
13、Channel
-
14、Buffer
-
15、Selector
专题4:Java反射
-
1、除了使用new创建对象之外,还可以用什么方法创建对象?
-
2、Java反射创建对象效率高还是通过new创建对象的效率高?
-
3、java反射的作用
-
4、哪里会用到反射机制?
-
5、反射的实现方式:
-
6、实现Java反射的类:
-
7、反射机制的优缺点:
-
8、Java 反射 API
-
9、反射使用步骤(获取 Class 对象、调用对象方法)
-
10、获取 Class 对象有几种方法
-
11、利用反射动态创建对象实例
专题5:Java序列化
-
1、什么是java序列化,如何实现java序列化?
-
2、保存(持久化)对象及其状态到内存或者磁盘
-
3、序列化对象以字节数组保持-静态成员不保存
-
4、序列化用户远程对象传输
-
5、Serializable 实现序列化
-
6、writeObject 和 readObject 自定义序列化策略
-
7、序列化 ID
-
8、序列化并不保存静态变量
-
9、Transient 关键字阻止该变量被序列化到文件中
-
10、序列化(深 clone 一中实现)
专题6:Java注解
-
1、4种标准元注解是哪四种?
-
2、注解是什么?
专题7:多线程&并发
-
1、Java中实现多线程有几种方法
-
2、继承 Thread 类
-
3、实现 Runnable 接口。
-
4、ExecutorService、 Callable、 Future 有返回值线程
-
5、基于线程池的方式
-
6、4 种线程池
-
7、如何停止一个正在运行的线程
-
8、notify()和notifyAll()有什么区别?
-
9、sleep()和wait() 有什么区别?
-
10、volatile 是什么?可以保证有序性吗?
-
11、Thread 类中的start() 和 run() 方法有什么区别?
-
12、为什么wait, notify 和 notifyAll这些方法不在thread类里面?
-
13、为什么wait和notify方法要在同步块中调用?
-
14、Java中interrupted 和 isInterruptedd方法的区别?
-
15、Java中synchronized 和 ReentrantLock 有什么不同?
-
16、有三个线程T1,T2,T3,如何保证顺序执行?
-
17、SynchronizedMap和ConcurrentHashMap有什么区别?
-
18、什么是线程安全
-
19、Thread类中的yield方法有什么作用?
-
20、Java线程池中submit() 和 execute()方法有什么区别?
-
21、说一说自己对于 synchronized 关键字的了解
-
22、说说自己是怎么使用 synchronized 关键字,在项目中用到了吗synchronized关键字最主要的三种使用方式
-
23、什么是线程安全?Vector是一个线程安全类吗?
-
24、volatile关键字的作用?
-
25、简述一下你对线程池的理解
-
26、线程生命周期(状态)
-
27、新建状态(NEW)
-
28、就绪状态(RUNNABLE)
-
29、运行状态(RUNNING)
-
30、阻塞状态(BLOCKED)
-
31、线程死亡(DEAD)
-
32、终止线程 4 种方式
-
33、start 与 run 区别
-
34、JAVA 后台线程
-
35、什么是乐观锁
-
36、什么是悲观锁
-
37、什么是自旋锁
-
38、Synchronized 同步锁
-
39、ReentrantLock
-
40、Condition 类和 Object 类锁方法区别区别
-
41、tryLock 和 lock 和 lockInterruptibly 的区别
-
42、Semaphore 信号量
-
43、Semaphore 与 ReentrantLock 区别
-
44、可重入锁(递归锁)
-
45、公平锁与非公平锁
-
46、ReadWriteLock 读写锁
-
47、共享锁和独占锁
-
48、重量级锁(Mutex Lock)
-
49、轻量级锁
-
50、偏向锁
-
51、分段锁
-
52、锁优化
-
53、线程基本方法
-
54、线程等待(wait)
-
55、线程睡眠(sleep)
-
56、线程让步(yield)
-
57、线程中断(interrupt)
-
58、Join 等待其他线程终止
-
59、为什么要用 join()方法?
-
60、线程唤醒(notify)
-
61、线程其他方法
-
62、进程
-
63、上下文
-
64、寄存器
-
65、程序计数器
-
66、PCB-“切换桢”
-
67、上下文切换的活动
-
68、引起线程上下文切换的原因
-
69、同步锁
-
70、死锁
-
71、线程池原理
-
72、线程复
-
73、线程池的组成
-
74、拒绝策略
-
75、Java 线程池工作过程
-
76、JAVA 阻塞队列原理
-
77、Java 中的阻塞队列
-
78、ArrayBlockingQueue(公平、非公平)