当前位置: 首页 > news >正文

Java基础篇常见面试问题总结

文章目录

  • 1. 你是怎样理解 OOP面向对象?
  • 2. 重载与重写区别
  • 3. 接口与抽象类的区别
  • 4. 深拷贝与浅拷贝的理解
  • 5. 什么是自动拆装箱? int和 Integer有什么区别
  • 6. ==和 equals()区别
  • 7. String类 能被继承吗为什么用 final修饰
  • 8. final、finally、finalize区别

1. 你是怎样理解 OOP面向对象?

面向对象是利于语言对现实事物进行抽象。面向对象具有以下特征:

  • 继承:继承是从已有类得到继承信息创建新类的过程
  • 封装:封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义
    的接口
  • 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应

2. 重载与重写区别

  • 重载发生在本类,重写发生在父类与子类之间
  • 重载的方法名必须相同,重写的方法名相同且返回值类型必须相同
  • 重载的参数列表不同,重写的参数列表必须相同
  • 重写的访问权限不能比父类中被重写的方法的访问权限更低
  • 构造方法不能被重写

3. 接口与抽象类的区别

  • 抽象类要被子类继承,接口要被类实现
  • 抽象类可以有构造器、接口不能有构造器
  • 抽象类:可以有成员变量;接口:只能声明常量

4. 深拷贝与浅拷贝的理解

深拷贝和浅拷贝就是指对象的拷贝,一个对象中存在两种类型的属性,一种是基本数据类型,一种是实例对象的引用。

  • 浅拷贝是指,只会拷贝基本数据类型的值,以及实例对象的引用地址,并不会复
    制一份引用地址所指向的对象,也就是浅拷贝出来的对象,内部的类属性指向的
    是同一个对象
  • 深拷贝是指,既会拷贝基本数据类型的值,也会针对实例对象的引用地址所指向
    的对象进行复制,深拷贝出来的对象,内部的类执行指向的不是同一个对象

5. 什么是自动拆装箱? int和 Integer有什么区别

  • 装箱:将基本类型转换成包装类对象
  • 拆箱:将包装类对象转换成基本类型的值

java 为什么要引入自动装箱和拆箱的功能?

主要是用于 java集合中,List list=new ArrayList();
list 集合如果要放整数的话,只能放对象,不能放基本类型,因此需要将整数自动装箱成对象。

区别:

  • Integer是 int的包装类,int则是 java的一种基本数据类型
  • Integer变量必须实例化后才能使用,而 int变量不需要
  • Integer实际是对象的引用,当 new一个 Integer时,实际上是生成一个指针指向此对象;而 int则是直接存储数据值
  • Integer的默认值是 null,int的默认值是 0

6. ==和 equals()区别

  1. ==
    • 如果比较的是基本数据类型,那么比较的是变量的值
    • 如果比较的是引用数据类型,那么比较的是地址值(两个对象是否指向同一块内
      存)
  2. equals
    • 如果没重写 equals方法比较的是两个对象的地址值
    • 如果重写了 equals方法后我们往往比较的是对象中的属性的内容
    • equals 方法是从 Object类中继承的,默认的实现就是使用==

很多类(如 String, Integer 等)都重写了 equals() 方法,以提供逻辑上的比较。

7. String类 能被继承吗为什么用 final修饰

  • 不能被继承,因为 String类有 final修饰符,而 final修饰的类是不能被继承的
  • String 类是最常用的类之一,为了效率,禁止被继承和重写。
  • 为了安全。String类中如果方法可以重写,可能被植入恶意代码,破坏程序。Java的安全性也体现在这里。

8. final、finally、finalize区别

  1. final
    final 是一个关键字,用于限定变量、方法、和类的行为:

    • 变量:当 final 修饰一个变量时,这意味着该变量一旦被初始化之后,其值就不能再被修改(即常量)。
    • 方法:final 修饰的方法不能被子类重写。
    • 类:final 修饰的类不能被继承。
  2. finally
    finally 是一个块,通常与try和catch块一起使用,在异常处理中起到关键作用。finally 块中的代码段总是会执行,无论try块中的代码是否抛出异常。这使得finally块非常适合用于清理资源,比如关闭文件流或数据库连接。
    例如:

try {// 尝试执行的代码,可能会抛出异常
} catch (Exception e) {// 处理异常
} finally {// 清理代码,无论是否发生异常都会执行
}
  1. finalize
    finalize 用于对象被垃圾回收前的清理工作,但不建议使用。因为它是不可预测的,通常也不是必须的,而且可能导致性能问题。
@Override
protected void finalize() throws Throwable {try {// 清理资源等操作} finally {super.finalize();}
}

相关文章:

Java基础篇常见面试问题总结

文章目录 1. 你是怎样理解 OOP面向对象?2. 重载与重写区别3. 接口与抽象类的区别4. 深拷贝与浅拷贝的理解5. 什么是自动拆装箱? int和 Integer有什么区别6. 和 equals()区别7. String类 能被继承吗为什么用 final修饰8. final、finally、finalize区别 1. 你是怎样理…...

Spring、SpringMVC

一、Spring框架中的单例Bean是线程安全的吗? 【默认单例的情况下】Spring Bean并没有可变的状态(如Service类和DAO类),即只能查不能改,所以没有并发问题,所以某种程度上来说Spring的单例Bean是线程安全的。…...

【传知代码】VRT: 关于视频修复的模型(论文复现)

前言:随着数字媒体技术的普及,制作和传播视频内容变得日益普遍。但是,视频中由于多种因素,例如传输、存储和录制设备等,经常出现质量上的问题,如图像模糊、噪声干扰和低清晰度等。这类问题对用户的体验和观…...

不用投稿邮箱,怎样向各大新闻媒体投稿?

身为单位的信息宣传员,我深知肩上责任重大。每个月,完成单位在媒体上投稿发表文章的考核任务,就如同一场无声的赛跑,既要保证速度,更要注重质量。起初,我遵循“前辈们”的老路,一头扎进了邮箱投稿的海洋。但很快,现实给了我一记重拳——邮箱投稿的竞争犹如千军万马过独木桥,稿件…...

NAT技术总结与双向NAT配置案例

NAT的转换方式: 1.静态转换:固定的一对一IP地址映射。 interface GigabitEthernet0/0/1 ip address 122.1.2.24 nat static global 122.1.2.1 inside 192.168.1.1 #在路由器出接口 公网地址 私网地址。 2.动态转换:Basic NAT nat address-gr…...

mysql的explain

explain可以用于select,delete,insert,update的statement。 当explain用于statement时,mysql将会给出其优化器(optimizer)的执行计划。 通过explain字段生成执行计划表。下面来解析这个执行计划表的每一列…...

SpringBoot+Vue实现图片滑块和文字点击验证码

一、背景 1.1 概述 传统字符型验证码展示-填写字符-比对答案的流程,目前已可被机器暴力破解,应用程序容易被自动化脚本和机器人攻击。 摒弃传统字符型验证码,采用行为验证码采用嵌入式集成方式,接入方便,安全&#…...

每日复盘-20240515

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 一支股票 10%的时候可以操作, 90%的时间适合空仓等待 国联证券 (1)|[9:25]|[133765万]|31.12 一…...

【Android】Apk图标的提取、相同目录下相同包名提取的不同图标apk但是提取结果相同的bug解决

一般安卓提取apk图标我们有两种常用方法: 1、如果已经获取到 ApplicationInfo 对象(假设名为 appInfo),那么我们获取方法为: appInfo.loadIcon(packageManager)// 返回一个 Drawable 对象2、 如果还没获取到 Applica…...

高校普法|基于SSM+vue的高校普法系统的设计与实现(源码+数据库+文档)

高校普法系统 目录 基于SSM+vue的高校普法系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3律师功能模块 4学生功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获…...

pytest教程-47-钩子函数-pytest_sessionfinish

领取资料,咨询答疑,请➕wei: June__Go 上一小节我们学习了pytest_sessionstart钩子函数的使用方法,本小节我们讲解一下pytest_sessionfinish钩子函数的使用方法。 pytest_sessionfinish 钩子函数在 Pytest 测试会话结束时调用,…...

如何使用Python下载哔哩哔哩(Bilibili)视频字幕

在本文中,我将向大家展示如何使用Python下载哔哩哔哩(Bilibili)视频的字幕。通过这个方法,你可以轻松地获取你喜欢的视频的字幕文件,方便学习和交流。 准备工作 在开始之前,我们需要安装一些必要的库&…...

IP代理网络协议介绍

在IP代理页面上,存在HTTP/HTTPS/Socks5三种协议。它们都是客户端与服务器之间交互的协议。 HTTP HTTP又称之为超文本传输协议,在因特网使用范围广泛。它是一种请求/响应模型,客户端向服务器发送请求,服务器解析请求后对客户端作出…...

渗透相关面试+流量分析

文章目录 简单自我介绍上一个工作的主要内容Hvv的分组和流程你在hvv/攻防演练中取得了哪些成绩? 二、渗透相关面试题基础端口号以及入侵方式OSI七层协议响应状态码都有哪些?**WAF和IPS的区别**盲注是什么?java内存马类型**内存马有几种类型**…...

Shell之高效文本处理命令

目录 一、排序命令—sort 基本语法 常用选项 二、去重命令—uniq 基本语法 常用选项 三、替换命令—tr 基本语法: 常用选项 四、裁剪命令—cut 基本语法: 常用选项 字符串分片 五、拆分命令—split 基本语法: 六、 文件…...

u3d的ab文件注意事项

//----------------LoadAllAB.cs--------------------- using System.Collections;using UnityEngine;namespace System.IO{public class LoadAllAB : MonoBehaviour{ //读取本地string path "Assets/Actors/lznh/ab/animation/t_bl/";// Use this for initiali…...

Go微服务开源框架kratos的依赖注入关系总结

该文章为学习开源微服务框架kratos的学习笔记!官方文档见:简介 | Kratos Kratos 一套轻量级 Go 微服务框架,包含大量微服务相关框架及工具。 一、Kratos 项目结构简介 通过 Kratos 工具生成的 Go工程化项目模板如下: applicati…...

Linux 第三十二章

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…...

手机号码的正则表达式

手机号码的正则表达式会根据不同的国家/地区有所不同,因为每个国家/地区都有自己特定的手机号码格式。但是,我可以为你提供一个通用的正则表达式模板,并给出一些具体国家/地区的例子。 通用模板 一个基本的手机号码正则表达式模板可能如下所…...

机器学习入门介绍

各位大佬好 ,这里是阿川的博客 , 祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 目录 三大方向机器学习产生的原因机器如何学习…...

MariaDB Docker容器权限配置问题分析与解决方案

MariaDB Docker容器权限配置问题分析与解决方案 1. 问题背景 在使用MariaDB Docker容器时,用户遇到了远程访问权限配置失效的问题。具体表现为: 手动创建的远程用户(如root%、****%、********%)在容器重启后无法远程连接权限表中显…...

终极指南:Redaxios参数序列化完全掌握,自定义查询字符串生成逻辑如此简单

终极指南:Redaxios参数序列化完全掌握,自定义查询字符串生成逻辑如此简单 【免费下载链接】redaxios The Axios API, as an 800 byte Fetch wrapper. 项目地址: https://gitcode.com/gh_mirrors/re/redaxios Redaxios是一个轻量级的Fetch封装库&a…...

Maven Versions Plugin 使用指南

以下是对你提供内容的补充和整理,形成一篇关于 Maven Versions Plugin 使用指南的文章:Maven Versions Plugin 使用指南 Maven Versions Plugin 是一套用于管理项目版本、依赖版本和父版本的工具集合。它可以帮助你高效地更新项目版本号、检查依赖更新、…...

系统架构设计师常见高频考点总结之计算机网络

学习这些网络题目时,可以将网络层次结构想象成高速公路系统:核心层是连接城市的大型立交桥和主干道,追求极速转发;汇聚层是出口闸机,负责检查通行证(安全过滤)和分流;而接入层则是通…...

MagiskHide Props Config:设备属性管理的3大维度与安全检测绕过全指南

MagiskHide Props Config:设备属性管理的3大维度与安全检测绕过全指南 【免费下载链接】MagiskHidePropsConf This tool is now dead... 项目地址: https://gitcode.com/gh_mirrors/ma/MagiskHidePropsConf 一、价值定位:为什么每个root用户都需要…...

快捷键冲突终结者:Hotkey Detective全方位排障指南

快捷键冲突终结者:Hotkey Detective全方位排障指南 【免费下载链接】hotkey-detective A small program for investigating stolen hotkeys under Windows 8 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 问题诊断:你的快捷键为…...

Mac用户的移动Win10工坊:从WTG配置到驱动、激活、文件共享的完整避坑指南

Mac用户的移动Win10工坊:从WTG配置到驱动、激活、文件共享的完整避坑指南 当Mac用户需要运行Windows应用时,双系统方案往往是最佳选择。而通过Windows To Go(WTG)技术将Win10安装在移动硬盘上,不仅保留了Mac原生系统的…...

AI读脸术备份恢复指南:手把手教你搭建高可用人脸识别服务

AI读脸术备份恢复指南:手把手教你搭建高可用人脸识别服务 1. 项目背景与需求分析 人脸识别技术已经成为现代数字服务的重要组成部分,从电商个性化推荐到智能安防系统,都依赖这项技术的稳定运行。AI读脸术镜像基于OpenCV DNN深度神经网络构建…...

告别手动!用Python+GDAL批量处理GlobeLand30影像:下载、去黑边、镶嵌裁剪全自动

用PythonGDAL打造GlobeLand30全自动处理流水线 遥感影像处理一直是地理信息科学领域的核心工作之一。对于需要处理大范围GlobeLand30数据的科研人员和开发者来说,传统的手动操作不仅效率低下,还容易引入人为错误。想象一下,当你需要处理覆盖整…...

【限时公开】Cuvil 0.8.3+PyTorch 2.3+Linux内核6.5组合部署黄金配置(含3个已知crash漏洞规避补丁)

第一章:Cuvil 编译器在 Python AI 推理中的应用 避坑指南Cuvil 是一个面向 AI 模型推理优化的轻量级编译器,支持将 PyTorch/TensorFlow 模型图转换为高性能、低延迟的 C 执行后端。在 Python 生态中直接集成 Cuvil 时,开发者常因环境兼容性、…...