【备战面试】每日10道面试题打卡-Day1
创始人
2024-05-27 13:42:52
0

本篇总结的是Java基础知识相关的面试题,后续也会更新其他相关内容

文章目录

  • 1、JVM、JRE和JDK的关系?
  • 2、Java语言有哪些特点?
  • 3、Java和C++的区别有哪些?
  • 4、Java有哪些数据类型?
  • 5、访问修饰符 public、private、protected,以及不写(默认)时的 区别?
  • 6、面向对象和面向过程的区别?
  • 7、面向对象的三大特征是什么?
  • 8、抽象类和接口有哪些区别?
  • 9、成员变量与局部变量的区别有哪些?
  • 10、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?

1、JVM、JRE和JDK的关系?

答:JDK里面包含了JRE和JVM,JRE里面包含了JVM,它们分别是:

  • JVM:全名为Java Virtual Machine,是Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。
  • JRE:全名为Java Runtime Environment,是Java的运行环境,里面包括了Java虚拟机和Java程序所需的核心类库,核心类库主要就是java.lang包,里面包含了运行Java程序必不可少的系统类。
  • JDK:全名为Java Development Kit,它是提供给Java开发人员使用的,其中包含了Java的开发工具和JRE,所以说安装了JDK,就不需要单独再去安装JRE了。其中的开发工具有:编译工具(javac.exe),打包工具(jar.exe)等。

2、Java语言有哪些特点?

答:Java有以下七个特征:

  • 简单易学(Java语言的语法与C语言和C++语言很接近)
  • 面向对象(封装,继承,多态)
  • 平台无关性(Java虚拟机实现平台无关性)
  • 支持网络编程并且很方便(Java语言诞生本身就是为简化网络编程设计的)
  • 支持多线程(多线程机制使应用程序在同一时间并行执行多项任务)
  • 健壮性(Java语言的强类型机制、异常处理、垃圾的自动收集等)
  • 安全性

3、Java和C++的区别有哪些?

答:Java和C++的区别有:

  • Java与C++都是面向对象的语言都支持封装、继承和多态
  • C++中有指针,但是Java中不提供指针来直接访问内存,程序内存更加安全。
  • Java的类是单继承的,C++支持多重继承(虽然Java的类不可以多继承,但是接口可以多继承)。
  • Java自动内存管理机制,不需要程序员手动释放无用内存。

4、Java有哪些数据类型?

答:Java语言是强类型语言,对于每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间,数据类型又分为基本数据类型和引用数据类型:

基本数据类型:

  • 整数类型:byte,short,int,long
  • 浮点数据类型:float,double
  • 字符型:char
  • 布尔型:boolean

引用数据类型:

  • 类:class
  • 接口:interface
  • 数组:[]
  • 字符串(特殊):String

这里给字符串类型加了个特殊,为什么说他特殊呢?详见:还在问String属于什么数据类型

一般来说,引用类型在堆里,基本类型在栈里

5、访问修饰符 public、private、protected,以及不写(默认)时的 区别?

private

  • 同类内可见
  • 使用对象:变量、方法

default

  • 同包内可见,不使用任何修饰符。
  • 使用对象:类、接口、变量、方法。

protected

  • 同包内的类所有子类可见。
  • 使用对象:变量、方法。

public

  • 所有类可见。
  • 使用对象:类、接口、变量、方法。

6、面向对象和面向过程的区别?

答:面向过程是具体化、流程化的,解决一个问题,你需要一步一步地分析,一步一步地实现。面向对象是模型化的,你只需要抽象出一个类,类就像一个封闭的盒子一样,这个盒子里面有一些解决问题的方法,我们在解决问题时直接去调用这个盒子里面的方法就行了,至于这些方法是怎么实现的我们就不需要管了,我们只需要会调用就行。

面向过程

  • 优点:性能比面向对象高,因为面向对象在创建对象时开销比较大,比较消耗资源。
  • 缺点:没有面向对象的易维护,易复用,易扩展。

面向对象

  • 优点:易维护,易复用,易扩展,由于面向对象有封装、继承、多态的特性,我们可以设计出来低耦合的系统,使系统更加灵活,更加易于维护。
  • 缺点:性能比面向过程底。

7、面向对象的三大特征是什么?

答:面向对象的三大特征是封装、继承和多态,分别是:

  • 封装封装将同一类事物的特征和功能包装在一起,只对外暴露需要调用的接口。封装也称为信息的隐藏,在Java中接口是体现封装最常用的方法,在接口中我们没有任何功能的实现(具体实现都交给实现类),只是定义了一系列抽象的方法声明用于外部调用。
  • 继承:继承是Java中面向对象最显著的一个特征,继承是从已有的类中派生出新的类,新的类可以吸收已有的属性、行为,并扩展新的能力。Java中不支持多继承,但是支持实现多接口。
  • 多态:封装和继承都是为多态来服务的,多态是指同一个行为具有多个不同的表现形式。在Java中方法的重载和重写是实现多态的2种方式。
    • 重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载。方法重载体现了编译时的多态性
    • 重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,重载对返回类型没有特殊的要求。方法重写体现了运行时的多态性

多态的三要素:继承 、重写、父类指向子类引用

8、抽象类和接口有哪些区别?

答:抽象类是用来捕捉子类的通用特性的,接口抽象方法的集合
从设计层面来讲,抽象类对类的抽象,是一种模板设计接口行为的抽象,是一种行为的规范

相同点

  • 接口和抽象类都不能被实例化
  • 都位于继承的顶端,用于被实现或继承。

不同点
在这里插入图片描述

9、成员变量与局部变量的区别有哪些?

答:成员变量:方法外部,类内部定义的变量 ;局部变量:类的方法中的变量。 成员变量和局部变量的区别如下:

1. 作用域

  • 成员变量:针对整个类内有效。
  • 局部变量:只在某个范围内有效(一般指的就是方法,语句体内)。

2. 存储位置

  • 成员变量:随着对象的创建而存在,随着对象的消失而消失,存储在堆内存中。
  • 局部变量:在方法被调用,或者语句被执行的时候存在,存储在栈内存中。当方法调用完,或者语句结
    束后,就自动释放。

3. 生命周期

  • 成员变量:随着对象的创建而存在,随着对象的消失而消失
  • 局部变量:当方法调用完,或者语句结束后,就自动释放。

4. 初始值

  • 成员变量:有默认初始值
  • 局部变量:没有默认初始值,使用前必须赋值

使用原则

在使用变量时需要遵循的原则为:就近原则,首先在局部范围找,有就使用;接着在成员位置找(由小变大)。

10、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?

答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性

重载:发生在同一个类中,方法名相同参数列表不同(参数类型不同、个数不 同、顺序不同),与方法返回值和访问修饰符无关,即重载的方法不能根据返回类型进行区分
重写:发生在父子类中,方法名、参数列表必须相同,返回值小于等于父类,抛出的异常小于等于父
类,访问修饰符大于等于父类
(里氏代换原则);

如果父类方法访问修饰符为private则子类中就不是重写。

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...