java面试题目及答案

时间:2022-11-24 07:09:47 面试技巧 我要投稿
  • 相关推荐

java面试题目及答案

  做好准备是Java面试者应该的,那么你有提前了解面试题目了吗?以下是阳光网小编帮你们整理的java面试题目及答案,一起来学习啦。

java面试题目及答案

  java面试题目及答案(一)

  1.在HashTable中上下文同步是什么意思?

  同步意味着在一个时间点只能有一个线程可以修改哈希表,任何线程在执行hashtable的更新操作前需要获取对象锁,其他线程等待锁的释放。

  2.哪些集合类提供对元素的随机访问?

  ArrayList、HashMap、TreeMap和HashTable类提供对元素的随机访问。

  3.Comparable和Comparator接口的区别是什么?

  Comparable和Comparator接口被用来对对象集合或者数组进行排序。Comparable接口被用来提供对象的自然排序,我们可以使用它来提供基于单个逻辑的排序。 Comparator接口被用来提供不同的排序算法,我们可以选择需要使用的Comparator来对给定的'对象集合进行排序。

  4.与Java集合框架相关的有哪些最好的实践?

  (1)根据需要选择正确的集合类型。比如,如果指定了大小,选用Array而非ArrayList。如果想根据插入顺序遍历一个Map,需要使用TreeMap。如果不想重复,应使用Set。

  (2)一些集合类允许指定初始容量,所以如果能够估计到存储元素的数量,可以使用它,就避免了大小调整。

  (3)基于接口编程,而非基于实现编程,它允许后来轻易地改变实现。

  (4)总是使用类型安全的泛型,避免在运行时出现ClassCastException。

  (5)使用JDK提供的不可变类作为Map的key,可以避免实现hashCode()和equals()。

  (6)尽可能使用Collections工具类,或者获取只读、同步或空的集合,而非编写自己的实现。它将会提供代码重用性,它有着更好的稳定性和可维护性。

  java面试题目及答案(二)

  1,谈谈final, finally, finalize的区别。

  final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载

  finally?再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

  finalize?方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

  2,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。

  3,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。

  Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。

  注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的`一个对象访问一个外部类对象

  4,&和&&的区别。

  &是位运算符。&&是布尔逻辑运算符。

  5,HashMap和Hashtable的区别。

  都属于Map接口的类,实现了将惟一键映射到特定的值上。

  HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。

  Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。

  6,Collection 和 Collections的区别。

  Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。

  Collection是个java.util下的接口,它是各种集合结构的父接口。

  7,什么时候用assert。

  断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 AssertionError。它用于调试目的:

  assert(a > 0); // throws an AssertionError if a <= 0

  断言可以有两种形式:

  assert Expression1 ;

  assert Expression1 : Expression2 ;

  Expression1 应该总是产生一个布尔值。

  Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。

  断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:

  javac -source 1.4 Test.java

  要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。

  要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。

  要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。

  可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。

  java面试题目及答案(三)

  1.什么是Java集合API?

  Java集合API是用来表示和操作集合的统一框架,包括接口、实现类以及帮助程序员完成一些编程的算法。

  2.Java集合框架的接口有哪些?

  具体来说,Java集合框架有6个集合接口,最基本的是Collection接口,由三个接口Set、List、SortedSet继承,另外两个接口是Map、SortedMap,这两个接口不继承Collection,表示映射而不是真正的集合。

  Collection为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java平台不提供这个接口任何直接的实现。

  Set是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合。

  List是一个有序集合,可以包含重复元素。可以通过它的索引来访问任何元素,更像长度动态变换的数组。

  Map是一个将key映射到value的对象.一个Map不能包含重复的key。

  3.Iterator是什么?

  Iterator接口提供遍历任何Collection的接口。我们可以从一个Collection中使用迭代器方法来获取迭代器实例。迭代器取代了Java集合框架中的Enumeration。迭代器允许调用者在迭代过程中移除元素。

  4.Iterator和Listlterator的区别是什么?

  (1)Iterator可以遍历Set和List集合,而ListIterator只能遍历List。

  (2)Iterator只可以向前遍历,而LIstIterator可以双向遍历。

  (3)ListIterator从Iterator接口继承,然后添加了一些额外的功能,比如添加一个元素、替换一个元素、获取前面或后面元素的索引位置。

  5.对比HashMap和HashTable。

  两者都是用key-value方式获取数据。Hashtable是原始集合类之一(也称作遗留类)。HashMap作为新集合框架的一部分在Java2的1.2版本中加入。它们之间有以下区别:

  (1) HashMap允许key和value为null,而HashTable不允许。

  (2)HashTable是同步的,而HashMap不是。所以HashMap适合单线程环境,HashTable适合多线程环境。

  (3)HashMap提供对key的Set进行遍历,因此它是fail-fast的,但HashTable提供对key的.Enumeration进行遍历,它不支持fail-fast。

  (4)HashTable被认为是个遗留的类,如果寻求在迭代的时候修改Map,应使用CocurrentHashMap。

  6.如何决定选用HashMap还是TreeMap?

  对于在Map中插入、删除和定位元素这类操作,HashMap是最好的选择。然而,假如你需要对一个有序的key集合进行遍历,TreeMap是更好的选择。基于你的collection的大小,也许向HashMap中添加元素会更快,将map换为TreeMap进行有序key的遍历。

【java面试题目及答案】相关文章:

java面试常见题目04-03

java经典面试题目12-09

java面试题目201704-05

java面试题目大全12-04

java面试问题及答案04-05

java面试基础题及答案04-02

java常见面试题目04-04

java基础面试题及答案04-05

高级java面试题及答案04-04