美文网首页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