点击领取优惠~
1393 字
7 分钟
Java基础
链接 https://juejin.cn/post/6989059224865079326
进技术交流群,添加微信:uestc_xsf,(备注加群),不定期分享学习资料,前进路上不孤单
众所周知,在这个内卷化的年代,Android面试题的难度早已今非昔比。大厂的面试除了重视基础外,也更加注重面试者自身的知识广度和深度。作为一个Android开发者,不仅要打好自身基础,更重要的是要建立起自己的知识体系。本篇文章是笔者花费近一年时间总结收集的Android面试题。主要涵盖两块内容:Java基础部分和Android部分,另外还有不太完善的计算机网络专题和算法专题。
Java基础
Java部分是大厂面试的重点,注重基础考察。以下内容涵盖了面试常问的基础知识、集合、JVM及多线程并发等常见面试题。
Java面向对象与基础知识
- Java中“==” 和 equals 有什么
- 为什么重写 equals 方法必须重写 hashcode 方法
- 下面的代码在JVM中生成了几个String对象?JVM是如何对其进行内存分配的?
- 了解String的intern()方法吗?它有什么作用?
- String、StringBuffer与StringBuilder有区别?
- 访问修饰符public,private,protected,以及不写(默认)时的区别?
- final有哪几种用法?每种用法是什么含义?
- static 关键的作用
- 内部类可以引用外部类的成员吗?有没有什么限制?
- int和Integer有什么区别?
- Java 面向对象的特征有哪些方面?
- 简述Java反射机制,反射的作用和应用?
- Java泛型是什么?泛型的类型擦除是怎么回事?
Java集合框架
- Hash表与HashMap
- HashMap的工作原理
- 为什么HashMap在多线程并发存在死循环的问题,JDK1.8中做了哪些优化?
- Hashtable与HashMap有什么区别?
- 了解ConcurrentHashMap吗?它是怎么实现的?
- 可以使用CocurrentHashMap来代替Hashtable吗?
- ConcurrentHashMap有什么缺陷吗?
- ConcurrentHashMap在JDK 7和8之间的区别
- Java中HashMap和HashTable的区别?
- HashMap 和 HashSet 的区别
- 请说出 ArrayList和LinkedList的区别?
- 请说出 ArrayList和LinkedList的区别?
- Java 中 Set 与 List 有什么不同?
JVM
多线程与并发
Android
Android部分的内容涵盖比较广。主要包含了常问的基础问题、Android消息机制、事件分发机制、View的绘制流程、屏幕刷新机制、性能优化、Framework专题、Jetpack组件原理,以及第三方框架的实现原理等。技术深度基本可以应对国内一线大厂。
Android基础知识
Android消息机制
- 简述Handler的实现原理
- 一个线程有几个Handler?一个线程有几个Looper?如何保证?
- Handler线程是如何切换的?
- Handler内存泄漏的原因是什么?如何解决?
- 子线程中使用Looper应该注意什么?有什么用?
- MessageQueue是如何保证线程安全的?
- 我们使用Message的时候如何创建它?
- Looper死循环为什么不会导致应用卡死?
- 能不能让一个Message被加急处理?
- Handler的同步屏障是什么?
- Handler的阻塞唤醒机制是什么?
- ThreadLocal的实现原理
- HandlerThread是什么?
- IntentService是什么?
- IdleHandler是什么?
View事件分发机制
View的绘制流程
Android屏幕刷新机制
性能优化
Framework
Jetpack&系统View
第三方框架实现原理
计算机网络
算法
其它
Java基础