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变量不会被缓存在寄存器或者对其他处理器不可见的地方,每次使用都会直接从主存中读取。

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

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

相关文章

2.2.4 C#中显示控件BDPictureBox 的实现----ROI交互

2.2.4 C#中显示控件BDPictureBox 的实现----ROI交互 1 界面效果 在设定模式下&#xff0c;可以进行ROI 框的拖动&#xff0c;这里以Rect1举例说明 2 增加ROI类定义 /// <summary> /// ROI_single /// 用于描述图片感兴趣区域 /// type: 0:Rect1;1:Rect2;2:Circle ;3:…

C++ //练习 14.31 我们的StrBlobPtr类没有定义拷贝构造函数、赋值运算符及析构函数,为什么?

C Primer&#xff08;第5版&#xff09; 练习 14.31 练习 14.31 我们的StrBlobPtr类没有定义拷贝构造函数、赋值运算符及析构函数&#xff0c;为什么&#xff1f; 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 解释&#xff1a; 因为…

工业路由器与家用路由器的区别

在现代网络环境中&#xff0c;路由器扮演着至关重要的角色。无论是在家庭网络还是在工业网络&#xff0c;选择合适的路由器都至关重要。本文将从多个角度&#xff0c;对工业路由器与家用路由器进行详细比较&#xff0c;帮助您更好地理解二者的区别。 1、安全性 工业路由器&…

大模型应用开发实战基础

大模型应用开发实战基础 1. 背景 大模型如日中天&#xff0c;各行各业都受它影响&#xff0c;但是作为程序员&#xff0c;除了让它翻译代码不知道用它干什么&#xff0c;就像是拿着锤子的木匠&#xff0c;找不到钉子在哪。一边听着别人说2024是AI元年&#xff0c;一边又不知所…

PostgreSQL的系统视图pg_stat_database_conflicts

PostgreSQL的系统视图pg_stat_database_conflicts 在 PostgreSQL 中&#xff0c; pg_stat_database_conflicts 是一个视图&#xff0c;用于监控并发操作导致的数据库冲突情况。了解和监控这些冲突可以帮助数据库管理员调优系统&#xff0c;以更好地处理并发事务。 pg_stat_da…

中控室监控台在水处理行业的作用

随着工业化和城市化的快速推进&#xff0c;水处理行业的重要性日益凸显。作为确保水质安全、提高水资源利用效率的关键环节&#xff0c;水处理厂需要高效、稳定地运行。在这个过程中&#xff0c;中控室监控台发挥着不可或缺的作用。本文将从以下几个方面&#xff0c;详细阐述中…

fyne的MultiLineEntry设置大小

MultiLineEntry设置大小 在另一篇文章讲过&#xff0c;放入border布局中&#xff0c;可以最大化MultiLineEntry。 这里再介绍另一种方法:SetMinRowsVisible() func (e *Entry) SetMinRowsVisible(count int) {e.multiLineRows counte.Refresh() }SetMinRowsVisible强制mult…

(域渗透提权)CVE-2020-1472 NetLogon权限提升漏洞

目录 漏洞简介 漏洞检测 漏洞利用 使用脚本进行利用 使用Mimikatz进行利用 恢复用户哈希 漏洞简介 CVE-2020-1472是继永恒之蓝漏洞之后又一个好用的内网提权漏洞&#xff0c;影响Windows Server2008R2至2019的版本。只要攻击者能够访问到目标域控并且知道域控计算机名即…

九浅一深Jemalloc5.3.0 -- ④浅*配置

目前市面上有不少分析Jemalloc老版本的博文&#xff0c;但最新版本5.3.0却少之又少。而且5.3.0的架构与5之前的版本有较大不同&#xff0c;本着“与时俱进”、“由浅入深”的宗旨&#xff0c;我将逐步分析最新release版本Jemalloc5.3.0的实现。 另外&#xff0c;单讲实现代码是…

ShareSDK iOS端如何实现小红书分享

下载SDK 请登陆官网 &#xff0c;找到SDK下载&#xff0c;勾选需要的平台下载 导入SDK &#xff08;1&#xff09;离线导入将上述下载到的SDK&#xff0c;直接将整个SDK资源文件拖进项目里&#xff0c;如下图&#xff1a; 并且勾选以下3个选项 在点击Finish&#xff0c;…

实时跟踪并显示Docker容器的最新日志

可以用以下命令实时跟踪并显示Docker容器的最新日志 例&#xff1a; 这条命令 docker logs --tail 200 -f docker1 的作用是&#xff1a; docker logs: 这部分指示要查看 Docker 容器的日志。--tail 200: 这个选项指定只显示最后的200行日志。这意味着你将只看到容器最近生…

JavaSE简易版扫雷小游戏

描述&#xff1a;用户输入二维雷区的高和宽&#xff0c;输入确定地雷数&#xff0c;随机在地雷区生成地雷。用户输入横竖坐标进行挖雷&#xff0c;挖到地雷游戏以失败结束&#xff0c;并让用户选择是否再次游戏&#xff1b;没挖到雷&#xff0c;显示该区域8个方向地雷数。如果8…

安徽大学学报-哲学社会科学版

《安徽大学学报》&#xff08;哲学社会科学版&#xff09;简介 安徽大学学报&#xff08;哲学社会科学版&#xff09;简要信息 刊 号 CN 34—1040/C ISSN 1001—5019 主 编 张治栋 地 址 安徽省合肥市肥西路3号 邮 编 230039 电 话 &#xff08;0551&#xff09;6…

Spring MVC的高级功能——异常处理(三)异常处理注解

一、ControllerAdvice注解的作用 从Spring 3.2开始&#xff0c;Spring 提供了一个新注解ControllerAdvice&#xff0c; ControllerAdvice有以下两个作用。 • 注解作用在类上时可以增强Controller&#xff0c;对Controller中被RequestMapping注解标注的方法加一些逻辑处理。…

uniapp + vue3 + Script Setup 写法变动 (持续更新)

一、uniapp 应用生命周期&#xff1a; https://uniapp.dcloud.net.cn/tutorial/vue3-composition-api.html 注意&#xff1a; 应用生命周期仅可在App.vue中监听&#xff0c;在其它页面监听无效。 二 、uniapp页面生命周期&#xff1a; https://uniapp.dcloud.net.cn/tutori…

C语言 输出所有的水仙花数

输出所有的“水仙花数”&#xff08;水仙花数指一个三位数&#xff0c;其各位数字立方和等于该数本身。例如153是水仙花数&#xff0c;因为1^35^33^3153&#xff09; 这个程序找出所有的三位水仙花数&#xff0c;并输出它们。 &#xff08;如果每各数字立方和等于原数字&…

Java SE入门及基础(62) 线程池 执行器

线程池 1. 执行器 In all of the previous examples, theres a close connection between the task being done by a new thread, as defined by its Runnable object, and the thread itself, as defined by a Thread object. This works well for small applications, but…

Golang | Leetcode Golang题解之第212题单词搜索II

题目&#xff1a; 题解&#xff1a; type Trie struct {children map[byte]*Trieword string }func (t *Trie) Insert(word string) {node : tfor i : range word {ch : word[i]if node.children[ch] nil {node.children[ch] &Trie{children: map[byte]*Trie{}}}nod…

Zynq系列FPGA实现SDI视频编解码,基于GTX高速接口,提供5套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案在Xilinx--Kintex系列FPGA上的应用 3、详细设计方案设计原理框图SDI 输入设备Gv8601a 均衡器GTX 解串与串化SMPTE SD/HD/3G SDI IP核BT1120转RGB图像缓存视频读取控制HDMI输出RGB转BT1120Gv8500 驱…

vuepress使用简介及个人博客搭建

目录 一、介绍二、环境准备三、安装运行vuepress四、目录结构五、配置文件六、导航栏配置七、导航栏logo八、浏览器图标九、侧边栏配置十、添加 Git 仓库和编辑链接十一、部署到GitHub十二、搭建成功 一、介绍 VuePress 是 Vuejs 官方提供的一个是Vue驱动的静态网站生成器&…