用 == 还是 equals()? 它们有何区别?
TreeMap:TreeMap 是采用什么树实现的?TreeMap、HashMap、LindedHashMap的区别。TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?
TreeSet:一个已经构建好的 TreeSet,怎么完成倒排序。
EnumSet 是什么
Hash算法
- Hashcode 的作用
- 简述一致性 Hash 算法
- 有没有可能 两个不相等的对象有相同的 hashcode?当两个对象 hashcode 相同怎么办?如何获取值对象
- 为什么在重写 equals 方法的时候需要重写 hashCode 方法?equals与 hashCode 的异同点在哪里
- a.hashCode() 有什么用?与 a.equals(b) 有什么关系
- hashCode() 和 equals() 方法的重要性体现在什么地方
- Object:Object有哪些公用方法?Object类hashcode,equals 设计原则? sun为什么这么设计?Object类的概述
- 如何在父类中为子类自动完成所有的 hashcode 和 equals 实现?这么做有何优劣。
- 可以在 hashcode() 中使用随机数字吗?
LinkedHashMap
- LinkedHashMap 和 PriorityQueue 的区别是什么
List
- List, Set, Map三个接口,存取元素时各有什么特点
- List, Set, Map 是否继承自 Collection 接口
- 遍历一个 List 有哪些不同的方式
- LinkedList
- LinkedList 是单向链表还是双向链表
- LinkedList 与 ArrayList 有什么区别
- 描述下 Java 中集合(Collections),接口(Interfaces),实现(Implementations)的概念。LinkedList 与 ArrayList 的区别是什么?
- 插入数据时,ArrayList, LinkedList, Vector谁速度较快?
- ArrayList 和 HashMap 的默认大小是多数
- ArrayList 和 LinkedList 的区别,什么时候用 ArrayList?
- ArrayList 和 Set 的区别?
- ArrayList, LinkedList, Vector的区别
- ArrayList是如何实现的,ArrayList 和 LinkedList 的区别
- ArrayList如何实现扩容
- Array 和 ArrayList 有何区别?什么时候更适合用Array
- 说出ArraList,Vector, LinkedList的存储性能和特性
Map
- Map, Set, List, Queue, Stack
- Map 接口提供了哪些不同的集合视图
- 为什么 Map 接口不继承 Collection 接口
Collections
- 介绍Java中的Collection FrameWork。集合类框架的基本接口有哪些
- Collections类是什么?Collection 和 Collections的区别?Collection、Map的实现
- 集合类框架的最佳实践有哪些
- 为什么 Collection 不从 Cloneable 和 Serializable 接口继承
- 说出几点 Java 中使用 Collections 的最佳实践?
- Collections 中 遗留类 (HashTable、Vector) 和 现有类的区别
什么是 B+树,B-树,列出实际的使用场景。
接口
- Comparator 与 Comparable 接口是干什么的?列出它们的区别
对象
拷贝(clone)
- 如何实现对象克隆
- 深拷贝和浅拷贝区别
- 深拷贝和浅拷贝如何实现激活机制
- 写clone()方法时,通常都有一行代码,是什么
比较
- 在比较对象时,”==” 运算符和 equals 运算有何区别
- 如果要重写一个对象的equals方法,还要考虑什么
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对
构造器
不可变对象
- 什么是不可变象(immutable object)
- 为什么 Java 中的 String 是不可变的(Immutable)
- 如何构建不可变的类结构?关键点在哪里
- 能创建一个包含可变对象的不可变对象吗
如何对一组对象进行排序
方法
- 构造器(constructor)是否可被重写(override)
- 方法可以同时即是 static 又是 synchronized 的吗
- abstract 的 method是否可同时是 static,是否可同时是 native,是否可同时是synchronized
- Java支持哪种参数传递类型
- 一个对象被当作参数传递到一个方法,是值传递还是引用传递
- 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递
- 我们能否重载main()方法
- 如果main方法被声明为private会怎样
GC
概念
- GC是什么?为什么要有GC
- 什么时候会导致垃圾回收
- GC是怎么样运行的
- 新老以及永久区是什么
- GC 有几种方式?怎么配置
- 什么时候一个对象会被GC? 如何判断一个对象是否存活
- System.gc() Runtime.gc()会做什么事情? 能保证 GC 执行吗
- 垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
- Minor GC 、Major GC、Young GC 与 Full GC分别在什么时候发生
- 垃圾回收算法的实现原理
- 如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?
- 垃圾回收的最佳做法是什么
GC收集器有哪些
- 垃圾回收器的基本原理是什么?
- 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么
- Serial 与 Parallel GC之间的不同之处
- CMS 收集器 与 G1 收集器的特点与区别
- CMS垃圾回收器的工作过程
- JVM 中一次完整的 GC 流程是怎样的? 对象如何晋升到老年代
- 吞吐量优先和响应优先的垃圾收集器选择
GC策略
- 举个实际的场景,选择一个GC策略
- JVM的永久代中会发生垃圾回收吗
收集方法
- 标记清除、标记整理、复制算法的原理与特点?分别用在什么地方
- 如果让你优化收集方法,有什么思路
JVM
参数
- 说说你知道的几种主要的jvm 参数
- -XX:+UseCompressedOops 有什么作用
类加载器(ClassLoader)
- Java 类加载器都有哪些
- JVM如何加载字节码文件
内存管理
- JVM内存分哪几个区,每个区的作用是什么
- 一个对象从创建到销毁都是怎么在这些部分里存活和转移的
- 解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法
- JVM中哪个参数是用来控制线程的栈堆栈小
- 简述内存分配与回收策略
- 简述重排序,内存屏障,happen-before,主内存,工作内存
- Java中存在内存泄漏问题吗?请举例说明
- 简述 Java 中软引用(SoftReferenc)、弱引用(WeakReference)和虚引用
- 内存映射缓存区是什么
jstack,jstat,jmap,jconsole怎么用 32 位 JVM 和 |