金九银十,又到了技术面试求职高峰期,你是否还在为面试不知道准备哪些技术问题而焦虑?在面了十多家公司之后,我特别汇总 100 道Java高频重点面试题,想要面试 Java 工程师的小伙伴可以根据自己的进度准备这些问题,掌握了这些重点问题可以帮助我们大大增加通过前两轮技术面试的几率,顺利拿下心仪 Offer。

因为篇幅原因,就只展示了所有的题目,大家可以自测一下看看能够答出多少道题目;需要参考答案点赞+转发之后【戳此处】获取!

项目相关

1.1 介绍一下你简历上写的项目?自己主要做了什么?

1.2 你觉得项目里给你最大的挑战是什么?遇到了什么问题?如何解决的?从中学到了什么?

项目里面会不断出现各种问题,比如数据量过大造成的内存溢出问题,如何让程序运行效率更高,如何证明我们的算法比别人的算法效率高,如何找到新的观点来支撑我们现有的理论,如何向导师和师兄进行沟通完成接下来的工作。

1.3项目的架构图能画一下不?

1.4 觉得项目有哪些地方可以改进完善?(比如:可以加一个 redis 缓存把热点数据缓存起来)

1.5 有没有遇到过内存泄漏的场景?

基础问题

2.1 进程和线程的区别?

2.2 进程的调度算法有哪些?(重要)

2.3 常用 IO 模型?

2.4 select、poll 和 epoll 的区别?epoll 的底层使用的数据结构。

2.5 进程的通信方式有哪些?线程呢?

2.6 fork 函数的作用?

2.7 协程的概念?

2.8. linux 进程和线程?

2.9 通过进程 id 查看占用的端口,通过端口号查看占用的进程 id ?

2.10 如何查看占用内存比较多的进程?

2.11 僵尸进程产生的原因?

2.12 孤儿进程产生的原因?

2.13 讲一下虚拟内存。虚拟内存和物理内存的关系是什么?

2.14 分段和分页讲一下?以及对应的场景?

2.15 讲一下用户态和内核态?所有的系统调用都会进入到内核态吗?

2.16 平常用什么 linux 命令比较多?如何打开文件并进行查找某个单词?怎么在某个目录下找到包含 txt 的文件?

2.17 用过 ping 命令么?简单介绍一下。TTL 是什么意思?

2.18 怎么判断一个主机是不是开放某个端口?

2.19 说一下你最用的比较多得模式(我说的工厂模式和观察者模式),再实现一个单例模式。

2.20 排序算法哪些是稳定的,为什么直接插入排序是稳定的,各种排序算法的时间复杂度和空间复杂度?

2.21 如何进行二叉树的各种遍历的非递归算法实现?简要讲述。

2.22 硬链接和软链接?

2.23 中断的分类?

2.24 软中断和硬中断?

2.25 红黑树和平衡二叉树?

Java 基础

3.1 StringBuilder 和 StringBuffer

3.2 Java 实现连续空间的内存分配?

3.3 创建对象的方式有哪几种?

3.4 接口和抽象类有什么区别?

3.5 深拷贝和浅拷贝区别?

3.6 讲一讲封装,继承,多态(重要)

  • 编译时多态
  • 运行时多态

3.7 泛型是什么?类型擦除?

3.8 如何实现静态代理?有啥缺陷?

3.9 动态代理的作用?在哪些地方用到了?(AOP、RPC 框架中都有用到,面试笔试中经常要求手写一个动态代理)

3.10 JDK 的动态代理和 CGLIB 有什么区别?

3.11 谈谈对 Java 注解的理解,解决了什么问题?

3.12 Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?

3.13 为什么框架需要反射技术?

3.14 获取 Class 对象的两种方式

3.15 内存泄露和内存溢出的场景。

  • 内存泄露的场景
  • 内存溢出场景

3.16 讲一下,强引用,弱引用,软引用,虚引用。

3.17 一个对象是否有虚引用的存在,不会对其生存时间造成影响,也无法通过虚引用 得到一个对象。

3.18 讲一下 Java 的 NIO,AIO, BIO?

3.19 Java 中 finalize()方法的使用?

3.20 GC Root 对象有哪些

3.21 Java 中 Class.forName 和 ClassLoader 的区别?

3.22 讲一下 CopyOnWriteArrayList 和 CopyOnWriteArraySet?

  • CopyOnWrite 容器:
  • CopyOnWrite 的缺点

3.23 单例模式(重要)

3.24 Java 中>>和>>>的区别

因为篇幅原因,就只展示了所有的题目,大家可以自测一下看看能够答出多少道题目;需要参考答案点赞+转发之后【戳此处】获取!

计网

4.1 为什么网络要分层?

4.2 TCP/IP 4 层模型了解么?

4.3 HTTP 是哪一层的协议?http 常见的状态码

4.4 HTTP 和 HTTPS 什么区别?

4.5 讲一下对称加密算法和非对称加密算法?

4.6 HTTP2.0 讲一下

4.7 HTTP 报文详解?详细说一下请求报文,以及 HTTP 和 TCP 的区别

4.8 TCP 三次握手的过程,以及三次握手的原因?

4.9 TCP 四次挥手的过程,以及四次挥手的原因?

4.10 TCP 滑动窗口是干什么的?TCP 的可靠性体现在哪里?拥塞控制如何实现的?

4.11 TCP 和 UDP 有什么区别?及其适用的场景。

4.12 Mac 地址和 ip 地址的区别?既然有了 Mac 地址,为什么还要 ip 地址呢?

4.13 当你打开一个电商网站,都需要经历哪些过程?分别用到了什么协议。

4.14. 电子邮件的发送过程?

4.15 DNS 解析过程,DNS 劫持了解吗?

4.16 GET 和 POST 有什么不一样?

4.17 session 和 cookie 的问题?

4.18 HTTP 是不保存状态的协议,如何保存用户状态?

4.19 Arp 协议?

4.20 DDos 攻击了解吗?

集合框架

5.1 ArrayList 的扩容机制?

5.2 HashMap 的底层实现、JDK 1.8 的时候为啥将链表转换成红黑树?HashMap 的负载因子

5.3 ConcurrentHashMap 的底层实现

5.5 什么 ConcurrentHashMap 的读操作不需要加锁?

5.6 HashMap,LinkedHashMap,TreeMap 有什么区别?HashMap ,TreeMap

5.7 有哪些集合是线程不安全的,又有哪些集合是线程不安全的?怎么解决呢?线程安全的集合类.

5.8 什么是快速失败 (fail-fast) 、能举个例子吗?什么是安全失败 (fail-safe) 呢?

5.8 HashMap 多线程操作导致死循环问题异常

多线程

6.1 在多线程情况下如何保证线程安全。

6.2 写一个死锁的例子

6.3 讲一下 volatile 关键字的作用。

6.4 synchronized 作用,讲一讲底层实现。

6.5 ReetrantLock 和 synchronized 的区别

6.6 说说 synchronized 关键字和 volatile 关键字的区别

6.7 ReetrantLock 实现方式

6.8 interrupt,interrupted 与 isInterrupted 方法的区别? 如何停止一个正在运行的线程

6.9 线程池作用?Java 线程池有哪些参数?阻塞队列有几种?拒绝策略有几种?线程池的工作机制?

6.10 线程池拒绝策略分别使用在什么场景?

6.11 线程死锁,解除线程死锁有哪几种方式?(两次栽倒这题上了,时间太久又忘记了,如何解决很重要)

6.12 ThreadLocal 是什么,应用场景是什么,原理是怎样的?

6.13 ThreadLocal 类为什么要加上 private static 修饰?

6.14 ThreadLocal 有什么缺陷?如果线程池的线程使用 ThreadLocal 会有什么问题?

6.15 介绍一下 Java 有哪些锁

6.16 乐观锁和悲观锁讲一下,哪些地方用到。

以上内容是Java高频重点面试问题总结,问题答案可参考以下链接,希望能够帮助大家快速达到面试状态,顺利拿到心仪offer 。

最全学习笔记大厂真题+微服务+MySQL+分布式+SSM框架+Java+Redis+数据结构与算法+网络+Linux+Spring全家桶+JVM+高并发+各大学习思维脑图+面试集合