2022年秋招,Java面试八股文(2)




2022年秋招快来了,很多同学会问Java面试八股文有必要背吗?

我的回答还是那句话:很有必要。你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。国内的互联网百试,恐怕是现存的,最接近科举考试的制度。

就像是面试官问你你啥都不知道,啥都不理解,你觉得他会录用你吗???

直接上干货



简述 Java 异常的分类

Java 异常分为 Error(程序无法处理的错误),和 Exception(程序本身可以处理的异常)。这两个类均继承 Throwable。

Error 常见的有 StackOverFlowError、OutOfMemoryError 等等。

Exception 可分为运行时异常和非运行时异常。对于运行时异常,可以利用 try catch 的方式进行处理,也可以不处理。对于非运行时异常,必须处理,不处理的话程序无法通过编译。

简述 throw 与 throws 的区别

throw 一般是用在方法体的内部,由开发者定义当程序语句出现问题后主动抛出一个异常。

throws 一般用于方法声明上,代表该方法可能会抛出的异常列表。

出现在 Java 程序中的 finally 代码块是否一定会执行?

当遇到下面情况不会执行。

  • 当程序在进入 try 语句块之前就出现异常时会直接结束。
  • 当程序在 try 块中强制退出时,如使用 System.exit(0),也不会执行 finally 块中的代码。

其它情况下,在 try/catch/finally 语句执行的时候,try 块先执行,当有异常发生,catch 和 finally 进行处理后程序就结束了,当没有异常发生,在执行完 finally 中的代码后,后面代码会继续执行。值得注意的是,当 try/catch 语句块中有 return 时,finally 语句块中的代码会在 return 之前执行。如果 try/catch/finally 块中都有 return 语句,finally 块中的 return 语句会覆盖 try/catch 模块中的 return 语句。

final、finally 和 finalize 的区别是什么?

  • final 用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖、类不可继承。
  • finally 作为异常处理的一部分,只能在 try/catch 语句中使用,finally 附带一个语句块用来表示这个语句最终一定被执行,经常被用在需要释放资源的情况下。
  • finalize 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的 finalize()方法。当垃圾回收器准备好释放对象占用空间时,首先会调用 finalize()方法,并在下一次垃圾回收动作发生时真正回收对象占用的内存。

简述泛型

泛型,即“参数化类型”,解决不确定对象具体类型的问题。在编译阶段有效。在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型在类中称为泛型类、接口中称为泛型接口和方法中称为泛型方法。

简述泛型擦除

Java 编译器生成的字节码是不包涵泛型信息的,泛型类型信息将在编译处理是被擦除,这个过程被称为泛型擦除。

简述注解

Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。

其可以用于提供信息给编译器,在编译阶段时给软件提供信息进行相关的处理,在运行时处理写相应代码,做对应操作。

简述元注解

元注解可以理解为注解的注解,即在注解中使用,实现想要的功能。其具体分为:

  • @Retention: 表示注解存在阶段是保留在源码,还是在字节码(类加载)或者运行期(JVM 中运行)。
  • @Target:表示注解作用的范围。
  • @Documented:将注解中的元素包含到 Javadoc 中去。
  • @Inherited:一个被@Inherited 注解了的注解修饰了一个父类,如果他的子类没有被其他注解修饰,则它的子类也继承了父类的注解。
  • @Repeatable:被这个元注解修饰的注解可以同时作用一个对象多次,但是每次作用注解又可以代表不同的含义。

简述 Java 中 Class 对象

java 中对象可以分为实例对象和 Class 对象,每一个类都有一个 Class 对象,其包含了与该类有关的信息。

获取 Class 对象的方法:

Class.forName(“类的全限定名”)
实例对象.getClass()
类名.class

Java 反射机制是什么?

Java 反射机制是指在程序的运行过程中可以构造任意一个类的对象、获取任意一个类的成员变量和成员方法、获取任意一个对象所属的类信息、调用任意一个对象的属性和方法。反射机制使得 Java 具有动态获取程序信息和动态调用对象方法的能力。可以通过以下类调用反射 API。

  • Class 类:可获得类属性方法
  • Field 类:获得类的成员变量
  • Method 类:获取类的方法信息
  • Construct 类:获取类的构造方法等信息

序列化是什么?

序列化是一种将对象转换成字节序列的过程,用于解决在对对象流进行读写操作时所引发的问题。序列化可以将对象的状态写在流里进行网络传输,或者保存到文件、数据库等系统里,并在需要的时候把该流读取出来重新构造成一个相同的对象。

简述 Java 序列化与反序列化的实现

序列化:将 java 对象转化为字节序列,由此可以通过网络对象进行传输。

反序列化:将字节序列转化为 java 对象。

具体实现:实现 Serializable 接口,或实现 Externalizable 接口中的 writeExternal()与 readExternal()方法。

简述 Java 的 List

List 是一个有序队列,在 Java 中有两种实现方式:

ArrayList 使用数组实现,是容量可变的非线程安全列表,随机访问快,集合扩容时会创建更大的数组,把原有数组复制到新数组。

LinkedList 本质是双向链表,与 ArrayList 相比插入和删除速度更快,但随机访问元素很慢。

Java 中线程安全的基本数据结构有哪些

  • HashTable: 哈希表的线程安全版,效率低
  • ConcurrentHashMap:哈希表的线程安全版,效率高,用于替代 HashTable
  • Vector:线程安全版 Arraylist
  • Stack:线程安全版栈
  • BlockingQueue 及其子类:线程安全版队列

#java##Java八股文#
全部评论
最近就在疯狂的背八股文
点赞 回复 分享
发布于 2022-08-19 19:00 陕西

相关推荐

大方的大熊猫准备进厂:1.教育背景:你希望从事什么专业的工作你的主修课就是什么;成绩优秀是你应该做的,没什么可描述的,成绩不优秀也许人家在大学忙着创业呢?(成绩优秀不一定是好事,只能说明多元化的大学你上成了高中,没有真正上明白大学,反而体现了你死板,不爱社交,没有别的突出能力) 2.实践经历:你想表达的意思没有说清楚。你是说你会个性化服务,还是你有实习经历。如果没有带来,经济收益,表彰,更好的发展前景,那你还不如说说提升了自己哪些技能。你说有人给你送锦旗我都能明白你优秀,但是你说你会xxxx,你说这话谁信,证据呢。 3.入伍经历:你描述的就是你的工作职责或者你应该做的,并没有体现出来你把这个事情做好了,而且入伍经历并不能证明你能干好你要应聘的工作,不如只写经历其余所有内容都不写。 4.荣誉技能:重点突出一下,但不要过多描述,这些荣誉的含金量懂得都懂。 重点:你要应聘什么工作(具体岗位,实习生不具体),你的期望薪资
点赞 评论 收藏
分享
评论
2
12
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务