数据结构论坛

首页 » 分类 » 常识 » 数据统计分析SPSS试题答案
TUhjnbcbe - 2021/5/18 20:14:00
北京中科医院是真是假 http://pf.39.net/bdfyy/bdfhl/

来源:动力节点Java学院

什么是线程局部变量?(答案)

线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多个线程间共享。Java提供ThradLocal类来支持线程局部变量,是一种实现线程安全的方式。但是在管理环境下(如wb服务器)使用线程局部变量的时候要特别小心,在这种情况下,工作线程的生命周期比任何应用变量的生命周期都要长。任何线程局部变量一旦在工作完成后没有释放,Java应用就存在内存泄露的风险。

2.用wait-notify写一段代码来解决生产者-消费者问题?(答案)

请参考答案中的示例代码。只要记住在同步块中调用wait()和notify()方法,如果阻塞,通过循环来测试等待条件。

3.用Java写一个线程安全的单例模式(Singlton)?(答案)

请参考答案中的示例代码,这里面一步一步教你创建一个线程安全的Java单例类。当我们说线程安全时,意思是即使初始化是在多线程环境中,仍然能保证单个实例。Java中,使用枚举作为单例类是最简单的方式来创建线程安全单例模式的方式。

4.Java中slp方法和wait方法的区别?(答案)

虽然两者都是用来暂停当前运行的线程,但是slp()实际上只是短暂停顿,因为它不会释放锁,而wait()意味着条件等待,这就是为什么该方法要释放锁,因为只有这样,其他等待的线程才能在满足条件时获取到该锁。

5.什么是不可变对象(immutablobjct)?Java中怎么创建一个不可变对象?(答案)

不可变对象指对象一旦被创建,状态就不能再改变。任何修改都会创建一个新的对象,如String、Intgr及其它包装类。详情参见答案,一步一步指导你在Java中创建一个不可变的类。

6.我们能创建一个包含可变对象的不可变对象吗?

是的,我们是可以创建一个包含可变对象的不可变对象的,你只需要谨慎一点,不要共享可变对象的引用就可以了,如果需要变化时,就返回原对象的一个拷贝。最常见的例子就是对象中包含一个日期对象的引用。

数据类型和Java基础面试问题

7.Java中应该使用什么数据类型来代表价格?(答案)

如果不是特别关心内存和性能的话,使用BigDcimal,否则使用预定义精度的doubl类型。

8.怎么将byt转换为String?(答案)

可以使用String接收byt[]参数的构造器来进行转换,需要注意的点是要使用的正确的编码,否则会使用平台默认编码,这个编码可能跟原来的编码相同,也可能不同。

9.Java中怎样将byts转换为long类型?

这个问题你来回答:-)

10.我们能将int强制转换为byt类型的变量吗?如果该值大于byt类型的范围,将会出现什么现象?

是的,我们可以做强制转换,但是Java中int是32位的,而byt是8位的,所以,如果强制转化是,int类型的高24位将会被丢弃,byt类型的范围是从-到。

11.存在两个类,B继承A,C继承B,我们能将B转换为C么?如C=(C)B;(answr答案)

12.哪个类包含clon方法?是Clonabl还是Objct?(答案)

java.lang.Clonabl是一个标示性接口,不包含任何方法,clon方法在objct类中定义。并且需要知道clon()方法是一个本地方法,这意味着它是由c或c++或其他本地语言实现的。

13.Java中++操作符是线程安全的吗?(答案)

不是线程安全的操作。它涉及到多个指令,如读取变量值,增加,然后存储回内存,这个过程可能会出现多个线程交差。

14.a=a+b与a+=b的区别(答案)

+=隐式的将加操作的结果类型强制转换为持有结果的类型。如果两这个整型相加,如byt、short或者int,首先会将它们提升到int类型,然后在执行加法操作。如果加法操作的结果比a的最大值要大,则a+b会出现编译错误,但是a+=b没问题,如下:

byta=;

bytb=;

b=a+b;//rror:cannotconvrtfrominttobyt

b+=a;//ok

(译者注:这个地方应该表述的有误,其实无论a+b的值为多少,编译器都会报错,因为a+b操作会将a、b提升为int类型,所以将int类型赋值给byt就会编译出错)

15.我能在不进行强制转换的情况下将一个doubl值赋值给long类型的变量吗?(答案)

不行,你不能在没有强制类型转换的前提下将一个doubl值赋值给long类型的变量,因为doubl类型的范围比long类型更广,所以必须要进行强制转换。

16.3*0.1==0.3将会返回什么?tru还是fals?(答案)

fals,因为有些浮点数不能完全精确的表示出来。

17.int和Intgr哪个会占用更多的内存?(答案)

Intgr对象会占用更多的内存。Intgr是一个对象,需要存储对象的元数据。但是int是一个原始类型的数据,所以占用的空间更少。

18.为什么Java中的String是不可变的(Immutabl)?(answr答案)

Java中的String不可变是因为Java的设计者认为字符串使用非常频繁,将字符串设置为不可变可以允许多个客户端之间共享相同的字符串。更详细的内容参见答案。

19.我们能在Switch中使用String吗?(answr答案)

从Java7开始,我们可以在switchcas中使用字符串,但这仅仅是一个语法糖。内部实现在switch中使用字符串的hashcod。

20.Java中的构造器链是什么?(answr答案)

当你从一个构造器中调用另一个构造器,就是Java中的构造器链。这种情况只在重载了类的构造器的时候才会出现。

JVM底层与GC(GarbagCollction)的面试问题

21.64位JVM中,int的长度是多数?

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

22.Srial与ParalllGC之间的不同之处?(答案)

Srial与Paralll在GC执行的时候都会引起stop-th-world。它们之间主要不同srial收集器是默认的复制收集器,执行GC的时候只有一个线程,而paralll收集器使用多个GC线程来执行。

23.32位和64位的JVM,int类型变量的长度是多数?(答案)

32位和64位的JVM中,int类型变量的长度是相同的,都是32位或者4个字节。

24.Java中WakRfrnc与SoftRfrnc的区别?(答案)

虽然WakRfrnc与SoftRfrnc都有利于提高GC和内存的效率,但是WakRfrnc,一旦失去最后一个强引用,就会被GC回收,而软引用虽然不能阻止被回收,但是可以延迟到JVM内存不足的时候。

25.WakHashMap是怎么工作的?(答案)

WakHashMap的工作与正常的HashMap类似,但是使用弱引用作为ky,意思就是当ky对象没有任何引用时,ky/valu将会被回收。

26.JVM选项-XX:+UsComprssdOops有什么作用?为什么要使用?(答案)

当你将你的应用从32位的JVM迁移到64位的JVM时,由于对象的指针从32位增加到了64位,因此堆内存会突然增加,差不多要翻倍。这也会对CPU缓存(容量比内存小很多)的数据产生不利的影响。因为,迁移到64位的JVM主要动机在于可以指定最大堆大小,通过压缩OOP可以节省一定的内存。通过-XX:+UsComprssdOops选项,JVM会使用32位的OOP,而不是64位的OOP。

27.怎样通过Java程序来判断JVM是32位还是64位?(答案)

你可以检查某些系统属性如sun.arch.data.modl或os.arch来获取该信息。

28.32位JVM和64位JVM的最大堆内存分别是多数?(答案)

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

29.JRE、JDK、JVM及JIT之间有什么不同?(答案)

JRE代表Java运行时(Javarun-tim),是运行Java引用所必须的。JDK代表Java开发工具(Javadvlopmntkit),是Java程序的开发工具,如Java编译器,它也包含JRE。JVM代表Java虚拟机(Javavirtualmachin),它的责任是运行Java应用。JIT代表即时编译(JustInTim

1
查看完整版本: 数据统计分析SPSS试题答案