Java核心技术面试题
Java面试题分享
通过网盘分享的文件:面试题等2个文件
链接: https://pan.baidu.com/s/1Xw0PzkfAmL8uesYBvrW2-A?pwd=pebt 提取码: pebt
一、Java基础篇
1. OOP面向对象
面向对象编程(OOP)是一种编程范式,它利用“类”和“对象”来设计程序结构。OOP具有三大特性:
继承:从已有类得到继承信息创建新类的过程。
封装:把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。
多态性:允许不同子类型的对象对同一消息作出不同的响应。
2. 重载与重写
重载:发生在本类,方法名相同但参数列表不同。
重写:发生在父类与子类之间,方法名、参数列表和返回值类型都必须相同,且访问权限不能比父类中被重写的方法更低。
3. 接口与抽象类
接口:要被类实现,支持多继承,只能声明常量和方法签名。
抽象类:要被子类继承,支持单继承,可以有构造器、成员变量和方法实现。
4. 深拷贝与浅拷贝
浅拷贝:只拷贝基本数据类型的值和实例对象的引用地址。
深拷贝:拷贝基本数据类型的值以及实例对象所引用的对象。
5. sleep和wait
sleep:属于Thread类,释放CPU但不释放锁资源。
wait:属于Object类,释放CPU并释放锁资源,需与synchronized一起使用。
6. 自动拆装箱
装箱:将基本类型转换成包装类对象。
拆箱:将包装类对象转换成基本类型的值。
7. ==和equals
==:比较基本数据类型时比较值,比较引用数据类型时比较地址。
equals:默认比较对象地址,可重写以比较对象内容。
8. String的final修饰
String类被final修饰,不能被继承,以保证其不变性和安全性。
9. StringBuffer与StringBuilder
StringBuffer:线程安全,方法大多使用synchronized修饰。
StringBuilder:线程不安全,但效率更高。
10. final、finally、finalize
final:修饰类、变量和方法,表示不可继承、不可变和不可重写。
finally:用于try-catch语句块中,无论是否发生异常都会执行。
finalize:在对象被垃圾回收前调用的方法,用于资源清理。
二、Java高级篇
1. HashMap底层源码
HashMap在JDK 1.8中由数组+链表+红黑树实现,通过哈希表存储键值对,解决哈希冲突时使用链表或红黑树。
2. JVM内存结构
JVM内存分为方法区、虚拟机栈、本地方法栈、堆和程序计数器。
方法区:存储类信息、常量、静态变量等。
虚拟机栈:为每个方法执行创建栈帧,存储局部变量表、操作数栈等。
本地方法栈:为Native方法服务。
堆:存储对象实例,是垃圾回收的主要区域。
程序计数器:记录当前线程执行的字节码行号。
3. 垃圾收集方法
复制算法:用于年轻代,效率高但内存消耗大。
标记-清除:用于老年代,效率较低且可能产生碎片。
标记-整理:也是用于老年代,效率较低但不会产生碎片。
4. 线程池
线程池通过复用线程来降低资源消耗和提高响应速度,常用的线程池有CachedThreadPool、FixedThreadPool、SingleThreadExecutor和ScheduledThreadPool。
5. synchronized与Lock
synchronized:隐式锁,由JVM管理,可重入。
Lock:显式锁,提供灵活的锁机制,如超时锁和可中断锁。
6. ConcurrentHashMap
ConcurrentHashMap是线程安全的Map容器,在JDK 1.8中通过数组+链表+红黑树实现,采用CAS和synchronized保证线程安全。
三、Java框架篇
1. SpringMVC工作流程
用户请求通过DispatcherServlet分发到HandlerMapping,找到处理器后通过HandlerAdapter调用,处理完成后返回ModelAndView,最后通过ViewResolver渲染视图并响应用户。
2. Spring常用注解
@Component:标识受Spring管理的组件。
@Controller:标识表示层组件。
@Service:标识业务层组件。
@Repository:标识持久层组件。
@Autowired:自动装配。
@RequestMapping:完成请求映射。
3. Spring事务管理
Spring支持声明式事务管理和编程式事务管理,通过@Transactional注解实现声明式事务管理,通过TransactionTemplate实现编程式事务管理。
四、MySQL篇
1. MySQL事务
MySQL事务具有原子性、一致性、隔离性和持久性(ACID特性),支持四种隔离级别:读未提交、读提交、可重复读和串行化。
2. MyISAM与InnoDB
MyISAM:不支持事务,表级锁,读写互斥。
InnoDB:支持事务,行级锁,读写不互斥。
3. 索引优化
避免在索引列上使用函数和表达式。
使用合适的索引类型(B+树索引)。
对查询条件、排序和分组字段建立索引。
五、Redis篇
1. Redis数据类型
Redis支持多种数据类型,包括字符串、列表、集合、有序集合、哈希和位图等。
2. Redis持久化
Redis支持RDB和AOF两种持久化方式,RDB通过快照方式持久化数据,AOF通过记录写操作日志方式持久化数据。
3. Redis事务
Redis事务通过MULTI、EXEC、DISCARD等命令实现,事务中的命令要么全部执行,要么全部不执行。
4. 缓存策略
缓存击穿:通过分布式锁解决。
缓存雪崩:通过设置不同的过期时间避免。
缓存穿透:通过空结果缓存或布隆过滤器解决。
以上是对Java核心技术要点的详细解析,涵盖了Java基础、高级特性、框架使用、MySQL数据库以及Redis缓存等方面。希望这些内容能对大家的学习和工作有所帮助。
相关文章:
Java核心技术面试题
Java面试题分享 通过网盘分享的文件:面试题等2个文件 链接: https://pan.baidu.com/s/1Xw0PzkfAmL8uesYBvrW2-A?pwdpebt 提取码: pebt 一、Java基础篇 1. OOP面向对象 面向对象编程(OOP)是一种编程范式,它利用“类”和“对象”来…...
【技海登峰】Kafka漫谈系列(十)SpringBoot整合Kafka之生产者Producer
【技海登峰】Kafka漫谈系列(十)SpringBoot整合Kafka之生产者Producer spring-kafka官方文档: https://docs.spring.io/spring-kafka/docs/2.8.10/reference/pdf/spring-kafka-reference.pdf KafkaTemplate API: https://docs.spring.io/spring-kafka/api/org/springframewo…...
【简单理解什么是简单工厂、工厂方法与抽象工厂模式】
一、简单工厂模式 1.简单工厂模式 通过一个工厂类集中管理对象的创建 ,通过参数决定具体创建哪个对象。 #适合对象类型较少且变化不频繁的场景,缺点是违反开闭原则(新增产品需修改工厂类) 开闭原则(对扩展开放对修改关闭) :当…...
C++之nullptr
文章目录 前言 一、NULL 1、代码 2、结果 二、nullptr 1、代码 2、结果 总结 前言 当我们谈论空指针时,很难避免谈及nullptr。nullptr是C++11引入的一个关键字,用来表示空指针。在C++中,空指针一直是一个容易引起混淆的问题,因为在早期版本的C++中,通常使用NULL来…...
Java List<JSONObject> 中的数据转换为 List<T>
从方法的功能推测,T 应该是一个具体的 Java Bean 类型,用于将 List<JSONObject> 中的数据转换为 List<T>。以下为你详细介绍如何传递泛型 T 以及如何实现该方法。 import com.alibaba.fastjson.JSONObject; import java.util.ArrayList; im…...
下【STL 之速通pair vector list stack queue set map 】
上一篇 【STL 之速通pair vector list stack queue set map 】 queue note priority_queue pq; 使用的还是很方便的 #include <iostream> #include <queue>using namespace std;int main() {// Queue 示例queue<int> q;q.push(10);q.push(20);q.push(30);…...
安装大数据分析利器Spark
大数据分析利器Spark:部署模式与实践全解析 在大数据领域,Spark是一个热门的开源框架,今天就带大家深入了解Spark及其常见部署模式。Spark是基于内存的快速、通用、可扩展的大数据分析计算引擎,诞生于伯克利大学。与Hadoop相比&a…...
遨游科普:三防平板是指哪三防?有哪些应用场景?
在工业4.0与数字化转型的浪潮中,平板电脑早已突破消费娱乐的边界,成为工业生产流程中不可或缺的智能终端。但是,传统消费级平板在复杂工业环境中的“脆弱性”——屏幕易碎、接口易进尘、机身惧水等问题——严重制约了其在专业领域的深度应用。…...
9. RabbitMQ 消息队列幂等性,优先级队列,惰性队列的详细说明
9. RabbitMQ 消息队列幂等性,优先级队列,惰性队列的详细说明 文章目录 9. RabbitMQ 消息队列幂等性,优先级队列,惰性队列的详细说明1. RabbitMQ 消息队列的 “ 幂等性 ” 的问题1.1 RabbitMQ 消息队列的“幂等性”的概念 2. Rabbi…...
k8s创建一个pod,查看状态和详细信息,进入pod,以及删除这个pod
在 Kubernetes(K8s)中,可以使用 kubectl 命令行工具来完成创建 Pod、查看状态和详细信息、进入 Pod 以及删除 Pod 的操作。以下是具体步骤: 创建一个 Pod: 假设你有一个简单的 nginx Pod 的 YAML 配置文件 nginx…...
从盲目清运到精准调度:一个AI芯片引发的智慧环卫升级
在深圳某科技园区的清晨,环卫工人老张发现一个奇怪现象:往常需要逐个检查的50个智能垃圾桶,今天系统自动标注了7个待清运点位。这背后是搭载全志T113-i处理器的智能垃圾桶系统在发挥作用,通过AI视觉识别将垃圾满溢检测准确率提升至…...
MQTT协议:IoT通信的轻量级选手
文章总结(帮你们节约时间) MQTT协议是一种轻量级的发布/订阅通信协议。MQTT通信包括连接建立、订阅、发布和断开等过程。MQTT基于TCP/IP,其通信过程涉及多种控制包和数据包。ESP32S3可以通过MQTT协议接收消息来控制IO9引脚上的LED。 想象一…...
Docker 入门指南:基础知识解析
1. 引言 1.1 为什么学习 Docker 1.1.1 Docker 的优势 环境一致:在不同环境中(开发、测试、生产)保持一致的运行环境。快速部署:容器启动速度快,适合微服务架构。资源隔离:容器之间相互隔离,避…...
【安当产品应用案例100集】043-安当物联网数据安全传输方案
一、需求背景 物联网(IoT)技术在当前世界各行业中的应用越来越广泛,数据安全和安全数据传输、鉴权成为了物联网解决方案不可或缺的一部分。如何通过有效的安全措施来保护物联网设备的数据传输和鉴权,确保数据在设备和服务器之间或…...
C#/.NET/.NET Core技术前沿周刊 | 第 33 期(2025年4.1-4.6)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。 欢迎投稿、推荐…...
Django视图详解
前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 一、Django视图是什么? 视图(View) 是Django处理HTTP请求的核心组件。它接收一个HttpRequest对象,处理业务逻辑,并返回一个HttpResponse对象(…...
【区块链+ 人才服务】北京师范大学区块链底层链平台 | FISCO BCOS 应用案例
北京师范大学是教育部直属重点大学,2018 年 6 月,北京师范大学成立知识区块链研究中心,致力于区块链基础技术及其在教育领域的应用研究。 2020 年6 月18 日, 北京市人民政府办公厅发布《北京市区块链创新发展行 动计划(2020—202…...
java设计模式-模板方法模式
模板方法模式 编写制作豆浆的程序,说明如下 1)制作豆浆的流程选材添加配料浸泡放到豆浆机打碎 2)通过添加不同的配料,可以制作出不同口味的豆浆 3)选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的 4)请使用模板方法模式完成 说明…...
同步通信、异步通信、并行传输和串行传输
同步通信、异步通信、并行传输和串行传输是通信与数据传输领域的关键概念,它们既相互关联又有本质区别。以下是详细解释和对比: 1. 核心概念分类 通信方式:描述数据传输的时序和协调规则。 同步通信(Synchronous Communi…...
JVM生产环境调优实战
案例三:JVM频繁Full GC优化 1. 项目背景(Situation) 在云中万维跨境支付的反洗钱系统中,我们负责对海量交易数据进行实时规则校验,以确保符合监管要求。系统日均处理交易量超过500万笔,峰值QPS达到3000&a…...
Python: sqlite3.OperationalError: no such table: ***解析
出现该错误说明数据库中没有成功创建 reviews 表。以下是完整的解决方案: 步骤 1:创建数据库表 在插入数据前,必须先执行建表语句。请通过以下任一方式创建表: 方式一:使用 SQLite 命令行 bash 复制 # 进入 SQLit…...
JVM考古现场(十七):鸿蒙初辟——从太极二进到混沌原初的编译天道
"此刻正是奇点编译的第3.1415926秒!伏羲的算筹正在撕裂冯诺依曼架构的次元壁!诸君请看——这JVM堆内存中正在孕育盘古的元神!" 目录(终极扩展) 第一章:太极二进——内存模型的阴阳交缠 第二章&a…...
Python 字典和集合(字典推导)
本章内容的大纲如下: 常见的字典方法 如何处理查找不到的键 标准库中 dict 类型的变种set 和 frozenset 类型 散列表的工作原理 散列表带来的潜在影响(什么样的数据类型可作为键、不可预知的 顺序,等等) 字典推导 自 Python 2.7 …...
【AI】prompt engineering
prompt engineering ## prompt engineering ## prompt engineering ## prompt engineering 一、定义 Prompt 工程(Prompt Engineering)是指在使用语言模型(如 ChatGPT、文心一言等)等人工智能工具时,设计和优化输入提…...
小刚说C语言刷题——第18讲 循环之while和do-while语句
昨天我们讲了循环语句中的for语句,它主要用于循环次数已知的情况,但是对应循环次数未知的情况,我们又怎么办?这就要用到while和do-while语句了。 1.while语句 (1)语法格式 while(条件表达式) { 循环体; } (2)执行过程 当执…...
[Mysql]buffersize修改
1、找到my.cnf文件位置 ps -ef|grep mysqld 2、编辑my.cnf cd /etc/my.cnf.d vim my.cnf 一般修改为内存的50%~70% 3、重启服务 systemctl restart mysqld...
自定义数据结构的QVariant序列化 ASSERT failure in QVariant::save: “invalid type to save“
自定义数据结构放入QVariant,在序列化时抛出异常 ASSERT failure in QVariant::save: “invalid type to save” 自定义数据结构如struct MyData,除了要在结构体后面加 struct MyData { ... } Q_DECLARE_METATYPE(MyData)如果需要用到流的输入输出&…...
带约束的智能优化算法
带约束的智能优化算法 约束条件和优化问题(可改)粒子群算法麻雀搜索算法鲸鱼优化算法灰狼优化算法免疫优化算法人工蜂群算法沙猫群算法萤火虫算法资源 约束条件和优化问题(可改) 粒子群算法 麻雀搜索算法 鲸鱼优化算法 灰狼优化算法 免疫优化算法 人工蜂群算法 沙猫群算法 萤火…...
【硬核实战】从零打造智能五子棋AI:JavaScript实现与算法深度解析
🌟【硬核实战】从零打造智能五子棋AI:JavaScript实现与算法深度解析🌟 📜 前言:当传统棋艺遇上人工智能 五子棋作为中国传统棋类游戏,规则简单却变化无穷。本文将带你用纯前端技术实现一个具备AI对战功能…...
使用 kind 创建 K8s 集群并部署 StarRocks 的完整指南
使用 kind 创建 K8s 集群并部署 StarRocks 的完整指南 本文档详细介绍如何使用 kind 创建 Kubernetes 集群,并在其上使用 Helm 部署 StarRocks 集群(非高可用模式)。同时也包括如何访问 StarRocks 集群并导入数据。 目录 前提条件参考文档…...
华为OD全流程解析+备考攻略+经验分享
华为OD全流程解析,备考攻略 快捷目录 华为OD全流程解析,备考攻略一、什么是华为OD?二、什么是华为OD机试?三、华为OD面试流程四、华为OD薪资待遇及职级体系五、ABCDE卷类型及特点六、题型与考点七、机试备考策略八、薪资与转正九、…...
数据库中的数组: MySQL与StarRocks的数组操作解析
在现代数据处理中, 数组 (Array) 作为一种高效存储和操作结构化数据的方式, 被广泛应用于日志分析, 用户行为统计, 标签系统等场景. 然而, 不同数据库对数组的支持差异显著. 本文将以MySQL和StarRocks为例, 深入解析它们的数组操作能力, 并对比其适用场景. 文章目录 一 为什么需…...
Qt 交叉编译详细配置指南
一、Qt 交叉编译详细配置 1. 准备工作 1.1 安装交叉编译工具链 # 例如安装ARM工具链(Ubuntu/Debian) sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf# 或者64位ARM sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu 1.2 准备目标…...
【详细图文】在VScode中配置python开发环境
目录 一、下载安装VSCode 1、官网下载VSCode 2、安装VSCode 3、汉化vscode (1)已自动下载汉化版插件 (2)未自动下载汉化版插件 二、 下载安装Python 1、官网下载Python 2、安装Python (1)双击打开…...
strings.Fields 使用详解
目录 1. 官方包 2. 支持版本 3. 官方说明 4. 作用 5. 实现原理 6. 推荐使用场景和不推荐使用场景 推荐场景 不推荐场景 7. 使用场景示例 示例1:官方示例 示例2:解析服务器日志 示例3:清理用户输入 8. 性能比较 性能特点 对比表…...
PCI认证 密钥注入 ECC算法工具 NID_secp521r1 国密算法 openssl 全套证书生成,从证书提取公私钥数组 x,y等
步骤 1.全套证书已经生成。OK 2.找国芯要ECC加密解密签名验签代码。给的逻辑说明没有示例代码很难的上。 3.集成到工具 与SP联调。 1.用openssl全套证书生成及验证 注意:这里CA 签发 KLD 证书用的是SHA256。因为芯片只支持SHA256算法,不支持SHA512。改成统一。…...
微软 SC-900 认证-考核Azure 和 Microsoft 365中的安全、合规和身份管理(SCI)概念
微软 SC-900 认证介绍 SC-900 认证考试是微软推出的一项基础级别认证,全称为 Microsoft Certified: Security, Compliance, and Identity Fundamentals。该认证旨在验证考生对微软云服务(如 Azure 和 Microsoft 365)中的安全、合规和身份管理…...
Uniapp 集成极光推送(JPush)完整指南
文章目录 前言一、准备工作1. 注册极光开发者账号2. 创建应用3. Uniapp项目准备 二、集成极光推送插件方法一:使用UniPush(推荐)方法二:手动集成极光推送SDK 三、配置原生平台参数四、核心功能实现1. 获取RegistrationID2. 设置别…...
OpenCV图像平滑处理方法详解
文章目录 引言一、什么是图像平滑?二、常见的图像平滑方法1.先对图片加上噪声点2. 均值滤波(Averaging)3. 方框滤波(boxFilter)4. 中值滤波(Median Blur)5. 高斯滤波(Gaussian Blur&…...
Lua 中,`math.random` 的详细用法
在 Lua 中,math.random 是用于生成伪随机数的核心函数。以下是其详细用法、注意事项及常见问题的解决方案: Lua 中,math.random 的详细用法—目录 一、基础用法1. 生成随机浮点数(0 ≤ x < 1)2. 生成指定范围的随机…...
使用PX4,gazebo,mavros为旋翼添加下视的相机(仿真采集openrealm数据集-第一步)
目录 一.方法一(没成功) 1.运行PX4 2.运行mavros通讯 3.启动仿真世界和无人机 (1)单独测试相机 (2)make px4_sitl gazebo启动四旋翼iris无人机 二.方法二(成功) 1.通过 rosl…...
ATEngin开发记录_4_使用Premake5 自动化构建跨平台项目文件
该系列只做记录 不做教程 所以文章简洁直接 会列出碰到的问题和解决方案 只适合C萌新 文章目录 Permake5为什么使用 Premake? 项目实战总结一下:详细代码: Permake5 Premake5 是一个跨平台的构建配置工具,它允许开发者通过使用一个简单的脚…...
equals() 和 hashCode()
作为 Java 开发者,我们经常会用到 equals() 和 hashCode() 这两个方法。 它们是 Object 类中定义的基础方法,看似简单,但如果理解不透彻,很容易在实际开发中踩坑。 本文将深入探讨这两个方法的作用、区别、以及如何正确地重写它们…...
臭氧除菌柜市场报告:2031年全球臭氧除菌柜市场销售额预计将达到9.4亿元
一、市场概述 (一)定义与分类 臭氧除菌柜,作为新一代绿色消毒设备,主要利用臭氧(O₃)的强氧化性来实现无化学残留的消毒净化。根据产品类型,可分为单门型和双门型。单门型设计紧凑,…...
解决python manage.py shell ModuleNotFoundError: No module named xxx
报错如下: python manage.py shellTraceback (most recent call last):File "/Users/z/Documents/project/c/manage.py", line 10, in <module>execute_from_command_line(sys.argv)File "/Users/z/.virtualenvs/c/lib/python3.12/site-packa…...
通用接口函数注册模块设计与实现
文章目录 通用接口函数注册模块设计与实现1. 模块概述2. 核心功能2.1 数据结构函数注册项结构体注册函数宏 2.2 核心函数实现函数:sl_register_interface_functions 3. 使用示例3.1 基础使用示例 - 设备驱动接口定义接口结构体实现具体函数创建注册表注册接口 3.2 高…...
C,C++,C#
C、C 和 C# 是三种不同的编程语言,虽然它们名称相似,但在设计目标、语法特性、运行环境和应用场景上有显著区别。以下是它们的核心区别: 1. 设计目标和历史 语言诞生时间设计目标特点C1972(贝尔实验室)面向过程&#…...
scala-集合3
集合计算高级函数 过滤:遍历一个集合并从中获取满足指定条件的元素组成一个新的集合 (筛选出满足条件的元素组成新集合。) 转换或映射(map):将原始集合中的元素映射到某个函数。 扁平化:取消…...
Spring MVC 重定向(Redirect)详解
Spring MVC 重定向(Redirect)详解 1. 核心概念与作用 重定向(Redirect) 是 Spring MVC 中一种客户端重定向机制,通过 HTTP 302 状态码(默认)将用户浏览器重定向到指定 URL。 主要用途…...
Scala的集合(二)
1. 集合计算高集函数 任务要求 1)过滤:遍历一个集合并从中获取满足指定条件的元素组成一个新的集合 2)转化/映射(map):将集合中的每一个元素映射到某一个函数 3)扁平化 4)扁平化映射 注:flatMap 相当于先进行 map 操作&#…...