一、面试题汇总
1.请简述java特点?
简单、平台无关性、 面向对象、 多线程、 分布性、 高性能(相对于其他解释型语言)、 健壮性、开源
2.什么是JDK,JRE,JVM及它们之间的关系?
- JDK是JAVA的核心,包括JRE(JAVA 虚拟环境)、编译器、运行工具等
- JRE是JAVA运行环境,包括JVM、JAVA平台核心类和支持文件
如果只是运行JAVA程序的话,下载JRE就可以了,如果要开发的话,就要下JDK了。 - JVM(JAVA虚拟机),是可以运行JAVA代码的假想计算机,主要任务是把JAVA字节码编译成机器指令
JAVA运行顺序:先编写JAVA程序块,然后通过JDK的编译器把JAVA程序编译成字节码生成class文件,然后通过JVM运行
主要指令有 javac a.java,java a
3、0.7E-3的意思是0.7乘以10的-3次方
4、Java中,基本数据类型有哪些?
byte、short、int、long、float、double、char、boolean
5、请写出java中基本数据类型所对应的字节数?
类型============>字节数
boolean========>1
byte===========>1
short==========>2
int============>4
long===========>8
float==========>4
double=========>8
char===========>2
6、java的标识符由什么组成?能不能是中文?
一个标识符可以是字母、数字、下划线、美元符号的任意顺序组合,但不能以一个数字开始。
由于java使用unicode标准字符集,所以可以有中文字符。
7、类和对象的关系?
类定义了一种新的数据类型,可以用新类型来创建该类型的对象。
类(class)是对象(object)的模板,而对象(object)是类的一个实例(instance)。
8、定义一个类需要包含什么元素?
一个类包含属性和方法。特征使用属性表示,行为使用方法表示。
9、如何使用this关键字?
this指向自己的引用,即当前方法所在的对象。
它的一个主要作用是要将自己这个对象当作参数,传送给其他对象中的方法。
或者在类定义时使用this来引用自己的属性或方法。
10、类体中的方法包含哪些分类?
- 按返回值分:有返回值、无返回值
- 按参数分:无参数、有参数(单个参数,多个参数)
- 按范围或功能分:实例方法、类方法、构造方法
11、什么是继承?
- 继承性是面向对象程序设计语言的基本特征,通过继承可以实现代码的复用。继承而得到的类为子类,被继承的类为父类(超类),父类包括所有直接或间接被继承的类。
- 子类可继承父类中的变量及方法,也可定义其自身特有的变量及方法。
- Java中不支持多重继承
12、Java中如何实现继承?
在类的声明中加入extends子句来创建一个类的子类:
class SubClass extends SuperClass{
……
}
13、Java中,有继承关系时,变量隐藏的原则?
变量隐藏原则:子类中变量名与继承自父类的变量名相同时,则继承自父类的变量将被隐藏
14、Java中,有继承关系时,方法重写原则?
方法重写原则:重写后的方法不能比被重写的方法有更严格的访问权限(可以相同)。
15、Java中,super关键字的作用?
- 调用构造方法:super()必须是子类构造函数第一个执行的语句,如果super()没有被用到,每个超类的默认的或无参数的构造函数将被执行。
- 调用被隐藏变量及方法:可通过super关键字调用被隐藏的父类中的变量及方法。
16、Java中,是否支持多继承?
不支持多继承,允许多层次继承
17、Java中,请说明final关键字的使用?
- final在类之前:表示该类是最终类,表示该类不能再被继承。
- final在方法之前:表示该方法是最终方法,该方法不能被任何派生的子类覆盖/重写。
- final在变量之前:表示变量的值在初始化之后就不能再改变;相当于定义了一个常量。
18、什么是抽象类?请说出抽象类所具有的特点?
使用abstract修饰的类叫抽象类,
抽象类特点如下:
- 抽象类必须被继承。
- 抽象类不能被直接实例化。它只能作为其它类的超类,这一点与最终类(final类)正好相反。
19、什么是抽象方法?抽象方法的特点?
抽象方法:用abstract来修饰的方法
抽象方法特点如下:
- 抽象方法必须被重写
- 抽象方法只有声明,不能有实现。
- 定义了抽象方法的类必须是抽象类。
20、什么是接口?使用接口的好处?
接口(interface)就是方法定义和常量值的集合。
从语法上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有方法的实现。
接口的特点:
- 通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。
- 通过接口可以指明多个类需要实现的方法。
- 通过接口可以了解对象的交互界面,而不需了解对象所对应的类。
21、请写出抽象类、接口的相同点和不同点?
- 相同点:
都必须通过其它类实现才能使用; - 不同点:
抽象类是类,其中可包含变量及(抽象)方法的定义;
接口实质并不是类,其中只包含类常量及抽象方法的定义;
22、 final,finally,finalize的区别是什么?
陈述:
- final是修饰符:表示最终的,可以修饰类、方法、属性;修饰类则类不能被继承,修饰方法则方法不能被重写,修饰属性则属性值不能被修改是常量
- Finally用于实现异常处理,无论是否有异常都执行的程序块,一般用于释放被占用的资源
- Finalize是Object类的方法,垃圾回收时调用该方法
23、异常处理的机制有几种?分别是什么?
2种
- 捕获异常(try catch finally)
- 声明异常(throws)
24、error和exception有什么区别?
- Error是严重的系统错误,程序员不能处理
- Exception是异常,可以由程序员进行捕获处理或声明
25、throw、throws关键字区别?
- Throw 用于手动抛出一个异常
- Throws 用于声明方法抛出的异常
26、请简要解释线程同步的概念!
陈述:
两个或多个线程同时访问同一个资源时,该资源在某个时刻只能被一个线程访问,其他线程等待该线程访问结束并释放此资源。
27、Java如何实现线程同步?
陈述:通过方法同步和代码块同步两种方式。代码块方式要注意锁同一个对象。
28、请简要叙述多线程的特性?
陈述:
- 一个应用程序可以包含多个线程, 每个线程执行特定的任务,并可与其他线程并发执行
- 多线程使系统的空转时间最少,提高CPU利用率
- 多线程编程环境用方便的模型隐藏CPU在任务间切换的事实
29、IP地址包含网络ID、主机ID两个部分。
30、一个URL包括协议、IP、端口 、资源四个部分。
31、UDP与TCP区别?
- 基于UPD与基于TCP相比,基于UDP的通信传输速度更快;
- 但基于UDP的通信不能提供可靠性,即发出的信息接收方不一定收到,发出信息的顺序与接收的顺序不一定相同。
32、请简要说明网络通信基本概念?
- 协议:一组在网络上发送信息的规则和约定。这些规则控制在网络设备间交换消息的内容、格式、定时、顺序和错误控制。
- Ip--在Internet上有千百万台主机,为了区分这些主机,人们给每台主机都有分配了一个专门的地址,称为IP地址。
- DNS--将 IP 地址映射至字符串
- 端口--有别于设备端口,是用来理解的逻辑概念,用于实现程序间的通信