Java基础

  • Java Object类方法

  • HashMap原理,Hash冲突,并发集合,线程安全集合及实现原理

  • HashMap 和 HashTable 区别

  • HashCode 作用,如何重载hashCode方法

  • ArrayList与LinkList区别与联系

  • GC机制

  • Java反射机制,Java代理模式

  • Java泛型

  • Synchronized原理

  • Volatile实现原理

  • 方法锁、对象锁、类锁的意义和区别

  • 线程同步的方法:Synchronized、lock、reentrantLock分析

  • Java锁的种类: 公平锁、乐观锁、互斥锁、分段锁、偏向锁、自旋锁等

  • ThreadLocal的原理和用法

  • ThreadPool的用法和示例

  • wait()和sleep()的区别

Java高阶

  • Java虚拟机,Java运行,Java GC机制(可达性分析法,引用计数法)

  • Java对象的完整生命周期

  • JVM内存模型

  • 进程间通信,线程间通信

  • JVM类加载机制

  • Java引用类型

  • 设计模式:除常用设计模式之外,特别的,反射机制,代理模式

  • HTTP协议和HTTPS协议

  • Socket协议,Socket实现长连接

  • TCP和UDP协议

  • HTTP协议中GET和POST的具体实现

  • 序列化和反序列化

  • 线程池的实现原理

  • 数据库基础知识:多表查询、索引、数据库事务

数据结构及算法

数据结构

  • 栈和队列

  • 数组和链表,自定义一个动态数组

  • Hash表,及Hash冲突的解决

  • 二叉树

  • B+ B-树

  • 基础排序算法:重点 快排、归并排序、堆排序(大根堆、小根堆)

  • 快排的优化

  • 二分查找与变种二分查找

  • 哈夫曼树、红黑树

  • 字符串操作,字符串查找,KMP算法

  • 图的BFS、DFS、prim、Dijkstra算法(高阶技能)

  • 经典问题:海量数据的处理 (10亿个数中找出最大的10000个数 TOP K问题)

算法

  • 分治算法

  • 动态规划

  • 贪心算法

  • 分支限界法

Android基础

  • Application生命周期

  • Android Activity生命周期

  • Android Service、IntentService,Service和组件间通信

  • Activity的onNewIntent

  • Fragment的懒加载实现,参数传递与保存

  • ContentProvider实例详解

  • BroadcastReceiver使用总结

  • Android消息机制

  • Binder机制,共享内存实现原理

  • Android 事件分发机制

  • Android 多线程的实现:Thread、HandlerThread、AsyncTask、IntentService、RxJava

  • ActivityThread工作原理

  • 嵌套滑动实现原理

  • RecyclerView与ListView(缓存原理,区别联系,优缺点)

  • View的绘制原理,自定义View,自定义ViewGroup

  • View、SurfaceView 与 TextureView

  • 主线程Looper.loop为什么不会造成死循环

  • ViewPager的缓存实现

  • requestLayout,invalidate,postInvalidate区别与联系

  • AndroidP新特性

  • Android两种虚拟机

  • ADB常用命令

  • Asset目录与res目录的区别

  • Android SQLite的使用入门

Android开发高级

引子:Android高级工程师招聘要求:1. 熟悉Android SDK,熟悉Android UI,熟悉Android各种调试工具;2. 有丰富的Android应用架构能力,能够独立主导并架构App;3. Mobile Web 开发经验;具备各种复合技能:熟悉iOS、H5、Python、.NET等多种开发语言的优先考虑;4. 对Android性能优化,安全,软件加固,自动化测试有深刻认识;5. 博客,开源项目

各种原理,经典第三方库源码系列

  • 自定义LayoutManager,RecyclerView中如何自定义LayoutManager

  • VLayout实现原理,即如何自定义LayoutManager

  • Glide加载原理,缓存方案,LRU算法

  • Retrofit的实现与原理

  • OKHttp3的使用,网络请求中的Intercept

  • EventBus实现原理

  • ButterKnife实现原理

  • RxJava实现原理

  • Dagger依赖注入

  • 热修复实现原理,解决方案

  • 组件化原理和解决方案

Android技术难点

AIDL、Binder、多进程、View的绘制流程、事件分发、消息队列等。这类知识对于定位自己为高级Android工程师的人来说是必须掌握的,同时他也是能鉴别高级和初中级工程师的一块试金石,其中binder是Android系统进程间通信最重要的手段之一,现阶段app的发展离不开多进程的运用,经常会启动例如定位、推送等需要在后台开启动的进程来来保证主进程的内存运行;所以合理的使用多进程也是十分必要的;view的绘制是我们自定义控件的理论基础,只有掌握了view是如何绘制的才能个性化的自定义控件;事件分发一直是Android开发的难点之一,也是必须掌握的;关于handler机制也是android的一块难点,因为包括Asynctask、系统启动、Intentservice等底层都是通过handler来实现的,所以掌握后handler机制不仅能提高你的实战开发能力,更能让你系统的了解整个android系统运作的情况。

Android进程通信以及多进程开发

经典解决方案:多进程通信解决方案:Andromeda

进程和Application关系

Android动画机制

经典学习资料:HenCoder: 给高级Android工程师的进阶手册

Android绘图原理

经典学习资料:HenCoder: 给高级Android工程师的进阶手册

Android页面恢复

Android的页面恢复采用以下两个方法:

onSaveInstanceState(Bundle outState)

onRestoreInstanceState(Bundle savedInstanceState)

onSaveInstanceState: 当Activity容易被系统销毁时,会触发该方法。具体的说

  1. 用户点击Home键

  2. 用户点击Home键,切换到其他应用程序

  3. 有电话来了等附加操作

混合开发及Android WebView应用

Gradle,自动化构建,持续集成相关

Android系统

Android Studio编译过程

其中使用到的编译工具:

aapt、aidl、Java Compiler、dex、 zipalign

主要步骤描述:

1. 通过aapt打包res资源文件,生成R.java、resources.arsc和res文件(二进制 & 非二进制如res/raw和pic保持原样)

2. 处理.aidl文件,生成对应的Java接口文件

3. 通过Java Compiler编译R.java、Java接口文件、Java源文件,生成.class文件

4. 通过dex命令,将.class文件和第三方库中的.class文件处理生成classes.dex

5. 通过apkbuilder工具,将aapt生成的resources.arsc和res文件、assets文件和classes.dex一起打包生成apk

6. 通过Jarsigner工具,对上面的apk进行debug或release签名

7. 通过zipalign工具,将签名后的apk进行对齐处理。

image

image

App安装过程

App启动加载过程

Android虚拟机 Android App运行的沙箱原则

Android权限管理系统和grant过程

Android架构

在Android源码中最重要的三个类:ActivityManagerService/PackageManagerService/View,推荐大家周末的时候可以去阅读下这部分的源码,阅读源码能提高我们今后设计架构自己代码的能力,同时也能从底层了解整个android系统的运行原理,其他一些比如主线程的消息循环、主线程如何和AMS如何跨进程交互、SystemServer进程中的各种Service的工作方式、AsyncTask的工作原理等。这些知识也是作为一个Android高级开发工程师必须掌握的,不能整天沉溺于ui和四大组件的交互,要站在更高的角度去考虑Android的有些问题。

参考资料: 我对移动端架构的思考

  • MVC模式

  • MVP模式

  • MVVM模式

  • CLEAN模式

  • 组件化开发

  • 跨平台开发:Flutter、ReactNative(RN未来要黄,了解一下就好)

Android优化

android优化.jpg

移动开发外围

服务器开发相关

  • SpringBoot技术

  • Restful API开发

  • 网络协议理解:TCP/IP、HTTP/HTTPS、OSI七层协议

  • 授权认证协议: OAuth2.0 等

  • 基本的数据库技术

  • 数据缓存技术:Memcached、Redis,Web缓存原理

  • 消息队列技术

  • 监控、日志分析技术

前端开发相关

前端开发知识很多,框架层出不穷,本质的东西却只有以下这些。

  • 核心必备:HTML、CSS、JavaScript

  • 入门提高:浏览器兼容性、自定义UI和动效

  • 中级技能:框架层出不穷,当前以vue.js、react.js 为核心

  • 协作开发技能:包管理、模块化,工具采用 npm、webpack等

  • 高级技能:框架原理源码研究

开发调试各种工具

  • 性能分析工具:Memory Monitor

  • 性能追踪及方法执行分析: TraceView

  • 视图分析:Hierarchy Viewer

  • ApkTool- 用于反向工程Android Apk文件的工具

  • Lint- Android lint工具是一个静态代码分析工具

  • Dex2Jar- 使用android .dex和java .class文件的工具

转载自:https://www.jianshu.com/p/88e32ef66ef2

Android 学习路线相关推荐

  1. Android学习路线

    Android学习路线 第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环.  2.String和StringBuffer的使用.正则表达式.  3.面向对象的抽象,封装,继承 ...

  2. Android学习路线总结

    title: Android学习路线总结,绝对干货 tags: Android学习路线,Android学习资料,怎么学习android grammar_cjkRuby: true --- 一.前言 不 ...

  3. Android:学习路线总结,绝对干货

    转载请注明出处:http://blog.csdn.net/lowprofile_coding/article/details/51252781 一.前言 不知不觉自己已经做了几年开发了,由记得刚出来工 ...

  4. Android学习路线总结,绝对干货

    一.前言 不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知.懂的越多的时候你才会发现懂的越少. 如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大. ...

  5. Android学习路线_工具篇(一)简单的编辑器

    工欲善其事,必先利其器.工具,是人类进化的一大助力,善于制造与使用工具,可以加快我们学习的速度.工具在人类的进化之路上随着人类共同进化,原始的人类需要的是原始的工具,先进的工具对于原始人来说也许是个占 ...

  6. Android学习路线_梳理

    Android入门第一步,将需要学习的路线整体过一遍,了解学习的前置条件,明了自己的学习目标,胸有成竹才能势如破竹.本文中每个小点将单独出一篇文章,每篇文章将链路到此文,后续将持续更新. 1 工具篇 ...

  7. Android学习路线_入门篇(一)编写简单的APP

    Android学习入门的目标就是能够编写出一个完整的APP,有可交互的界面,有基本的功能,有本地的数据库,有与后台的数据交换.在本文我们会了解到如何在AndroidStudio中新建.运行.打包一个A ...

  8. android学习路线:如何成长为高级工程师

    前言 之所以写这篇文章,是因为最近博客和我的开发群( 215680213 )中,不少小伙伴都让我讲讲android学习路线,所以我决定写一篇博客,来说明这个问题.既然有不少小伙伴来咨询这个问题,说明大 ...

  9. Android学习路线的归纳总结,绝对干货!

    我们在学习Android的过程中也是一样的.本文将针对Android学习的路线做一个全名的归纳及总结!希望可以帮到你们,让你们少走弯路,提取一些工作中经常用到的技术! Android学习路线一:学习知 ...

  10. 最全Android学习路线总结,绝对干货

    一.前言 不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知.懂的越多的时候你才会发现懂的越少. 如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大. ...

最新文章

  1. 中科大博士20万字正经论文:教你如何给女朋友送礼物
  2. 0501 0503 模块区别_apollo介绍之planning模块(四)
  3. *:学习心得——C语言----S1T62班 王作舟
  4. ArcGis For Flex 之 QueryTask地理坐标展现【原创】
  5. Python中self的用法
  6. 如何搭建SVN的服务器
  7. 江湖召集:.NET开发者们看过来,这场长沙的开发者技术大会正是为你精心准备的大餐...
  8. 【报告分享】2020年中国企业直播研究报告-36氪.pdf(附下载链接)
  9. Ceylon 1.0.0
  10. Ubuntu下安装PHP的mongodb扩展操作命令
  11. python网络编程讲解_详解Python Socket网络编程
  12. Android 四大组件学习之Service五
  13. Android View 监听宿主生命周期
  14. 世界电信日| 谈谈电信行业缘何牵线云计算?
  15. Github 设置提交邮件地址
  16. 取消域服务器是定期修改密码,更改域服务器用户密码
  17. Linux将与Windows争夺主流地位
  18. 二叉树根结点到叶节点的最短距离
  19. nyoj 1248 海岛争霸
  20. 11项关键先进制造技术解读!

热门文章

  1. SQL Server数据库优化的几种方法.
  2. 计算机在教育中的应用利与弊,多媒体教学的利与弊
  3. 计算机专业 学习路线
  4. 程序员应该知道的Mac工具
  5. CentOS 下编译安装AliSQL
  6. Windows 引导修复
  7. 仿微信小程序小空投(头)iApp源码+PHP后端
  8. 2055D打印机打印报错
  9. Educoder:JavaScript学习手册十一:JSON
  10. MySQL是怎样运行的(实体书扫描+掘金小册)免费下载