美文网首页Android 面试专辑
Android程序员自我修养

Android程序员自我修养

作者: MrLyp | 来源:发表于2018-07-11 11:59 被阅读95次

    Android程序员自我修养

    1. Android-Universal-Image-Loader

    github地址

    https://github.com/nostra13/Android-Universal-Image-Loader

    介绍

    老牌的图片异步加载框架

    重点

    • 整个框架分多少个模块,每个模块的作用是什么

    • 如何仅通过interface就将框架的整个流程串联起来

    • 如何进行内存管理的,LRU是种什么算法,有没有比LRU更好的?

    • 用到了多少个线程池,这些线程池之间的区别是什么,如果只用一个线程池可以么?

    2. Retrofit

    github地址

    https://github.com/square/retrofit

    介绍

    十分简洁的网络请求框架,底层由okhttp负责执行网络请求。

    重点

    • 如何自定义注解

    • 如何将方法转化成Request对象

    • ServiceMethod的作用

    • adapter,converter的设计思路,如果想要实现将okhttp也变成可替换的应该如何设计代码

    • InvocationHandler与泛型的使用

    3. Volley

    github地址

    https://github.com/google/volley

    介绍

    Google出品的网络请求框架

    重点

    • Dispatcher和RequestQueue的设计实现

    • RetryPolicy 策略模式的实现

    4. Glide

    github 地址

    https://github.com/bumptech/glide

    介绍

    Google出品的图片加载框架

    重点

    • 内存管理和线程管理的方式,engine的作用

    • 如何利用生命周期来控制加载的暂停与恢复

    • 如何处理带优先级的请求

    • 各个模块、类、方法等职责划分以及命名习惯,代码规范等

    5.Tinker

    github地址

    https://github.com/Tencent/tinker

    介绍

    腾讯出品的热更新框架

    重点

    • 实现原理,如何实现的补丁dex替换

    • 如何实现plugin

    • 文件有效性校验的方式

    • dex合成

    6. Android-Architecture

    github地址

    https://github.com/googlesamples/android-architecture/tree/master

    介绍

    Google出品的架构介绍

    重点

    • 各个架构的实现方式以及特点

    • 如何在各个架构下做单元测试

    7. OkHttp

    github地址

    https://github.com/square/okhttp

    介绍

    应该是Android开发使用最广泛的网络框架了

    重点

    • 如何自建socket发送数据

    • 连接池怎么复用连接的

    • websocket的流程,心跳的处理,建立长连接之后如何收发消息

    • 缓存控制

    • 责任链模式

    8. ThreadPoolExecutor

    github 地址

    https://github.com/openjdk-mirror/jdk7u-jdk/blob/master/src/share/classes/java/util/concurrent/ThreadPoolExecutor.java

    介绍

    jdk中线程池实现的源码。

    重点

    • 如何实现一个生产者消费者

    • 停止消费者线程时awaitTermination的作用

    • 如何做到控制核心线程数的

    • BlockingQueue的使用方式,ReentrantLock的使用方式,Condition的作用以及使用方式

    9. Design Pattern

    github地址

    https://github.com/iluwatar/java-design-patterns

    介绍

    包含了几乎所有常见的设计模式以及代码示例

    重点

    • 各种设计模式的使用场景,为什么这么设计

    • 在Android Framework中哪些部分是和设计模式对应的

    10.AirMapView

    github 地址

    https://github.com/airbnb/AirMapView

    介绍

    AirBnb出品,地图的抽象封装层,内置提供GoogleMap与网页地图,思路稍微些奇怪,地图的实现层是通过Fragment来做的,而不是View。并且这种抽象封装对于百度或者高德地图不太适用了,需要针对性的进行改造。

    重点

    • 如何针对特定场景抽象定义与具体实现

    11. Android-Job

    github 地址

    https://github.com/evernote/android-job

    介绍

    EverNote出品,对Android各个系统版本后台任务的统一封装,内部实现了AlarmManager,JobScheduler,Gcm等。

    重点

    • 上层封装与底层实现的解耦方式

    • 对于不同系统版本,使用不同api的封装方式

    12.StackView

    github 地址

    https://android.googlesource.com/platform/frameworks/base.git/+/nougat-mr2.3-release/core/java/android/widget/StackView.java

    介绍

    Android系统代码提供的一个非常复杂的卡片控件。代码以及实现效果都很复杂,几乎是常规业务条件下能够接触到的最复杂控件样式了。卡片控件有很多类似的库,这里只以官方库为例。

    重点

    • 如何实现的卡片切换效果* 代码设计中对于方法抽象,继承与复写的考虑

    • 在复杂控件中对于Animator,canvas等的搭配使用

    13. Dagger 2

    github地址

    https://github.com/google/dagger

    介绍

    Google发布的依赖注入框架。在Android端使用依赖注入的不二选择。在很多情况下使用dagger能够很好的解决模块解耦问题。

    重点

    • 依赖注入是什么

    • 几种注解承担什么样的角色

    • apt的使用方式

    • 如何跟生命周期相结合的

    相关文章

      网友评论

        本文标题:Android程序员自我修养

        本文链接:https://www.haomeiwen.com/subject/juchpftx.html