Android面试 | Java相关基础问题

JAVA给Android提供了开发的语言环境,Android的开发通过JAVA语言去实现。
可以说Android开发与JAVA两者是相辅相成的要想从事Android的开发,就必须有Java基础

以下就是我整理的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##安卓工程师##安卓工程师面经##android##Java#
Android面试 文章被收录于专栏

Android开发面经

全部评论
楼主我也想要
点赞 回复 分享
发布于 2022-10-26 13:51 湖北
楼主我也要一份
点赞 回复 分享
发布于 2022-09-08 14:29 浙江
求一份
点赞 回复 分享
发布于 2022-09-03 19:23 四川
可以分享下答案吗
点赞 回复 分享
发布于 2022-08-19 15:10 陕西

相关推荐

06-07 17:17
嘉兴学院 教师
心爱的idea:你孩
点赞 评论 收藏
分享
下北澤大天使:你是我见过最美的牛客女孩😍
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务