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

java面经知识

一、java关键版本之间的区别1、java8Lambda 表达式函数式编程支持Stream API集合操作流式处理新的日期时间 APILocalDate、LocalDateTime默认方法接口中的 default 方法Optional 类空指针解决方案2、java11局部变量类型推断var 关键字HTTP Client API支持 HTTP/2 和 WebSocketString 新方法isBlank()、lines()、strip()移除模块Java EE、C3、java17Sealed Classes密封类限制类的继承Pattern Matching for instanceof模式匹配简化类型转换Records不可变数据载体类Text Blocks多行字符串字面量新的 GCZGC 和 Shenandoah GC4、java21虚拟线程Virtual Threads轻量级线程高并发革命Pattern Matching for switchswitch 模式匹配Sequenced Collections有序集合接口Record Patterns记录模式匹配分代 ZGC改进的垃圾回收器二、为什么 Spring Boot 3.x 要用 Java 17的版本Spring Boot 3.x基于Spring Framework 6而 Spring 6 大量使用了 Java 17 的新特性特别是 Records、Pattern Matching 和 Sealed Classes。java17的新特性1、Record记录类// Spring Framework 6 源码示例 // 用于封装数据库查询结果、DTO、配置等 // 传统方式Java 8 public class QueryResult { private final String id; private final Object data; private final long timestamp; public QueryResult(String id, Object data, long timestamp) { this.id id; this.data data; this.timestamp timestamp; } // 需要手写 getter、equals、hashCode、toString... // 至少 100 行样板代码 public String getId() { return id; } public Object getData() { return data; } public long getTimestamp() { return timestamp; } Override public boolean equals(Object o) { /* 50 行 */ } Override public int hashCode() { /* 30 行 */ } Override public String toString() { /* 20 行 */ } } // Spring 6 使用 RecordsJava 17 public record QueryResult(String id, Object data, long timestamp) { } // 一行搞定自动生成所有样板代码Records 是不可变数据载体的最佳选择2、Pattern Matching:示例 // 传统方式Java 8 Override public Object handle(Object obj) { if (obj instanceof String) { String str (String) obj; return processString(str); } else if (obj instanceof Integer) { Integer num (Integer) obj; return processInteger(num); } else if (obj instanceof Map) { Map?, ? map (Map?, ?) obj; return processMap(map); } return null; } // Spring 6 使用 Pattern MatchingJava 17 Override public Object handle(Object obj) { if (obj instanceof String str) { return processString(str); // 自动转换 } else if (obj instanceof Integer num) { return processInteger(num); } else if (obj instanceof Map?, ? map) { return processMap(map); } return null; }作用减少类型转化错误代码更简洁清晰。3、Sealed Classes(密封类)示例 // 定义 API 响应类型 public sealed class ApiResponse permits SuccessResponse, ErrorResponse, WarningResponse { private final int code; private final String message; public ApiResponse(int code, String message) { this.code code; this.message message; } } // 只能被这三个类继承 public final class SuccessResponse extends ApiResponse { public SuccessResponse(Object data) { super(200, Success); } } public final class ErrorResponse extends ApiResponse { public ErrorResponse(String error) { super(500, error); } } public final class WarningResponse extends ApiResponse { public WarningResponse(String warning) { super(300, warning); } } 作用 限制继承层次编译期检查防止非法继承.4、Switch Expressions(加强版Switch)// 传统方式Java 8 public String getHandlerType(Object obj) { if (obj instanceof String) { return string; } else if (obj instanceof Integer) { return integer; } else if (obj instanceof List) { return list; } else { return unknown; } } // Spring 6 使用 Switch ExpressionJava 17 public String getHandlerType(Object obj) { return switch (obj) { case String s - string; case Integer i - integer; case List? l - list; default - unknown; }; }5. Text Blocks文本块// 传统方式Java 8 String sql SELECT u.id, u.name, u.email\n FROM users u\n WHERE u.status ACTIVE\n ORDER BY u.created_at DESC; // Spring 6 使用 Text BlocksJava 17 String sql SELECT u.id, u.name, u.email FROM users u WHERE u.status ACTIVE ORDER BY u.created_at DESC ;三、Lambda 表达式和 Stream API跟传统的 for 循环比优缺点是什么在代码简洁性可读性并行化函数式组合类型类型推断空指针安全方面都是Lambda和Stream更优但在性能和调试难度上for循环更好。四、为什么 Java 线程实际只用很少的栈但 JVM 却要给它分配那么大的栈空间1、栈帧大小不可预测无法在编译期确定每个方法需要多少栈空间2、减少溢出检查开销避免每次方法调用都检查栈空间3、支持深度调用链框架、AOP、事务等可能达到 20-50 层4、简化 JVM 实现固定大小比动态扩展简单可靠5、虚拟内存机制分配的是虚拟地址不占用实际物理内存五、Java 里写 for 循环有几种方式比如用索引 i用迭代器它们有什么区别1、传统 for 循环基于索引优点有索引 i可以知道当前位置可控制流程可以 i, i--, break, continue可修改元素list.set(i, newValue)性能最优直接通过索引访问缺点代码冗长需要定义索引变量不能安全删除list.remove(i) 会导致索引错位2、增强 for 循环优点最简洁代码量最少避免索引错误不会出现越界缺点没有索引不知道当前位置不能修改元素只能读不能写不能删除元素会抛 ConcurrentModificationException3、迭代器Iterator)优点可安全删除iterator.remove() 不会抛异常适用于所有 CollectionList、Set、Queue 等惰性加载适合大数据集缺点只能单向遍历不能反向代码较冗长4、Stream forEach函数式优点最简洁配合 Lambda函数式风格易于组合支持并行缺点不能控制流程不能修改元素不能删除元素5、ListIterator列表专用迭代器优点可双向遍历hasNext()/next() 和 hasPrevious()/previous()可修改元素it.set(newValue)可删除元素it.remove()可添加元素it.add(newElement)可获取索引it.nextIndex(), it.previousIndex()缺点只适用于 ListSet、Queue 不支持代码最冗长六、redis的击穿雪崩穿透1、缓存击穿定义某个热点key突然过期失效导致大量并发请求瞬间击穿缓存全部涌向数据库。解决方案1互斥锁保证只有一个线程查数据库缺点性能下降需要考虑死锁锁超时。2逻辑过期设置逻辑过期时间当访问数据没过期直接返回值过期了让一个线程去重建其他线程继续使用旧数据。2、缓存雪崩定义大量key在同一时间集中过期失效或者redis宕机导致所有请求涌向数据库。解决方案1随机过期时间在基础过期时间上增加随机值避免集体同时过期。2多级缓存架构高可用低延迟并且减轻redis压力缺点是数据一致性问题。3限流降级兜底。3、缓存穿透定义查询一个根本不存在的数据缓存层和存储层都不会命中导致每次请求直接打到数据库。解决方案1缓存空对象2布隆过滤器判断用户是否存在不存在拒绝访问。3接口限流

相关文章:

java面经知识

一、java关键版本之间的区别:1、java8Lambda 表达式:函数式编程支持 Stream API:集合操作流式处理 新的日期时间 API:LocalDate、LocalDateTime 默认方法:接口中的 default 方法 Optional 类:空指针解决方案…...

通义千问3-Reranker-0.6B商业应用:SaaS知识管理平台重排模块集成方案

通义千问3-Reranker-0.6B商业应用:SaaS知识管理平台重排模块集成方案 1. 引言:智能重排技术如何提升知识管理效率 在现代SaaS知识管理平台中,用户最头疼的问题往往是:输入一个问题,系统返回了一大堆相关文档&#xf…...

Qwen3.5-9B算力适配:RTX 4090单卡部署9B MoE模型实操记录

Qwen3.5-9B算力适配:RTX 4090单卡部署9B MoE模型实操记录 1. 项目背景与模型特性 Qwen3.5-9B是阿里云推出的新一代混合专家(MoE)模型,在保持9B参数规模的同时,通过创新的架构设计实现了性能突破。该模型特别适合在消费级高性能GPU上部署&am…...

开源ASR新选择:SenseVoice-Small ONNX量化模型保姆级Gradio部署教程

开源ASR新选择:SenseVoice-Small ONNX量化模型保姆级Gradio部署教程 1. 快速了解SenseVoice-Small模型 SenseVoice-Small是一个专注于高精度多语言语音识别的开源模型,特别适合需要快速部署和高效推理的场景。这个模型采用了ONNX格式并进行了量化处理&…...

6.3 Web 服务器程序解释请求消息并作出响应

本文是《网络是怎样连接的》精读系列第 28 篇,全书逐章精讲、通俗拆解,帮你从零吃透计算机网络的底层逻辑。一、本节核心脉络:从 “网络数据包” 到 “用户可见内容” 的关键一跃当 TCP 模块将完整的 HTTP 请求交付给 Web 服务器程序时&#…...

AcousticSense AI场景应用:帮你自动整理杂乱音乐文件夹

AcousticSense AI场景应用:帮你自动整理杂乱音乐文件夹 1. 音乐管理的新思路 1.1 音乐整理的痛点 每个音乐爱好者都会遇到这样的困扰:下载的音乐文件散落在不同文件夹,文件名混乱无规律,有些甚至只显示为track01.mp3这样的默认…...

Qwen3-32B-Chat实战案例:为内容平台搭建AI审核+自动标签+SEO标题生成流水线

Qwen3-32B-Chat实战案例:为内容平台搭建AI审核自动标签SEO标题生成流水线 1. 项目背景与需求分析 内容平台每天面临海量用户生成内容(UGC)的管理挑战。传统人工审核方式存在效率低、成本高、标准不统一等问题。同时,内容标签分类和SEO标题优化也需要大…...

Win10永恒之黑漏洞复现实战:从蓝屏攻击到GetShell完整流程(附避坑指南)

Win10永恒之黑漏洞深度解析与实战复现:从原理到GetShell的全链路攻防 在网络安全领域,漏洞复现不仅是学习攻防技术的最佳途径,更是理解系统安全机制的重要窗口。CVE-2020-0796(永恒之黑)作为Windows SMB协议中的高危漏…...

GPU显存友好:Nanbeige 4.3B在消费级显卡上的流式神谕渲染实操

GPU显存友好:Nanbeige 4.3B在消费级显卡上的流式神谕渲染实操 1. 项目背景与价值 在AI对话应用领域,用户体验与性能优化往往难以兼得。Nanbeige 4.3B模型以其出色的对话能力和适中的模型规模,成为消费级显卡部署的理想选择。本文将重点介绍…...

Fish Speech 1.5常见问题解决:合成慢、效果差?看这篇就够了

Fish Speech 1.5常见问题解决:合成慢、效果差?看这篇就够了 1. 开篇:你的问题,这里都有答案 用上Fish Speech 1.5,本以为能轻松搞定各种语音合成需求,结果发现合成速度慢得像蜗牛?生成的语音听…...

RabbitMQ监控异常解析:Message rates活跃但Queued messages为零的深层原因

1. 为什么Message rates活跃但Queued messages为零? 最近在排查RabbitMQ监控数据时,发现一个有趣的现象:Message rates(消息速率)显示有波动,说明消息正在被生产和消费,但Queued messages&#…...

微信聊天记录全量备份与安全归档:WeChatExporter实现指南

微信聊天记录全量备份与安全归档:WeChatExporter实现指南 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 在数字化时代,微信聊天记录已成为个人和…...

MySQL安全加固十大必做措施

MySQL安全加固十大硬核操作大纲账户与权限管理禁用默认账户如root远程登录,创建专用管理账户遵循最小权限原则,使用GRANT精确分配权限定期审计用户权限,清理无效账户密码策略强化启用密码复杂度插件(如validate_password&#xff…...

Qwen3-32B企业级落地:制造业设备说明书生成、故障诊断建议、维修流程输出

Qwen3-32B企业级落地:制造业设备说明书生成、故障诊断建议、维修流程输出 1. 为什么制造业需要大模型 在制造业数字化转型浪潮中,设备文档管理一直是痛点。传统方式面临三大挑战: 文档制作成本高:一台复杂设备需要200页说明书&…...

自动驾驶规划控制-nmpc路径规划和mpc路径跟踪 matlab和simulink联合仿真,非...

自动驾驶规划控制-nmpc路径规划和mpc路径跟踪 matlab和simulink联合仿真,非线性mpc路径规划,线性mpc路径跟踪 最近在搞自动驾驶的规划控制方案,试了非线性MPC做路径规划线性MPC做跟踪的组合拳。实测发现这俩货配合起来效果挺带劲,…...

Nanbeige 4.1-3B效果展示:LV.99大贤者神谕逐字蹦出实录(附GIF)

Nanbeige 4.1-3B效果展示:LV.99大贤者神谕逐字蹦出实录(附GIF) 1. 复古像素风AI对话体验 Nanbeige 4.1-3B模型搭配全新设计的像素游戏风格前端,为用户带来独特的对话体验。这套界面完全颠覆了传统AI对话工具的极简风格&#xff…...

计算机毕业设计springboot基于Javaweb的助农管理系统 基于SpringBoot框架的农产品电商服务平台设计与实现 智慧农业信息管理系统——农户产销一体化平台开发

计算机毕业设计springboot基于Javaweb的助农管理系统453ruu73 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着信息技术的快速发展和农业现代化的深入推进,如何利…...

Python - 链表浅析

Python - 链表浅析 本篇用Python代码模拟链表 1. 链表介绍 概述 链表属于数据结构之 线性结构 的一种,每个节点都只能有 1个前驱 和 1个后继 节点。 作用 用于优化顺序表的弊端(如果没有足够的连续的内存空间,会导致扩容失败)。链…...

Qwen3.5-9B开源镜像保姆级教程:从pull到Gradio访问全流程

Qwen3.5-9B开源镜像保姆级教程:从pull到Gradio访问全流程 1. 前言:为什么选择Qwen3.5-9B Qwen3.5-9B是当前开源大模型领域的一颗新星,它在多个关键性能指标上超越了前代产品。作为一款多模态模型,它不仅能处理文本任务&#xff…...

分布式控制系统(DCS)安装:从方案设计到投运验收的完整指南

一、什么是分布式控制系统(DCS)安装分布式控制系统(Distributed Control System,简称 DCS)是一种面向流程工业的自动化控制平台,通常由操作员站、工程师站、控制器、I/O 模块、历史数据库、网络交换设备、现…...

【硬核裁剪手册】:基于ARM Cortex-M3/M4架构的RTOS内核最小化实践,含11项裁剪Checklist与编译时断言验证模板

第一章:RTOS内核裁剪的底层逻辑与ARM Cortex-M3/M4架构约束RTOS内核裁剪并非简单的功能开关,而是对调度器、中断管理、内存模型与硬件抽象层(HAL)之间耦合关系的深度解耦过程。其底层逻辑根植于嵌入式系统资源确定性与实时性保障的…...

Z-Image-GGUF新手必看:阿里通义模型提示词编写技巧与示例

Z-Image-GGUF新手必看:阿里通义模型提示词编写技巧与示例 1. 认识Z-Image-GGUF模型 1.1 什么是Z-Image-GGUF Z-Image-GGUF是阿里巴巴通义实验室开源的一款文生图AI模型,采用GGUF量化技术,能够在较低显存环境下运行。这个模型可以将文字描述…...

零基础学Python环境管理:Miniconda-Python3.8镜像保姆级入门指南

零基础学Python环境管理:Miniconda-Python3.8镜像保姆级入门指南 你是不是也遇到过这样的烦恼?想在自己的电脑上跑一个AI项目,结果光是安装Python和各种库就折腾了一整天,最后还因为版本冲突报了一堆错。或者,你需要在…...

CHORD-X在网络安全领域的应用:威胁情报自动分析与汇总报告生成

CHORD-X在网络安全领域的应用:威胁情报自动分析与汇总报告生成 1. 引言:当安全警报淹没你的收件箱 每天早上九点,安全分析师小李打开电脑,面对的是上百封未读邮件:CVE漏洞公告、防火墙告警、入侵检测系统日志、威胁情…...

释放90%存储空间的ComfyUI资源优化与性能提升指南:5步实现系统轻量化

释放90%存储空间的ComfyUI资源优化与性能提升指南:5步实现系统轻量化 【免费下载链接】ComfyUI-Manager 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Manager ComfyUI作为强大的开源AI工作流工具,随着使用时间增长,自定义节…...

【Python】学习笔记 - P2

【Python】学习笔记 - P21. 字符串str定义和切片1.1 定义方式1.2 切片方式1.3 字符串的相关方法1.3.1 查找1.3.2 修改2. 列表list及其应用场景2.1 列表的定义2.2 列表的相关操作2.1.1 增加2.1.2 查找2.1.3 删除2.1.4 修改2.3 列表的循环遍历1. 字符串str定义和切片 1.1 定义方…...

小白也能玩转AI看图说话:OFA图像描述镜像一键部署教程

小白也能玩转AI看图说话:OFA图像描述镜像一键部署教程 1. 从零开始:什么是AI看图说话? 你有没有想过,给电脑看一张照片,它就能像人一样,把照片里的内容用文字描述出来?听起来很科幻&#xff0…...

Qt界面美化实战:QTreeView/QTreeWidget样式全解析(附完整QSS代码)

Qt界面美化实战:QTreeView/QTreeWidget样式全解析(附完整QSS代码) 在桌面应用开发中,界面美观度直接影响用户体验。Qt作为跨平台框架,其树形控件(QTreeView/QTreeWidget)常用于展示层级数据&…...

Qwen-Image镜像实操手册:免配置加载通义千问视觉模型,支持多轮图文问答

Qwen-Image镜像实操手册:免配置加载通义千问视觉模型,支持多轮图文问答 1. 镜像概述与核心价值 Qwen-Image定制镜像是专为RTX 4090D GPU环境优化的大模型推理解决方案,预装了完整的CUDA 12.4工具链和通义千问视觉语言模型(Qwen-VL)所需的所…...

Astra Pro相机+YOLOv5+ROS2保姆级教程:用ELF2开发板搭建实时目标检测系统

基于ELF2开发板与Astra Pro相机的实时目标检测系统实战指南 在边缘计算与计算机视觉融合的浪潮中,如何将高性能AI模型部署到资源受限的嵌入式设备,一直是开发者面临的挑战。本文将手把手带您实现一套基于Rockchip RK3588芯片的ELF2开发板与Astra Pro深度…...