《校招JAVA面试真题(拼多多月薪20k岗)附参考答案.docx》由会员分享,可在线阅读,更多相关《校招JAVA面试真题(拼多多月薪20k岗)附参考答案.docx(4页珍藏版)》请在优知文库上搜索。
1、校招JAVA面试真题(拼多多月薪20k岗)附参考答案1、什么是JaVa优先级队列(PriOrityQueue)?参考答案PriorityQueue是一个基于优先级堆的无界队列,它的元素是按照自然顺序(naturalOrder)排序的。在创建的时候,我们可以给它提供一个负责给元素排序的比较器。PriorityQueue不允许null值,因为他们没有自然顺序,或者说他们没有任何的相关联的比较器。最后,PriorityQueue不是线程安全的,入队和出队的时间复杂度是0(log(n)o2、你了解大。符号(big-0notation)么?你能给出不同数据结构的例子么?参考答案大0符号描述了当数据结构里
2、面的元素增加的时候,算法的规模或者是一个渐进上界。大0符号也可用来描述其他的行为,比如:内存消耗。因为集合类实际上是数据结构,我们一般使用大0符号基于时间,内存和性能来选择最好的实现。大0符号可以对大量数据的性能给出一个很好的说明。3、如何权衡是使用无序的数组还是有序的数组?参考答案有序数组最大的好处在于查找的时间复杂度是O(Iogn),而无序数组是0(n)。有序数组的缺点是插入操作的时间复杂度是0(n),因为值大的元素需要往后移动来给新元素腾位置。相反,无序数组的插入时间复杂度是常量0(1)。4、JaVa集合类框架的最佳实践有哪些?参考答案根据应用的需要正确选择要使用的集合的类型对性能非常重
3、要,比如:假如元素的数量是固定的,而且能事先知道,我们就应该用Array而不是AnrayList。有些集合类允许指定初始容量。因此,如果我们能估计出存储的元素的数目,我们可以设置初始容量来避免重新计算hash值或者是扩容。为了类型安全,可读性和健壮性的原因总是要使用泛型。同时,使用泛型还可以避免运行时的ClassCastExceptiono使用JDK提供的不变类(immutableClaSS)作为Map的键可以避免为我们自己的类实现hashCode()和equals()方法。编程的时候接口优于实现。底层的集合实际上是空的情况下,返回长度是0的集合或者是数组,不要返回nullo5、JaVa集合类
4、框架的基本接口有哪些?参考答案集合类接口指定了一组叫做元素的对象。集合类接口的每一种具体的实现类都可以选择以它自己的方式对元素进行保存和排序。有的集合类允许重复的键,有些不允许。Java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最基本的接口有:Collection:代表一组对象,每一个对象都是它的子元素。Set:不包含重复元素的ColIeetiono1.ist:有顺序的COIleCtion,并且可以包含重复元素。Map:可以把键(key)映射到值(VaIUe)的对象,键不能重复。6、在监视器(MonitOr)内部,是如何做线程同步的?程序应该做哪种级别的同步
5、?参考答案监视器和锁在JaVa虚拟机中是一块使用的。监视器监视一块同步代码块,确保一次只有一个线程执行同步代码块。每一个监视器都和一个对象引用相关联。线程在获取锁之前不允许执行同步代码。7、什么是JaVa虚拟机?为什么JaVa被称作是平台无关的编程语言?参考答案Java虚拟机是一个可以执行Java字节码的虚拟机进程Java源文件被编译成能被Java虚拟机执行的字节码文件。Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。JaVa虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。8、JDK和川E的区别是什么?参考答案JRE:Jav
6、aRuntimeEnvironmentJDK:JavaDevelopmentKitJRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。如果你需要运行java程
7、序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。JRE根据不同操作系统(如:WindoWS,Iinux等)和不同JRE提供商(IBM,ORACLE等)有很多版本再说说java的跨平台吧:java源程序先经过javac编译器编译成二进制的.class字节码文件(java的跨平台指的就是.class字节码文件的跨平台,.class字节码文件是与平台无关的),.class文件再运行在jvm上,java解释器(jvm的一部分)会将其解释成对应平台的机器码执行,所以java所谓的跨平台就是在不同平台上安装了不同的jvm,而在不同平台上生成的.class文件都是一样的,而.class文件再由对应平台的jvm解释成对应平台的机器码执行