每日速记10道java面试题04

其他资料

每日速记10道java面试题01-CSDN博客

每日速记10道java面试题02-CSDN博客

每日速记10道java面试题03-CSDN博客

目录

一、什么是java的自动拆箱和装箱?

二、什么是java中的迭代器?

三、Java 运行时异常和编译时异常之间的区别是什么?

四、Java 中的访问修饰符有哪些?

五、Java 中静态方法和实例方法的区别是什么?

六、什么是 Java 中的双亲委派模型?

七、java中sleep和wait方法的区别?

八、什么是BIO、NIO、AIO?

九、什么是Channel?

十、什么是 Selector?


一、什么是java的自动拆箱和装箱?

自动装箱:将基本数据类型自动的转化为包装类型
自动拆箱:将包装类型自动转化为基本数据类型
减少了代码复杂度,减少了代码的编写常见于集合处理
算数运算。

二、什么是java中的迭代器?

迭代器就是java集合框架提供的一种用来遍历集合元素的接口,可以遍历和修改集合的元素(set,map)。
通过ltearator. hasNext()看是否有下一个元素。

通过ltearator. next()返回其元素。

三、Java 运行时异常和编译时异常之间的区别是什么?

编译时异常是指在编写程序时编译器检查出来的异常,需要显示的进行处理,try catch 进行捕获或者throw扔出。常见的编译异常,如FileNotFoundException,IOException等
运行时异常 ,是在程序运行时抛出的异常,需要在代码编写时处理好逻辑,减少运行时异常。常见的运行时异常如算数异常,空指针异常,数组下标越界异常等

四、Java 中的访问修饰符有哪些?

访问权限:用来控制类、方法、变量的访问级别,有4种:public、protected、default、private
public:访问权限最大,当前类、当前包、子类(不同包)、不同包,可以访问
protected:当前类、当前包、子类(不同包),可以访问
default:当前类、当前包,可以访问
private:当前类,可以访问

五、Java 中静态方法和实例方法的区别是什么?

静态方法:1.属于类 2.可以使用类名访问 3.不能访问实例变量和实例方法 4.场景:作为工具类的方法实例方法:1.属于对象 2.只能通过对象访问 3.可以访问静态变量和静态方法

六、什么是 Java 中的双亲委派模型?

双亲委派模型是 Java 类加载机制的设计模式之一。它的核心思想是:类加载器在加载某个类时,会先委派给父类加载器去加载,父类加载器无法加载时,才由当前类加载器自行加载。
工作流程:
当一个类加载器(如自定义类加载器)试图加载某个类时,先将加载请求向上委派给父类加载器,父类加载器再向上委派给它的父类,直到根类加载器(Bootstrap ClassLoader)。

在 JDK9 之前,Java 自身提供了 3种类加载器:
1.启动类加载器( Bootstrap classLoader ),它是属于虚拟机自身的一部分,用 C++实现的,主要负责加载<JAVA_HOME>\1ib 目录中或被xbootclasspath 指定的路径中的并且文件名是被虚拟机识别的文件。它是所有类加载器的爸爸。
2.扩展类加载器( Extension classloader),它是 Java 实现的,独立于虚拟机,主要负责加载<JAVA HOME>\lib\ext 目录中或被java.ext.dirs 系统变量所指定的路径的类库,
3.应用程序类加载器( Application classoader),它是Java 实现的,独立于虚拟机。主要负责加载用户类路径( classpath)上的类库,如果我们没有实现自定义的类加载器那这玩意就是我们程序中的默认加载器。
所以一般情况类加载会从应用程序类加载器委托给扩展类再委托给启动类,启动类找不到然后扩展类找,扩展类加载器找不到再应用程序类加载器找。

为什么要有双亲委派机制?

安全性:避免重复加载类。例如,java.lang.0bject 类只能由根类加载器加载,防止恶意代码加载不受信任的类来替代系统核心类。
一致性:保证同一个类在 JVM 中只会被加载一次,确保在整个应用中使用的是同一个类对象。

双亲委派机制先自下而上委托,再自上而下加载,那为什么不直接自上而下加载?
因为本来类加载器是组合关系,也就是子加载器只记录了父加载器,父加载器没记录子加载器(找不到子加载器)其次如果先父加载器接活再传给子加载器,假设有5个子加载器(比如5个平级的自定义加载器)传给哪个加载呢?每个试过去嘛?效率就不高了。

一般聊到双亲委派机制会说到类加载过程,具体看以下博文:

每日速记10道java面试题03-CSDN博客

七、java中sleep和wait方法的区别?

1.sleep方法 属于Thread类中的方法 释放cpu给其它线程 不释放锁资源 seep(1000)等待超过1s被唤醒
2. wait方法 属于Object类中的方法 释放cpu给其它线程,同时释放锁资源 wait(1000) ,等待超过1s被唤醒 ,wait() 一直等待需要通过notify或者notifyAll进行唤醒 ,wait 方法必须配合 synchronized 一起使用,不然在运行时就会抛出legalMonitorStateException异常

八、什么是BIO、NIO、AIO?

BIO(阻塞IO):人一直盯着水烧开,水烧开之后亲自关火
NIO(非阻塞IO):人在烧水的时候去干别的事情,时不时看着水烧没烧开,烧开之后亲自关火
AIO(异步IO):人找了一个帮手,帮手在烧水的时候一直盯着,水烧开之后帮手关火,然后提醒人水烧开了。人全程不管烧水的事情

九、什么是Channel?

是非阻塞式IO中的一个核心概念(NIO),是一种更有利于数据读写操作的数据结构

1.Channel是双向的,可以同时进行读取和写入
2.非阻塞式的,可以引入Selector实现多路复用,并发操作。
3. Channel有四种实现,SocketChannel、ServerSocketChannel、DatagramChannel、FileChannel

十、什么是 Selector?

selector是NIO 中IO多路复用的一个组件,它可以通过一个单独的线程同时监视多个通道(Channel)的事件。

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

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

相关文章

Python字典的用法(定义、增加、删除、修改、查询、遍历)

一.字典的介绍 dictionary&#xff08;字典&#xff09;是除了列表以外的 Python 中最灵活的数据类型。dict&#xff08;字典&#xff09;可以采用多个数据&#xff0c;通常用于存储描述一个物体的相关信息。 字典和列表最主要的区别是&#xff0c;字典是无序的对象集合&#x…

多视图几何中向量叉乘的矩阵转换 Matrix Transformation for Cross Product in MVG

Title: 多视图几何中向量叉乘的矩阵转换 Matrix Transformation for Cross Product in MVG 文章目录 I. 向量叉乘的矩阵转换恒等式II. 符号计算 Maxima 程序推导III. 推论和关联公式的说明1. 推论2. 应用于对极几何中基本矩阵推导3. 应用于基本矩阵与单应矩阵关系4. 与刚体运动…

支持多种快充协议的取电芯片,支持最大功率140W

前言 在快节奏的现代生活中&#xff0c;人们对于小家电的依赖日益加深&#xff0c;而随之而来的充电问题也日益凸显。传统的充电方式往往受限于电压、电流的限制&#xff0c;难以满足不同设备对电力的多样化需求。而PD快充协议的诞生&#xff0c;则为这一难题提供了全新的解决…

分页查询功能

EmployeeController /** * 员工分页查询 * * param employeePageQueryDTO * return */ GetMapping("/page") ApiOperation("员工分页查询") public Result<PageResult> page(EmployeePageQueryDTO employeePageQueryDTO) { log.info("…

深度学习读书笔记 绪论

深度学习是什么&#xff1f; 机器学习的分支。 深度学习问题也是指从有限样例中总结出一般的规律&#xff0c;应用在新的未知数据上的方法。 机器学习的三个基本要素 模型 机器学习任务首要弄明白的&#xff0c;也就是一个机器学习任务所面对的输入空间和输出空间。 输入…

“移门缓冲支架:为家庭安全加码”

在智能家居日益普及的今天&#xff0c;科技不仅改变了我们的生活方式&#xff0c;也提升了家居的安全。移门缓冲支架作为一项结合了现代技术的小型装置&#xff0c;正逐渐成为提升家庭安全的重要配件。它通过吸收门关闭时的冲击力、减缓关门速度以及减少噪音等多重功能&#xf…

npm error code ETIMEDOUT 简单排查

今天突然没到一个仓库的ius问题。改完之后想发布npm包 出现下面的场景 npm addUser npm adduser npm notice Log in on https://registry.npmjs.org/ Create your account at: https://www.npmjs.com/login?next/login/cli/12596c8b-ba4a-4763-8a97-215087d380c4 Press ENTER…

力扣96:不同的二叉搜索树

给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;5示例 2&#xff1a; 输入&#xff1a;n 1 输出&#xff1a;1 卡…

小程序-基于java+SpringBoot+Vue的微信小程序养老院系统设计与实现

项目运行 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境&#xff1a;Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

Torchtune在AMD GPU上的使用指南:利用多GPU能力进行LLM微调与扩展

Torchtune on AMD GPUs How-To Guide: Fine-tuning and Scaling LLMs with Multi-GPU Power — ROCm Blogs 这篇博客提供了一份详细的使用Torchtune在AMD GPU上微调和扩展大型语言模型&#xff08;LLM&#xff09;的指南。Torchtune 是一个PyTorch库&#xff0c;旨在让您轻松地…

计算机网络--网络安全测试

问题 1 以下关于网络安全威胁发展的趋势的描述中错误的是___A_____。 答案&#xff1a; A云计算可以有效地防止网络攻击发生 B网络攻击、病毒与垃圾邮件是网络安全的三大公害 C网络攻击开始演变成某些国家或利益集团重要的政治、军事工具 D趋利性是当前网络攻击的主要特点 …

Java使用replaceAll替换时不使用正则表达式

前言 public String replaceAll(String regex, String replacement) {return Pattern.compile(regex).matcher(this).replaceAll(replacement);}在使用String.replaceAll() 方法时&#xff0c;由于入参时regex &#xff0c;而入参刚好是正则表达式的字符该怎么办&#xff1f;我…

【0346】Postgres内核 Startup Process 通过 signal 与 postmaster 交互实现 (5)

1. Startup Process 进程 postmaster 初始化过程中, 在进入 ServerLoop() 函数之前,会先通过调用 StartChildProcess() 函数来开启辅助进程,这些进程的目的主要用来完成数据库的 XLOG 相关处理。 如: 核实 pg_wal 和 pg_wal/archive_status 文件是否存在Postgres先前是否发…

STM32C011开发(3)----Flash操作

STM32C011开发----3.Flash操作 概述硬件准备视频教学样品申请源码下载参考程序生成STM32CUBEMX串口配置堆栈设置串口重定向FLASH数据初始化FLASH 读写演示 概述 STM32C011 系列微控制器内置 Flash 存储器&#xff0c;支持程序存储与数据保存&#xff0c;具备页面擦除、双字写入…

电商项目高级篇06-缓存

电商项目高级篇06-缓存 1、docker下启动redis2、项目整合redis3、redis改造三级分类业务 缓存 流程图&#xff1a; data cache.load(id);//从缓存加载数据 If(data null){ data db.load(id);//从数据库加载数据 cache.put(id,data);//保存到 cache 中 } return data;在我们…

TypeScript 命名空间与模块

在 TypeScript 中&#xff0c;命名空间和模块是两种不同的代码组织方式&#xff0c;它们都旨在帮助你管理和维护大型代码库。命名空间提供了一种将相关功能组织在一起的方式&#xff0c;而模块则允许你将代码分解成可重用的单元。在本文中&#xff0c;我们将探讨命名空间和模块…

Vue 原理详解

Vue 原理详解 Vue.js 是一个渐进式框架&#xff0c;它通过数据驱动视图更新和响应式编程使得前端开发变得更加简单高效。在 Vue 的内部实现中&#xff0c;编译过程和响应式机制是两个至关重要的组成部分。本文将详细介绍 Vue.js 的编译器、响应式系统和运行时的工作原理&#…

PS的功能学习

背景差色较大&#xff0c;就魔棒 魔棒的连续就是倒水点的跨越问题 魔棒的容差的选择就有点看经验了&#xff0c;看颜色的统一程度选择 Ctrl D 取消当前所有的选区 至于快速选择工具&#xff0c;和对象选择工具也差不多&#xff0c;只不过控制范围变成了一块一块的&#x…

深度学习实验--初步探索数据增强、优化器对模型的影响

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 这次主要是探究&#xff0c;优化器、数据增强对模型训练的影响&#xff1b;基础篇还剩下几个, 后面的难度会逐步提升;越学&#xff0c;越觉得这个东西很…

新型大语言模型的预训练与后训练范式,谷歌的Gemma 2语言模型

前言&#xff1a;大型语言模型&#xff08;LLMs&#xff09;的发展历程可以说是非常长&#xff0c;从早期的GPT模型一路走到了今天这些复杂的、公开权重的大型语言模型。最初&#xff0c;LLM的训练过程只关注预训练&#xff0c;但后来逐步扩展到了包括预训练和后训练在内的完整…