小源为大家精选了各大厂6个高频的Java面试题,读到就是赚到,啃完今年春招一路开挂~话不多说,一起来看看吧!
一、Java面向对象的3个特征有哪些?
Java面向服务对象的三个方面基本结构特征是:封装、继承和多态。
封装:封装是把过程和数据包围起来,对数据的访问我们只能可以通过已定义的接口。面向对象进行计算始于这个社会基本概念,即现实生活世界发展可以被描绘成一系列完全自治、封装的对象,这些数据对象主要通过这样一个受保护的接口访问其他对象。
继承:Java 继承是一种基于现有类定义构建新类的技术。新的类定义可以添加新数据或新功能,或者可以使用父类的功能,但不能选择性地从父类继承。
多态:对于同一个行为,不同的子类对象具有不同的表现形式。
二、String 类可以通过继承吗?
不可以。String 类使用final修饰,无法被继承。
四、 final/final/final有什么不同?
1.性质不同
(1)final为关键字;
(2)finalize()为方法;
(3)finally为为区块重要标志,用于try语句中;
2. 作用
(1) final 是用于标识常量的关键字,final 标识符的关键字存储在常量池中(下面描述了最终常量的用法) ;
(2)finalize()方法在Object中进行了一个定义,用于在对象“消失”时,由JVM进行系统调用可以用于对对象 进行生活垃圾分类回收,类似于C++中的析构函数;用户通过自定义时,用于控制释放研究对象需要占用的资源(比如学生进行 I/0操作);
(3) finally {}用于与 try {}一起标识代码块,不管 try 中的代码是否执行
四、会话/Cookie之间的区别是什么?
session存储在服务器端,可以是任意的java类型;Cookie存储在客户端,只能为字符串类型
五、String 是最基本的数据类型吗?
不是。Java 中的基本信息数据进行类型企业只有 8 个:byte、short 、int 、long 、float 、double 、char 、boo lean。除了一些基本数据类型( primitive type ),剩下的都是通过引用不同类型( reference type)。
六、Java 内存管理结构(运行时进行数据区)
1.程序计数器:线程私有。一小块内存,可用作当前线程正在执行的字节码的行号指示器。如果使用线程技术正在进行执行的是一个Java方法,这个时间计数器记录的是正在通过执行的虚拟机字节码指令的地址;如果我们正在工作执行的是Native方法,这个计数器值则为空。
2.Java虚拟机栈:线程私有。它的生命周期与线程相同。虚拟机堆栈描述了Java方法执行的内存模型:每个方法都会创建一个堆栈帧,在执行时存储本地变量表、操作数堆栈、动态链接、方法出口等信息。每一个教学方法从调用进行直至通过执行工作完成的过程,就对应着我们一个栈帧在虚拟机栈中入栈到出栈的过程。
3.本地方法栈:线程私有。本地方法堆栈的作用与虚拟机堆栈非常相似,只不过虚拟机堆栈执行虚拟机的 Java 方法(即字节码)服务,本地方法堆栈服务虚拟机使用的本地方法。
4.Java堆:线程共享。对大多数企业应用方面来说,Java堆是Java虚拟机所管理的内存中最大的一块。Java堆是被所有工作线程进行共享的一块内存空间区域,在虚拟机启动时可以创建。此内存区域的唯一一个目的主要就是可以存放对象实例,几乎我们所有的对象实例都在这里分配内存。
5.方法区域: 和 Java 堆一样,它是一个由不同线程共享的内存区域,用于存储类信息(构造函数、接口定义)、常量、静态变量、即时编译器编译的代码(字节码)以及其他由虚拟机加载的数据。方法区是JVM规范中定义的一个概念,具体放在哪里,不同的实现可以放在不同的地方。
6.运行时常量池:类、接口、方法和类字段的表述信息。具有动态性,在程序进行运行的过程中我们可能他们会将新的常量可以放入系统运行时常量池,如使用String类的intern方法。
今天的Java面试题就分享到这儿,有需要的小伙伴可以关注好程序员IT教育,你的关注就是小源创作的动力~后台dd,可免费获取“java精品课程”优秀的你与大厂之间只差一个“好程序员”!