Android面试知识点复习,那些不为人知的秘密

一,常见考点:

1. Android四大组件

Activity / Service / BroadCast Recevicer / Content provider

● Service : https://www.jianshu.com/p/4c798c91a613

● IntentService https://www.jianshu.com/p/be97093783d6 或 https://www.cnblogs.com/it-tsz/p/11601265.html

2.Binder,AIDL

https://www.jianshu.com/p/429a1ff3560c

3.动画

帧动画,view动画(视图动画),属性动画,其他自定义动画

https://www.jianshu.com/p/16e0d4e92bb2

4.Handler

● Handler 如何防止内存泄漏?

答:除了写弱引用这个方法后,还有一个就是 handler.removeCallbacksAndMessages(null);,就是移除所有的消息和回调,简单一句话就是清空了消息队列。注意,不要以为你 post 的是 个 Runnable 或者只是 sendEmptyMessage。你可以看一下源码,在 handler 里面都是会把 这些转成正统的 Message,放入消息队列里面,所以清空队列就意味着这个 Handler 直接被 打成原型了,当然也就可以回收了。

● Android面试:主线程中的Looper.loop()一直无限循环为什么不会造成ANR?

https://www.jianshu.com/p/cfe50b8b0a41

● Handler机制

https://blog.csdn.net/ttxs99989/article/details/81814037

https://www.jianshu.com/p/592fb6bb69fa

https://www.jianshu.com/p/ba46bad5af67

5.网络编程 HTTP、TCP和Socket,HTTPS

● HTTP、TCP和Socket的概念和原理及其区别

https://www.jianshu.com/p/947a2673102a

● HTTPS 原理浅析及其在 Android 中的使用

https://zhuanlan.zhihu.com/p/27040041

● 对称加密 非对称加密总结

https://www.jianshu.com/p/b078282653b3

● TCP可靠性的保证机制总结

https://blog.csdn.net/xuzhangze/article/details/80490362

● Http 1.0 和 Http 2.0 区别?

HTTP1.0:无状态、无连接
 
HTTP1.1 :持久连接;请求管道化;增加缓存处理(新的字段如 cache-control); 增加 Host 字段、支持断点传输等(把文件分成几部分)。
 
HTTP2.0:二进制分帧;多路复用(或连接共享);头部压缩
 
●  http 和 https 的区别?
 
 
●  HTTP与TCP的区别和联系
 
 
● HTTPS中间人攻击实践(原理·实践)
 
 
● HTTPS连接过程以及中间人攻击劫持
 
 

6.Android事件分发机制完全解析,带你从源码的角度彻底理解

Android事件分发机制完全解析,带你从源码的角度彻底理解(上):https://blog.csdn.net/guolin_blog/article/details/9097463

Android事件分发机制完全解析,带你从源码的角度彻底理解(下):https://blog.csdn.net/guolin_blog/article/details/9153747

7. Android版本适配

● 关于Android 10.0适配,看这篇就够了

https://blog.csdn.net/weixin_40611659/article/details/95174124

● Android Q(10.0)版本新特性和兼容性适配

https://blog.csdn.net/weitao_666/article/details/89373615?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

总结:

6.0 :运行时权限

7.0 :文件存储

8.0 :通知

9.0 :网络安全,均采用HTTPS

10.0 :禁止Activity后台启动

8.Android各种ANR的时间

在ActivityManagerService中进行了定义    

1. Service Timeout(服务):
      // How long we wait for a service to finish executing.
    static final int SERVICE_TIMEOUT = 20*1000; // 前台 20s
    // How long we wait for a service to finish executing.
    static final int SERVICE_BACKGROUND_TIMEOUT = SERVICE_TIMEOUT * 10; // 后台200s

2. broadcast Timeout(广播):
    // How long we allow a receiver to run before giving up on it.
    static final int BROADCAST_FG_TIMEOUT = 10*1000;  // 前台
    static final int BROADCAST_BG_TIMEOUT = 60*1000;  // 后台

3. InputDispatching Timeout(按键无响应的超时时间):
    // How long we wait until we timeout on key dispatching.  
    static final int KEY_DISPATCHING_TIMEOUT = 5*1000;  
    // How long we wait until we timeout on key dispatching during instrumentation.  
    static final int INSTRUMENTATION_KEY_DISPATCHING_TIMEOUT = 60*1000;  
4.ContentProvider Timeout:
    // How long we wait for an attached process to publish its content providers
    // before we decide it must be hung.
    static final int CONTENT_PROVIDER_PUBLISH_TIMEOUT = 10*1000;

   

9.Activity启动过程

Activity启动过程分析:https://www.jianshu.com/p/13b07beacb1f

Android的Activity启动流程分析:https://blog.csdn.net/u012267215/article/details/91406211

App启动——Activity的启动流程:https://www.jianshu.com/p/3b6589101931

10.Android混淆,反编译

官方:https://www.guardsquare.com/en/products/proguard/manual/introduction

Android安全攻防战,反编译与混淆技术完全解析(上):https://blog.csdn.net/guolin_blog/article/details/49738023

Android安全攻防战,反编译与混淆技术完全解析(下):https://blog.csdn.net/guolin_blog/article/details/50451259

Android混淆: https://www.jianshu.com/p/b5b2a5dfaaf4

AndResGuard(资源混淆):https://github.com/shwenzhang/AndResGuard

Android 代码混淆 混淆方案:https://www.jianshu.com/p/e9d3c57ab92f?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=qq

11.APK 安装包瘦身

Android性能优化系列之apk瘦身:https://blog.csdn.net/u012124438/article/details/54958757

Android性能优化之APK瘦身详解(瘦身73%):https://blog.csdn.net/qq_32175491/article/details/80071987

12.Android组件化,模块化,动态路由,动态化

组件化,模块化:

组件化框架简介:https://www.jianshu.com/p/40e745038471

从零开始搭建Android组件化框架:https://www.jianshu.com/p/ba32488f9555

DDComponentForAndroid:  https://github.com/luojilab/DDComponentForAndroid

Android组件化框架搭建(鸿洋授权):https://www.jianshu.com/p/00746e6fb48a

Android 组件化 / 模块化 开发(一):https://www.jianshu.com/p/748bf621a9a0

Android 组件化 / 模块化 开发(二):https://www.jianshu.com/p/bfd5afed498f

动态路由:

Router(路由):https://github.com/alibaba/ARouter 或  https://github.com/chenenyu/Router

动态路由的架构设计:https://www.jianshu.com/p/cc55ce2b3ff4

动态化:

Android动态化框架App Bundles:https://www.jianshu.com/p/57cccc680bb6

Android动态化方案:https://blog.csdn.net/prance90/article/details/80785145

13.Android插件化

360插件化官方:https://dc.360.cn/doc/replugin

RePlugin:https://github.com/Qihoo360/RePlugin

RePlugin 插件化框架介绍与使用说明:https://www.jianshu.com/p/185e36ac44a3

Replugin 全面解析(1): https://www.jianshu.com/p/5994c2db1557

Replugin 全面解析(2): https://www.jianshu.com/p/74a70dd6adc9

Replugin 全面解析(3): https://www.jianshu.com/p/8465585b3507

Replugin 全面解析(4): https://www.jianshu.com/p/f456f608aa92

Replugin 全面解析(5): https://www.jianshu.com/p/fb9d40f4173c

Android9.0和10.0插件化原理实现:https://www.jianshu.com/p/ab97cb4392b4

14.Android热修复技术原理详解(最新最全版本)

热修复:https://www.cnblogs.com/popfisher/p/8543973.html

Android学习——手把手教你实现Android热修复:https://blog.csdn.net/u013132758/article/details/80954639

● Tinker

官方:http://www.tinkerpatch.com/

Tinker学习之旅 :https://www.jianshu.com/p/9a107ee09006

Tinker-使用教程与原理分析:

 https://www.jianshu.com/p/d649fc014919 (上)https://www.jianshu.com/p/9ec68cf21873(下)
 

15.Android架构,MVC,MVP,MVVM,MVI

Android最佳架构:MVI+LiveData+ViewModel | ProAndroidDev:https://zhuanlan.zhihu.com/p/12908547

18.Android保活

Android最强保活黑科技的最强技术实现:https://www.jianshu.com/p/f75d4fa71686

19.性能优化,内存优化,OOM,UI 卡顿

BlockCanary(ui卡顿检测)https://github.com/markzhai/AndroidPerformanceMonitor 

中文文档:https://github.com/markzhai/AndroidPerformanceMonitor/blob/master/README_CN.md

BlockCanary 核心原理分析:https://blog.csdn.net/houdada_/article/details/106973216

BlockCanary — 轻松找出Android App界面卡顿元凶:http://blog.zhaiyifan.cn/2016/01/16/BlockCanaryTransparentPerformanceMonitor/

你真的了解BlockCanary了吗?让我带你走进源码,深入了解BlockCanary的实现原理与使用:https://blog.csdn.net/wk_beicai/article/details/104609745

LeakCanary(内存泄漏检测):https://github.com/square/leakcanary

Android 性能监测工具,优化内存、卡顿、耗电、APK的方法:https://blog.csdn.net/haoxuhong/article/details/80599176

20.Glide源码分析

Glide 3.0+:https://blog.csdn.net/guolin_blog/article/details/53939176

Glide 源码学习,了解 Glide 4.0+图片加载原理:https://www.jianshu.com/p/9d8aeaa5a329

21.EventBus分析:

EventBus 3.0进阶:源码及其设计模式 完全解析: https://www.jianshu.com/p/bda4ed3017ba
EventBus 3.0 源码分析: https://www.jianshu.com/p/f057c460c77e

EventBus 原理解析:https://www.jianshu.com/p/d9516884dbd4

二,单个对象的独到理解

1.Context的理解

8年老Android开发谈;Context都没弄明白凭什么拿高薪?:https://www.jianshu.com/p/f0fb461a2b2c

2.Intent

隐式Intent与显示Intent的区别:https://blog.csdn.net/xia236326/article/details/81837521

三,可能被我忽略的那些事

1.Android屏幕中容易被忽略的刷新机制:

https://zhuanlan.zhihu.com/p/77390590

四,总结性的文章

1.2020 - 阿里 Android + 前端面试题及部分答案(拿到 offer):

https://www.jianshu.com/p/2c2abadae450

2.做了5年Android,靠着这份面试题跟答案,我从12K变成了30K:

https://www.jianshu.com/p/a8f7048a1575

 

此文将持续更新,喜欢的可以收藏哦!

猜你喜欢

转载自blog.csdn.net/houdada_/article/details/106855774