前言

正在准备 Android 面试的小伙伴千万不要错过哦!在这个金九银十的求职高峰期,小编给大家分享一些收集整理的 Android 大厂面试资料。祝大家都能有个好工作。

面试题知识点从基础到架构进阶,包含了BAT等一线互联网公司面试被问到的题目,涵盖了初中高级安卓技术点。文章中所列主要为大纲部分,详细内容可以看文章末尾获取!

如果你熟练掌握本文中列出的知识点,相信将会大大增加你通过前两轮技术面试的几率!这些内容都供大家参考,互相学习。

一,Java 相关高频面试解析

  • HashMap
  • ArrayList
  • LinkedList
  • Hashset 源码分析
  • 内存模型
  • 垃圾回收算法(JVM)
  • 垃圾回收机制和调用 System.gc()的区别?
  • 类加载过程
  • 反射
  • 多线程和线程池
  • HTTP、HTTPS、TCP/IP、Socket 通信、三次握手四次挥手过程
  • 设计模式
  • 断点续传
  • Java 四大引用
  • Java 的泛型
  • final、finally、finalize 的区别
  • 接口、抽象类的区别

二,Android 面试题解析大全

  • 自定义 View
  • 事件拦截分发
  • 解决过的一些性能问题,在项目中的实际运用
  • 性能优化工具
  • 讲讲你自己项目中做过的性能优化
  • Http[s] 请求慢的解决办法
  • 缓存自己如何实现
  • MVC 、MVP 、MVVM
  • Handler、ThreadLocal、AsyncTask 、IntentService 原理及应用
  • Gradle(y Groovy 语法、e Gradle 插件开发基础)
  • 热修复、插件化
  • 组件化架构思路
  • 系统打包流程
  • Android 有哪些存储数据的方式
  • SharedPrefrence 源码和问题点
  • sqlite 相关
  • 如何判断一个APP 在前台还是后台?
  • 混合开发

Android Framework 高频面试题

① AMS、PMS

  • AMS 概述
  • AMS 的启动流程
  • AMS 与进程启动
  • AMS 家族
  • PMS 之 SyetemServer 处理部分
  • PMS 构造方法

② Activity 启动流程,App 启动流程

  • Activity 的启动模式
  • 什么是 Zygote 进程
  • Zygote 进程的启动流程
  • SystemServer 进程启动流程 启动服务

③ Binder 机制(IPC、AIDL 的使用)

  • 什么是 AIDL 以及如何使用
  • AIDL的全称是什么?如何工作?能处理哪些类型的数据?
  • android 的 IPC 通信方式,线程(进程间)通信机制有哪些?
  • 为什么使用 Parcelable,好处是什么?

三,网络相关面试题

① HTTP/HTTPS

  • HTTP 与 与 HTTPS 有什么区别?
  • http1.1 和 http1.0 及 2.0 的区别?
  • SPDY
  • https 请求慢的解决办法
  • Request 组成
  • Response 组成
  • 谈谈对 http 缓存的了解。
  • http 长连接。
  • https 加密原理。
  • HTTPS 的 中的 SSL 握手建立过程
  • HTTPS 如何防范中间人攻击?
  • 有哪些响应码,分别都代表什么意思?

② TCP/UDP

  • 为什么 TCP 要经过三次握手,四次挥手?
  • TCP 可靠传输原理实现(滑动窗口)。
  • TCP 和 UDP 的区别?
  • 如何设计在 UDP 证 上层保证 UDP 的可靠性传输?

③ 其它重要网络概念

  • socket 断线重连怎么实现,心跳机制又是怎样实现?
  • Cookie 与 Session 的作用和原理
  • IP 报文中的内容
  • 浏览器输入地址到返回结果发生了什么?

四,三方源码高频面试总结

  • Glide :加载、缓存、LRU 算法
  • LeakCanary
  • ARouter
  • RXJava (RxJava 的线程切换原理)
  • Retrofit(Retrofit 在 OkHttp 上做了哪些封装?动态代理和静态代理的区别,是怎么实现的)
  • OkHttp

五,Kotlin 相关

  • 从原理分析 Kotlin 的延迟初始化: lateinit var 和 by lazy
  • From Java To Kotlin
  • 怎么用 Kotlin 去提高生产力:Kotlin Tips
  • 使用 Kotlin Reified 让泛型更简单安全
  • Kotlin 里的 Extension Functions 实现原理分析
  • Kotlin 系列之顶层函数和属性
  • Kotlin 兼容 Java 遇到的最大的 “坑”
  • Kotlin 的协程
  • Kotlin 协程「挂起」的本质
  • 到底什么是「非阻塞式」挂起?协程真的更轻量级吗?
  • 资源混淆是如何影响到 Kotlin 协程的
  • 破解 Kotlin 协程

六,Flutter 相关

  • Dart 当中的 「..」表示什么意思?
  • Dart 的作用域
  • Dart 是不是单线程模型?是如何运行的?
  • Dart 是如何实现多任务并行的?
  • 说一下 Dart 异步编程中的 Future 关键字?
  • 说一下 Dart 异步编程中的 Stream 数据流?
  • Stream 有哪两种订阅模式?分别是怎么调用的?
  • await for 如何使用?
  • 说一下 mixin 机制?
  • 请简单介绍下 Flutter 框架,以及它的优缺点?
  • Flutter 的理念架构
  • FFlutter 的 FrameWork 层和 Engine 层,以及它们的作用
  • Widget、State、Context 概念
  • 简述 Widget 的 StatelessWidget 和 StatefulWidget 两种状态组件类
  • StatefulWidget 的生命周期
  • 简述 Widgets、RenderObjects 和 Elements 的关系
  • 什么是状态管理,你了解哪些状态管理框架?
  • 简述 Flutter 的绘制流程
  • 简述 Flutter 的线程管理模型
  • 简述 Flutter 的热重载

Android 大厂面试资料传送门

最后

机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。备战2021金九银十,各位做好准备了吗?