2021 大厂 Android 春招面试经历,Android 开发必须掌握
Java 相关
容器(HashMap、HashSet、LinkedList、ArrayList、数组等)
内存模型
垃圾回收算法(JVM)
垃圾回收机制和调用 System.gc()的区别?
类加载过程(需要多看看,重在理解,对于热修复和插件化比较重要)
反射
多线程和线程池
设计模式(六大基本原则、项目中常用的设计模式、手写单例等)
Java 四大引用
Java 的泛型
final、finally、finalize 的区别
接口、抽象类的区别
Android 相关
自定义 View
事件拦截分发
解决过的一些性能问题,在项目中的实际运用
性能优化工具
性能优化 (讲讲你自己项目中做过的性能优化)
Http[s]请求慢的解决办法(DNS、携带数据、直接访问 IP)
缓存自己如何实现(LRUCache 原理)
图形图像相关:OpenGL ES 管线流程、EGL 的认识、Shader 相关
SurfaceView、TextureView、GLSurfaceView 区别及使用场景
动画、差值器、估值器(Android 中的 View 动画和属性动画 - 简书、Android 动画 介绍与使用)
MVC、MVP、MVVM
Handler、ThreadLocal、AsyncTask、IntentService 原理及应用
Gradle(Groovy 语法、Gradle 插件开发基础)
热修复、插件化
组件化架构思路
系统打包流程
Android 有哪些存储数据的方式。
SharedPrefrence 源码和问题点;
sqlite 相关
如何判断一个 APP 在前台还是后台?
AMS 、PMS
Activity 启动流程,App 启动流程
Binder 机制(IPC、AIDL 的使用)
为什么使用 Parcelable,好处是什么?
Android 图像显示相关流程,Vsync 信号等
算法与数据结构
时间复杂度 / 空间复杂度
常用的排序算法有哪些?
字符串反转
链表反转(头插法)
如何查找第一个只出现一次的字符(Hash 查找)
如何查找两个子视图的共同父视图?
无序数组中的中位数(快排思想)
如何给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
二叉树前序、中序、后序遍历
最大 K 问题
广度、深度优先搜索算法
String 转 int。核心算法就三行代码,不过临界条件很多,除了判空,还需要注意负数、Integer 的最大最小值边界等;
如何判断一个单链表有环?
100 亿个单词,找出出现频率最高的单词。要求几种方案;
链表每 k 位逆序;
镜像二叉树;
找出一个无序数组中出现超过一半次数的数字;
计算二叉树的最大深度,要求非递归算法。
String 方式计算加法。
总结:
各行各样都会淘汰一些能力差的,不仅仅是 IT 这个行业,所以,不要被程序猿是吃青春饭等等这类话题所吓倒,也不要觉得,找到一份工作,就享受安逸的生活,你在安逸的同时,别人正在奋力的向前跑,这样与别人的差距也就会越来越遥远,加油,希望,我们每一个人,成为更好的自己。
开源分享:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》
BAT 大厂面试题、独家面试工具包,
资料包括 数据结构、Kotlin、计算机网络、Framework 源码、数据结构与算法、小程序、NDK、Flutter,
评论