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

java八股文面试题

Java八股文面试题通常涵盖了Java语言的基础知识、高级特性、框架应用、数据库操作等多个方面。以下是一些常见的Java面试题及其详细回答,按照不同的主题进行分类:

一、Java基础

  1. 面向对象的特征有哪些?
    • 抽象:忽略与当前目标无关的细节,只关注与当前目标相关的方面。
    • 继承:允许新类继承现有类的属性和方法,实现代码的重用。
    • 封装:将对象的状态信息隐藏在对象内部,不允许外部直接访问,而是通过该对象提供的方法来实现对内部状态的访问和操作。
    • 多态性:允许不同类的对象对同一消息作出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式。
  2. 重载(Overload)与重写(Override)的区别?
    • 重载:发生在同一个类中,方法名相同但参数列表不同(参数类型、个数、顺序至少有一个不同),返回类型可以不同,但不能通过返回类型来区分重载。
    • 重写:发生在有继承关系的子类与父类之间,方法名、参数列表必须完全相同,返回类型可以相同或更小的范围(协变返回类型),访问权限不能比父类中被重写的方法的访问权限更低。
  3. 接口(Interface)与抽象类(Abstract Class)的区别?
    • 接口:一种引用类型,是一种抽象的类型,它是一种特殊的类,它是完全抽象的,没有具体实现的方法,不能被实例化。接口中的方法默认是public abstract的,接口中定义的变量默认是public static final的。
    • 抽象类:是一种特殊的类,不能被实例化,只能被继承。抽象类中可以包含抽象方法(没有具体实现的方法)和具体方法(有具体实现的方法)。
  4. 深拷贝(Deep Copy)与浅拷贝(Shallow Copy)的区别?
    • 浅拷贝:仅仅复制对象本身(包括对象中的基本数据类型变量和对象的引用变量),但不复制对象引用的其他对象。
    • 深拷贝:不仅复制对象本身,还复制对象引用的其他对象,使得新对象和原对象完全独立。
  5. sleep()和wait()的区别?
    • sleep()是Thread类的方法,导致当前线程暂停执行指定时间,不会释放锁。
    • wait()是Object类的方法,用于线程间的通信,导致当前线程等待直到另一个线程调用此对象的notify()方法或notifyAll()方法,会释放锁。

二、Java高级

  1. JVM内存结构及其作用?
    • 方法区(Method Area):存储每个类的结构信息,如运行时常量池、字段和方法数据、构造函数和普通方法的字节码内容等。
    • 堆(Heap):所有对象实例以及数组都要在堆上分配,是垃圾收集器管理的主要区域。
    • 栈(Stack):每个线程在创建时都会创建一个虚拟机栈,其内部保存一个个栈帧(Stack Frame),对应着一次次方法的调用。
    • 程序计数器(Program Counter Register):是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。
    • 本地方法栈(Native Method Stacks):与虚拟机栈所发挥的作用非常相似,其区别不过是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的Native方法服务。
  2. Java中的垃圾收集算法有哪些?
    • 标记-清除(Mark-Sweep):首先标记出所有需要回收的对象,然后统一回收被标记的对象。
    • 复制(Copying):将内存分为大小相等的两块,每次只使用其中一块,当这一块内存用完时,就将还存活的对象复制到另一块上面,然后再把已使用的内存空间一次清理掉。
    • 标记-整理(Mark-Compact):标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。
    • 分代收集(Generational Collection):根据对象的存活周期的不同,将内存划分为几块。一般是把Java堆分为新生代和老年代,这样就可以根据各个年代的特点采用最适当的收集算法。
  3. synchronized和volatile的区别?
    • synchronized:是Java中的一个关键字,用于控制多个线程对共享资源的访问,保证同一时刻只有一个线程能够访问该资源。synchronized既可以修饰方法,也可以修饰代码块。
    • volatile:是Java中的一个修饰符,用于保证变量的可见性和有序性,但不保证原子性。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,每次使用都会直接从主存中读取。

相关文章:

java八股文面试题

Java八股文面试题通常涵盖了Java语言的基础知识、高级特性、框架应用、数据库操作等多个方面。以下是一些常见的Java面试题及其详细回答,按照不同的主题进行分类: 一、Java基础 面向对象的特征有哪些? 抽象:忽略与当前目标无关的…...

【服务器】在Linux查看运行的Python程序,并找到特定的Python程序

在Linux查看运行的Python程序并找到特定的Python程序 写在最前面1. 使用ps命令查看所有Python进程查看详细信息 2. 使用pgrep命令查找Python进程ID 3. 使用top或htop命令使用top命令使用htop命令 4. 使用lsof命令查找Python进程打开的文件 5. 使用nvidia-smi命令查看GPU使用情况…...

安全防御---防火墙实验1

安全防御—防火墙实验1 一、实验拓扑与要求 要求: 1、DMZ区内的服务器,办公区仅能在办公时间内(9:00-18:00)可以访问,生产区的设备全天可以访问 2、生产区不允许访问互联网,办公区和游客区允许访问互联网 …...

SpringBoot配置Swagger开启页面访问限制

在Spring Boot项目中配置Swagger时,开启页面访问限制通常意味着你希望控制哪些用户或角色可以访问Swagger UI文档页面。由于Swagger UI是一个静态资源,它本身并不直接支持基于角色的访问控制(RBAC)。但是,你可以通过Sp…...

前端代码基本逻辑-vue3

前端vue建立过程 安装nodejs 官网下载安装,并且记住安装路径,记得配置系统变量Path 安装VUE/CLI npm install -g vue/cli --全局安装vue 使用VUE/CLI生成代码框架 vue create your-project-name --我的your-project-name为web 运行项目 cd your-…...

怎么用PPT录制微课?详细步骤解析!

随着信息技术的不断发展,微课作为一种新型的教学形式,因其短小精悍、针对性强等特点,在教育领域得到了广泛的应用。而PPT作为一款常用的演示工具,不仅可以用来制作课件,还可以利用其内置的录屏功能或结合专业的录屏软件…...

Git使用方法

Git是一种分布式版本控制系统,它可以记录和管理软件开发过程中的变更。 Git的基本概念包括以下几个部分: 仓库(Repository):Git用仓库来存储项目的代码和历史记录。一个仓库可以包含多个分支。 分支(Bran…...

HTTP的请求报文和响应报文是怎样的,有哪些常见字段?

http报文分为请求报文和响应报文 请求报文包含:请求行、请求头、空行、、请求体 请求行包含: 方法:即要执行的操作,如get,post、put、delet 资源路径:请求的资源的URL HTTP版本:使用的http协议…...

自注意力简介

在注意力机制中,每个查询都会关注所有的键值对并生成一个注意力输出。如果查询q,键k和值v都来自于同一组输入,那么这个注意力就被称为是自注意力(self-attention)。自注意力这部分理论,我觉得台大李宏毅老师…...

【GameFramework框架】7-2、GameFramework框架是否“过度设计”?

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群:398291828大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录: https://blog.csdn.net/q764424567/article/details/1…...

RISC-V异常处理流程概述(2):异常处理机制

RISC-V异常处理流程概述(2):异常处理机制 一、异常处理流程和异常委托1.1 异常处理流程1.2 异常委托二、RISC-V异常处理中软件相关内容2.1 异常处理准备工作2.2 异常处理函数2.3 Opensbi系统调用的注册一、异常处理流程和异常委托 1.1 异常处理流程 发生异常时,首先需要执…...

Unity3D中如何降低游戏的Drawcall详解

在Unity3D游戏开发中,Drawcall是一个至关重要的性能指标,它指的是CPU通知GPU绘制一个物体的命令次数。过多的Drawcall会导致游戏性能下降,因此优化Drawcall的数量是提高游戏性能的关键。本文将详细介绍Unity3D中降低Drawcall的几种主要方法&a…...

小程序-设置环境变量

在实际开发中,不同的开发环境,调用的接口地址是不一样的 例如:开发环境需要调用开发版的接口地址,生产环境需要正式版的接口地址 这时候,我们就可以使用小程序提供了 wx.getAccountInfoSync() 接口,用来获取…...

【RabbitMQ】一文详解消息可靠性

目录: 1.前言 2.生产者 3.数据持久化 4.消费者 5.死信队列 1.前言 RabbitMQ 是一款高性能、高可靠性的消息中间件,广泛应用于分布式系统中。它允许系统中的各个模块进行异步通信,提供了高度的灵活性和可伸缩性。然而,这种通…...

RuntimeError: Unexpected error from cudaGetDeviceCount

RuntimeError: Unexpected error from cudaGetDeviceCount 0. 引言1. 临时解决方法 0. 引言 使用 vllm-0.4.2 部署时,多卡正常运行。升级到 vllm-0.5.1 时,报错如下: (VllmWorkerProcess pid30692) WARNING 07-12 08:16:22 utils.py:562] U…...

uboot学习:(一)基础认知

目录 uboot是一个裸机程序(bootloader) 作用 要运行linux系统时,如何从外置的flash拷贝到DDR中,才能启动 uboot使用步骤 步骤1中的命令例子 注意 uboot源码获取方法 uboot是一个裸机程序(bootloader&#xff09…...

每天一个数据分析题(四百二十六)- 总体方差

为了比较两个总体方差,我们通常检验两个总体的() A. 方差差 B. 方差比 C. 方差乘积 D. 方差和 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖Python,SQL,统计学&a…...

【C++】设计一套基于C++与C#的视频播放软件

在开发一款集视频播放与丰富交互功能于一体的软件时,结合C的高性能与C#在界面开发上的便捷性,是一个高效且实用的选择。以下,我们将概述这样一个系统的架构设计、关键技术点以及各功能模块的详细实现思路。 一、系统架构设计 1. 架构概览 …...

数学建模中的辅助变量、中间变量、指示变量

在数学建模中,除了决策变量外,还有一些其他类型的变量,如中间变量、辅助变量和指示变量。每种变量在模型中都有特定的用途和意义。以下是对这些变量的详细解释: 1. 决策变量(Decision Variables) 定义&am…...

python的seek()和tell()

seek() seek() 是用来在文件中移动指针位置的方法。它的作用是将文件内部的当前位置设置为指定的位置。 seek(offset, whence) 参数说明 offset: 这是一个整数值,表示相对于起始位置的偏移量。如果是正数,表示向文件末尾方向移动;如果是负…...

Go泛型详解

引子 如果我们要写一个函数分别比较2个整数和浮点数的大小&#xff0c;我们就要写2个函数。如下&#xff1a; func Min(x, y float64) float64 {if x < y {return x}return y }func MinInt(x, y int) int {if x < y {return x}return y }2个函数&#xff0c;除了数据类…...

【每日一练】python之sum()求和函数实例讲解

在Python中&#xff0c; sum()是一个内置函数&#xff0c;用于计算可迭代对象&#xff08;如列表、元组等&#xff09;中所有元素的总和。如下实例&#xff1a; """ 收入支出统计小程序 知识点:用户输入获取列表元素添加sum()函数&#xff0c;统计作用 "&…...

打造智慧校园德育管理,提升学生操行基础分

智慧校园的德育管理系统内嵌的操行基础分功能&#xff0c;是对学生日常行为规范和道德素养进行量化评估的一个创新实践。该功能通过将抽象的道德品质转化为具体可量化的指标&#xff0c;如遵守纪律、尊师重道、团结协作、爱护环境及参与集体活动的积极性等&#xff0c;为每个学…...

自定义函数---随机数系列函数

大家有没有发现平常在写随机数的时候&#xff0c;需要引入很多的头文件&#xff0c;然后还需要用一些复杂的函数&#xff0c;大家可能不太习惯&#xff0c;于是我就制作了一个头文件 // random_number.h #ifndef RANDOM_NUMBER_H // 预处理指令&#xff0c;防止头文件被重复包含…...

一文了解5G新通话技术演进与业务模型

5G新通话简介 5G新通话&#xff0c;也被称为VoNR&#xff0c;是基于R16及后续协议产生的一种增强型语音通话业务。 它在IMS网络里新增数据通道&#xff08;Data Channel&#xff09;&#xff0c;承载通话时的文本、图片、涂鸦、菜单等信息。它能在传统话音业务基础上提供更多服…...

视频使用操作说明书-T80002系列视频编码器如何对接海康NVR硬盘录像机,包括T80002系列高清HDMI编码器、4K超高清HDMI编码器

视频使用操作说明书-T80002系列视频编码器如何对接海康NVR硬盘录像机&#xff0c;包括T80002系列高清HDMI编码器、4K超高清HDMI编码器。 视频使用操作说明书-T80002系列视频编码器如何对接海康NVR硬盘录像机&#xff0c;包括T80002系列高清HDMI编码器、4K超高清HDMI编码器 同三…...

el-input-number计数器change事件校验数据,改变绑定数据值后change方法失效问题的原因及解决方法

在change事件中如果对el-input-number绑定的数据进行更改&#xff0c;会出现change事件失效的问题 试过&#xff1a;this.$set()及赋值等方法&#xff0c;都无法解决 解决方法&#xff1a;用$nextTick函数对绑定值进行更改&#xff08; this.$nextTick(() > { this.绑定…...

将vue项目整合到springboot项目中并在阿里云上运行

第一步&#xff0c;使用springboot中的thymeleaf模板引擎 导入依赖 <!-- thymeleaf 模板 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency> 在r…...

AC修炼计划(AtCoder Regular Contest 179)A~C

A - Partition A题传送门 这道题不难发现&#xff0c;如果数字最终的和大于等于K&#xff0c;我们可以把这个原数列从大到小排序&#xff0c;得到最终答案。 如果和小于K&#xff0c;则从小到大排序&#xff0c;同时验证是否符合要求。 #pragma GCC optimize(3) //O2优化开启…...

开发编码规范笔记

前言 &#xff08;1&#xff09;该博客仅用于个人笔记 格式转换 &#xff08;1&#xff09;查看是 LF 行尾还是CRLF 行尾。 # 单个文件&#xff0c;\n 表示 LF 行尾。\r\n 表示 CRLF 行尾。 hexdump -c <yourfile> # 单个文件&#xff0c;$ 表示 LF 行尾。^M$ 表示 CRLF …...

专门做二手房车的网站/如何做网站推广私人

目标环境&#xff0c;3台CentOS 6.6&#xff0c;一台作为NTPD服务与外部公共NTP服务同步时间&#xff0c;同时作为内网的NTPD服务器&#xff0c;其他机器与这台服务做时间同步。1、NTP时间同步方式选择NTP同步方式在linux下一般两种&#xff1a;使用ntpdate命令直接同步和使用N…...

wordpress bt下载地址/seo网站运营

摘要 因为打算写一个小网站&#xff0c;而个人时间又不是那么充裕&#xff0c;所以没有选择前后端分离的架构。 对于非前后端分离应用来说&#xff0c;Bootstrap应该是目前的最佳前端框架之一了。 而Bootstrap4&#xff0c;是Bootstrap的最新版本&#xff0c;其更新内容中&…...

个人做广播网站需要注意什么/推广发帖网站

1 初始化 //常用初始化方法 var stringVal "hello iFat3"; //构造函数创建方法 var stringObj new String("hello iFag3"); 2 length属性 var stringVal "hello iFat3"; //输出 11 console.log(stringVal.length); 3 charAt() 返回给定位置的…...

网站怎么推广怎么做/百度网站收录

断点调试的启动方式android studio启动断点调试的方法有两种&#xff0c;其一是下好断点&#xff0c;然后点击以Debug的形式编译运行程序。第二种方式是在程序运行中启动断点调试。方式&#xff1a;启动app后&#xff0c;点击RUN—>,弹出如下的提示框&#xff1a;在需要的地…...

哈尔滨做网站多少钱/品牌运营管理公司

慕村9548890注释空间太小&#xff0c;因此这里有一些有关的更多信息static final。正如我在对Andrzej的回答的评论中所说的那样&#xff0c;只有原始和String直接作为文字直接编译到代码中。为了证明这一点&#xff0c;请尝试以下操作&#xff1a;通过创建三个类(在单独的文件中…...

网站建设与管理模拟试卷/在线培训系统app

在数据真正重要的世界里&#xff0c;我们都希望创建有效的图表。但数据可视化很少在学校教授&#xff0c;或在在职培训中涵盖。所以我们大多数人都在自主学习&#xff0c;但我们经常会做出一些让我们的领导或客户感到困惑或错误的可视化效果图。 从过度复杂或过度使用我们的图表…...