【备战面试】每日10道面试题打卡-Day1

news2025/1/11 11:44:20

本篇总结的是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则子类中就不是重写。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/379936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业如何实现精细化人员管理?五大业务场景值得关注

近年来,随着大数据、人工智能和云计算等信息技术不断升级与渗透,处在数字化变革的劳动力密集型企业希望利用更加智能化的劳动力管理软件,帮助企业实现规范化的管理。 面对企业劳动力管理理念的变化,以及数字化转型的发展渗透&…

Puppeteer项目结构梳理

最近接触了一个个人感觉很奈斯的项目,故记录思路如下: puppeteer项目梳理: 入口文件 run.js 入口命令 node run.js YourConfig.json 1、我们可以在自己的config.json里面设置好 ①、登录的用户名密码;aws或其它服务器的access等id,accessKey…

二叉树的性质(概念/特性/存储结构)

目录1 二叉树的定义及主要特性1.1 二叉树的定义1.2 特殊二叉树1.2.1 满二叉树1.2.2 完全二叉树1.2.3 二叉排序树1.2.4 平衡二叉树1.3 二叉树的性质1.3.1 非空二叉树上的叶结点数1.3.2 非空二叉树第k层结点数1.3.3 高度为h的二叉树至多结点数1.3.4 完全二叉树结点与双亲的关系1.…

电子价格标签-系统结构

一、V2.4基站软件电子标签 接收PC下达的操作指令,解析后再通过RF发送给电子标签,接收路由器发送的数据信息并解析,更新数据。 1. 2.1寸电子价签 2. 2.9寸电子价签 ​ 3. 4.2寸电子价签 ​ 4. 7.5寸电子价签 ​ 5. 10.2寸电子价签 二、V4…

当审稿人回复这些审稿意见时,其实是在暗示你这些细节需要注意

当我们翘首以盼SCI论文投稿的审稿决定时。心情往往是复杂的,想收到审稿决定又担心收到的是不好的审稿决定。不管审稿结论如何,我们首先要明白的是那几个简短字母的审稿决定对我们来说,意味着什么。只有这样才有可能既不妄自菲薄也不杞人忧天。…

Intel CSME 简述

SME 算是 Intel X86 PC 上最神秘的部分了,本文根据 us-19-Hasarfaty-Behind-The-Scenes-Of-Intel-Security-And-Manageability-Engine 一文写成。讲述内容无法证伪,各位随便听听即可,了解这些能够帮助BIOS 工程师更好的理解一些操作的实现。文章基于 Intel 第八代第九代CPU(…

springCloud之seata

一、Seata是什么 Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 官方文档 https://seata.io/zh-cn/docs/overview/wha…

发现新大陆——原来软件开发根本不需要会编码(看我10分钟应用上线)

目录 一、前言 二、官网基础功能及搭建 三、体验过程 01、连接数据源 02、设计表单 03、流程设计 04、图表呈现 05、组织架构设置 五、效率评价 六、小结 一、前言 众所周知,每家公司在发展过程中都需要构建大量的内部系统, 如运营使用的用户…

数据结构与算法基础-学习-14-线性表之串

一、串的定义由0-n个字符组成的有限序列。(n>0)二、串的相关术语1、子串串中任意个连续字符组成的子序列成为该串的子串。2、主串包含子串的串成为主串。3、字符位置字符在序列中的序号为该字符在串中的位置。4、子串位置子串第一个字符在主串中的位置…

Docker----------Docker轻量级可视化工具Portainer/监控之 CAdvisor+InfluxDB+Granfana

1.是什么 Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。 2 官网 官网 https://www.portainer.io/ https://docs.portainer.io/v/ce-2.9/start/install/server/docker/linux 3.…

【数电基础】——时序逻辑电路

目录 1.大纲 2.时序逻辑电路的特点 3.时序逻辑电路的一般形式 4.时序逻辑电路的描述方法 5.同步时序逻辑电路 6.异步时序逻辑电路 7.同步时序逻辑电路的分析方法(上升沿触发的D触发器) 8.同步时序逻辑电路的分析方法(脉冲触发的JK触发…

Grafana邮件及告警配置

之前部署过服务器的监控组件程序,本在部署时也进行邮件及告警配置,但未进行文档整理,在这儿进行展示。之前用过Grafana的7.*的版本,在进行邮件配置还比较OK,但在配置告警时,太繁琐,还要自己去写…

Java数据结构LinkedList单链表和双链表模拟实现及相关OJ题秒AC总结知识点

本篇文章主要讲述LinkedList链表中从初识到深入相关总结,常见OJ题秒AC,望各位大佬喜欢 一、单链表 1.1链表的概念及结构 1.2无头单向非循环链表模拟实现 1.3测试模拟代码 1.4链表相关面试OJ题 1.4.1 删除链表中等于给定值 val 的所有节点 1.4.2 反转…

【H2实践】之认识 H2

一、H2 官网 H2 官网 http://www.h2database.com/html/main.html H2 是一款短小精干的 Java 内存数据库,性能强劲。 H2 的优点: 非常快的数据库引擎开源Java 编写支持标准 SQL, JDBC API内嵌和服务器模式,支持集群强大的安全特性可使用 PostgreSQL OD…

如何实现云原生?推荐的几个实用工具

云原生是一种软件开发和部署的方法,它依赖于容器、微服务和自动化运维。它能使应用更高效、可靠和可扩展,并适用于不同的云平台。 如果要更直接、更通俗地解释上述概念的话。 云的本源更准确地说是一种文化,一种潮流,它必然是云…

更新 Python 100道基础入门检测练习题【下篇】(附答案)

前言 大家早好、午好、晚好吖 ❤ ~ 爆肝更新 Python 100道基础入门练习题【篇上】 更多精彩内容、资源皆可点击文章下方名片获取此处跳转 实例021:猴子偷桃 题目: 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半&#xf…

微服务一 实用篇 - 1. SpringCloud01

《微服务一 实用篇 - 1. SpringCloud01》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《微服务一 实用篇 - 1. SpringCloud01》《微服务一 实用篇 - 1. SpringCloud01》0. 微服务课程简介1.认识微服务1.0.学习目标1.1.单体架构1.2.分布式架构1.3.微服务…

1000亿数据、30W级qps如何架构?来一个天花板案例

1000亿级存储、30W级qps系统如何架构?来一个天花板案例 说在前面 在尼恩的(50)读者社群中,经常遇到一个 非常、非常高频的一个架构面试题,类似如下: 千万级数据,如何做系统架构?亿…

外网跨网远程控制内网计算机3种方案

远程控制,通俗来讲就是在自己个人电脑直接远程访问另台主机电脑桌面操作。 如何远程控制电脑?远程控制别人计算机的方案通常有两种,一种是开启电脑系统自带的远程桌面功能,如果涉及跨网内、外网互通可以同时用快解析内网映射外网&…

windows 下 安裝mysql 5.7.41 (64位) 超简单方式

文章目录1. 安装包下载2.安装步骤3. 服务卸载方式4. 配上 my.ini 常用配置1. 安装包下载 注意,截至2023年2月23日,MySQL所有版本不提供ARM芯片架构的Windows版本(8.0.12开始支持Red Hat系统的ARM版本),所以ARM架构的Windows无法安装MySQL&am…