面试Java开发师常问到的5个问题(附答案)

Java开发师在面试的时候总会遇到各类各样的问题,虽然都不怎么难,可是由于太忽然而手足无措的状况时有发生。为了帮助你们可以避免在这个地方踩坑,千锋广州小编特地整理了企业在面试Java开发师时常常会提到的5个问题,快来看看吧!程序员

在使用多线程时,上下文切换指的是什么?web

上下文切换是存储和恢复CPU状态的过程,它可让线程执行能够在中断点的位置继续恢复执行。上下文切换非基本特征是多任务操做系统和多线程环境。面试

多线程编程的优点在哪?编程

在开发多线程的程序中,提升程序效率的方式就是多线程执行并发,CPU不会由于某个线程须要等待资源而进入空闲状态。多个线程共享堆内存(heap memory),所以建立多个线程去执行一些任务会比建立多个进程更好。举个例子,Servlets比CGI更好,是由于Servlets支持多线程而CGI不支持。缓存

为何Thread类的sleep()和yield()方法是静态的?多线程

Thread类的sleep()和yield()方法将在当前正在执行的线程上运行。处于等待状态的线程被调用这种行为是毫无心义的。避免程序员错误的认为能够在其余非运行线程调用这些方法的最好方式就是在当前正在执行的线程中工做。并发

什么是Java线程转储,如何获得它?svg

线程转储是一个JVM活动线程的列表,它对于分析系统瓶颈和死锁很是有用。有不少方法能够获取线程转储——使用Profiler,Kill -3命令,jstack工具等等。我更喜欢jstack工具,由于它容易使用而且是JDK自带的。因为它是一个基于终端的工具,因此咱们能够编写一些脚本去定时的产生线程转储以待分析。工具

volatile在Java中有什么做用?操作系统

当volatile修饰变量时,所有的线程都会直接进行读取该变量而且不会触发缓存行为。这就确保了线程读取到的变量是同内存中是一致的。

是否是很实用呢?但愿对你们有帮助哦!