Java面试题二-并发编程、IO、设计模式、通信/网络、JVM

news2024/12/23 12:56:24

本文目录如下:

  • 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/196167.html

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

相关文章

KVM虚拟机安装Virtio驱动

KVM虚拟机安装Virtio驱动KVM服务器上配置Virtio驱动ISO文件Windows实例安装Virtio驱动Linux实例安装kvm驱动(一般不需要)KVM服务器上配置Virtio驱动ISO文件 参考:https://www.ibm.com/docs/zh/cloud-orchestrator/2.5.0.1?topicimages-installing-virtio-driver-k…

成功解决:尚硅谷中的谷粒商城前端项目运行依赖问题。【详细图解+问题说明+解决思路】

一个混迹于Github、Stack Overflow、开源中国、CSDN、博客园、稀土掘金、51CTO等 的野生程序员。 目标:分享更多的知识,充实自己,帮助他人 GitHub公共仓库:https://github.com/zhengyuzh 以github为主: 1、分享前端后端…

程序员超级书单:技术人必看

写在前面 电影一部两小时打底,却很少有人可以静下心看30分钟书。今天刷沸点摸鱼, 无意中摸到一条让我有写作冲动的鱼,开工几天了,大家应该都暗暗立下不少flag,比如坚持锻炼,再比如自己今年要看多少本书籍。 行业内卷…

舆情监控工具app推荐,舆情监控工具包括哪些?

舆情监控工具的目的是帮助组织了解公众对各种话题、问题或品牌的意见和情绪。它们可以从多种来源收集数据,包括社交媒体、新闻媒体、博客、论坛和评论区。舆情监控工具app推荐,舆情监控工具包括哪些? 一、舆情监控工具app推荐 TOOM舆情监控工具&…

算法基础集训(第31天)------>BFS之经典【走迷宫】

一:概念定义给定一个 nm 的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0 表示可以走的路,1 表示不可通过的墙壁。最初,有一个人位于左上角 (1,1) 处,已知该人每次可以向上、下、左…

扎克伯格15年邮件曝光:AR/VR平台全盘细节,谈收购Unity的优势

近期一份2015年时扎克伯格的一封邮件曝光,文中解释了Facebook在VR领域的战略策略和VR对未来的影响等,揭露了但是Facebook在VR/AR方向上的全盘计划,同时曝光当时Facebook就有收购Unity的计划,值得一看。以下是摘要:1&am…

DarkNet框架实现分类任务避坑指南(附安装包)

声明:本文仅分享技术,无其他 文章目录***声明:本文仅分享技术,无其他***这个框架真的非常非常非常小众,入坑需谨慎DarkNet对编译环境有要求配置前的准备环节1、 DarkNet源码封装(安装包如果失效了&#xff…

看这个就够了——ubuntu系统中的cuda cudnn cudatookit及pytorch使用

一.基本概念1.1 nvidia独立显卡独立显卡是指以独立板卡形式存在,可在具备显卡接口的主板上自由插拔的显卡。独立显卡具备单独的显存,不占用系统内存,而且技术上领先于集成显卡,能够提供更好的显示效果和运行性能。显卡作为电脑主机…

GooFuzz:一款基于OSINT方法的模糊测试工具

关于GooFuzz GooFuzz是一款基于OSINT方法的模糊测试工具,该工具基于Google Dork实现其功能。本质上来说,GooFuzz是一个Bash脚本,该脚本使用了Google Search技术来获取文件或目录中的敏感信息,而无需向目标Web服务器发送请求。 工…

ESP-IDF:字符和整形二维指针测试

ESP-IDF:字符和整形二维指针测试 /字符和整形二维指针测试/ void print19a(void ** cp) { cout<<"test char ** "<<endl; cout<<"cp "<<*((char **)cp)<<endl; char *s *((char **)cp); cout<<"cp "<&…

可信数字仓储(TDR)及其实践应用案例

数字资源长期保存活动是为了保存人类的科学文化遗产&#xff0c;为公众提供持续服务&#xff0c;并为未来提供历史证据。在对数字资源进行长期保存的过程中&#xff0c;不可避免地要面对环境、技术、人员等方面的改变&#xff0c;要让用户信任所获得的信息&#xff0c;保存活动…

华为车BU王军被停职,余承东独掌智能车业务丨HiEV独家

来自多个信息源的消息显示&#xff0c;华为智能汽车解决方案BU&#xff08;简称「车BU」&#xff09;正迎来多项人事调整。 据HiEV得知的信息&#xff0c;车BU COO、智能驾驶解决方案产品线总裁王军已被停职。这距王军最近一次公开露面&#xff0c;仅相隔半个月。1月14日&#…

haproxy相关

docker编译运行 创建Dockerfile文件FROM haproxy:2.6.8 COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg编译docker镜像 docker build -t my-haproxy .测试配置文件 docker run -it --rm --name haproxy-syntax-check my-haproxy haproxy -c -f /usr/local/etc/haproxy/…

【FreeRTOS】详细讲解FreeRTOS里中断管理并通过示例讲述其用法

文章目录中断函数解析FreeRTOS中断使用示例中断 大家看到中断后&#xff0c;有没有想到一个名词——异常呢&#xff1f;若大家想到了&#xff0c;但是记不起相关概念&#xff1b;或者是&#xff0c;大家没想到这个名词&#xff0c;没关系&#xff0c; 下面小编就给大家伙讲讲中…

VMware 虚拟机无法开机

在windows下安装VMware虚拟机&#xff0c;使用ubuntu18.04系统时&#xff0c;由于非正常关机或者硬盘内存不够&#xff0c;导致无法正常开机&#xff0c;现象如下&#xff1a;问题原因&#xff1a;第一&#xff1a;pillx4_smbus异常&#xff0c;需要禁用&#xff1b;第二&#…

全网最细------爬取4k高清大图

本次案例将教大家免费爬取4k高清大图&#xff0c;即使你是爬虫新手&#xff0c;也可以食用本次文章实现你的免费下载梦,话不多说&#xff0c;先看效果 网站视图: 看到这些图片你是否怦然心动&#xff0c;跟着我一起看下去. 一.思路分析 首先最基本的是获取每张图片的链接&a…

【JavaEE】并发编程(多线程)线程安全问题内存可见性指令重排序

目录 第一个问题&#xff1a;什么是线程安全问题&#xff1f; 第二个问题&#xff1a;为什么会出现线程安全问题&#xff1f; 第三个问题&#xff1a;如何解决多线程安全问题&#xff1f; 第四个问题&#xff1a;产生线程不安全的原因有哪些&#xff1f; 第五个问题&am…

模板进阶(包含特化)

非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中可将该参数当成常量…

CSS(基础,面试,常见用例)

CSS规则【*】CSS选择器一、 CSS选择器二、选择器匹配原理三、优先级 / 权重四、可继承 / 不可继承样式属性【*】盒模型一、盒模型二、box-sizing属性三、offsetWidth、clientWidth、scrollWidth**【*】em/px/rem/vh/vw的区别一、CSS单位二、px三、em四、rem五、vh、vw六、%百分…

基于spring生态的基础后端开发及渗透测试流程

这是一篇记录如何从建仓开始到最后安全测试完整流程的笔记&#xff0c;使用的spring生态&#xff0c;目的是为spring的基础后端开发及后期渗透测试打一个模板。本篇采用springSecurity作为安全框架&#xff0c;搭载了redis-cache、spring-valid等功能&#xff0c;并开放了OAuth…