java面试宝典

时间:2021-03-04 17:15:12 面试笔试 我要投稿

java面试宝典2016

  Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言,以下是应届毕业生网小编整理提供的面试题内容,快来阅读看看吧。

java面试宝典2016

  java面试宝典2016版

  问:Java 中应该使用什么数据类型来代表价格?

  答:如果不是特别关心内存和性能的话,使用BigDecimal,否则使用预定义精度的 double 类型。 问:怎么将 byte 转换为 String?

  答:可以使用 String 接收 byte[] 参数的构造器来进行转换,需要注意的点是要使用的正确的编码,否则会使用平台默认编码,这个编码可能跟原来的编码相同,也可能不同。 问:我们能将 int 强制转换为 byte 类型的变量吗?如果该值大于 byte 类型的范围,将会出现什么现象?

  答:是的,我们可以做强制转换,但是 Java 中 int 是 32 位的,而 byte 是 8 位的,所以,如果强制转化,int 类型的高 24 位将会被丢弃,byte 类型的范围是从 -128 到 128。 问:我能在不进行强制转换的情况下将一个 double 值赋值给 long 类型的`变量吗?

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

  问:List、Set、Map 和 Queue 之间的区别?

  答:List 是一个有序集合,允许元素重复。它的某些实现可以提供基于下标值的常量访问时间,但是这不是 List 接口保证的。Set 是一个无序集合。 问:poll() 方法和 remove() 方法的区别?

  答:poll() 和 remove() 都是从队列中取出一个元素,但是 poll() 在获取元素失败的时候会返回空,但是 remove() 失败的时候会抛出异常。 问:Java 中 LinkedHashMap 和 PriorityQueue 的区别是什么?

  答:PriorityQueue 保证最高或者最低优先级的的元素总是在队列头部,但是 LinkedHashMap 维持的顺序是元素插入的顺序。当遍历一个 PriorityQueue 时,没有任何顺序保证,但是 LinkedHashMap 可保证遍历顺序是元素插入的顺序。 问:ArrayList 与 LinkedList 的区别?

  答:最明显的区别是 ArrrayList 底层的数据结构是数组,支持随机访问,而 LinkedList 的底层数据结构链表,不支持随机访问。使用下标访问一个元素,ArrayList 的时间复杂度是 O(1),而 LinkedList 是 O(n)。

  注:时间复杂度大概就是运行时间和输入规模的函数,简单的说,一个函数处理 n 个数字,需要 f(n) 秒的时间,时间复杂度就为 O(f(n));空间复杂度把时间换成内存就够了。

  问:Hashtable 与 HashMap 有什么不同之处?

  答:这两个类有许多不同的地方,下面列出了一部分:

  1、Hashtable 是 JDK 1.0 遗留下来的类,而 HashMap 是后来增加的。

  2、Hashtable 是同步的,比较慢,但 HashMap 没有同步策略,所以会更快。

  3、Hashtable 不允许有空的 key,但是 HashMap 允许出现一个 null key。

  问:接口是什么?为什么要使用接口而不是直接使用具体类?

  答:接口用于定义 API。它定义了类必须得遵循的规则。同时,它提供了一种抽象,因为客户端只使用接口,这样可以有多重实现,如 List 接口,你可以使用可随机访问的 ArrayList,也可以使用方便插入和删除的 LinkedList。接口中不允许写代码,以此来保证抽象,但是 Java 8 中你可以在接口声明静态的默认方法,这种方法是具体的。 问:Java 中,抽象类与接口之间有什么不同?

  答:Java 中,抽象类和接口有很多不同之处,但是最重要的一个是 Java 中限制一个类只能继承一个类,但是可以实现多个接口。抽象类可以很好的定义一个家族类的默认行为,而接口能更好的定义类型,有助于后面实现多态机制。问:除了单例模式,你在生产环境中还用过什么设计模式?

  答:这需要根据你的经验来回答。一般情况下,你可以说依赖注入,工厂模式,装饰模式或者观察者模式,随意选择你使用过的一种即可。不过你要准备回答接下的基于你选择的模式的问题。 问:构造器注入和 setter 依赖注入,那种方式更好?

  答:每种方式都有它的缺点和优点。构造器注入保证所有的注入都被初始化,但是 setter 注入提供更好的灵活性来设置可选依赖。如果使用 XML 来描述依赖,setter 注入的可读写会更强。经验法则是强制依赖使用构造器注入,可选依赖使用 setter 注入。

  java面试宝典2016版

  问题:如果main方法被声明为private会怎样?

  答案:能正常编译,但运行的时候会提示”main方法不是public的”。

  问题:Java里的传引用和传值的区别是什么?

  答案:传引用是指传递的是地址而不是值本身,传值则是传递值的一份拷贝。

  问题:如果要重写一个对象的equals方法,还要考虑什么?

  答案:hashCode。

  问题:Java的”一次编写,处处运行”是如何实现的?

  答案:Java程序会被编译成字节码组成的class文件,这些字节码可以运行在任何平台,因此Java是平台独立的。

  问题:说明一下public static void main(String args[])这段声明里每个关键字的作用

  答案:public: main方法是Java程序运行时调用的第一个方法,因此它必须对Java环境可见。所以可见性设置为pulic.

  static: Java平台调用这个方法时不会创建这个类的一个实例,因此这个方法必须声明为static。

  void: main方法没有返回值。

  String是命令行传进参数的类型,args是指命令行传进的字符串数组。


【java面试宝典2016】相关文章:

程序员笔试环节面试宝典07-11

java面试最常见问题10-27

java招聘面试常见问题10-27

java英文面试笔试题03-19

java面试笔试题分享08-22

2016英语面试技巧08-17

2016求职英语面试08-02

2016英语面试小贴士07-20

英语面试技巧201608-09

java程序员面试笔试试题08-22