2020年Java应届生面试题应答_极悦注册
专注Java教育14年 全国咨询/投诉热线:444-1124-454
极悦LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 2020年Java应届生面试题应答

2020年Java应届生面试题应答

更新时间:2020-01-02 15:29:29 来源:极悦 浏览6947次


2020年Java应届生面试题应答


  1.10 个线程和 2 个线程的同步代码,哪个更容易写?


  从写代码的角度来说,两者的复杂度是相同的,因为同步代码与线程数量是相互独立的。但是同步策略的选择依赖于线程的数量,因为越多的线程意味着更大的竞争,所以你需要利用同步技术,如锁分离,这要求更复杂的代码和专业知识。


  2.我们能创建一个包含可变对象的不可变对象吗?


  是的,我们是可以创建一个包含可变对象的不可变对象的,你只需要谨慎一点,不要共享可变对象的引用就可以了,如果需要变化时,就返回原对象的一个拷贝。最常见的例子就是对象中包含一个日期对象的引用。


  3.我能在不进行强制转换的情况下将一个 double 值赋值给 long 类型的变量吗?


  不行,你不能在没有强制类型转换的前提下将一个 double 值赋值给 long 类型的变量,因为 double 类型的范围比 long 类型更广,所以必须要进行强制转换。


  4.如何避免死锁?


  死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。这是一个严重的问题,因为死锁会让你的程序挂起无法完成任务,死锁的发生必须满足以下四个条件:


  互斥条件:一个资源每次只能被一个进程使用。


  请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。


  不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。


  循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。


  最简单的方法就是阻止循环等待条件,将系统中所有的资源设置标志位、排序,规定所有的进程申请资源必须以一定的顺序(升序或降序)做操作来避免死锁。这篇教程有代码示例和避免死锁的讨论细节。


  5.有三个线程T1,T2,T3,怎么确保它们按顺序执行?


  在多线程中有多种方法让线程按特定顺序执行,你可以用线程类的join()方法在一个线程中启动另一个线程,另外一个线程完成该线程继续执行。为了确保三个线程的顺序你应该先启动最后一个(T3调用T2,T2调用T1),这样T1就会先完成而T3最后完成。


  6.short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?


  对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。


  7.描述一下JVM加载class文件的原理机制?


  JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类。类的加载是指把类的.class文件中的数据读入到内存中,通常是创建一个字节数组读入.class文件


  8.获得一个类的类对象有哪些方式?


  方法1:class,如:String.class


  方法2:Class.forName(),如:Class.forName("java.lang.String")


  方法3::对象.getClass,如:“hello”.getClass()


  9.一个”.java“源文件中是否可以包括多个类?有什么限制


  可以包括多个类,但只能有一个Public,而且Public的类必须与文件名相一致


  10.简述你所知道的Linux


  Linux起源于1991年,1995年流行起来的免费操作系统,目前, Linux是主流的服务器操作系统, 广泛应用于互联网、云计算、智能手机(Android)等领域。由于Java主要用于服务器端的开发,因此Java应用的部署环境有很多为Linux。


  Linux不像Windows的图形操作界面,是通过命令的方式进行操作,常用命令有:


  a . pwd:用于显示当前工作目录;


  b . ls:用于查看当前工作目录内容;


  c . cd:用于改变当前工作目录。


  11.Java集合框架是什么?


  最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。


  12.如果两个键的hashcode相同,你如何获取值对象?


  当我们调用get()方法,HashMap会使用键对象的hashcode找到bucket位置,然后会调用keys.equals()方法去找到链表中正确的节点,最终找到要找的值对象。


  13.Array和ArrayList有何区别?什么时候更适合用Array?


  Array可以容纳基本类型和对象,而ArrayList只能容纳对象。


  Array是指定大小的,而ArrayList大小是固定的


2020年Java应届生面试题应答


      以上就是极悦注册机构小编介绍的“2020年Java应届生面试题应答”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


相关推荐


(初级到高级)






提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>