2020 京东 Android 岗面试题大全(附赠京东内部真题解析 PDF)
8.讲一下 Java 内存模型 局部变量存放在哪
9.讲一下引用传递
10.讲讲 Handler 机制。解释发送一条消息会经过哪些过程。问了我 Handler 源码看到哪一层(看到了 Java)。Handler 创建好以后怎么才能关联到他所在的线程?(这个回答的不是很好,感觉是在 Handler 的构造方法里关联的?),问了要传进什么参数?
11.ListView 的 VIewHolder 为什么可以减少内存的使用?
12.多线程相关。Java 中控制多线程的方法。锁、synchronize(可以对哪些对象加锁(静态变量加锁和对普通变量加锁有什么区别),实现原理)、wait
notify
13.ANR。在广播内做耗时操作会怎么样。
…
临近金九银十,又到了秋招面试提前批,最近有很多网友都在求京东面试题。作为京东前辈的我正好电脑里面有这方面的整理,于是就发上来分享给大家。
这些题目是网友去京东面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。
评论区石墨文档里下载,如果链接失效请第一时间告诉我修改!
PS;有问题欢迎指正。在评论区留下你的建议和感受,能很大程度帮助其它小伙伴!
话不多说,直接上目录!
[](
)一、java 面试题
熟练掌握 java 是很关键的,大公司不仅仅要求你会使用几个 api,更多的是要你熟悉源码实现原理,甚至要你知道有哪些不足,怎么改进,还有一些 java 有关的一些算法,设计模式等等。
[](
)(一) java 基础面试知识点
java 中==和 equals 和 hashCode 的区别
int、char、long 各占多少字节数
int 与 integer 的区别
谈谈对 java 多态的理解
String、StringBuffer、StringBuilder 区别
什么是内部类?内部类的作用
抽象类和接口区别
抽象类的意义
抽象类与接口的应用场景
抽象类是否可以没有方法和属性?
接口的意义
泛型中 extends 和 super 的区别
父类的静态方法能否被子类重写
进程和线程的区别
final,finally,finalize 的区别
序列化的方式
Serializable 和 Parcelable 的区别
静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?
静态内部类的设计意图
成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用
谈谈对 kotlin 的理解
闭包和局部内部类的区别
什么是单例设计模式
string 转换成 integer 的方式及原理
[](
)(二) java 深入源码级的面试题(有难度)
哪些情况下的对象会被垃圾回收机制处理掉?
什么是强引用、软引用、弱引用以及虚引用?
什么是依赖注入?能说几个依赖注入的库么?你使用过哪些?
关键字 synchronized 的作用是什么?
什么是 ThreadPoolExecutor
线程池如何定义合适的线程
讲一下常见编码方式?
utf-8 编码中的中文占几个字节;int 型几个字节?
静态代理和动态代理的区别,什么场景使用?
Java 的异常体系
谈谈你对解析与分派的认识。
修改对象 A 的 equals 方法的签名,那么使用 HashMap 存放这个对象实例的时候,会调用哪个 equals 方法?
Java 中实现多态的机制是什么?
如何将一个 Java 对象序列化到文件里?
说说你对 Java 反射的理解
说说你对 Java 注解的理解
JVM 的回收算法是怎样的
Art 虚拟机与 jvm 的区别在哪里
说说你对依赖注入的理解
说一下泛型原理,并举例说明
String 为什么要设计成不可变的?
Object 类的 equal 和 hashCode 方法重写,为什么?
[](
)(三) 数据结构
常用数据结构简介
并发集合了解哪些?
列举 java 的集合以及集合之间的继承关系
集合类以
及集合框架
容器类介绍以及之间的区别(容器类估计很多人没听这个词,Java 容器主要可以划分为 4 个部分:List 列表、Set 集合、Map 映射、工具类(Iterator 迭代器、Enumeration 枚举类、Arrays 和 Collections)
List,Set,Map 的区别
List 和 Map 的实现方式以及存储方式
HashMap 的实现原理
HashMap 数据结构?
HashMap 源码理解
HashMap 如何 put 数据(从 HashMap 源码角度讲解)?
HashMap 怎么手写实现?
ConcurrentHashMap 的实现原理
ArrayMap 和 HashMap 的对比
HashTable 实现原理
TreeMap 具体实现
HashMap 和 HashTable 的区别
HashMap 与 HashSet 的区别
HashSet 与 HashMap 怎么判断集合元素重复?
集合 Set 实现 Hash 怎么防止碰撞
ArrayList 和 LinkedList 的区别,以及应用场景
数组和链表的区别
二叉树的深度优先遍历和广度优先遍历的具体实现
堆的结构
堆和树的区别
堆和栈在内存中的区别是什么(解答提示:可以从数据结构方面以及实际实现方面两个方面去回答)?
什么是深拷贝和浅拷贝
手写链表逆序代码
讲一下对树,B+树的理解
讲一下对图的理解
判断单链表成环与否?
链表翻转(即:翻转一个单项链表)
合并多个单有序链表(假设都是递增的)
[](
)(四) 线程、多线程和线程池
开启线程的三种方式?
线程和进程的区别?
为什么要有线程,而不是仅仅用进程?
run()和 start()方法区别
如何控制某个方法允许并发访问线程的个数?
在 Java 中 wait 和 seelp 方法的不同;
谈谈 wait/notify 关键字的理解
什么导致线程阻塞?
线程如何关闭?
讲一下 java 中的同步的方法
数据一致性如何保证?
如何保证线程安全?
如何实现线程同步?
两个进程同时要求写或者读,能不能实现?如何防止进程的同步?
线程间操作 List
Java 中对象的生命周期
Synchronized 用法
synchronize 的原理
谈谈对 Synchronized 关键字,类锁,方法锁,重入锁的理解
static synchronized 方法的多线程访问和作用
同一个类里面两个 synchronized 方法,两个线程同时访问的问题
volatile 的原理
谈谈 volatile 关键字的用法
谈谈 volatile 关键字的作用
谈谈 NIO 的理解
synchronized 和 volatile 关键字的区别
synchronized 与 Lock 的区别
ReentrantLock 、synchronized 和 volatile 比较
ReentrantLock 的内部实现
lock 原理
死锁的四个必要条件?
怎么避免死锁?
对象锁和类锁是否会互相影响?
什么是线程池,如何使用?
Java 的并发、多线程、线程模型
谈谈对多线程的理解
多线程有什么要注意的问题?
评论