1.1.首先固然是类型了面试
1.2.而后就是传递过程当中有哪几个阶段数据库
1.3.View的传递机制编程
1.4.ViewGroup的传递机制设计模式
2.1.首先固然是一个总体观了,就是总体流程api
2.2.而后是一个测量中须要使用的一个参数MeasureSpec,根据这个参数决定视图的具体的长宽缓存
2.3.第一步是Measure——测量安全
2.4.第二步是Layout——布局网络
2.5.第三步是Draw——绘制 数据结构
3.1.首先固然比较传统一点咯——逐帧动画架构
3.2.而后就是xml文件方式使用的——补间动画
3.3.最后就是利用代码的方式来建立动画——属性动画(非传统动画)
4.1.Nullness注解——这个应该是能够为空的意思
4.2.资源类型也是有注解滴...
4.3.类型定义的注解——比较自定义化吧
4.4.线程是很是重要的——线程类型的注解
4.5.RGB颜色值注解——主要是方便编译器识别吧
4.6.值范围注解——强调范围,保证不越界
4.7.权限注解——Android因为版本不一样,权限机制会有所不一样
4.8.重写函数注解——这个没怎么见过呢
4.9.返回值的注解——主要是给编译器识别
4.10.@VisibleForTesting——单元测试中可能会用
4.11.@Keep——不须要混淆
这个没什么说的,主要是为了屏幕适配
6.1. 第一个是Snackbar——这是一个提示栏
6.2.第二个是TextInputLayout——浮动标签
6.3.第三个比较常见了TabLayout——用于分页效果
6.4.第四个——NavigationView左侧的导航栏
6.5.第五个是浮动按钮——FloatingActionButton
6.6.第六个是一个顶层的容器——CoordinatorLayout用于不少收缩效果
6.7.第七个是经常使用的标题栏——CollapingToolbarLayout
6.8.最后一个是底部动做条功能的——BottomSheetBehavior
7.1.首先固然是ABI的基本概念了——这是NDK开发最基本的东西了
7.2.而后确定会跟C/C++有必定关系的嘛——引入C/C++函数库
7.3.而后从C/C++源码编译也是很重要的
7.4.那使用.so文件须要注意哪些问题呢
8.1.首先会有一个共享变量,这个用得比较多嘛
8.2.而后就是比较常见的通用配置了
8.3.而后就是aar函数库的使用方法
8.4.通常的话,签名和混淆也会用到gradler脚本,因此仍是至关重要的
9.1.首先了解一下什么是Maven Central和JCenter吧
9.2.而后就是Android Studio获取函数库的原理
9.3.最后固然就是上传函数库到JCenter了
10.1.首先固然是经典的设计模式——Builder模式
10.2.而后Builder的变种模式了解一下
10.3.并且这个变种还能够自动生成哦
10.4.最后再拿一个开源函数库为例讲解一下
11.1.首先固然是了解一下定义咯
11.2.那么标准注解有哪些呢
11.3.运行时也是能够有注解的
11.4.编译时固然也是能够有注解的哦
12.1.首先固然是了解一下缘由啦
12.2.而后就是典型的ANR场景再现
12.3.而后归纳一下ANR的定位以及分析缘由啦
12.4.最后固然就是ANR问题的避免以及检测了
13.1.首先固然是最多见的Thread了
13.2.HandlerThread也能够了解一下
13.3.AsyncQueryHandler异步处理技术,这个没见过哦
13.4.IntentService也是有的,和HandlerThread比较相似,加多了一个服务的概念了
13.5.还有Executor Famework,也没见过,能够了解一下
13.6.AsyncTask,轻量级异步处理类
13.7.Loader,加载器,能够看一下
13.8.最后来一个总结吧
14.1.首先是常见的Serializable了
14.2.Parcelable也是比较经常使用的
14.3.数据库方面使用——SQliteDatabase
14.4.文件存储其实也是本身序列化的——SharedPreferences
14.5.JSON——这个应该比较常见了,解析网络数据常常用
14.6.Protocol Buffers和Nano-Proto-Buffers,这个应该和缓存有关系,能够了解一下
14.7.FlatBuffers——也和缓存有关系的序列化方案,可能比较少见吧
15.1.首先是Java来调用JavaScript
15.2.其次固然是JavaScript来调用Java代码了
16.1.首先固然是了解一下基本概念了
16.2.而后是面试常常问到的MVP和MVC模式的区别了
16.3.MVP有不少开源实现方案,能够了解一下
16.4.为何使用MVP模式呢——即好处
16.5.MVP模式有缺点吗——固然有的啦
17.1.用到MVVM模式确定会接触数据绑定的表达式了
17.2.而后须要理解一下数据对象
17.3.固然要理解数据是如何绑定的啦,彼此要创建关联的嘛
17.4.其实事件也是能够绑定的哟
18.1.为何要使用事件总线呢——不少地方都会使用到
18.2.事件总线的原理——面试常常问到,必定要深刻理解
18.3.事件总线有一些开源的实现,能够了解一下
18.4. 观察者模式和Android 广播以及上述的事件总线以前有不少关联的地方,简单了解一下吧
19.1.Java有一套编码规范的哟
19.2.Android也有一套命名的规范
19.3.CheckStyle的使用,这个没见过哦,能够了解一下
20.1.首先须要了解一下APP的总体架构——总体观
20.2.而后就是技术选择须要考虑的地方了
20.3.日志是很是关键的,记录成功或者失败
20.4.JSON解析也是比较经常使用的啦
20.5.数据库方面也是须要考量的
20.6.网络方面确定离不开的啦
20.7.图片的缓存功能的实现以及显示方面也是须要注意的哦
21.1.64K限制确定有必定缘由吧
21.2.MultiDex便可解决64K限制问题
21.3.如何避免这个问题,其实没法避免就不用刻意去避免了
21.4.配置MultiDex来解决这个问题
21.5.用MultiDex来解决有必定局限性,你知道吗
21.6.开发阶段如何处理这个问题
22.1.插件化基本概念先了解一下吧
22.2.开源框架有不少哦
23.1.首先了解一下推送的开源实现方案吧
23.2.第三方推送也是很是方便的
23.3.本身怎么实现一个推送功能呢
24.1.研究一下APP为何变庞大了——废话而已
24.2.固然APP的结构才是根本——先了解一下
24.3.图片的大小不可小觑
24.4.使用Lint工具能够删除无用资源——仍是比较方便的
24.5.利用Android Gradle配置也是能够减小体积的哦
24.6.重构和优化代码就须要本身多花时间了
24.7.资源混淆每每能够减小一部分体积
24.8.插件化固然不用说了
25.1.首先须要了解一下Java层的Crash捕获机制
25.2.Native层也是有Crash捕获机制的哦
25.3.最终固然就是Crash的上报了
26.1.首先代码须要简化
26.2.而后要理解一下Operators,这个没据说过,能够简单了解一下
27.1.首先须要了解一下依赖注入的基本概念
27.2.为何须要一些框架来进行依赖注入呢
27.3.常见的依赖注入的框架有哪些呢
28.1.首先了解一下为何要选择Kotlin
28.2.了解一下Kotlin的安装和配置
28.3.Kotlin有哪些特性呢——简单了解一下便可
28.4.Kotlin须要Gradle的配置哦
28.5.Java类能够直接转换为Kotlin
28.6.相关资料能够了解一下
29.1.首先固然是环境配置了
29.2.Android开发的环境仍是有必定要求的哦
29.3.React Native工程须要一些简单的配置
29.4.在AS下,浏览一下工程结构呗
29.5.将React Native依赖库修改成本地——多是比较重要的吧
29.6.最后是一些学习建议——做者专门就搞React Native的,因此有必定的参考价值
30.1.首先了解一下在线热修复的基本流程
30.2.来一种热修复框架——Dexposed——这个应该比较热门的吧
30.3.再来一种热修复框架——AndFix——好像比较老,可是很牛逼的框架
30.4.再来一种更通用的框架——Nuwa——很是棒的热修复框架
30.5.最后来一个简单的总结
31.1.首先固然简单地了解一下AOP的基本概念了
31.2.何时用的切面编程呢
31.3.介绍一下框架了——AspectJ来实现Android平台的切面编程
31.4.其余AOP的开源的框架,能够简单了解一下
32.1.首先固然是Buck的环境配置了
32.2.而后就来一个基于Buck构建的Android工程呗
32.3.基本概念仍是再了解一下嘛
32.4.而后升级一下,项目改造一下
32.5.固然自动化改造是更牛逼的啦
33.1.首先是数据结构方面的选择
33.2.而后是Handler和内部类的选择啦
33.3.正确使用Context也是很关键的
33.4.要掌握Java四种引用方式哦
33.5.其余代码本身微微优化一下呗
34.1.首先是图片格式的问题
34.2.而后是图片压缩的问题
34.3.最后是图片缓存的问题
35.1.首先是广播接收器会占用大量电量,需优化
35.2.数据传输也会占用电量
35.3.后台的位置服务也会占用大量电量哦
35.4.闹钟服务也会占用电量的
35.5.WakeLock,不知道是啥,能够简单了解一下哦
36.1.首先固然是include了
36.2.而后是ViewStub了——按需加载
36.3.而后是merge——减小视图层级
36.4.尽可能使用CompoundDrawable,这个不知道哦
36.5.使用Lint,猜想是减小无用布局
37.1.首先要避免DNS解析
37.2.能够合并网络氢气
37.3.能够预先获取数据的
37.4.要避免轮询
37.5.要优化重连机制
37.6.离线缓存也是须要作的
37.7.数据量大的话,还要压缩数据大小哦
37.8.超时策略应对不一样网络环境
37.9.CDN能够了解一下,这个不知道哦
38.1.首先是Java代码混淆
38.2.而后是Native开发的C/C++的代码混淆
38.3.资源文件若是须要也是能够混淆的哦
39.1.首先资源文件的反编译比较方便
39.2.而后是Java代码的反编译,这个稍微复杂一点点
40.1.将敏感信息放在strings.xml中如何
40.2. 放在Java源代码中也能够
40.3.隐藏在BuildConfig中
40.4.使用DexGuard——这个不知道哦,能够了解一下
40.5.对敏感信息进行假装和加密,经常使用MD5加密
40.6.能够隐藏在.so文件中,这个不错嘛
40.7.对APK进行加固,没想到还有这个
41.1.首先了解一下爱加密的主要功能
41.2.而后须要理解常见APP的漏洞和风险
41.3.而后须要了解Android程序的反破解技术
41.4.加固技术须要的一些工具和资料,简单了解一下便可
42.1.首先是WebView远程代码的执行,没想到这个还涉及到了
42.2.WebView的密码明文保存,这个的确要考虑的
42.3.Android本地拒绝服务能够了解一下
42.4.SP文件方面——全局的任意读写,这个仍是知道一点的
42.5.密钥硬编码,这个高大上哦
42.6.AES/DES/RSA弱加密,这个没听过
42.7.随机函数使用错误咋办...
42.8.WebView如何忽略SSL证书的状况下进行安全编码
42.9.HTTPS证书的弱校验——能够简单了解一下
42.10.PendingIntent使用不当下如何处理——这个也不清楚啦
43.1.首先使用这个工具来监视视图布局
43.2.数据库也是能够监视的
43.3.网络更不用说啦,好像看到过别人框架中用过这个工具
43.4.dumpapp插件的使用——这个的确不知道
43.5.Javascript控制台,这样更方便使用了
43.6.简单实践一下,这个才是关键吧
44.1.基本概念简单了解一下
44.2.集成方法,很是简单哦
44.3.LeakCanary的基本原理,这个仍是须要知道的哦
44.4.如何定制本身的LeakCanary呢——值的借鉴哦
45.1.转换的时机,什么鬼?
45.2.管道的思想,相似于Linux中的管道通讯吧
45.3.减小字节码的意义——简单了解一下便可
45.4.混淆和压缩,对APK有很大影响哦
45.5.如何使用内联函数,这个不知道哦
45.6.无用的代码消除——升级到代码层面了哦
45.7.Redex的集成和简单的使用
46.1.Annotate,不知道
46.2..ignore,应该比较简单吧
46.3.Live Template,模板,很是好用
46.4.如何集成Bug管理系统,这个应该不错呢
47.1.首先是单元测试框架JUnit
47.2.还有Robolectric3.0,这个没据说过呢
47.3.Java来模拟测试框架Mockito,能够了解一下
48.1.首先是Monkey
48.2.MonkeyRunner能够了解一下
48.3.UIAutomator,这个用过,简单
48.4.Robotium,这个不知道了
48.5.Espresso,这个也比较经常使用,应该不错
48.6.Appium,母鸡啊
49.1.Java代码规范检查工具CheckStyle,居然还有这东西
49.2.Java静态代码分析工具FindBugs,这个牛逼了
49.3.Java静态代码分析工具PMD,能够看一下
49.4.Android代码优化工具Lint,前面好像有讲过呢
50.1.首先是Tomcat要知道
50.2.而后是下载Jenkins和安装
50.3.而后是Jenkins的全局配置
50.4.JOB的相关操做
50.5.最后是Jenkins预约义的环境变量,须要了解