JAVA基础八股复习

1.局部变量一般存放在栈中,成员变量一般存放在堆中
2.什么是多态?谈谈对多态的理解?

在面向对象语言中,接口的多种不同的实现方式即为多态。用白话来说,就是多个对象调用同一个方法,得到不同的结果。
多态中存在向下转型是为了调用子类特有的方法。一般需要先向上转型,再经过instanceof判断,再进行向下转型

3.谈一谈深拷贝,浅拷贝和引用拷贝的区别?

引用拷贝是多个对象指向同一内存地址,操作其中一个变量会影响其他变量。浅拷贝创建新对象,但是对象中引用类型成员仍然指向原对象,修改了会互相影响,深拷贝则是完全修改,互不影响,重写clone方法,需要自己手动添加引用类型变量的复制逻辑。

4.Object类的常见方法有哪些?

  1. getClass方法,获取当前运行对象的Class对象
    2.hashCode 返回对象的哈希码
    3.equals,比较2个对象的内存地址是否相同
    4.clone() 返回当前对象的一份拷贝
    5.toString 返回类全限定名@对象哈希码的十六进制表示
    6.finiliaze()实力被垃圾回收时候触发的操作

5.== 和equals的区别?

1.== 基本数据类型比较值,引用类型比较地址
2.equals用于引用数据类型,一般是需要重写后比较值是否相等

6.hashCode有什么用?为什么需要有hashCode?

hashCode是为了获取哈希码。哈希码是为了或许哈希表中的索引位置
把对象加入hashset,先计算hashcode,如果hashset中没有一致的就加入,有一致的再计算下equals判断是否真的存在,大大减少了equals的判断
hashcode和equals都是为了判断对象是否相等

7.为什么重写equals时同时要重写hashCode?

如果重写了equals没有重写hashCode,会导致equals判断相等,hashCode判断不一样,如果加入hashset就可能倒置出现重复元素。
equals判断两个对象是相等的,那么hashCode也要相等
hashCode相等,也不一定是同一个对象,可能存在哈希碰撞

8.String,StringBuilder,StringBuffer之间的区别?

1.String修饰的变量是不可变的,修改后是创建一个新对象并返回
2.StringBuilder线程不安全,不会返回新对象,是在原有的对象上进行操作
3.StringBuffer是线程安全的,原因是底层用了synchronied修饰(效率折中)
4.StringBuilder和StringBuffer都继承自AbstractStringBuilder
5.String不能被修改的原有,保存字符串的数组被final修饰且是私有的,String类没有暴露修改他的方法
String类被final修饰不能被继承

9.字符串常量池了解吗?

字符串常量池是JVM为了提升性能和减少内存消耗针对字符串(String类)专门开辟的一块区域,主要目的是为了避免字符串的重复创建

10.String的intern()方法有什么作用?

1.是一个本地方法(native),处理字符串常量池中字符串的引用,常量池中有会直接返回该对象的引用,否则在常量池中先创建再引用

11.Exception和Error的区别是什么?

属于Throwable的子类。
Exception属于程序本身可以处理的异常,可以通过catch进行捕获。Exception又分为受检查异常(必须处理)和不受检查异常(可以不处理)
Error属于程序无法处理的错误,不建议通过catch捕获,如虚拟机运行错误/内存不足

12.Checked Exception和Unchecked Execption有什么区别?

checked Execption 受检查异常,如果没有被catch或者throw处理的话,就没办法通过编译。比如IO相关,SQLEXecption等
unchecked execption不受检查异常,不处理也可以通过正常的编译, RunntimeExecption及其子类。空指针,算数错误,类型转换错误,数组越界错误等。

13.Throwable常用方法有哪些?

getMessage()返回异常发生的详细信息
toString() 返回异常发生的简要描述
getLocalizedMessage()返回异常对象的本地化信息。默认情况下和getMessage()相同
printStackTrace() 返回详细的调用栈信息,快速定位位置

14.try-catch-finally如何使用?

try用于捕获异常,catch用于处理捕获到的异常,finally语句都会被执行。
不要再finally语句块中使用return,try和fianlly中都有return语句的时候,try中的语句会被忽略

15.finally代码一定会被执行吗?

不一定,当被虚拟机终止的时候,代码就不会执行。程序所在的线程死亡,关闭CPU也会不执行

16.什么是序列化和反序列化?

序列化:将对象转换为可以存储或传输的形式,比如二进制字节流,也可以是JSON,XML等形式
反序列化:序列化生成的数据形式转换为原始的对象

17.如果有些字段不想进行序列化怎么办?

1.用transient修饰。但是对象反序列化时候这个变量不会被持久化和回复,会被重置为类型的默认值,比如int重置为默认值0

18.JAVA的IO流了解吗?

1.IO 输入和输出。数据输入到计算机内存即为输入,输出到外部存储比图数据库就是输出。
IO流分为输入流和输出流
根据数据的处理方式又分为字节流和字符流
InputStream/Reader 字节输入流/字符输入流
OutputStream/Writer 字节输出流/字符输出流

19.为什么要分为字节流和字符流呢?

文件传输本质上是通过字节传输。字符流是java虚拟机将字节转换得到的,这个过程比较耗时

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

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

相关文章

10:00开始面试,10:08就出来了,问的问题有点变态。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…

k8s核心资源对象一(入门到精通)

本文将深入探讨Kubernetes中的核心资源对象,包括Pod、Deployment、Service、Ingress、ConfigMap和Secret,详细解析其概念、功能以及实际应用场景,帮助读者全面掌握这些关键组件的使用方法。 一、pod 1 pod概念 k8s最小调度单元,…

《Sqoop 快速上手:安装 + 测试实战》

推荐原文 见:http://docs.xupengboo.top/bigdata/di/sqoop.html Sqoop(SQL-to-Hadoop) 是 Apache 开源的工具,专门用于在 Hadoop 生态系统(如 HDFS、Hive、HBase) 和 关系型数据库(如 MySQL、O…

数据结构刷题之贪心算法

贪心算法(Greedy Algorithm) 是一种在每个步骤中都选择当前最优解的算法设计策略。它通常用于解决优化问题,例如最小化成本或最大化收益。贪心算法的核心思想是:在每一步选择中,都做出局部最优的选择,希望…

重新定义PPT创作!ChatPPT发布全球首个AI PPT专用MCP Server

在这个AI技术日新月异的时代,ChatPPT团队推出革命性的MCP Server(Multimodal Collaboration Platform),这是全球首个专注于AI PPT生成领域的智能协作平台。该平台的诞生,标志着PPT创作正式迈入"智能协作"新纪…

未来蓉城:科技与生态共舞的诗意栖居-成都

故事背景 故事发生在中国四川成都的2075年,展现科技与自然深度交融的未来城市图景。通过六个充满想象力的生态装置场景,描绘市民在智慧城市中诗意栖居的生活状态,展现环境保护与人文传承的和谐共生。 故事内容 在电子竹林轻轨站,通…

计算机网络笔记-分组交换网中的时延

一、分组交换网络中的四种时延类型 1. 排队时延 在队列中,当分组在链路上等着被传输时的时延为排队时延,一个分组的排队时延长度取决于该分组前方等待传输的分组数量,如果排队队列为空,且没有正在传输的分组那么该分组的排队时延…

ubuntu20.04.6LTS 安装PCL 1.9.1

在虚拟机中,ubuntu20.04.6 LTS 安装PCL 1.9.1,实测成功了。 注意: 1、编译时选择双核,否则编译到一半报错,因为内存不够进程被杀死。 虚拟机是4核心、内存8G。可能选3核更快一点,双核编译了2个多小时。 …

SQL:JOIN 完全指南:从基础到实战应用

JOIN 是 SQL 中最重要也最常用的操作之一,它允许我们从多个表中获取关联数据。本文将全面解析 SQL 中的各种 JOIN 类型,包括 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 以及 CROSS JOIN,并通过实际示例展示它们的应用场景。 一、JOIN 基…

IDEA 2024 Maven 设置为全局本地仓库,避免新建项目重新配置maven

使用idea创建Java项目时每次都要重新配置Maven,非常麻烦。其实IDEA可以配置全局Maven。方法如下: 1.关闭所有项目进入初始页面 2.选择所有配置 3.设置为自己的路径

UDP怎么样实现可靠传输?

如果需要在基于UDP的应用中实现可靠传输(例如确保数据不丢失、按顺序到达等),通常需要在应用层实现相应的机制。 1. 确认应答机制 应用层可以使用确认应答机制来确保数据的可靠传输。当发送方发送一个数据包时,接收方收到数据包…

【CSS基础】- 02(emmet语法、复合选择器、显示模式、背景标签)

css第二天 一、emmet语法 1、简介 ​ Emmet语法的前身是Zen coding,它使用缩写,来提高html/css的编写速度, Vscode内部已经集成该语法。 ​ 快速生成HTML结构语法 ​ 快速生成CSS样式语法 2、快速生成HTML结构语法 生成标签 直接输入标签名 按tab键即可 比如 div 然后tab…

每日算法:洛谷U535992 J-C 小梦的宝石收集(双指针、二分)

题目描述 小梦有 n 颗能量宝石,其中第 i 颗的能量为 ai​,但这些能量宝石十分不稳定,随时有可能发生崩坏,导致他们全部消失! 小梦想要留住宝石们,不希望他们发生崩坏,同时他发现:如…

Spring MVC 逻辑视图(JSP、Thymeleaf、FreeMarker)与非逻辑视图(JSON、Excel、PDF、XML)详解及示例

Spring MVC 逻辑视图与非逻辑视图详解及示例 一、逻辑视图与非逻辑视图的定义 类型定义逻辑视图通过视图解析器(ViewResolver)将逻辑名称(如 success)映射到具体视图实现。非逻辑视图直接返回具体视图对象(如 JsonVie…

【AAOS】【源码分析】CarAudioService(二)-- 功能介绍

汽车音频是 Android 汽车操作系统 (AAOS) 的一项功能,允许车辆播放信息娱乐声音,例如媒体、导航和通信。AAOS 不负责具有严格可用性和时间要求的铃声和警告,因为这些声音通常由车辆的硬件处理。将汽车音频服务集成在汽车中,彻底改变了驾驶体验,为驾驶员和乘客提供了音乐、…

docker安装软件汇总(持续更新)

1、简介 本文介绍一些常用的软件通过docker安装并启动,持续更新。 2、docker安装软件 2.1、zookeeper & kafka # 1、拉取zookeeper镜像 git pull wurstmeister/zookeeper # 2、启动zookeeper容器 docker run -d --restartalways --log-driver json-file --lo…

MySQL的左连接、右连接、内连接、外连接

一、前言 MySQL中的左连接、右连接、内连接和全外连接是用于多表关联查询的核心操作。 二、内连接(INNER JOIN) 定义:返回两个表中完全匹配的行,即只保留两个表连接字段值相等的行。示例场景:查询所有有选课记录的学…

前端面试宝典---数据类型

基本数据类型 对于基本类型在创建时无需使用 new 关键字 Bigint在实际开发不常用,如果对于精度要求高可以使用第三方库,如decimal.js 基本数据类型介绍 undefined:当变量被声明但未赋值,或者函数没有返回值时,就会呈现…

Lua 函数使用的完整指南

在 Lua 中,函数是一等公民(First-Class Citizen),这意味着函数可以像其他值一样被赋值、传递和操作。以下是 Lua 函数定义的完整指南,涵盖基础语法、高级特性、设计模式及性能优化。 在Lua 中,函数定义的完…

使用StockTV API对接印度金融市场数据全指南:K线、实时行情与IPO新股

一、印度金融市场数据特点 印度作为全球增长最快的主要经济体之一,其金融市场具有以下显著特征: 双交易所体系:国家证券交易所(NSE)和孟买证券交易所(BSE)高流动性品种:Nifty 50指数成分股、银行股等独特交易机制:T2…