java高级工程师面试情景题_Java高级工程师面试题III

java高级工程师面试情景题_Java高级工程师面试题III今天依然讲解Java高级题型面试试题与答案解析。shorts1=1;s1=s1+1;有错吗?shorts1=1;s1+=1;有错吗?对于shorts1=1;s1=s1+1;由于1是int类型,因此s1+1运算结果也是int型,需要强制转换类型才能赋值给short型。而shorts1=1;s1+=1;可以正确编译,因为s1+=1;相当于s1…

大家好,又见面了,我是你们的朋友全栈君。

c14f5e962b720310b7ad4c17118e8ab6.gif

今天依然讲解Java高级题型面试试题与答案解析。

aa84f9aa225185441cb94c15d943c372.png

short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?

对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。

如何实现对象克隆?

1.实现Cloneable接口并重写Object类中的clone()方法;

2. 实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆。

唤醒一个阻塞的线程

如因为Sleep,wait,join等阻塞,可以使用interrupted exception异常唤醒。

说说NIO和IO的区别

1.NIO少了一次从内核空间到用户空间的拷贝。ByteBuffer.allocateDirect()分配的内存使用的是本机内存而不是Java堆上的内存,和网络或者磁盘交互都在操作系统的内核空间中发生。allocateDirect()的区别在于这块内存不由java堆管理, 但仍然在同一用户进程内;

2.NIO以块处理数据,IO以流处理数据;

3.非阻塞,NIO一个线程可以管理多个输入输出通道。

67a66c0a333cb8f3530e2d30425cbb42.png

Java NIO与IO区别

Java中的NIO,BIO,AIO分别是什么?

IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。

1.BIO,同步阻塞式IO,简单理解:一个连接一个线程。BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。在JDK1.4之前,用Java编写网络请求,都是建立一个ServerSocket,然后,客户端建立Socket时就会询问是否有线程可以处理,如果没有,要么等待,要么被拒绝。即:一个连接,要求Server对应一个处理线程。

2.NIO,同步非阻塞IO,简单理解:一个请求一个线程。NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。NIO本身是基于事件驱动思想来完成的,其主要想解决的是BIO的大并发问题: 在使用同步I/O的网络应用中,如果要同时处理多个客户端请求,或是在客户端要同时和多个服务器进行通讯,就必须使用多线程来处理。也就是说,将每一个客户端请求分配给一个线程来单独处理。这样做虽然可以达到我们的要求,但同时又会带来另外一个问题。由于每创建一个线程,就要为这个线程分配一定的内存空间(也叫工作存储器),而且操作系统本身也对线程的总数有一定的限制。如果客户端的请求过多,服务端程序可能会因为不堪重负而拒绝客户端的请求,甚至服务器可能会因此而瘫痪。

3.AIO,异步非阻塞IO,简单理解:一个有效请求一个线程。AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

什么是幂等性

所谓幂等,简单地说,就是对接口的多次调用所产生的结果和调用一次是一致的。那么我们为什么需要接口具有幂等性呢?设想一下以下情形:在App中下订单的时候,点击确认之后,没反应,就又点击了几次。在这种情况下,如果无法保证该接口的幂等性,那么将会出现重复下单问题。

在接收消息的时候,消息推送重复。如果处理消息的接口无法保证幂等,那么重复消费消息产生的影响可能会非常大。

c78fae22774d478242201ee9ce6f6029.png

终止线程有几种方式?终止线程标记变量为什么是 valotile 类型?

1.线程正常执行完毕,正常结束;

2.监视某些条件,结束线程的不间断运行;

3.使用interrupt方法终止线程。在定义exit时,使用了一个Java关键字volatile,这个关键字的目的是使exit同步,也就是说在同一时刻只能由一个线程来修改exit的值。

21eb176d8b41320ef1be340da3c107dd.png

Java新生代,老年代,持久代,都存储哪些东西?

新生成的对象首先都是放在年轻代的。年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象。在年轻代中经历了N次垃圾回收后仍然存活的对象,就会被放到年老代中。因此,可以认为年老代中存放的都是一些生命周期较长的对象。持久代主要存放的是Java类的类信息。

6c98e5c2f151f4e2232b2418216437ca.png

更多精彩佳文,请关注作者!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141789.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月25日 上午7:00
下一篇 2022年5月25日 上午7:00


相关推荐

  • 大数据平台数据脱敏介绍

    大数据平台数据脱敏介绍数据脱敏(DataMasking),又称数据漂白、数据去隐私化或数据变形。百度百科对数据脱敏的定义为:指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。这样,就可以在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏后的真实数据集。可以看到数据脱敏具有几个关键点:敏感数据、脱敏规则、使用环境。敏感数据,又称隐私数据,常见的敏感数据有:姓名、身

    2022年6月21日
    25
  • 免杀工具charlotte详解,想要成为白帽子,你不会连这个工具都不会用吧?「建议收藏」

    免杀工具charlotte详解,想要成为白帽子,你不会连这个工具都不会用吧?「建议收藏」前言多看看别人的工具,自己也就会写了。(手动狗头)charlotte是一款Python编写的自动化免杀工具,用来生成免杀的dll文件,在antiscan.me上为全绿,效果可见一斑。官方地址如下:https://github.com/9emin1/charlotte,其依赖mingw-w64环境,可使用下面的命令安装:apt-getinstallmingw-w64*利用动态导出以及xor编码实现了对杀软的绕过。其文件很简单,只有一个简单的py文件以及一个cpp文件,根据以后以往的经验来看

    2022年8月20日
    8
  • Android studio中如何调用setpositivebutton函数[通俗易懂]

    Android studio中如何调用setpositivebutton函数[通俗易懂]

    2022年6月23日
    25
  • python get pip.py_get-pip.py 安装

    python get pip.py_get-pip.py 安装如果过程中报 zlib 包 那么需要先执行 yuminstallzl devel 安装 zlib 然后重新编译安装 python 最后设置环境变量 pip 默认安装实在当前版本 python 目录的 bin 下 所以将此目录设置到环境变量中即可 linux 安装完成 window 安装步骤 第一步 直接用浏览器访问地址 https raw github com pypa pip master co

    2026年3月17日
    2
  • Python xml.etree.ElementTree解析XML文件

    Python xml.etree.ElementTree解析XML文件一 简介 xml etree ElementTree 模块实现了一个简单而高效的 API 用于解析和创建 XML 数据 xml etree ElementTree 模块对于恶意构造的数据是不安全的 如果您需要解析不受信任或未经验证的数据 请参阅 XML 漏洞 参考文献 https docs python org 3 6 library xml etree elementtree html1

    2026年3月19日
    2
  • Midjourney零基础教程(超详细)

    Midjourney零基础教程(超详细)

    2026年3月13日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号