更新时间:2020-05-28 16:37:44 来源:极悦 浏览1952次
面试Java开发的求职者要想从众多的优秀者脱颖而出并不容易,因此小编专门汇总了程序员面试掌握的Java笔试面试题,希望能让大家在面试前做好更充足的准备。
1、hread类的start()和run()方法的区别。
答案:start()方法会创建新的线程并启动该线程,所以该方法会调用其他native方法,而run()方法就是:正常的Java方法调用,即在原来的线程中执行java代码。
2、Java中Runnable和Callable的区别。
答案:Runnable和Callable都代表要线程中执行的任务。Runnable是JDK1.0加入的,而Callable确实是在JDK1.5加入的。区别:Callable的call()方法可以返回值和抛出异常,而Runnable的run()方法不能返回值也不能抛出异常。Callable是需要使用java.util.concurrent.ExecutorService.submit(Callable<T>)方法提交的,这样就可以获得Future对象,该对象可以装载了Callable接口的call()方法的返回结果。
3、简述。
答案:Java内存模型包含了一系列的规则和指导原则。Java语言是跨平台的,Java的内存模型确保了Java在不同的操作系统、CPU、内存架构上有确定的行为,特别是在多线程的情况下,一个线程所做的变动对其他线程是否可见是很重要的,这叫做先行发生关系。
4、态的好处
答案:允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用).主要有以下优点:
可替换性:多态对已存在代码具有可替换性;
可扩充性:增加新的子类不影响已经存在的类结构;
接口性:多态是超类通过方法签名,向子类提供一个公共接口,由子类来完善或者重写它来实现的。
5、否创建一个包含可变对象的不可变对象?
答案:当然可以创建一个包含可变对象的不可变对象的,你只需要谨慎一点,不要共享可变对象的引用就可以了,如果需要变化时,就返回原对象的一个拷贝。最常见的例子就是对象中包含一个日期对象的引用.
6、bject中有哪些公共方法?
答案:
7、Java当中的四中引用:
答案:强引用,软引用,弱引用,虚引用.不同的引用类型主要体现在GC上。
8、什么是编译器常量?使用它有什么风险?
答案:公共静态不可变(public static final)变量也就是我们所说的编译期常量,这里的public可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变。这种方式存在的一个问题是你使用了一个内部的或第三方库中的公有编译时常量,但是这个值后面被其他人改变了,但是你的客户端仍然在使用老的值,甚至你已经部署了一个新的jar。为了避免这种情况,当你在更新依赖JAR文件时,确保重新编译你的程序。
9、如何判断一个对象是否应该被回收?
答案:这就是所谓的对象存活性判断,常用的方法有两种:引用计数法和对象可达性分析。由于引用计数法存在互相引用导致无法进行GC的问题,所以目前JVM虚拟机多使用对象可达性分析算法。
10、类型变量提供什么保证?
答案:volatile主要有两方面的作用:避免指令重排和可见性保证。例如,JVM或者JIT为了获得更好的性能会对语句重排序,但是volatile类型变量即使在没有同步块的情况下赋值也不会与其他语句重排序。volatile提供happens-before的保证,确保一个线程的修改能对其他线程是可见的。某些情况下,volatile还能提供原子性,如读64位数据类型,像long和double都不是原子的(低32位和高32位),但volatile类型的double和long就是原子的。
以上就是极悦java培训机构的小编针对“程序员面试掌握的Java笔试面试题”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习