中级Java教程面试题
对java面试而言,面试前的准备一定要有面试题收集和学习这一项,因为在招聘公司看来,对java工程师职位的最大关注就是专业知识和技能水平的考察,所以程序员去公司面试,无论怎样都要先做一套面试题。对于不同级别的程序员岗位的应聘,相应的面试题难度肯定是不一样的,今天这篇文章总结了一些中级java工程师的面试题,有想应聘中级java工程师岗位的朋友可以看看下面这些面试题目,希望对你有所帮助。
编译程序常量是多少?这有什么危险呢?
回答:publicstaticfinal是一个公共静态不可变的变量,也就是我们所谓的编译期常量,public在这里是可选的。事实上,在编译时这些变量将被替换,因为编译器知道这些变量的值,而且它们在运行时不能被更改。这样做的一个问题是,您在内部或第三方库中使用了公共编译时间,但此值后来被其他人更改,但您的客户端仍在使用旧的值,甚至您已经部署了新的jar。要避免这一点,请确保在更新依赖JAR文件时重新编译程序。
垃圾收集的算法是什么?
回答:从理论上讲,垃圾回收很容易理解,具体的方法有以下四种:(1)标记-清除;(2)标记-复制;(3)标记-整理;(4)分代回收。
生成死锁的条件是什么?
回答:(1)互斥条件:每次一个进程只能使用一个资源;(2)请求和保持条件:当一个进程由于请求而阻塞时,不允许使用已经获得的资源;(3)不剥夺条件:进程已经获取的资源,在结束时才能强制剥夺;(4)循环等待条件:若干进程之间形成了头尾相连的循环等待资源关系。
为何Thread类中没有wait、nofity和nofityAll这些方法。
答案:显然的原因是,java提供的锁是对象级的,而非线程级的,而且每个对象都有锁,是通过线程获取的。若线程需要等待某个锁,则调用对象中的wait()方法是合理的。当wait()方法被定义在Thread类中时,线程等待的锁将变得不明显。简而言之,因为wait、notify和notifyAll都是锁级操作,所以将它们定义为Object类,因为锁属于对象。