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

每日速记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.kler.cn/a/419273.html

相关文章:

  • 基于协同推荐的黔醉酒业白酒销售系统
  • 【解决安全扫描漏洞】---- 检测到目标站点存在 JavaScript 框架库漏洞
  • Doge东哥wordpress主题
  • 【真正离线安装】Adobe Flash Player 32.0.0.156 插件离线安装包下载(无需联网安装)
  • 基于Matlab实现三维点坐标生成点云(源码+数据)
  • python股票数据分析(Pandas)练习
  • transformer学习笔记-词嵌入embedding原理
  • Y20030012基于php+mysql的药店药品信息管理系统的设计与实现 源码 配置 文档
  • ECharts柱状图-极坐标系下的堆叠柱状图,附视频讲解与代码下载
  • 基于Java实现的潜艇大战游戏
  • 数据集搜集器(百科)008
  • 容器化与 Kubernetes:现代应用的编排与管理
  • LwIP协议栈 基础知识介绍
  • 电商项目高级篇06-缓存
  • 前端将echarts的图和element表格 一起导出到excel中
  • el-tree的使用及控制全选、反选、获取选中
  • 韩顺平 一周学会Linux | Linux 实操篇-组管理和权限管理
  • 根据后台数据结构,构建搜索目录树
  • openssl 基本命令使用方法
  • Oracle之提高PLSQL的执行性能
  • 三十二:网络爬虫的工作原理与应对方式
  • ASP网络安全讲述
  • 易速鲜花聊天客服机器人的开发(上)
  • 一体化数据安全平台uDSP 入选【年度创新安全产品 TOP10】榜单
  • Ubuntu 22.04 LTS vs Ubuntu 24.04 LTS:深度剖析,哪个版本更胜一筹?
  • ORB-SLAM2源码学习:LocalMapping.cc: LocalMapping::MapPointCulling剔除不合格的地图点