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


相关推荐

  • 怎样才能成为java高级程序员?应该具备的技能有哪些?(一)

    怎样才能成为java高级程序员?应该具备的技能有哪些?(一)众所周知我国的软件编程行业是非常捞金的一个行业 在当下社会成为一名高级程序员是所有人都羡慕的 那怎么才能成为一名高级程序员呢 一名高级程序员应该具备哪些技能呢 一 JAVA nbsp nbsp nbsp nbsp 要想成为 JAVA 高级 工程师肯定要学习 JAVA 一般的程序员或许只需知道一些 JAVA 的语法结构就可以应付了 但要成为 JAVA 高级 工程师 你要对 JAVA 做比较深入的研究 你应该多研究一下 JDBC I

    2026年3月16日
    2
  • 关于Spring中的task:annotation-driven配置

    关于Spring中的task:annotation-driven配置随时随地阅读更多技术实战干货 获取项目源码 学习资料 请关注源代码社区公众号 ydmsq666 博主微信 guyun 技术交流群 from https blog csdn net article details locationNum 7 amp fps 1 讲这个之前 我们先讲讲定时器 从

    2026年3月17日
    2
  • Random类中的nextInt()函数「建议收藏」

    Random类中的nextInt()函数「建议收藏」Random的两个nextInt函数:1.Random的nextInt()是无参函数,用来随机生成-~范围之间的整数;2.Random的nextInt(intn)函数用来随机生成【0,n)之间的整数,切记是前闭后开;

    2022年7月21日
    22
  • Log4net用法

    Log4net用法日记是我们在程序中经常用到的,故记于此首先要下载Log4net.dll官方网站:http://logging.apache.org/log4net/vs里创建一个c#控制台程序,在App.con

    2022年7月2日
    28
  • 2021最新Java面经系列整理,持续更新「建议收藏」

    2021最新Java面经系列整理,持续更新。。。欢迎大家关注收藏,一起加油O(∩_∩)O哈~2021最新Java面经系列 系列 内容 地址 框架篇 2021最新Java面经整理|框架篇(一)Spring框架 https://blog.csdn.net/shipfei_csdn/article/details/109530018 2021最新Java面经整理|框架篇(二)SpringMVC框架 https://blog.csdn.net/..

    2022年4月18日
    52
  • opencv滤波、图像形运算、Sober算子

    opencv滤波、图像形运算、Sober算子1.opencv中滤波操作:ksize必须是奇数1.均值操作:选定图像上的行数和列数,求出总和,除以总个数,然后将这个数放到这个选定区的中间区域中。数学表达式:4上的值=(5+6+6+7+4+…..+55)/25;函数:result=cv2.blur(src,ksize)importcv2o=cv2.imread(‘D:\cc1\lenacolor.png’)#进行图片的读取s1=cv2.blur(o,(10,10))#进行均值操作cv2.imshow(‘oringle’,o)#进行

    2022年7月14日
    20

发表回复

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

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