以服务于中国广大创业者为己任,立志于做最好的创业网站。

标签云创业博客联系我们

导航菜单

测试工程师面试必背题,面试工程师常见的问题和答案

  

  专业考试是Java程序员面试过程中必不可少的环节,那么面试者在面试过程中会问哪些问题呢?接下来,黑马君将带你进入面试环节!   

  

  Java开发实用的面试题及参考答案   

  

  1、进程,线程,协程之间的区别是什么?   

  

  简而言之,过程是程序运行和资源分配的基本单位。一个程序至少有一个进程,一个进程至少有一个线程。在执行过程中,进程有独立的内存单元,多个线程共享内存资源,减少了切换次数,从而达到更高的效率。线程是进程的一个实体,是cpu调度和分派的基本单位,也是比可以独立运行的程序小的基本单位。同一进程中的多个线程可以并发执行。   

  

  2、你了解守护线程吗?它和非守护线程有什么区别?   

  

  程序运行后,jvm将等待非守护线程完成,然后关闭,但jvm不会等待守护线程。守护线程最典型的例子是GC线程。   

  

  3、什么是多线程上下文切换?   

  

  多线程上下文切换是指CPU控制权从一个已经运行的线程切换到另一个已经准备好等待获得CPU执行权的线程的过程。   

  

  4、创建两种线程的方式?他们有什么区别?   

  

  通过实现java.lang.Runnable或扩展java.lang.Thread类。与扩展Thread相比,实现Runnable接口可能更好,原因有二:Java不支持多重继承。因此,扩展Thread类意味着这个子类不能扩展其他类。实现Runnable接口的类也可以扩展另一个类。类可能只要求是可执行的,因此继承整个Thread类的开销太高。   

  

  5、Thread类中的start()和run()方法有什么区别?   

  

  start()方法用于启动新创建的线程,run()方法在start()内部调用,不同于直接调用run()方法的效果。当您调用run()方法时,它将只在原始线程中被调用,如果没有新线程启动,start()方法将只启动新线程。   

  

  6、怎么检测一个线程是否持有对象监视器?   

  

  线程类提供了一个holdsLock(对象   

  

  Obj)方法,只有当对象obj的监视器由线程持有时,该方法才返回true。请注意,这是一个静态方法,这意味着“一个线程”指的是当前线程。   

  

  7、你知道哪些垃圾回收算法?   

  

  垃圾回收理论上很好理解,具体方法如下:   

  

  1\.标记-清除   

  

  2\.标记-复制   

  

  3.标记整理   

  

  4.世代循环   

  

     

  

  8、如何判断一个对象是否应该被回收?   

  

  这就是所谓的物体生存性判断。常用的方法有两种:1。参考计数法;   

  

  2.对象可达性分析。由于引用计数法因相互引用而无法进行GC的问题,目前JVM虚拟机大多采用对象可达性分析算法。   

  

  9、调用System.gc()会发生什么?   

  

  通知GC开始工作,但GC的实际开始时间不确定。   

  

  10、64位的JVM当中,int的长度是多少?   

  

  在Java中,int类型变量的长度是一个固定值,不管平台如何,都是32位。也就是说,在32位和64位Java虚拟机中   

  

  类型的长度是相同的。   

  

  11、int和Integer的区别?   

  

  Integer是int的封装类型,在拆包和打包时会自动转换。Int是一个基本类型,直接存储数值,而integer是一个对象,用引用指向这个对象。   

  

  12、int 和Integer谁占用的内存更多?   

  

  整数对象将占用更多内存。Integer是一个需要存储其元数据的对象。但是int是一种原始类型的数据,所以它占用的空间更少。   

  

  13、String, StringBuffer和StringBuilder区别?   

  

  String是字符串常量,最终修饰:StringBuffer字符串变量(线程安全);   

  

  StringBuilder字符串变量(线程不安全)。   

  

  14、java当中使用什么类型表示价格比较好?   

  

  如果内存和性能不是特别重要,使用BigDecimal否则,使用具有预定义精度的双精度类型。   

  

  15、如何将byte转为String?   

  

  您可以使用字符串接收字节[]   

  

  参数构造函数,需要注意的是要使用的正确编码,否则将使用平台默认编码,它可能与原始编码相同,也可能不同。   

  

  16、可以将int强转为byte类型么?会产生什么问题?   

  

  我们可以强制转换,但是在Java中,int是32位的,byte是8位的,所以如果强制转换,int类型的高24位将被丢弃,byte。   

  

  类型的范围从-128到128。   

  

  以上是黑马君为大家整理的Java开发实用的面试题及参考答案分享内容,希望对即将面对采访的朋友有所帮助!