Java面试题二(自用-持续更新)

news2024/11/16 8:50:27

本文目录如下:

  • Java面试题(二)
    • 四、并发编程
      • 线程和进程的区别?
      • 守护线程是什么?
      • 创建线程有哪几种方式?
      • 线程有哪些状态?
      • sleep() 和 wait() 有什么区别?
      • 线程的sleep()方法和yield()方法有什么区别?
      • 线程的 run()和 start()有什么区别?
      • 你对线程优先级的理解是什么?
      • Java中怎么保证多线程的运行安全 (如何避免死锁)?
      • 什么是死锁?
      • synchronized 和 Lock 有什么区别?
    • 五、IO
      • Java 中 IO 流分为几种?
      • BIO、NIO、AIO 有什么区别?
      • Files的常用方法都有哪些?
    • 六、设计模式
      • 说几个常用的设计模式?
    • 七、通信/网络
      • 简述 tcp 和 udp的区别?
      • url是什么?由哪些部分组成?
      • OSI 的七层模型都有哪些?
      • get 和 post 请求有哪些区别?
      • 简单说一下四次挥手?
      • 什么是B/S架构?什么是C/S架构?
    • 八、JVM
      • 什么是Java虚拟机?
      • 说一下 jvm 的主要组成部分?及其作用?
      • 说一下堆和栈的区别?

Java面试题(二)

四、并发编程

线程和进程的区别?

  • 进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程。
  • 线程是进程的一个实体,是cpu调度和分派的基本单位,多个线程共享内存资源,减少切换次数,从而效率更高。

守护线程是什么?

  • 守护线程(即daemon thread),是个服务线程,准确地来说就是服务其他的线程。

创建线程有哪几种方式?

  • 1.继承Thread类创建线程类: 定义Thread类子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。
  • 2.通过Runnable接口创建线程类: 定义runnable接口实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。

线程有哪些状态?

  • 线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。

sleep() 和 wait() 有什么区别?

  • sleep()sleep() 让调用线程进入睡眠状态,让出执行机会给其他线程。但不会释放锁
  • wait()wait()释放对象的机锁,使得其他线程能够访问,可以通过notifynotifyAll方法来唤醒等待的线程。

线程的sleep()方法和yield()方法有什么区别?

  • sleep() 方法给其他线程运行机会时不考虑线程的优先级
  • yield() 方法只会给 相同优先级更高优先级 的线程以运行的机会;

线程的 run()和 start()有什么区别?

  • run(): 线程体。它包含了线程要执行的内容。
  • start(): 用于启动线程。

你对线程优先级的理解是什么?

  • Java默认的线程优先级为5,线程的优先级会在线程被调用之前设定。
  • 高优先级的线程一般比低优先级的线程先执行。

Java中怎么保证多线程的运行安全 (如何避免死锁)?

点击查看

  • 1.使用**安全类,比如 Java. util. concurrent 下的类。
  • 2.使用自动锁 synchronized
  • 3.使用手动锁 Lock
  • 4.原子性: 保证一个或者多个操作在CPU执行的过程中不被中断。
  • 5.可见性: 保证一个线程对共享变量的修改,另外一个线程能够立刻看到。
  • 6.有序性:保证程序执行的顺序按照代码的先后顺序执行。

什么是死锁?

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态。


synchronized 和 Lock 有什么区别?

  • synchronized是Java内置关键字,在JVM层面,Lock是个Java类;
  • synchronized 可以给类、方法、代码块加锁;而 Lock 只能给代码块加锁。
  • synchronized 不需要手动获取锁和释放锁,不会造成死锁;而 Lock 需要自己加锁和释放锁,使用不当会造成死锁。

五、IO

Java 中 IO 流分为几种?

  • 按类型来分:字节流字符流
  • 字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流按 16 位传输以字符为单位输入输出数据。

BIO、NIO、AIO 有什么区别?

查看原理

  • BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。
  • NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道) 通讯,实现了多路复用。
  • AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了 异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

Files的常用方法都有哪些?

  • Files.exists():检测文件路径是否存在。
  • Files.createFile():创建文件。
  • Files.createDirectory():创建文件夹。
  • Files.read():读取文件。
  • Files.write():写入文件。
  • Files.delete():删除一个文件或目录。

六、设计模式

说几个常用的设计模式?

点击查看

  • 单例模式: 一个应用程序中,某个类的实例对象只能有一个。
  • 观察者模式: 对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。(本质就是调用其他对象的函数)
  • 装饰者模式: 对已有的业务逻辑进一步的封装,使其增加额外的功能。(依赖继承实现, 不断加料)
  • 适配器模式: 把一个类的接口变换成客户端所期待的另一种接口。(创建一个中间类来解决无法调用的问题)

七、通信/网络

简述 tcp 和 udp的区别?

  • TCP面向连接; UDP是无连接的。
  • TCP提供可靠的服务。保证数据无差错,不丢失,不重复,且按序到达; UDP尽最大努力交付,不保证可靠交付。
  • UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高要求的通信。

url是什么?由哪些部分组成?

  • URL(Uniform Resource Locator,统一资源定位器),它是WWW的统一资源定位标志,就是指网络地址
  • URL由4部分组成:协议、主机、端口、路径

OSI 的七层模型都有哪些?

  • 应用层:网络服务与最终用户的一个接口。
  • 传输层:定义传输数据的协议端口号,以及流控和差错校验。
  • 网络层:进行逻辑地址寻址,实现不同网络之间的路径选择。
  • 数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验等功能。
  • 物理层:建立、维护、断开物理连接。

get 和 post 请求有哪些区别?

  • GET参数通过URL传递,POST放在Request body中。
  • GET请求在URL中传送的参数是有长度限制的,而POST没有。
  • GET请求会被浏览器主动cache,而POST不会,除非手动设置。

简单说一下四次挥手?

点击查看
四次挥手


什么是B/S架构?什么是C/S架构?

  • C/S(Client/Server):客户端–服务器结构。
  • B/S(Browser/Server):浏览器–服务器结构

八、JVM

什么是Java虚拟机?

  • 所有的Java代码都是在一个叫做Java虚拟机的东西上执行的。
  • 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。

说一下 jvm 的主要组成部分?及其作用?

  • 类加载器(ClassLoader)
  • 运行时数据区(Runtime Data Area)
  • 执行引擎(Execution Engine)
  • 本地库接口(Native Interface)

说一下堆和栈的区别?

  • 栈内存存储的是局部变量。堆内存存储的是实体。
  • 栈内存的更新速度要快于堆内存,因为局部变量的生命周期很短。
  • 栈内存存放的变量在生命周期结束时释放。堆内存存放的实体会被垃圾回收机制不定时的回收。

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

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

相关文章

我发现买不起自己出版的书了,这到底是咋回事?

大家好,我是冰河~~ 这次我是真的有点买不起自己的书了! 聊聊背景 继出版《海量数据处理与大数据技术实战》、《MySQL技术大全:开发、优化与运维实战》和《深入理解分布式事务:原理与实战》之后,冰河于2022年6月出版…

基于uni-app的小程序电子签名功能(带有笔锋)

前言 目前做的一个项目需要用到电子签名的功能,网上其实也挺多这种类型的电子签名,但是带有笔锋效果的确比较少,所以参考了一些博客,总结成了这个功能,在此分享给大家。 效果展示 代码展示 触摸开始(touc…

大数据专业需要学习python么

如果零基础入门数据开发行业的小伙伴,可以从Python语言入手。 Python语言简单易懂,适合零基础入门,在编程语言排名上升最快,能完成数据挖掘、机器学习、实时计算在内的各种大数据集成任务。 但是不会python也是没有关系的&#…

基于Vector VT系统的车身域测试方案介绍

车身域控制器作为车身主要部件的控制大脑,需要经过严苛的测试,常见的测试方式是通过搭建硬件在环测试系统实现的,测试原理是通过仿真控制器外围的传感器和执行器,实现车身域控制器的闭环仿真和测试。小怿基于国际一流的测试设备提…

Day15 C++STL入门基础知识九——list容器 基本概念-构造函数-赋值变换-大小操作-插入删除-数据存取-反转排序 【全面深度剖析+例题代码展示】

文章目录1. 基本概念1.1 功能1.2 概念1.3 组成和存储方式1.4 优缺点1.4 图解2. 构造函数2.1 函数原型2.2 代码展示2.3 测试结果3. 赋值交换3.1 函数原型3.2 代码展示3.3 测试结果4. 大小操作1.3 代码展示1.4 测试结果6. 插入删除6.1 函数原型6.2 代码展示6.3 测试结果7. 数据存…

React报错#310复盘小结

React报错#310复盘小结问题背景解决方案原理&学习引发错误情况1. 不要在循环,条件或嵌套函数中调用 Hook2. 把所有的钩子移到组件的顶层,在任何可能返回值的条件之上。总结问题背景 apm报错:Minified React error #310 https://reactjs.…

浅谈Graph Embedding(一)

Graph Embedding算法背景引入先回顾下图的概念:图(graph)由节点(vertex)和点之间连线(edge)所组成;其中,点通常被成为“顶点(vertex)”,而点与点之间的连线则被成为“边”(edge)。通常记为,G(V,E)。常见分为无向图和有向图。示例如下&#xf…

MySQL数据类型约束

文章目录数据类型MySQL中的数据类型整数类型类型介绍可选属性MUNSIGNEDZEROFILL适用场景如何选择?浮点类型类型介绍数据精度说明精度误差说明定点数类型类型介绍开发中经验位类型:BIT6. 日期与时间类型YEAR类型DATE类型TIME类型DATETIME类型TIMESTAMP类型…

小白入门pwn笔记 CPU与进程的执行

1.回顾存储在磁盘中的叫节,映射到内存的时候叫段。内存中的节根据读写执行的权限不同在内存中映像为不同的段。段视图用于进程的内存区域的rwx权限划分。节视图用于ELF文件编译链接时与在磁盘上储存时的文件结构的组织。2.代码在内存重的映射关系不可写的数据一般会…

Qt OpenGL(三十六)——Qt OpenGL 核心模式-绘制雷达坐标系

提示:本系列文章的索引目录在下面文章的链接里(点击下面可以跳转查看): Qt OpenGL 核心模式版本文章目录 Qt OpenGL(三十六)——Qt OpenGL 核心模式-绘制雷达坐标系 一、场景 在日常的项目中,我们很多时候会遇到,绘制雷达扫描图的情况,比如,你的项目是给下面的雷达…

unidbg-boot-server使用并打包jar调用

其实线上使用可以多种方式,比如pom引入spring boot自己去写一个接口实现; 但如果并发不是很高,可以使用synchronized关键字进行,若对并发有要求,建议直接使用 unidbg-boot-server开源项目; 从github下拉,https://github.com/anjia0532/unidbg-boot-server 常见问题:…

Neo-reGeorg测试

1、前言 趁着春节刚开工不太忙,把以前的坑填一下。 主要是针对反向代理、隧道工具进行学习和测试。 之前测试过FRP,HTTPTunnel,NPS,都比较简单,而且上面工具也可以用在普通需求下使用。 reGeorg和Neo-reGeorg非常适合…

常用RTOS详细说明

鸿蒙OS HarmonyOS是一款面向全场景的开源分布式操作系统,是华为自主研发的操作系统。 鸿蒙OS实现模块化耦合,可应用在不同的设备上。 鸿蒙OS架构分为三层: 第一层是内核第二层是基础服务第三层是程序框架 。 鸿蒙OS底层三部分组成&#x…

《U型理论》速读

文章目录书籍信息概览踏上发现的旅程大火带来的启示踏上 U 型之旅学习和变革的4个层次组织的盲点社会的盲点科学的哲学基础关于界点下载观察感知自然流现结晶塑造原型运行社会场域理论的 21 个命题个人行动谈话行动自然流现的原则和实践:引领深刻的创新和变革视觉记…

Windows Server 2016搭建DNS服务

1:搭建DNS服务的目的是为了解析vCenter,当初安装时候没有用DNS解析,主机名是localhost无法安装vTPM虚拟Windows 11。 2:准备一台Windows Server 2016的主机,设置好固定IP地址,DNS就是本机的IP地址。 3:在服务器管理中…

Maven知识点-关于dependencyManagement和pluginManagement

前言 dependencyManagement和pluginManagement如何使用以及什么意思?我想懂点Maven的应该都明白,无非是依赖和插件的管理(版本),一般多用于Maven项目的继承和聚合模式中。 这里不是讲解dependencyManagement和plugin…

PCB丝印的字符有哪些作用?

PCB字符也就是行业内常说的“丝印”PCB丝印在一般的PCB板子都可以看到,那么PCB丝印有那些作用呢。 1、大家都知道各种各样的电子元器件数不胜数,那么如何区分PCB这个焊盘是贴什么电子元器件的呢?实际上就是通过PCB板子上的丝印字符去判断每一…

package.json配置详解

npm 介绍 npm 是随同 Node.js 一起安装的包管理工具,能解决 Node.js 代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从 NPM 服务器下载别人编写的第三方包到本地使用;许用户从 NPM 服务器下载并安装别人编写的命令行程序到本地使用;允许用户将自己编写的包或命令行…

【云原生 | Docker 高级篇】11、Docker 私有镜像仓库 Harbor 安装及使用教程

目录 一、Harbor 介绍 二、Harbor 的优势 三、Harbor 部署安装 3.1 部署环境 3.2 为 Harbor 自签发证书 3.3 安装 Harbor 3.4 设置开机自启 四、Harbor 图像化界面使用说明 4.1 修改本地 hosts 文件 4.2 访问 harbor 4.3 创建项目 五、测试使用 harbor 私有镜像仓库…

form 表单只有一个input 时,回车自动提交表单造成页面刷新效果

现象&#xff1a;el-form 中仅有一个input&#xff0c;input上设置了回车响应事件&#xff0c;首次按回车键后&#xff0c;页面刷新&#xff0c;再次按回车才执行了响应事件 <el-form ref"form" submit.native.prevent><el-form-item><el-input keyu…