Android面试 | Java相关基础问题
如有对Android开发中的Java基础框架还不了解的可以看我这篇帖子【Android开发面试——Java必备基础篇】
一. Java面试相关
1.HashMap
-
HashMap原理
-
HashMap 有用过吗?您能给我说说他的主要用途吗?
-
您能说说 HashMap 常用操作的底层实现原理吗?如存储 put(K key, V value),查找 get(Object key),删除 remove(Object key),修改 replace(K key, V value)等操作
-
hash 冲突(或者叫 hash 碰撞)是什么?为什么会出现这种现象,如何解 决 hash 冲突?
-
HashMap 的容量为什么一定要是 2 的 n 次方?
-
您能说说 HashMap 和 HashTable 的区别吗?
-
HashMap中put()如何实现的
-
HashMap中get()如何实现的
-
为什么HashMap线程不安全
-
HashMap1.7和1.8有哪些区别
-
解决hash冲突的时候,为什么用红黑树
-
红黑树的效率高,为什么一开始不用红黑树存储
-
不用红黑树,用二叉查找树可以不
-
为什么阀值是8才转为红黑树
-
为什么退化为链表的阈值是6
-
hash冲突有哪些解决办法
-
HashMap在什么条件下扩容
-
HashMap中hash函数怎么实现的,还有哪些hash函数的实现方式
-
为什么不直接将hashcode作为哈希值去做取模,而是要先高16位异或低16位
-
为什么扩容是2的次幂
-
链表的查找的时间复杂度是多少
- 红黑树
2.ArrayList
-
ArrayList定义
-
ArrayList 的构造器
-
add 方法源码分析
-
get 方法源码分析
-
set 方法源码分析
-
ArrayList和LinkedList的区别,以及应用场景
3. LinkedList
-
LinkedList 定义
-
LinkedList 支持的操作
-
Node 类
-
addFirst 源码分析
-
getFirst 方法源码分析
-
removeFirst 方法源码分析
-
add(int index, E e)方法源码分析
4. Hashset 源码
-
属性
-
构造方法
-
添加元素
-
删除元素
-
查询元素
-
遍历元素
-
全部源码
5. 内存模型
-
内存模型产生背景
-
物理机的并发问题
-
Java 内存模型的组成分析
-
Java 内存间的交互操作
-
Java 内存模型运行规则
6. 垃圾回收算法(JVM)
-
Jvm的内存模型,每个里面都保存的什么
-
类加载机制的几个阶段加载、验证、准备、解析、初始化、使用、卸载
-
对象实例化时的顺序
-
类加载器,双亲委派及其优势
-
垃圾回收机制
-
谈谈对 JVM 的理解?
-
JVM 内存区域,开线程影响哪块区域内存?
-
对 Dalvik、ART 虚拟机有什么了解?对比
7.多线程
-
谈一谈java线程模型
-
Java中创建线程的方式,Callable,Runnable,Future,FutureTask
-
线程的几种状态
-
谈谈线程死锁,如何有效的避免线程死锁?
-
如何实现多线程中的同步
-
synchronized和Lock的使用、区别,原理;
-
volatile,synchronized和volatile的区别?为何不用volatile替代synchronized?
-
锁的分类,锁的几种状态,CAS原理
-
为什么会有线程安全?如何保证线程安全
-
sleep()与wait()区别,run和start的区别,notify和notifyall区别,锁池,等待池
-
Java多线程通信
-
为什么Java用线程池
-
Java中的线程池参数,共有几种
-
说下 Java 中的线程创建方式,线程池的工作原理
8.注解
-
注解的分类和底层实现原理
-
自定义注解
9.反射
-
什么是反射
-
反射机制的相关类
-
反射中如何获取Class类的实例
-
如何获取一个类的属性对象 & 构造器对象 & 方法对象
-
Class.getField和getDeclaredField的区别,getDeclaredMethod和getMethod的区别
-
反射机制的优缺点
10.泛型
-
泛型概念的提出(为什么需要泛型)?
-
什么是泛型?
-
自定义泛型接口、泛型类和泛型方法
-
类型通配符
11.设计模式
-
你所知道的设计模式有哪些
-
单例设计模式
-
工厂设计模式
-
建造者模式(Builder)
-
适配器设计模式
-
装饰模式(Decorator)
-
策略模式(strategy)
-
观察者模式(Observer)
Android开发面经