Java基础面试题【背诵】

一、面试题汇总

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次方

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关键字的作用?

  1. final在类之前:表示该类是最终类,不能再被继承。
  2. final在方法之前:表示该方法是最终方法,不能被子类覆盖/重写。
  3. final在变量之前:表示变量的值在初始化之后就不能再改变;相当于定义了一个常量。

18、什么是抽象类?请说出抽象类所具有的特点?

使用abstract修饰的类叫抽象类,
抽象类特点如下:

  • 抽象类必须被继承
  • 抽象类不能被直接实例化。它只能作为其它类的超类,这一点与最终类(final类)正好相反。

19、什么是抽象方法?抽象方法的特点?

抽象方法:用abstract来修饰的方法
抽象方法特点如下:

  • 抽象方法必须被重写
  • 抽象方法只有声明,不能有实现。
  • 定义了抽象方法的类必须是抽象类。

20、什么是接口?使用接口的好处?

接口(interface)就是方法定义和常量值的集合。
从语法上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有方法的实现。
接口的特点

  • 通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。
  • 通过接口可以指明多个类需要实现的方法。
  • 通过接口可以了解对象的交互界面,而不需了解对象所对应的类。

21、请写出抽象类、接口的相同点和不同点?

  1. 相同点
    都必须通过其它类实现才能使用;
  2. 不同点
    抽象类是类,其中可包含变量及(抽象)方法的定义;
    接口实质并不是类,其中只包含类常量及抽象方法的定义;

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区别?

  • TCP:通信传输速度更慢,数据无差错,有序顺序接收;
    TCP严格区分客户端和服务器端,在通信时,必须先由客户端去连接服务器端才能实现通信,服务器不可以主动连接客户端
  • UDP:通信传输速度更快,不能保证数据无差错,无序顺序接收
    UDP只有发送端和接收端,不区分客户端和服务器端,计算机之间可以任意发送数据;

32、请简要说明网络通信基本概念?

  • 协议:一组在网络上发送信息的规则和约定。这些规则控制在网络设备间交换消息的内容、格式、定时、顺序和错误控制。
  • Ip--在Internet上有千百万台主机,为了区分这些主机,人们给每台主机都有分配了一个专门的地址,称为IP地址。
  • DNS--将 IP 地址映射至字符串
  • 端口--有别于设备端口,是用来理解的逻辑概念,用于实现程序间的通信
posted @ 2023-12-11 18:07  "贼*.猫"贼*.帅`  阅读(14)  评论(0编辑  收藏  举报