写点什么

Android 开发如何进阶,薪资如何跟上年龄的脚步?,超全 Android 中高级面试复习大纲

用户头像
Android架构
关注
发布于: 刚刚

(2) Set


  • HashSet

  • TreeSet


Map:


  • HashMap

  • TreeMap

  • HashTable


我们需要知道每个容器的特性,以及它们的扩容方式(这个很重要)。根据我们的数据大小、特定场景、业务逻辑来选择合适的容器。


7 . Java 内存模型


Java 内存模型这一块非常重


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


要,因为它涉及到我们程序的性能,我们需要知道,内存是如何分配的,成员变量、静态变量、局部变量、对象等各自分配到哪一个区:


  • 栈内存

  • 堆内存


垃圾回收机制:


涉及到内存,我们就需要知道 java 的垃圾回收机制,虽然 Java 不像 c++一样需要我们自己分配内存、释放内存。但是我们还是需要知道它的回收机制,分代回收:


  • 年轻代:1 Eden 区 和 2 个 Survivor 区

  • 年老代

  • 永久代


分代回收分为了三个代,每个代的垃圾回收时机和频率是不一样的,因此才用的回收算法也不一样。


总的来说:年轻代的回收频率很高,对象的生命周期比较短暂,当经过一定次数的回收周期之后,年轻代的对象还存活的话,就会被移动到年老代,年老代的回收比较耗时,回收频率较低,回收成本较大。


Java 基础总结:关于 Java 基础暂时就总结了这些,这些都是 Android 开发中比较常用或者常常需要关心的一些东西。如果你想比较系统的学习 Java 基础相关的东西,推荐你去看一下经典书籍《Thinking in Java》。

二、Android 基础

就像建造房屋一样,要建造一座宏伟的建筑,首先得打牢根基。同样的,作为 Android 开发者,要想走的更远,也要学好 Android 基础。


1 . Android 四大组件


Android 四大组件是 Android 的根本,从我们学习 Android 时候,就先认识了它们:


  • Activity

  • Service

  • BroadcastReceiver

  • ContentProvider


Activity:


Activity 再熟悉不过了吧,我们 APP 所能看到的活动界面就是一个个 Activity,说到 Activity,我们得知道:


  • 1,Activity 的生命周期



image


  • 2,Activity 的几种启动方式:


standard


SingleTask


SingleTop


SingleInstance


请记住这几种启动方式的区别。


  • 3,Activity 间传如何递数据?

  • 4,Activity 横竖屏切换生命周期有哪些变化?

  • 5,显示 Intent 和隐式 Intent 有和区别?


Service:


Service 也是我们用得比较多的一个组件,关于 Service ,我们需要知道:


  • Service 的生命周期

  • Service 的两种启动方式:


1, startService


2, bindService


2 种启动方式 所走的生命周期方法是不一样的


  • Service vs IntentService:


Service 和 IntentService 个自用于不同的场景,想知道他们各自的使用场景和区别吗?查资料去吧!


BroadcastReceiver:


广播相关的知识点:广播有两种注册方式,Manifest 清单文件中注册和 代码中动态注册,代码中注册的广播一般为局部广播,最好?register?和?unRegister?成对出现,别忘了反注册。


全局广播可以跨应用访问,存在安全隐患并且效率不高,因此出现了更安全、更高效的替代者:LocalBroadcastReceiver,使用非常简单。如果在代码中看到的是LocalBroadcastReceiver而不是BroadCastReceiver,我会给你加分。


ContentProvider


ContentProvider 可能用得不是很多,可以用于共享数据,提供数据源,掌握会写增删改查就好了。


啰嗦一下:四大组件需要在清单文件中声明。


2 . Android 常用的几种布局


  • 1,帧布局 FrameLayout

  • 2,线性布局 LinearLayout

  • 3,相对布局 RelativeLayout

  • 4,Google 新出的约束布局 ConstraintLayout


3 . Android Studio


Android Studio 是我们 Android 开发的常用工具,熟练操作和使用上面的快捷键和一些插件,对我们的开发效率有很大的帮助。


Android Studio 有很多好用的插件,可以根据自己的需要安装,如:


  • GsonFormat

  • Parcelable 序列化

  • 翻译插件:对于英文不是很好的很有帮助。


除了一些好用的插件之外,还可以根据自己的习惯设置一些快捷键,总之,工欲善其事,必先利其器。要提高开发效果,先配置好我们的开发工具。


4 . Fragment


  • 1,Fragment 的生命周期

  • 2,Fragment 与 fragment 之间的通讯方式

  • 3,Fragment 与 Activity 之间的通讯方式

  • 4,Fragment + ViewPager 懒加载

  • 5,Fragment +TabLayout 选项卡


5 . 数据库相关


Android 自带数据库 Sqlite, 关于数据库,我们应该熟悉:


  • 1,数据库和表的创建

  • 2,数据的增删、改、查。

  • 3,数据库升级:


这点尤为重要,因为数据库的升级往往伴随着数据的升级,不能升级之后把前面的用户数据弄没了。


  • 4,三方库:GreenDao:


如果你觉得自己做这些操作很麻烦的话,你可以选择你一些三方的库,如 GreenDao,已经为你封装了所有的这些操作,只需简单配置就能使用。当然,Github 上还有很多类似的库,根据自己的需要选择。


6 . 常用控件基础控件


  • 1,RecyclerView & ListView

  • 2,ViewPager

  • 3,TextView

  • 4,ImageView

  • 5,Button

  • 6,Checkbox

  • 7,RadioButton


所有复杂的界面都由这些简单的基础控件组成,因此,你需要好好了解一下他们的各种属性。

三、Android 进阶

上面列举了一些 Android 的基础知识点,仅仅熟悉这些还不够,还需要学习 Android 开发中更高级一点的东西:


1 . View


上面列举了一些基础的 View 和控件,但是这些基础控件有时候不能满足我们的需求,这时候就需要自定义 View 了。


自定义 View:


自定义 view 的三种方式:


  • 1,组合基础控件

  • 2,继承基础控件,做相应的更改。

  • 3,继承 View 或 ViewGroup:


这种方式也是我们用的比较多的一种方式,这种方式比较自由,定制度高,需要实现下面几个方法


(1)?onMeasure()


(2)?onLayout()


(3)?onDraw()


执行顺序为:onMeasure()->onLayout()?->?onDraw()


View 事件分发机制:


自定义 view 的时候,我们需要响应用户的各种事件,这个时候我们就需要了解 View 的事件分发机制了。


关于事件分发机制,看一张比较经典的图(U 型图):



image


当这几个方法都调用 super 的时候,整个事件会走完这个 U 型图。


事件分发机制这一块还是比较难理解的,更多详解请查资料。


App 的几种架构


  • MVC

  • MVP

  • MVVM


常见的三种架构,根据自己的业务需要选择,每种架构都有自己的有点和缺点,另外,我觉得一个 APP 中,多种架构是可以并存的,比如:MVC 和 MVP 。一个非常简单的展示界面,不必为它弄一个 P 层,反而变得复杂了。


3 . Android 动画


(1) Android 中的 5 种基础动画


  • 平移动画

  • 缩放动画

  • 旋转动画

  • Alpha 动画

  • 帧动画


(2) 属性动画


补间动画很简单,但是它的场景使用很有限,它只能对一个 View 做动画。有的时候,我们需要更为精准的控制,我们要控制一个属性来做动画,这个时候属性动画就派上用场了。属性动画的几个相关类:


  • ObjectAnimator

  • ValueAnimator

  • AnimatorSet


属性动画用得就比较广泛了,属性动画 + 自定义 View 配置 Path 和贝塞尔曲线 能做出很多复杂的漂亮的效果。


(3)矢量动画


  • svg

  • VectorDrawable

  • AnimatedVectorDrawable


矢量动画大家可能比较陌生,Android Studio 支持将一个 Svg 文件导入生成一个 path 路径,用 VectorDrawable 和 AnimatedVectorDrawable 来实现矢量动画。但是需要在 Android5.0 以上。


4 . Material Design 系列


Android 5.0 开始,Google 推出了 Material Design 设计规范,Android support 包中也加入了符合 Material Design 设计规范的各种控件:


  • 1,Toolbar 的使用

  • 2,AppbarLayout+CollapsingToolbarLayout

  • 3, Behavior 相关:


(1),BottomSheetBehavior


(2), BottomSheetDialog


(3),SwipeDismissBehavior


(4), 自定义 Behavior


  • 4, TextInputLayout + TextInputEditText

  • 5, TabLayout

  • 6, BottomNavigationView

  • 7 , CardView 阴影卡片

  • 8 ,Snackbar , FloatActionButton


利用这些控件,可以做出很多符合 material Design 设计规范的效果和动画。


更多关于 Material Design 的用法,请看我的系列博客


http://www.jianshu.com/u/35167a70aa39


5 . Android 多媒体


多媒体相关也是 Android 开发中比较重要并且较难的一块了,它设计到相机、视频、音频相关的开发。


相机开发:


1, 使用自带的相机 APP 拍照


2,系统相册选择照片


3,系统相机或相册获取的照片裁剪


4,使用相机 API 开发相机:


(1), Android 5.0 (API 21 )以下 使用 Camera API


(2) , Android 5.0 以上使用 Camera2 API


5 ,自定义相册开发


6 , 自定义裁剪界面


Android 视频开发:


(1)视频播放


MediaPlayer


VideoView


(2)视频编解码


音频开发:


AudioPlayer


音乐播放器


音视频开发这一块门槛较高,但是这也是比较吃香的一个领域,把这一块吃透了,你的优势就很大了,现在的直播这么火,对于这一块的需求还是比较大的。


6 . Git


Git 版本控制 也是我们常用的,熟悉各种 Git 命令。对于代码的提交、代码拉取,历史版本的查看等 Android Studio 已经集成好了,但是还是推荐大家日常用命令行方式操作,这样有助于我们熟悉各种 Git 命令。


7. Android 权限适配


Android 6.0 以上权限适配。


8 . Gradle


  • 自定义 Gradle 插件

  • Gradle 多渠道打包


以上就是 Android 相关的一些知识点。

四、学习了解开源库

Github 绝对是我们程序员的宝贵财富,上面有各种各样的开源库,只有你想不到的,没有你找不到的。各大公司也有各种各样的开源的解决方案。


以下是比较流行的一些框架:


图片加载框架:


  • Universal-Imageloader

  • Picasso

  • Glide

  • Frecssco


网络相关框架:


  • Retrofit

  • Okhttp

  • Volley


RxJava :


  • RxJava

  • RxAndroid

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Android开发如何进阶,薪资如何跟上年龄的脚步?,超全Android中高级面试复习大纲