您好,登录后才能下订单哦!
这篇文章主要讲解了“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的内存模型确保了Java在不同的操作系统、CPU、内存架构上有确定的行为,特别是在多线程的情况下,一个线程所做的变动对其他线程是否可见是很重要的,这叫做先行发生关系。
4、态的好处
答案:允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用).主要有以下优点:
可替换性:多态对已存在代码具有可替换性;
可扩充性:增加新的子类不影响已经存在的类结构;
接口性:多态是超类通过方法签名,向子类提供一个公共接口,由子类来完善或者重写它来实现的。
5、否创建一个包含可变对象的不可变对象?
答案:当然可以创建一个包含可变对象的不可变对象的,你只需要谨慎一点,不要共享可变对象的引用就可以了,如果需要变化时,就返回原对象的一个拷贝。最常见的例子就是对象中包含一个日期对象的引用.
6、bject中有哪些公共方法?
答案:
equals()
clone()
getClass()
notify(),notifyAll(),wait()
toString
7、Java当中的四中引用:
答案:强引用,软引用,弱引用,虚引用.不同的引用类型主要体现在GC上。
(1)强引用:如果一个对象具有强引用,它就不会被垃圾回收器回收。即使当前内存空间不足,JVM也不会回收它,而是抛出 OutOfMemoryError 错误,使程序异常终止。如果想中断强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM在合适的时间就会回收该对象。
(2)软引用:在使用软引用时,如果内存的空间足够,软引用就能继续被使用,而不会被垃圾回收器回收,只有在内存不足时,软引用才会被垃圾回收器回收。
(3)弱引用:具有弱引用的对象拥有的生命周期更短暂。因为当 JVM 进行垃圾回收,一旦发现弱引用对象,无论当前内存空间是否充足,都会将弱引用回收。不过由于垃圾回收器是一个优先级较低的线程,所以并不一定能迅速发现弱引用对象。
(4)虚引用:顾名思义,就是形同虚设,如果一个对象仅持有虚引用,那么它相当于没有引用,在任何时候都可能被垃圾回收器回收。
8、什么是编译器常量?使用它有什么风险?
答案:公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里的 public 可选的。实际上这些变量在编译时会被替换掉,因为编译器知道这些变量的值,并且知道这些变量在运行时不能改变。这种方式存在的一个问题是你使用了一个内部的或第三方库中的公有编译时常量,但是这个值后面被其他人改变了,但是你的客户端仍然在使用老的值,甚至你已经部署了一个新的jar。为了避免这种情况,当你在更新依赖 JAR 文件时,确保重新编译你的程序。
9、如何判断一个对象是否应该被回收?
答案:这就是所谓的对象存活性判断,常用的方法有两种:引用计数法和对象可达性分析。由于引用计数法存在互相引用导致无法进行GC的问题,所以目前JVM虚拟机多使用对象可达性分析算法。
10、volatile类型变量提供什么保证?
答案:volatile 主要有两方面的作用:避免指令重排和可见性保证。例如,JVM 或者 JIT为了获得更好的性能会对语句重排序,但是 volatile 类型变量即使在没有同步块的情况下赋值也不会与其他语句重排序。 volatile 提供 happens-before 的保证,确保一个线程的修改能对其他线程是可见的。某些情况下,volatile 还能提供原子性,如读 64 位数据类型,像 long 和 double 都不是原子的(低32位和高32位),但 volatile 类型的 double 和 long 就是原子的。
感谢各位的阅读,以上就是“Java秋招面试题有哪些”的内容了,经过本文的学习后,相信大家对Java秋招面试题有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。