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.mfbz.cn/a/766636.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CTFHUB-SSRF-Redis协议

本题需要用到: 在线编码网址:https://icyberchef.com/ gopherus工具:https://mp.csdn.net/mp_blog/creation/editor/139440201 开启题目,页面空白 和上一个题FastCGI协议一样,还是使用gopherus攻击redis ./gopheru…

H616连接摄像头

(1)首先将USB摄像头连接到OrangePi开发板的USB接口 (2)通过lsmod命令查看是否加载了uvcvideo模块 lsmod | grep video (3)通过 v4l2-ctl 命令可以看到 USB 摄像头的设备节点信息为/dev/video0 sudo apt u…

数字化精益生产系统--SRM供应商关系管理

SRM供应商关系管理,全称为Supplier Relationship Management(供应商关系管理)系统,是一种专门用于管理采购供应链和供应商关系的软件系统。该系统通过集成各个环节的采购活动,帮助企业实现采购流程的自动化、标准化和优…

【数智化案例展】苏商银行——全场景数据统一极速多维即席分析底座建设

‍ 镜舟科技案例 本项目案例由镜舟科技投递并参与数据猿与上海大数据联盟联合推出的《2024中国数智化转型升级创新服务企业》榜单/奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 在 2017 年建行之初,江苏苏商银行股份有限公司(以下简称“…

【软件测试】单元测试、系统测试、集成测试详解

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、单元测试的概念 单元测试是对软件基本组成单元进行的测试,如函数或一个类的方法…

解析Kotlin中的内联函数,inline、noinline、crossinline【笔记摘要】

用编译时常量的概念,引出本文要讲内联函数inline: 1.编译时常量 Java的编译时常量 Compile-time Constant 它有四个要求:1.这个变量需要是 final 的  2.类型只能是字符串或者基本类型  3.这个变量需要在声明的时候就赋值  4.等号右边…

西部智慧健身小程序+华为运动健康服务

1、 应用介绍 西部智慧健身小程序为用户提供一站式全流程科学健身综合服务。用户通过登录微信小程序,可享用健康筛查、运动风险评估、体质检测评估、运动处方推送、个人运动数据监控与评估等公益服务。 2、 体验介绍西部智慧健身小程序华为运动健康服务核心体验如…

文心一言 VS 讯飞星火 VS chatgpt (294)-- 算法导论21.4 3题

三、根据练习 21.4-2 的结论,对于每个结点x,需要多少位(bit)来存储x.rank?21.4-2 的内容是:“证明:每个结点的秩最多为 ⌊lgn⌋ 。”。如果要写代码,请用go语言。 文心一言: 在问题21.4-2中&a…

YOLO-world论文阅读笔记

论文:https://arxiv.org/abs/2401.17270 code: https://github.com/AILab-CVC/YOLO-World 1、为什么要做这个研究(理论走向和目前缺陷) ? 之前的开集检测器大多比较慢,不利于部署。 2、他们怎么做这个研究 (方法&…

C++编程(九)异常处理机制、模板、容器库

文章目录 一、异常处理机制(一)概念(二)语法格式(三)使用示例(四)异常处理机制库 二、模板(一)概念(二)函数模板1. 语法格式2. 函数模…

zxing-cpp+OpenCV根据字符串生成条形码

编译构建 需要使用到 CMake、Git、GCC 或 MSVC。 github 链接:https://github.com/zxing-cpp/zxing-cpp 编译之前请确保: 确保安装了 CMake 版本 3.15 或更高版本。 确保安装了与 C17 兼容的编译器(最低VS 2019 16.8 / gcc 7 / clang 5)。 编译构建…

Linear Regression线性回归

目录 前言 Housing Price Prediction Linear Regression Loss/Cost Function Learning Rate 作业 前言 在本专栏中,我们将学习机器学习的知识。 Housing Price Prediction 在开始线性回归的研究之前,我们先来考虑一个实际的问题:房屋…

茗鹤APS高级计划排程系统,在集团多工厂协同生产下的应用

随着业务规模的扩大和市场的全球化,越来越多的企业选择“总部多工厂基地”的模式,此种模式大幅提升企业的产能与产量,有效分散风险。然后,与之而来的是对企业的管理提出更高的管理要求。多个生产基地不仅面临集团下发的周期性计划…

electron教程(一)创建项目

一、方式① 根据官网描述将electron/electron-quick-start项目克隆下来并启动 electron/electron-quick-start地址: GitHub - electron/electron-quick-start: Clone to try a simple Electron app git clone https://github.com/electron/electron-quick-start…

回溯 | Java | LeetCode 39, 40, 131 做题总结

Java Arrays.sort(数组) //排序 不讲究顺序的解答,都可以考虑一下排序是否可行。 39. 组合总和 错误解答 在写的时候需要注意,sum - candidates[i];很重要,也是回溯的一部分。 解答重复了。是因为回溯的for循环理解错了。 class Solutio…

JavaSE简易版扫雷小游戏

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

去中心化社会的崛起:探索区块链对社会结构的影响

随着区块链技术的发展和应用,我们正逐步迈向一个去中心化的社会结构。本文将深入探讨区块链技术如何影响社会结构,从经济、政治到文化等多个方面进行探索和分析,揭示其可能带来的革命性变革。 1. 区块链技术的基本原理回顾 1.1 分布式账本与…

放大器的输入电容Cin对放大电路的影响

1、OPA859构成的放大电路的设计 图中OPA859的增益G设定为1.16 ,OPA859的增益带宽积GBP 900M , 放大器的带宽BW GBP / Acl 900 / 1.16 775.86M。 图:OPA859放大电路 由于需要在放大电路上加带宽的限制,所以在OPA859放大电路上有个低通限…

Elasticsearch基础(二):阿里云Elasticsearch快速入门

文章目录 阿里云Elasticsearch快速入门 一、资源领取 二、访问实例 三、创建索引 四、插入数据 五、搜索数据 1、全文搜索 2、按查询条件搜索 六、删除数据 阿里云Elasticsearch快速入门 一、资源领取 这里资源领取只针对新用户,如果是老用户按需购买&am…

vue3.0(十六)axios详解以及完整封装方法

文章目录 axios简介1. promise2. axios特性3. 安装4. 请求方法5. 请求方法别名6. 浏览器支持情况7. 并发请求 Axios的config的配置信息1.浏览器控制台相关的请求信息:2.配置方法3.默认配置4.配置的优先级5.axios请求响应结果 Axios的拦截器1.请求拦截2.响应拦截3.移…