1 / 14
文档名称:

java框架面试题.docx

格式:docx   大小:22KB   页数:14页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

java框架面试题.docx

上传人:小yi 2022/11/26 文件大小:22 KB

下载得到文件列表

java框架面试题.docx

相关文档

文档介绍

文档介绍:该【java框架面试题 】是由【小yi】上传分享,文档一共【14】页,该文档可以免费在线阅读,需要了解更多关于【java框架面试题 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。本文格式为Word版,下载可任意编辑
—2—
java框架面试题
==和equals和hashCode的识别
、char、long各占多少字节数
byte1字节最小值是-128(-2^7);最大值是127(2^7-1);
boolean至少1字节这种类型只作为一种标志来记录true/false处境;
short2字节最小值是-32768(-2^15);最大值是32767(2^15-1);
char2字节最小值是\u0000(即为0);最大值是\uffff(即为65,535);
int4字节最小值是-2,147,483,648(-2^31);最大值是2,147,483,647(2^31-1);
float4字节单精度浮点数字长32位,尾数长度23,指数长度8,指数偏移量127;
long8字节最小值是-9,223,372,036,854,775,808(-2^63);
最大值是9,223,372,036,854,775,807(2^63-1);
double8字节双精度浮点数字长64位,尾数长度52,指数长度11,指数偏移量1023;
本文格式为Word版,下载可任意编辑
—3—
英文字母:字节数:1;编码:GB2312
字节数:1;编码:GBK
字节数:1;编码:ISO-8859-1
字节数:1;编码:UTF-8
中文汉字:
字节数:2;编码:GB2312
字节数:2;编码:GBK
字节数:1;编码:ISO-8859-1
字节数:3;编码:UTF-8

,int的初值为0,Ingeter的初值为null;
,inti=1;Integeri=newInteger(1);(要把integer当做一个类看);但由于有了自动装箱和拆箱使得对Integer类也可使用:Integeri=1;
(面向过程留下的痕迹,不过是对java的有益补充),Integer是一个类,是int的扩展,定义了好多的转换方法
,用一个引用指向这个对象,而int是根本类型,直接存储数值。

多态:继承父类的子类重写父类的某个方法,不同的子类调运同一个方法可以,产生不同的结果。
本文格式为Word版,下载可任意编辑
—4—
多态的三个必要条件:



面向对象的三大特性封装、继承、多态。从某种程度来看,封装、继承就是为了多态打定的,也是最重要的学识点。
实现多态的技术:动态绑定,是指在执行期间,根据引用对象实际指向的对象,来执行对应的方法。
多态的作用:消释类型之间的耦合关系。
多态的好处:
:多态对已存在的代码有可替换性(重写);
:多态对代码具有扩展性;
:多态是父类通过方法签名,为子类供给的共同接口,由子类去完善或笼罩;
:它在应用中表达了生动多样的操作,提高了使用效率;
。Java中多态的实现方式:实现接口,继承父类举行方法重写,同一个类中举行方法的重载。
什么是内部类?内部类的作用
定义:
将一个类定义在一个类或者一个方法里面,这样的类称着内部类
本文格式为Word版,下载可任意编辑
—5—
内部类的种类有4种:
1、成员内部类
2、静态内部类静态内部类就是在成员内部类多加了一个static关键字。
3、匿名内部类
4、局部内部类
内部类的作用
1、内部类可以很好的实现暗藏。
非内部类是不成以使用private和protected修饰的,但是内部类却可以,从而达成暗藏的作用。同时也可以将确定规律关系的类组织在一起,巩固可读性。
2、间接的实现多继承。
每个内部类都能独立地继承自一个(接口的)实现,所以无论外部类是否已经继承了某个(接口的)实现,对于内部类都没有影响。假设没有内部类供给的可以继承多个概括的或抽象的类的才能,一些设计与编程问题就很难解决。所以说内部类间接的实现了多继承。
抽象类和接口识别?
抽象类:
1:有abstract修饰的class,十足就是抽象类。
2:抽象类中可以有抽象方法,也可以没有抽象方法,但是有抽象方法的class,就确定会是抽象类。
本文格式为Word版,下载可任意编辑
—5—
3:抽象类是不能创造实例对象的。
4:假设有子类继承这个抽象类,那么务必要实现父类中的抽象方法,假设不实现的话,那么这个字类也务必定义为抽象类。
接口:
1:接口只能实现不能够继承,譬如,一个类可以实现多个接口,但是只能继承一个父类,也可以这样理解,一个类可以有多个干爹(实现接口),但是只能有一个亲爹(继承父类)。
2:假设要实现这个接口,那么该接口中的方法务必要实现。由于我们定义接口中的方法时,系统是默认这些方法是抽象的方法,也就是说这些方法是有publicabstract这个来修饰的。
3:在接口中定义的变量务必是全局变量的,也就是说有publicstaticfinal修饰的
抽象类的意义
抽象类与接口的应用场景
抽象类是否可以没有方法和属性?
泛型中extends和super的识别?
和是Java泛型中的"通配符(Wildcards)'和"边界(Bounds)'的概念。
本文格式为Word版,下载可任意编辑
—6—
:是指"上界通配符(UpperBoundsWildcards)'
:是指"下界通配符(LowerBoundsWildcards)'
父类的静态方法能否被子类重写?
先给一个答案,不能,父类的静态方法能够被子类继承,但是不能够被子类重写,即使子类中的静态方法与父类中的静态方法完全一样,也是两个完全不同的方法。
重写指的是根据运行时对象的类型来抉择调用哪个方法,而不是根据编译时的类型。
对于静态方法和静态变量来说,虽然在上述代码中使用对象来举行调用,但是底层上还是使用父类来调用的,静态变量和静态方法在编译的时候就将其与类绑定在一起。既然它们在编译的时候就抉择了调用的方法、变量,那就和重写没有关系了。
静态属性和静态方法是否可以被继承
可以被继承,假设子类中有一致的静态方法和静态变量,那么父类的方法以及变量就会被笼罩。要想调用就就务必使用父类来调用。
从上述代码可以看出,子类中笼罩了父类的静态方法的话,调用的是子类的方法,这个时候要是还想调用父类的静态方法,理应是用父类直接调用。假设子类没有笼罩,那么调用的是父类的方法。静态变量与此好像。
进程和线程的识别?
本文格式为Word版,下载可任意编辑
—8—
进程
是系统举行资源调配的独立单元
1
设计思想:为了允大量个程序同时在内存中运行
特点:进程是程序的一次执行过程。若程序执行两次甚至屡屡,那么需要两个甚至多个进程。
进程是是正在运行程序的抽象。它代表运行的CPU,也称进程是对CPU的抽象。(虚拟技术的支持,将一个CPU变幻为多个虚拟的CPU)
系统资源(如内存、文件)以进程为单位调配。
操作系统为每个进程调配了独立的地址空间
操作系统通过"调度'把操纵权交给进程。
线程
cpu调度的根本单元
1
设计思想:
在一个进程内也需要并行执行多个程序,实现不同的功能。
进程切换的代价、开销对比大;
在进程内创造、终止线程比创造、终止进程要快。同一进程内的线程间切换比进程间的切换要快,尤其是用户级线程间的切换。线程之间相互通信无须通过内核(同一进程内的线程共享内存和文件)
本文格式为Word版,下载可任意编辑
—8—
final,finally,finalize的识别?
序列化的方式?
Serializable和Parcelable的识别?
哪些处境下的对象会被垃圾回收机制处理掉?
静态代理和动态代理的识别,什么场景使用?
静态代理通常只代理一个类,动态代理是代理一个接口下的多个实现类。
静态代理事先知道要代理的是什么,而动态代理不知道要代理什么东西,只有在运行时才知道。
动态代理是实现JDK里的InvocationHandler接口的invoke方法,但留神的是代理的是接口,也就是你的业务类务必要实现接口,通过Proxy里的newProxyInstance得到代理对象。
Java的奇怪体系
Java把奇怪作为一种类,当做对象来处理。全体奇怪类的基类是Throwable类,两大子类分别是Error和Exception。
系统错误由Java虚拟机抛出,用Error类表示。Error类描述的是内部系统错误,例如Java虚拟机崩溃。这种处境仅凭程序自身是无法处理的,在程序中也不会对Error奇怪举行抓获和抛出。
本文格式为Word版,下载可任意编辑
—10—
奇怪(Exception)又分为RuntimeException(运行时奇怪)和CheckedException(检查时奇怪),两者识别如下:
RuntimeException:程序运行过程中才可能发生的奇怪。一般为代码的规律错误。例如:类型错误转换,数组下标访问越界,空指针奇怪、找不到指定类等等。
CheckedException:编译期间可以检查到的奇怪,务必显式的举行处理(捕获或者抛出到上一层)。例如:IOException,FileNotFoundException等等。
谈谈你对解析与分派的熟悉。
:方法在程序真正运行之前就有一个可以确定的调用版本,并且这个方法的调用版本在运行期是不成变更的,即"编译期可知,运行期不成变',这类目标的方法的调用称为解析(Resolve)。
静态分派
静态分派只会涉及重载(Oveload),而重载是在编译期间确定的,那么静态分派自然是一个静态的过程(由于还没有涉及到Java虚拟机)。静态分派的最直接的解释是在重载的时候是通过参数的静态类型而不是实际类型作为判断依据的。因此在编译阶段,Javac编译器会根据参数的静态类型抉择使用哪个重载版本。
动态分派
动态分派的一个最直接的例子是重写(Override)。对于重写,我们已经很熟谙了,那么Java虚拟机是如何在程序运行期间确定方法的执行版本的呢?
本文格式为Word版,下载可任意编辑
—10—
Java中实现多态的机制是什么?
靠的是父类或接口定义的引用变量可以指向子类或概括实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的概括实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。
如何将一个Java对象序列化到文件里?
将对象序列化到文件

()方法写入和ObjectInputStream的readObject()方法来举行读取
//存进去
Java反射的理解
简朴的来说,反射机制其实就是指程序在运行的时候能够获取自身的信息。假设知道一个类的名称或者它的一个实例对象,就能把这个类的全体方法和变量的信息(方法名,变量名,方法,修饰符,类型,方法参数等等全体信息)找出来。假设明确知道这个类里的某个方法名+参数个数类型,还能通过传递参数来运行那个类里的那个方法,这就是反射。