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

挑战Java面试题复习第4天,坚持就是胜利

挑战第 4 天

  • Excption与Error包结构
  • OOM 知识点
  • SOF 知识点
  • 线程程序进程知识点
  • 有些字段不想序列化,怎么办?
  • 说说 IO 流
  • Java IO与 NIO的区别

Excption与Error包结构

  1. 运行时异常(RuntimeException):
  • 包括RuntimeException及其子类。
  • 编译器不强制处理,可以不捕获也不抛出。
  • 常见类型包括ArithmeticException、IndexOutOfBoundsException、NullPointerException等。
  1. 被检查异常(CheckedException):
  • 是Exception的子类,但不包括RuntimeException。
  • 编译器强制处理,必须捕获或声明抛出。
  • 常见类型包括IOException、FileNotFoundException、SQLException等。
  1. 错误(Error):
  • 包括Error类及其子类。
  • 编译器不检查,通常由JVM抛出,表示严重错误。
  • 常见类型包括VirtualMachineError、OutOfMemoryError等。

OOM 知识点

  1. Java Heap 溢出:
  • 异常信息:java.lang.OutOfMemoryError: Java heap space。
  • 原因:不断创建对象且避免垃圾回收,直到堆内存耗尽。
  • 诊断:使用内存分析工具(如Eclipse Memory Analyzer)分析堆转储快照,区分内存泄漏还是内存溢出。
  • 解决方案:检查并优化内存使用,调整JVM参数(如-Xmx和-Xms)。
  1. 虚拟机栈和本地方法栈溢出:
  • 异常:StackOverflowError(请求的栈深度超过最大深度)或OutOfMemoryError(扩展栈时内存不足)。
  • 注意:栈大小增加会减少可分配线程数。
  1. 运行时常量池溢出:
  • 异常信息:java.lang.OutOfMemoryError: PermGen space。
  • 原因:常量池内容过多,如通过String.intern()添加字符串。
  • 解决方案:限制方法区大小(通过-XX:PermSize和-XX:MaxPermSize)。
  1. 方法区溢出:
  • 异常信息:java.lang.OutOfMemoryError: PermGen space。
  • 原因:类信息占用内存过多,或类对象未及时回收。
  • 注意:在动态生成大量Class的应用中,需特别注意。

SOF 知识点

  1. 定义:
  • StackOverflowError是在应用程序递归调用太深,导致堆栈空间耗尽时抛出的错误。
  1. 常见原因:
  • 深度递归调用:递归调用层次过深,超出栈的容量限制。
  • 大量循环或死循环:在循环中不断压栈,可能导致栈空间耗尽。
  • 全局变量过多:虽然不直接导致栈溢出,但可能间接增加栈的使用。
  • 数据结构过大:如数组、List、Map等数据结构过大,可能导致栈溢出。
  1. 处理建议:
  • 优化递归算法,减少递归深度或改用迭代方法。
  • 检查并修复可能导致无限循环的逻辑错误。
  • 减少不必要的全局变量使用。
  • 优化数据结构的大小,避免过大的数据结构导致栈溢出。

线程程序进程知识点

  1. 程序:
  • 定义:含有指令和数据的文件,存储在磁盘或其他存储设备中。
  • 特性:静态的代码,未被执行。
  1. 进程:
  • 定义:程序的一次执行过程,是系统运行程序的基本单位。
  • 特性:动态的,包括创建、运行到消亡的过程。
  • 资源:占有CPU时间、内存空间、文件、输入输出设备的使用权等。
  1. 线程:
  • 定义:进程划分的更小的运行单位。
  • 特性:比进程更小的执行单位,共享进程的内存空间和系统资源。
  • 区别:线程之间可能相互影响,而进程之间基本上是独立的。
  1. 关系:
  • 程序是静态的代码,进程是程序的动态执行实例。
  • 一个进程可以包含多个线程,线程是进程中的一个实体。
  • 线程是轻量级的,创建和切换的开销小于进程。
  • 进程提供了操作系统级别的并发执行,而线程提供了同一程序内的并发执行。

有些字段不想序列化,怎么办?

  1. 使用transient关键字:
  • 作用:阻止被修饰的变量被序列化。
  1. transient关键字的限制:
  • 只能修饰变量,不能修饰类或方法。
  1. 序列化和反序列化的影响:
  • 序列化时:被transient修饰的变量不会被持久化。
  • 反序列化时:被transient修饰的变量值不会被恢复,通常会保持默认值。

说说 IO 流

  1. 按流向分:
  • 输入流:用于读取数据。
  • 输出流:用于写入数据。
  1. 按操作单元分:
  • 字节流:以字节为单位进行数据操作。
  • 字符流:以字符为单位进行数据操作。
  1. 按角色分:
  • 节点流(低级流):直接从数据源或目的地读写数据,如FileInputStream、FileOutputStream。
  • 处理流(高级流):基于其他流,提供额外的功能,如缓冲、转换等,如BufferedReader、BufferedWriter。
  1. 基类:
  • InputStream:所有字节输入流的基类。
  • OutputStream:所有字节输出流的基类。
  • Reader:所有字符输入流的基类。
  • Writer:所有字符输出流的基类。

Java IO与 NIO的区别

  1. 引入时间:
  • NIO是在JDK 1.4中引入的。
  1. 作用与目的:
  • NIO与IO具有相同的作用和目的,即进行输入输出操作。
  1. 实现方式:
  • NIO与IO的实现方式不同,NIO主要使用块(block)操作。
  1. 效率:
  • 由于使用块操作,NIO的效率通常高于IO。
  1. API分类:
  • Java API中提供了两套NIO:
    • 一套针对标准输入输出的NIO。
    • 另一套用于网络编程的NIO。

相关文章:

挑战Java面试题复习第4天,坚持就是胜利

挑战第 4 天 Excption与Error包结构OOM 知识点SOF 知识点线程程序进程知识点有些字段不想序列化,怎么办?说说 IO 流Java IO与 NIO的区别 Excption与Error包结构 运行时异常(RuntimeException): 包括RuntimeException…...

Android 虚拟化框架(AVF)指南

Android 虚拟化框架(AVF)指南 一、项目介绍二、项目特色三、如何使用AVF四、总结 随着移动设备的普及和应用场景的多样化,安全性和隐私保护成为了移动操作系统的重要课题。Android作为全球最广泛使用的移动操作系统之一,一直在不断…...

day-77 超级饮料的最大强化能量

思路 动态规划:因为每一步要么选A,要么选B,所以问题可以转换为求最后一步从A选或从B选中的较大值 解题过程 定义而二维数组dp,dp[i][0]表示最后一步从A取能获得的最大能量,dp[i][1]表示最后一步从B取能获得的最大能量状态转换方程…...

有道小P 1.0.8 | 完全免费的AI全科学习助手,家长的好帮手

有道小P是一款由网易有道出品的完全免费的AI全科学习助手,专为中小学生设计。它支持多种输入方式,包括文字、语音和拍照识别,能够覆盖十个科目的所有题型,提供详细的解析和逐步解答,帮助孩子们理解和吸收知识。此外&am…...

vue项目中如何在路由变化时增加一个进度条

在 Vue.js 项目中,使用路由(如 Vue Router)时,为了提升用户体验,你可能会想要在路由变化时显示一个进度条。这可以通过多种方式实现,其中一种流行的做法是使用第三方库,如 vue-loading-bar 或 n…...

如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令以及Vscode中的环境路径配置中找不到gcc

配置环境变量教程很多,就不多说,说下耗费一小时解决的问题:mingw64安装后配置完环境变量仍然执行不了gcc命令 配置 了N次了,都还是在终端找不到指令,然后,将路径放到第一个,然后再看下&#xf…...

3-petalinux2018.3 摸索记录 - 命令驱动 _ 交叉编译链

一、命令行控制GPIO 对于ps端设备,在板卡的linux系统中,切换到/sys/class/gpio路径下可以看到目前挂载的gpio设备。 export: 导入用户空间 gpiochip: 系统中gpio寄存器信息 unexport: 移除用户空间 以MIO40和MIO42…...

【二分查找】——模板

二分查找模板题 一、题目要求 给定一个长度为n的非递减数组和一个数字target,要求找到数组中第一个大于等于target的位置pos,数组下标从 0 开始。如果不存在大于等于target的数字,则输出 -1。 二、输入格式 第一行:为两个正整…...

从可逆计算看DSL的设计要点

低代码平台的可视化设计器本质上是DSL(Domain Specific Language)的结构化编辑器。可视化设计器将编辑的结果序列化成文本格式时所采用的规范就是一种DSL语法定义。 Nop平台基于可逆计算原理,提出了一整套系统化的构建机制来简化DSL的设计和…...

axios竟态问题

竟态问题 在我们日常开发经常遇到一些竟态问题 例子1 现象1 表格分页,如果设置请求loading, 先切换到分页第99页,迅速在又切换到第1页,最后列表显示的是第99页数据。 原因 由于第99页请求数据花费时间可能500ms,第1页数据只需要100ms,第1页…...

如何批量注册多个Outlook邮箱账号并避免关联

批量注册多个Outlook邮箱账号时,如何避免账号之间的关联性是一个重要的考量因素。会在此文一起探讨如何高效且安全地批量注册多个Outlook邮箱账号,并提供一些实用的建议来确保这些账号不会被关联。 一、Outlook邮箱批量注册机制 在深入注册流程之前&…...

如何在安卓設備上設置全局代理?

對於安卓用戶來說,設置全局代理是維護網路隱私一種有效的方法,可以幫助在所有應用中使用同一個代理伺服器。本文將詳細介紹如何在安卓設備上進行全局代理設置。全局代理指的是通過一個代理伺服器來轉發設備上所有應用程式的網路請求。這樣,所…...

操作系统实验记录

实验零:虚拟机安装 一、安装vmware虚拟机 与vmware匹配搜索结果 - 考拉软件 (rjctx.com),下载17.5.1版本即可下载后对照教程安装 二、下载iso虚拟驱动 搜索清华大学镜像网站,点击再搜ubuntu,下载这个4.1GB的iso文件安装后打开vmware虚拟机 三、配置vmware虚拟机 右键管…...

FastAPI 路径参数详解:动态路径与数据校验的灵活实现

FastAPI 路径参数详解:动态路径与数据校验的灵活实现 本文全面介绍了在 FastAPI 中使用路径参数的技巧和实现方式。路径参数允许 API 动态响应不同路径中的请求信息,结合 URL(Uniform Resource Locator)和 URI(Unifor…...

【STM32】SD卡

(一)常用卡的认识 在学习这个内容之前,作为生活小白的我对于SD卡、TF卡、SIM卡毫无了解,晕头转向。 SD卡:Secure Digital Card的英文缩写,直译就是“安全数字卡”。一般用于大一些的电子设备比如:电脑、数码相机、AV…...

我一口气记录下整个接口自动化测试过程!

一、为什么选用postman postman调试工具无论对于开发和测试小白,还是技术大牛来说应该都耳熟能详,在过去的几年里大家对这款工具应用最广的用途是把当作接口调试的测试工具,它能发送几乎所有类型的HTTP请求,操作界面非常简洁美观…...

【VS中Git同步提交 报错:访问.vs/FileContentIndex/xxx.vsidx权限不允许】

参考: Git commit vsidx file access denied in Visual Studio 一劳永逸的方法: 在VSCode里,Git->设置->选项:编辑.gitignore文件,如下图: 忽略整个.vs文件夹,再重新提交就不会有涉及…...

Linux下Nginx的安装与使用

Linux下Nginx的安装与使用 博客: www.lstar.icu 开源地址 Gitee 地址: https://gitee.com/lxwise/iris-blog_parent Github 地址: https://github.com/lxwise/iris-blog_parent 序言 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子…...

飞机布雷盖航程公式

飞机布雷盖航程公式 1. 喷气式飞机布雷盖航程公式推导2. 螺旋桨飞机布雷盖航程公式推导3. 喷气式飞机与螺旋桨飞机的差异分析3.1 喷气式飞机的推力产生机制3.2 螺旋桨推进推力产生机制 布雷盖航程公式(Breguet Range Equation)是描述飞行器巡航飞行阶段航…...

在K8s平台部署个人博客

在K8s平台部署个人博客 实验步骤查看wordpress前端的service浏览器访问http://node_ip:30090 实验步骤 kubectl create secret generic mysql-pass --from-literalpasswordYOUR_PASSWORD把mysql.tar.gz和wordpress.tar.gz上传到K8s工作节点,手动解压即可&#xff1…...

3dsconv终极指南:一键将3DS游戏转换为CIA格式的完整教程

3dsconv终极指南:一键将3DS游戏转换为CIA格式的完整教程 【免费下载链接】3dsconv Python script to convert Nintendo 3DS CCI (".cci", ".3ds") files to the CIA format 项目地址: https://gitcode.com/gh_mirrors/3d/3dsconv 你是否…...

GTE文本向量模型实战教程:前端Vue组件封装/predict接口调用与loading状态

GTE文本向量模型实战教程:前端Vue组件封装/predict接口调用与loading状态 1. 引言 如果你正在开发一个需要理解中文文本的Web应用,比如自动提取新闻中的关键人物和事件,或者分析用户评论的情感倾向,那么文本向量模型就是你需要的…...

收藏!新手程序员必看:大模型入门指南,告别“没基础”焦虑

准备入门大模型?请立刻丢掉“我没基础”“这技术太难”的顾虑!作为常年深耕技术领域的博主,我始终坚信:只要你有主动学习的意愿,再加上持续的付出,不仅能轻松攻克大模型入门难关,更能熟练运用它…...

JetBrains IDE试用期重置终极指南:3种简单方法快速延长30天免费使用

JetBrains IDE试用期重置终极指南:3种简单方法快速延长30天免费使用 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter JetBrains IDE试用期重置工具(ide-eval-resetter)是一款专门…...

【Epic认证级适配流程】:UE6.5.0–6.5.3全版本C++27支持矩阵,含3大禁用扩展、2个ABI断裂风险点与1份可审计迁移Checklist

第一章:Epic认证级C27适配的合规性基准与目标定义Epic Games官方于2024年Q3发布的《Unreal Engine 5.5 C Language Compliance Framework》首次将C27草案核心特性纳入引擎构建工具链的强制验证范围。本章确立的合规性基准并非仅面向语法兼容,而是聚焦于A…...

Chocolatey 安装 Python 3 时那些你可能不知道的隐藏依赖(附详细日志分析)

Chocolatey 安装 Python 3 时那些你可能不知道的隐藏依赖(附详细日志分析) 当你在 Windows 系统上使用 Chocolatey 安装 Python 3 时,表面上看只是一条简单的命令,但背后却隐藏着一系列复杂的依赖处理过程。这些自动安装的组件往往…...

10个HTTPie CLI高级功能实战技巧:从入门到精通API调试

10个HTTPie CLI高级功能实战技巧:从入门到精通API调试 【免费下载链接】cli 🥧 HTTPie CLI — modern, user-friendly command-line HTTP client for the API era. JSON support, colors, sessions, downloads, plugins & more. 项目地址: https:/…...

Doorkeeper与Rails Engines集成终极指南:如何在大型项目中组织认证模块

Doorkeeper与Rails Engines集成终极指南:如何在大型项目中组织认证模块 【免费下载链接】doorkeeper Doorkeeper is an OAuth 2 provider for Ruby on Rails / Grape. 项目地址: https://gitcode.com/gh_mirrors/do/doorkeeper Doorkeeper是一个强大的OAuth …...

Windows 11上保姆级教程:用Ollama本地部署DeepSeek-R1 8B,再也不用担心API费用和网络延迟了

Windows 11本地AI部署实战:OllamaDeepSeek-R1 8B全流程指南 在AI技术快速发展的今天,越来越多的开发者和中小企业开始关注如何在本地环境中部署和运行大型语言模型。对于预算有限但对数据隐私有高要求的团队来说,本地部署不仅能显著降低成本&…...

OpenClaw飞书机器人配置指南:Qwen3-14b_int4_awq实现对话触发任务

OpenClaw飞书机器人配置指南:Qwen3-14b_int4_awq实现对话触发任务 1. 为什么选择OpenClaw飞书机器人组合? 去年我接手了一个小团队的内部工具优化项目,需要解决两个核心痛点:一是团队成员频繁在飞书群内重复询问相同问题&#x…...