大家去找工作肯定要经过面试,面试成功了才可以进入公司工作,而作为技术性工作的java,也是肯定要面试的,毕竟在面试的过程中,才能知道你的能力,那么今天我们就给分享一些大厂java面试题。
1、java中IO流分为几种?
按功能来分:输入流(input)、输出流(output)。
按类型来分:字节流和字符流。
字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流按 16 位传输以字符为单位输入输出数据。
2、hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。
hashTable同步的,而HashMap是非同步的,效率上逼hashTable要高。hashMap允许空键值,而hashTable不允许。
3、如何决定使用 HashMap 还是 TreeMap?
对于在Map中插入、删除和定位元素这类操作,HashMap是最好的选择。然而,假如你需要对一个有序的key集合进行遍历,TreeMap是更好的选择。基于你的collection的大小,也许向HashMap中添加元素会更快,将map换为TreeMap进行有序key的遍历。
4、 ArrayList 和 LinkedList 的区别是什么?
最明显的区别是 ArrrayList底层的数据结构是数组,支持随机访问,而 LinkedList 的底层数据结构是双向循环链表,不支持随机访问。使用下标访问一个元素,ArrayList 的时间复杂度是 O(1),而 LinkedList 是 O(n)。
5、能否创建一个包含可变对象的不可变对象?
可以,需要注意不要共享可变对象的引用,如果需要变化时,就返回原对象的一个拷贝。举例:日期对象。
6、Final有哪些用法?
被final修饰的方法不能被继承,修饰的方法不能被重写,修饰的变量不能被改变。被final修饰的方法,JVM会尝试将其内关联,以提高运行效率,被修饰的变量会在编译阶段存在常量池中。
编译器对final域要遵守两个重排规则:
1,在构造器内对一个final域的写入,与随后把这个构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。
2,初次读一个包含final域对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。
这些都是比较火面试题,一般在大厂面试的时候,经常会问到,所以大家一定要将这写积累起来。最后大家如果想要了解更多java大厂面试知识,敬请关注奇Q工具网。
推荐阅读: