简介

首先,Android是不是真的找工作越来越难呢?这个可能是大家最关心的。这个受大的经济环境以及行业发展前景的影响,同时也和个人因素有关。 近期一方面是所在的公司招聘Java开发人员很难招到合适的,投简历的人很少;而另一方面,经常听身边的人说Android、iOS方面找工作不好找,特别是没什么经验的,经验比较少的!说是不好找,但在我家所在的吉林省省会长春,会Unity3D+Maya都可以拿到手一万+,而且是之前做Maya方面的,今年刚转Unity3D;同样是长春,c#有几年工作经验的工资也可以达到8K+,而且不好招人,这让我不禁想回老家那边去发展了。

首先,Android是不是真的找工作越来越难呢?这个可能是大家最关心的。这个受大的经济环境以及行业发展前景的影响,同时也和个人因素有关。

很多人准备面试的时候,大多数就会这样的,打开百度,输入 “Android 面试题”,找几个多的开始看。

这虽然看起来很自然,但是并不是一种 健康的方式,面试题的作用应当是查缺补漏,上学的时候也不是直接发习题册然后对着答案学习吧?

知乎上有个问题,叫做 如何高效学习,里面有一个回答我觉得很符合我自己的观点,就是 建立起自己的知识体系,建立知识体系的目的在于:

  • 巩固记忆。

  • 认识自己,找到自己的优势及不足。

  • 把握复习的进度。

  • 经验总结。

    目前我自己的总结的会分为以下几个大点:

Java 基础知识

  • 面向对象的基本思想
  • Object类相关:Object类的几个关键函数、String涉及到的常量池概念,序列化 & 反序列化。
  • 重要关键字:final、static。
  • 内部类:内部类的分类、应用场景、内部类编译成class后是怎么样的。
  • 抽象类 & 接口:区别、应用场景。
  • 编码:编码的目的、分类。
  • 异常:异常体系、自定义异常。
  • 注解:注解的基本概念、分类、编译时注解 & 运行时注解。
  • 容器:重要容器的内部实现、容器间的对比。
  • 内存模型。
  • 垃圾回收。
  • 类加载的过程。
  • 泛型:分类、通配符 & 上下边界、泛型擦除。
  • 反射:使用。

Android 基础知识

  • Dalvik、Art虚拟机
  • Activity:生命周期、launchMode。
  • Fragment:生命周期、懒加载、两种Adapter之间的区别。
  • BroadcastReceiver:基本概念、广播分类、权限。
  • Service:生命周期、onStartCommand的返回值、startService和bindService的区别、相同进程 & 不同进程的交互、IntentService实现原理。
  • 重要的工具类 & 源码实现:AsyncTask、HandlerThread、Handler、IntentService、LruCache、LinkedHashMap、SparseArray。
  • RecyclerView:缓存原理、和ListView的对比、Adapter如何适配多种layout。
  • 存储:数据库升级 & 优化、ContentProvider,SharePreference。
  • SDK版本升级的兼容问题。
  • Android的权限管理机制。

图片

  • Bitmap相关:Bitmap的大小计算、质量、inJustDecodeBounds、inBitmap。
  • 几种图片格式的对比、压缩。
  • 大图加载:BitmapRegionDecoder

算法

  • 别无捷径,刷题,但是刷题的时候,要按照题的类型去总结。

开源框架

  • RxJava:操作符的应用场景、重点操作符的内部实现、和RxJava的对比。
  • Glide:流程、缓存相关的实现。
  • Retrofit:流程、动态代理 & 注解解析。
  • OkHttp:流程、队列实现、缓存实现。

性能

  • 性能优化技巧:启动速度优化、布局优化、内存优化、电量优化、APK大小优化、列表滑动优化。
  • 性能优化工具:TraceView、Systrace、调试GPU过度绘制 & GPU呈现模式分析、Hierarchy Viewer、MAT、Memory Monitor & Heap Viewer & Allocation Tracker、LeakCanary、Lint。
  • ANRANR原因ANR产生过程源码分析信息收集过程trace文件分析分析基本流程具体示例如何避免产生ANR
  • 性能实践:解决过的性能问题,从 遇到问题、分析问题、解决问题、结果 四个点进行阐述。

View

  • 绘制流程:measure、layout、draw三个关键流程。
  • 事件分发:事件分发的原理、处理过的滑动冲突问题。
  • 自定义View:Canvas & Path,实现过的比较复杂的自定义View。

架构

  • MVP:MVP的思想 & 优劣势、在项目中的应用、

源码

  • AMS
  • WMS
  • Binder
  • 应用启动流程
  • APK相关知识点APK构成:resources.arsc组成、AndroidManifest.xml、aapt作用及原理APK打包过程APK安装过程APK签名 & 校验原理dexopt原理

网络

  • 基础知识:看一下对于 <<计算机网络>> ,重点是网络分层模型、TCP/UDP、HTTP/HTTPS。

设计模式

按照23种网络模型、三个分类进行总结,每种设计模式包含以下三个方面,至少要准备常用的几个:

  • 基本概念:UML图、简单例子、应用场景、优势 & 劣势。
  • Android源码中的实现
  • 项目中的应用

多线程

  • 看并发编程的艺术,这本书的目录就是多线程最好的知识体系。
  • 遇到过的多线程问题、怎么解决的。

Gradle

  • 常用配置。
  • 多渠道打包。

插件化

  • 插件化的核心思想。
  • 几种插件化框架实现的原理。

组件化

  • 组件化的优势。
  • Arouter:使用方式、实现原理。

Kotlin

  • 有用到的可以看看。

多媒体

  • 音频、视频播放。

大前端

  • ReactNative、Flutter:没学过的可以了解一下思想。

JNI

  • 调用实现方式。

最后,如果大伙有什么好的学习方法或建议欢迎大家在评论中积极留言哈,希望大家能够共同学习、共同努力、共同进步。

小编在这里祝小伙伴们在未来的日子里都可以 升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰!!

不论遇到什么困难,都不应该成为我们放弃的理由!

很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,需要一份小编整理出来的学习资料的**关注我主页或者点击我的GitHub免费领取~**

这里是关于我自己的Android 学习,面试文档,视频收集大整理,有兴趣的伙伴们可以看看~

如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。

更多相关文章

  1. android博客导航总结,以及个人常用android免费学习干货(文章,视频,矢
  2. Android连接mysql demo_Android实现登陆功能,Android与服务器数据
  3. 十分钟让你了解Android触摸事件原理(InputManagerService)
  4. Android(安卓)React Native使用原生模块
  5. Android屏幕投影及反向控制原理
  6. 关于android内存管理的原理,及相关自动内存管理软件原理
  7. Android无线连接打印第三方开发的实现
  8. [原创] Android应用使用蓝牙通信控制车联网设备(Kotlin实现)
  9. 浅谈Java中Collections.sort对List排序的两种方法

随机推荐

  1. PostgreSQL 正则表达式 常用函数的总结
  2. linux采用binary方式安装mysql
  3. mysql 5.7.18 zip版安装配置方法图文教程
  4. 最新版MySQL5.7.19解压版安装指南
  5. MySQL 5.7.19安装目录下创建my.ini文件的
  6. windows server2016安装MySQL5.7.19解压
  7. Mysql 5.7.19 免安装版遇到的坑(收藏)
  8. Mysql 5.7.19 免安装版配置方法教程详解(
  9. 关于mysql查询字符集不匹配问题的解决方
  10. Mysql数据库绿色版安装教程 解决系统错误