android移动应用开发实践教程,移动APP开发框架盘点,真香!

前言

许多 Android 开发者经常会问我,要学会哪些东西才能成为一个优秀的 Android 工程师?对于这个问题,他们的描述或多或少都有些差异,但是,总体来说,我们都需要学习一系列的技能,才能成为一个优秀的 Android 工程师。

在我看来,存在这样的困惑是正常的。Android 是一个巨大并且动态的生态系统,你可能需要花好几周时间去了解并学习它相关的一些工具和概念,但是最后你会发现,它们有好多都不是很重要,或者说并不是非常有用。因此,在本文中,我将分享我在 Android 开发中所使用到的重要技能,希望能够帮到你,让你把你的精力集中到重要的事情上。

所以,今天,我将献上一份《Android知识图谱》,以自身的经验 & 所见所闻,旨在告诉大家,学习Android,实际上需要学习什么内容,希望你们会喜欢。

一.想要分享的内容

开篇我也表达了我对“面经”的看法,所以我就不罗列具体的题目了,而且每次面试的题目都大同小异,其他专栏已经列举的足够多了,再列举也没有太多的意义,这里我想着重分享以下五点:面试前的准备,学习方法,面试风格,面试后的感受,以及职业规划。

二.面试前你应该做的准备

面试前一定要系统的复习各个模块的知识点,不要匆忙的出去面试,尤其是对于大公司来说,面试机会本来就不易,不要因为自己没有复习准备好,而白白的丧失了机会,尤其是对于突然被裁,事前没有充分准备的同学来说,更应该注意这一点,我深知被裁的滋味,但是被裁后也要理性的对待这件事,不要因为自己的慌张,无助而匆匆投简历去面试

对于Android应用开发而言,需要复习的并不是很多,无非是都熟知的那几大类:Java 基础,JVM,Java 并发,Android 源码,Android 第三方框架,Android 性能优化,数据结构与算法,再加上一些网络知识等等,这里我就不在重复赘述了。

另外我在补充两个点,我们在复习具体的题目或知识点时,还可以着重去百度查找具体公司的面试题目,因为很多面试官都会习惯性的问同一问题或同类问题,这样更有针对性。再者就是自己简历上所描述的内容一定要会,包括具体的知识点,也包括你的项目经验,都同等重要。

当自己感觉复习的差不多了,先不要投递和预约大公司或者自己向往的公司,先去几家小公司,或者自己肯定不会去的公司面试,这样即使没有通过面试也不算是浪费了机会,还能顺便帮助自己更好的查漏补缺,如果通过了还可以更加自己后面面试的信心。虽然这样的行为“欺骗”了一些公司的hr同学,但面对自己求职的利益来说,只能抱歉了。

三.学习方法:

学生时代的我们,常常听到的一个词就是“学习方法”,它看不见摸不着,却常常体现在我们的考试成绩上。等到毕业,真正工作的时候,这个词似乎离我们越来越远,不变的是我们依然只是在不停的做计划,这一年要读几本书,这一月要学会哪些知识点,甚至以天来量化,但很少去思考为什么去学习这些,更重要的是如何去学习。

面试复习和我们平时学习也一样,在学习态度端正的前提下,那么如何学习就会变的尤其重要,虽然在学生时代老生常谈,但是自从工作后,很多人忘了它,都在急功近利的搪塞知识,以为读了几遍《Android 开发艺术探索》就可以成功跻身高级工程师了,真正理解的依然在少数,和读了几遍没有必然关系。我才疏学浅,不过还是想表达和分享下我的学习观。希望可以给不知道怎么学习的伙伴一点点启发

系统
“系统”很好理解,也就是我们在复习知识点时一定要全面,只有全面了,我们的基础才可以打的牢,这个基础很重要,基础有了才可以更好的进行思考和总结。
比如我们经常会使用以及研究一些 Android 第三方的框架,如 OKHttp ,我们要从三个方面去全面理解它:

1,利用 okhttp 实现基本的网络访问功能,包括基本的数据请求,表单提交,文件上传,文件断点下载,https的设置等等。
2,深入研究 okhttp 源码,熟悉 okhttp 中的调用过程,拦截器原理,缓存原理以及其中涉及的设计模式,并可以自定义拦截器实现特殊的功能,如日志打印等等。
3,在研究 okhttp 缓存原理之前,得首先熟悉 http 缓存的相关字段以及在设置 https 时,也要全面复习 https 的相关原理。
通过以上思路的复习,慢慢地你的知识体系就会建成,基础也就日渐牢固。

思考
我认为思考和下面的总结都是比较困难的,因为这和每个人的基础和视野有很大的关系,基础差、视野小的工程师一定和基础牢固、见识广范的人所思考的深度和方向不一样,就拿我这种中级工程师来说,我面对 okhttp 所能想到的方向有:它与 retrofit 是什么关系;okhttp 与其他网络框架的比较;因为涉及到网络相关,还可能再延伸到网络优化方向等等。但是不管你所思考的方向是什么,只有有所思考就是进步,而不是单纯的停留在 okhttp 框架的本身。

总结
这里的总结是在上一步思考的基础之上进行的,并不单单是把自己所学习过的知识点全部罗列出来就可以了。因为每个知识点在学习的过程中看似是独立的,实际上知识点之间大都是有关联的,我们要学会去思考并总结各个有关联的知识点,然后尽自己所能深挖出更多的知识点,使之串联,后面我会利用实际的面试题再来更加清楚的解释这一点。

四.面试风格:

这部分我想分享一下面试官都是如何去问问题的。所以就暂且起名总结为面试风格的问题。
我想大家应该也都知道,这里我大致分为五种:

全部按照简历上所列举的知识点问。在我这次面试经历中360的一面和二面的面试官都是这样问的,因此我们一定要熟知我们简历上所写的内容,包括新技术例如koltin,flutter,只要简历上有写,就必须得会
从简历中挑选问题问,并不全问,当然面试官也会根据自己的习惯提问简历上没有写的内容。这种情况是最多的。
在你介绍项目经验的时候,从中选择感兴趣的问题或相关知识点去提问。
只关注你的项目本身,包括项目介绍,项目难点等等。在这次网易一面中就是这样的,只询问了我简历上所列举的项目重难点,以及解决方案。
不提问任何具体知识点和项目经验,让你回答一些开放性的问题,比如你是通过什么途径学习的;你对跨平台的技术如何看待等等。这种面试方式一般出现在技术面的最后一面。
最后我想要着重强调一下,项目经验很重要,尤其是对于社招生来说,所以就要求我们在平时做项目的时候一定要逐渐的去积累项目的重难点是什么,以及如何解决的。当然有可能在实际工作中我们负责的那一个模块确实没有很大的难点值得去说,这也是有可能的,这就需要我们去全面的了解自己的项目,看看其他同事负责的模块有没有值得去学习和总结的,这不仅有利于我们技术上的提高,也有利于增加我们的项目经验。

尾声

评论里面有些同学有疑问关于如何学习material design控件,我的建议是去GitHub搜,有很多同行给的例子,这些栗子足够入门。

有朋友说要是动真格的话,需要NDK以及JVM等的知识,首现**NDK并不是神秘的东西,**你跟着官方的步骤走一遍就知道什么回事了,无非就是一些代码格式以及原生/JAVA内存交互,进阶一点的有原生/JAVA线程交互,线程交互确实有点蛋疼,但平常避免用就好了,再说对于初学者来说关心NDK干嘛,据鄙人以前的经历,只在音视频通信和一个嵌入式信号处理(离线)的两个项目中用过,嵌入式信号处理是JAVA->NDK->.SO->MATLAB这样调用的我原来MATLAB的代码,其他的大多就用在游戏上了吧,一般的互联网公司会有人给你公司的SO包的。
至于JVM,该掌握的那部分,相信我,你会掌握的,不该你掌握的,有那些专门研究JVM的人来做,不如省省心有空看看计算机系统,编译原理。

一句话,平常多写多练,这是最基本的程序员的素质,尽量挤时间,读理论基础书籍,JVM不是未来30年唯一的虚拟机,JAVA也不一定再风靡未来30年工业界,其他的系统和语言也会雨后春笋冒出来,但你理论扎实会让你很快理解学会一个语言或者框架,你平常写的多会让你很快熟练的将新学的东西应用到实际中。
初学者,一句话,多练。

由于文章篇幅问题复制链接查看详细文章以及获取学习笔记链接:前往我的GitHub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值