大连Java培训
达内大连中心

0411-39585500

热门课程

2016年java面试经典问答

  • 时间:2017-02-14 11:46
  • 发布:大连java培训
  • 来源:笔试题

2017年就业高峰来袭,java小伙伴们是不是已经蓄势待发,准备进入新的环境了呢?今天大连java培训班——达内IT培训,为大家带来了2016年java面试经典问答!

问: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 注入。

以上就是为大家介绍的2016年java面试经典问答,希望对大家有所帮助。

上一篇:2017年java企业笔试宝典
下一篇:java 开发面试:关于多线程有哪些考点

java开发面试:C/S 与B/S的区别有哪些

java开发面试题:请简述Struts的优缺点有哪些

java开发面试简答题练习

2017年java开发就业方向有哪些

选择城市和中心
贵州省

广西省

海南省