开发喵星球

Java面试题(更新中)

  1. Java中InvokeDynamic指令是干什么的?
    JVM字节码指令集一直比较稳定,一直到Java 7 中才增加了一个InvokeDynamic指令,这是JAVA为了实现[动态类型语言]支持而做的一种改进。但是在Java 7中并没有提供直接生成InvokeDynamic指令的方法,需要借助ASM这种底层字节码工具产生InvokeDynamic指令。

    而到了 Java 8 中,InvokeDynamic则成为了实现高级平台特性的一个首要机制。使用这个操作码的最明确、简单的例子便是lambda表达式。


  1. Java中编写多线程程序的时候你会遵循哪些最佳实践?
    这是我在写Java并发程序的时候遵循的一些最佳实践:
    a.给线程命名,这样可以帮助调试。
    b.最小化同步的范围,而不是将整个方法同步,只对关键部分做同步。
    c.如果可以,更偏向于使用volatile而不是synchronized。
    d.使用更高层次的并发工具,而不是使用wait() 和 notify() 来实现线程间通信,如BlockingQueue,CountDownLatch及Semeaphore。
    e.优先使用并发集合,而不是对集合进行同步。并发集合提供更好地可扩展性。

  1. Java中32位和64位JVM中,int的长度是多少位数?
    理论上说32位的JVM堆内存可以到达2^32,即4GB,但实际上会比这个小很多。不同操作系统之间不同。如Windows系统大约1.5GB,Solaris大约为3GB。64位JVM允许指定最大的堆内存,理论上可以达到2^64,这是一个非常大的数字,实际上你可以指定堆内存大小到100GB。甚至有的JVM,如Azul,堆内存到1000G都是可能的。

    32位和64位的JVM中,int 类型变量的长度是相同的,都是32位或者64个字节(一个字节8位)。Java中,int类型变量的长度是一个固定值,与平台无关,都是32位。意思就是说,在32位和64位的Java虚拟机中,int类型的长度是相同的。


  1. Java中Math.round(11.5)等于多少?
    Math.round (-11.5)等于多少?Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5然后进行下取整。

持续更新ing…

   
分类:云创动力 作者:美立新辰 发表于:2023-11-28 16:15:16 阅读量:100
  >>


powered by kaifamiao