2024总结最全面106道Java高频面试合集(九大专题)(1)

最后

由于细节内容实在太多了,为了不影响文章的观赏性,只截出了一部分知识点大致的介绍一下,每个小节点里面都有更细化的内容!

小编准备了一份Java进阶学习路线图(Xmind)以及来年金三银四必备的一份《Java面试必备指南》

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

3. “static” 关键字是什么意思?在Java里可以 override private 或 static 的方法吗? keyword mean ? Can you override private or static method in Java ?

static 关键字表示,访问这个成员变量或方法时,不必获取它属于的类的实例。

Java 里的 static 方法不能被 override,因为 override 的机制是运行时(runtime)的动态绑定,而 static 方法是在编译时静态绑定的。static 方法并不与任何类的具体实例有关,因此无法应用继承的概念。

4. 在静态方法里可以访问非静态变量吗?

Java 中的 static 变量归相应的类所有,它的值对于类的所有实例都是相同的。static 变量是在 JVM 加载类的时候初始化的。如果代码试图访问非静态的变量,而且不是通过类的实例去访问,编译器会报错,因为这些非静态变量还没有被创建呢,并且它们没有与实例相关联。

5. Java 支持哪些数据类型?什么是 Autoboxing 和 Unboxing?

Java语言支持的8个基本数据类型如下:

  • byte

  • short

  • int

  • long

  • float

  • double

  • boolean

  • char

Autoboxing 是指在基本数据类型和对应的包装(wrapper)类之间Java 编译器所做的自动转换。例如,编译器将 int 转换为 Integer,将 double 转换为 Double ,等等。逆向的转换称为 unboxing。

6. 在Java中什么是方法的 Override(覆盖) 和 Overload(重载)?

Java中方法的 overload 发生的条件是,同一个类里,有两个或以上的方法名称完全相同,但参数列表不同。另一方面,方法的 override 是指,子类重定义了父类里的同一个方法。Override 的方法必须方法名、参数列表和返回类型都完全相同。Override 的方法不会限制原方法的访问权限。

7.Java中构造函数、构造函数重载的概念和拷贝构造函数

8.Java支持多继承吗?

9.接口和抽象类有什么不同?

10.传引用和传值

Java 线程

===========

11. 进程与线程的区别 ?

进程是一个程序的执行(即正在运行的程序), 然而线程是在进程中独立的执行序列. 一个进程可以包含很多线程. 线程有时被称为轻量级的进程.

12. 说下创建线程的不同方式. 你倾向于哪种方式并说明原因 ?

有三种创建线程的方式:

  • 继承Thread类.

  • 实现Runnable接口.

  • 通过Executor框架创建线程池.

首选方式是实现Runnable接口, 因为它不需要继承Thread类. 当你的程序设计需要多继承时, 使用接口会有所帮助. 另外, 线程池效率是很高的, 并且实施起来也很简单.

13. 解释下可用的线程状态.

14. 同步方法与同步块的区别 ?

15. 在监视器中的线程同步是怎样发生的? 你可以使用哪些级别的同步 ?

16. 什么是死锁 ?

17. 怎样确保N个线程访问N个资源时不会发生死锁 ?

Java Collections

====================

18. Java Collections框架的基本接口 ?

Java Collections 框架 提供了一系列支持对象集合操作的设计良好的接口和类. Java Collections框架中最基础的接口是:

  • Collection, 表示一组对象(元素).

  • Set, 包含非重复元素的集合.

  • List, 包含非重复元素的有序集合.

  • Map, 包含非重复键的键值对的对象.

19. 为什么Collection没有继承Cloneable和Serializable接口 ?

Collection接口描述的是由元素组成的对象组. Collection的每一个具体实现可以选择自己的方式来管理元素. 一些集合允许存在重复键, 另一些则不允许.

当处理实际实现时复制和序列化的语义和效果才会起作用. 因此, 集合类的具体实现应该决定它们将怎样被复制和序列化.

20. 什么是Iterator(叠代器) ?

Iterator接口提供了许多能够叠代集合的方法.每个java集合(Collection)都含有一个返回Iterator实例的iterator方法. 叠代器在叠代过程中能够移除底层集合中的元素.

21. Iterator 和ListIterator之间的不同 ?

22. fail-fast与fail-safe的区别?

23. Java中的 HashMap 是怎么工作的?

24. hashCode() 和 equals() 方法重要性何在 ?

25.HashMap与HashTable之间有哪些不同?

26.Array与ArrayList间有什么不同?与ArrayList相比你什么时候会用Array?

27.ArrayList与LinkedList间有什么不同?

28. Comparable 和 Comparator 接口分别是什么 ? 列出它们的区别。

29.Java Priority Queue是什么?

30. 关于Big-O符号你了解些什么?你能针对不同数据结构举些例子吗?

31. 如何权衡有序数组和无序数组 ?

32. 有哪些关于 Java 集合框架的最佳实践?

33. Enumeration 和 Iterator 接口有什么不同 ?

34. HashSet 和TreeSet 有什么不同?

垃圾回收器

=========

35. Java中垃圾回收的目的是什么, 它什么时候被使用 ?

垃圾回收用于识别和丢弃程序不再需要的对象, 以便回收和复用资源.

36. System.gc() 和Runtime.gc()方法用途?

这些方法用于提醒JVM开始垃圾回收. 然而开始垃圾回收的时机是由JVM决定的.

37. finalize()什么时候被调用 ? 它的目的是什么 ?

finallize方法是在释放该对象内存前由gc(垃圾回收器)调用. 通常建议在这个方法中释放该对象持有的资源.

38.如果一个对象的引用被设置为null, gc会立即释放该对象的内存么?

39. Java堆的结构是什么 ? 堆中的Perm Gen(全称是Permanent Generation)空间是什么 ?

40. Serial 垃圾回收器与 Throughput 垃圾回收器区别 ?

41. 什么时候对象会被回收 ?

42. 垃圾回收发生在指定的JVM区域 ?

异常处理

========

43. Java中的两种异常是什么?它们之间的区别?

Java有两种类型的异常:checked与unchecked(检查与未检查) 异常. 如果unchecked异常可能会在方法或构造函数的执行时被抛出从而蔓延到方法或构造函数的外部, 它们也不需要要在方法或构造函数中声明throws子句. 然而, checked异常必须通过方法或构造函数的throws子句声明. 关于java异常处理的建议请参考这里Java exception handling.

44. Java中异常与错误的区别?

Exception和Error都是Throwable类的子类. Exception用于用户程序需要捕获的异常条件. Error定义了用户程序不可预见的异常

45. throw与throws的区别 ?

关键字throw用于在程序中显式地抛出一个异常. 相反, throws子句用于指出在该方法中没有处理的异常. 每个方法必须显式指明哪些异常没有处理, 以便该方法的调用者可以预防可能发生的异常. 最后, 多个异常用逗号分隔.

45. 异常处理中finally语句块的重要性?

46. 异常被处理后异常对象会发生什么?

47. 怎样区分finally语句块与finalize()方法?

Java Applets

================

48. 什么是 Applet ?

一个 Java Applet 可以包含在 HTML 页面中并且可以在启用 Java 客户端的浏览器中运行。Applets 可以用来创建动态和交互式的 web 应用程序。

49. Applet 生命周期的说明

一个 Applet 可能会经历以下的几个状态:

  • Init: 每次加载的时候都进行初始化

  • Start: 开始执行一个 applet

  • Stop: 停止执行一个 applet

  • Destroy: 卸载 applet 之前执行最后的清理

50. 当 applet 加载的时候会发生什么?

首先,会创建一个 applet 的控制类的实例。然后,applet 初始化,最后 applet 开始运行。

51. Applet和Java应用程序有什么不同?

Applets需要一个支持Java的浏览器, 但是Java应用程序可以被单独执行。但是,他们都需要一个Java虚拟机,JVM。

还有, 一个Java应用程序需要一个main方法与特定的签名,来确保启动. Java applets并不需要这样一些东西。

最后, Java Applet通常使用严格的安全策略,而Java应用程序通常使用较宽松的安全策略。

52.什么是强加给Java Applet限制?

53. 什么是不可信的Applet ?

54. 通过文件系统加载的小程序在加载了互联网和Applet之间的区别是什么 ?

55. 什么是applet类加载器,它提供了什么?

56. 什么是applet安全管理,它提供什么? applet安全管理是对Java applet做了限制的机制。浏览器只能有一个安全管理器。安全管理器在启动的时候建立,之后它不能被取代,重载,重写或者延长。

Swing

=========

57. Choice和List之间的区别是什么?

Choice是一种紧凑的方式展示,必须要拉下,是为了让用户能够看到所有的可选选项列表。Choice只能选中一个选项。List是以几个List选项是可见的方式展示的。List支持选中一个或多个List选项。

58. 什么是布局管理器?

布局管理器是用来组织容器内的组件。

59. Scrollbar和JScrollPane 的区别是什么?

Scrollbar是一个组件, 但不是一个容器,而ScrollPane是一个容器。 ScrollPane处理它自身的事件并执行它自己的滑动。

60. 哪些Swing方法是线程安全?

61. 说出3个支持绘图的子类。

62. 什么是裁剪?

63. MenuItem和CheckboxMenuItem的区别是什么?

64. BorderLayout的元素是怎样组织的?

65. GridBagLayout的元素是怎样组织的?

66. Window和Frame有什么区别?

67. 裁剪和重画之间的关系?

68. 事件监听器接口和事件适配器类之间是什么关系?

69. 一个GUI组件怎么处理自己的事件?

70. Java布局管理器提供超过传统的窗口系统的什么样的优势?

71. Java为所有Swing组件使用的设计模式是什么?

JDBC

========

72. 什么是 JDBC ?

JDBC是一个抽象层,允许用户在不同数据库间进行选择。JDBC使开发人员能够在Java中编写数据库应用程序,而不必让自己关心一个特定的数据库的底层细节。

73. 解释JDBC中驱动的作用。

最后

Java架构学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
在这里插入图片描述

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

ava架构学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
[外链图片转存中…(img-S3wi1x85-1715777212206)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值