第1章 JVM——语法和内存类
本章主要讲解JVM的相关考点,并掌握JVM内存模型及JMM,JVM相关问题的真实意图,掌握字节码及ClassLoader相关知识。
1 JVM知识体系梳理
2 Android平台的虚拟机是基于栈的吗?
3 为什么dex文件比class文件更适合移动端?
4 你能不能自己写一个叫做java.lang.Object的类?
5 所有被new出来的实例,都是放在堆中的吗?
6 GC为什么会导致应用程序卡顿?
7 Android平台虚拟机中的GC又是怎样的?
8 双重检测的单例,为什么还要加volatile关键字?
9 JVM篇总结
10 JVM知识体系梳理
11 JVM字节码指令大全
第2章 关于Java和Kotlin中的难点、原理和编程思想
本章主要让大家掌握Java语言和Kotlin语言中的相关高频考点,掌握Kotlin的函数式编程,以及函数式编程相关的延展问题,讲解Kotlin语言的编译机制和实现原理,剖析Kotlin特性的具体实现。
1 面试中,会问哪些Java、Kotlin语言 本身相关的问题?
2 String的intern方法,使用场景是什么?
4 String的hashCode为什么乘数是31?
5 HashMap的容量为什么一定是2的n次幂?
6 Java的数组为什么不支持泛型?
7 如何在运行时获得泛型类型?试看
8 匿名内部类使用的外部变量,为什么一定要加final?
9 Java语言中有闭包吗?
10 都是编译成字节码,为什么Kotlin能支持Java中没有的特性?
11 Kotlin如何通过中间代码添加来实现新特性?
12 Kotlin如何通过元注解和Metadata来实现新特性?
13 如何理解面向对象的编程原则?
14 你遇到过哪些经典的设计模式使用案例?
15 如何理解Kotlin中的函数式编程特性?试看
16 函数式编程中也有设计模式吗?
17 Kotlin的DSL特性指的是什么?
第3章 从Androd平台本身出发,去剖析、容错与优化
本章主要是Android平台特性以及平台相关的扩展库等内容。首先经典类问题,主要涉及四大组件、生命周期,其次是冷门深度类问题,以Cursor、数据库原理为例,透视Framework。
1 你做过哪些内存治理相关的工作?
2 Android中,如何进行堆内存治理?
4 Android中,如何进行线程和FD治理?
5 如何实现一个能加载海量数据的列表?
6 当我们点击应用图标时,系统都做了什么?
7 AMS,是如何帮助App启动Activity的?
8 启动Activity之前,是如何为它分配任务栈的?
9 Activity是如何显示在屏幕上的?
10 Android中的屏幕刷新机制是怎样的?
11 在SQLite中,without rowid的使用场景是什么?
12 Parcelable为什么速度优于 Serializable ?
13 Android平台篇总结
14 ANR是由谁来计时并且弹出提示的?
第4章 架构师技能
本章内容主要包括组件化、插件化、软件架构模式(MVC、MVVM等)等方面。
1 面试中,会问哪些关于架构方面的问题
2 为什么一定要有分层架构?
3 MVP为什么比MVC更适合Android开发?
4 MVVM就是MVP再加上DataBinding吗?
5 Jetpack给架构模式带来了怎样的改变?
6 Compose给MVVM带来了怎样的改变?
7 Room给MVVM带来了怎样的改变?
8 你做过组件化吗?
9 如何实现组件化?
第5章 如何用工程思维解决问题
本章内容主要关注于工程和构建问题,以及构建过程中的一些中间操作,一名合格的开发人员,不但要具备代码知识和平台知识,还应该熟悉构建与部署相关的知识,熟悉gradle和gradle插件的开发,就能够完成一些生产力工具的开发。
1 如何从工程构建的角度出发,解决问题?
2 Android工程的构建过程是怎样的?
3 Gradle在构建阶段都做了什么?
4 Gradle中的Task是什么?
5 AndroidGradlePlugin的工作原理
6 如何用工程手段,提高写代码的生产力?
7 如何用字节码手段,实现热修复?
第6章 面试中的技巧与定位
根据自己多年面试的经验,分析导致面试失败的根本原因,让大家在面试中摆正心态,解决面试中的各种痛点。
1 面试有哪些常见套路?
2 被“奇葩”面试官“针对”,我该怎么办?
3 如何让自己的项目经历,更有说服力?
4 如何应对开放性问题?
网友评论