安卓初中级开发基础知识整理(面试自用)


前言

今天闲暇之余来整理一下工作中经常使用知识,比较枯燥和基础,特此记录,我称其为安卓八股文,当然安卓的东西非常的多,这里只记录比较常见的,话虽如此,也很多很多了。

下文会比较枯燥,因为是整理所以很多都是链接

在这里插入图片描述


一、Android之四大组件、六大布局、五大存储

Android之四大组件、六大布局、五大存储

四大组件
在这里插入图片描述

二、安卓线程原理

1、基础使用

继承Thread类
实现Runnable接口
Handler
2、复合使用

AsyncTask
HandlerThread
IntentService
3、高级使用

线程池(ThreadPool)
Android实现多线程的几种方式

Handler的基本使用+细节解说Handler源码

三、安卓开源框架

一些主流的:
网络框架
OKHttp详解
android retrofit 从无知到入门(retrofit是基于OKHttp封装)

sqllite数据库框架
greendao
room(jecpack)

数据绑定
Android ButterKnife(黄油刀)的使用

响应式编程框架
rxjava

小众的(博主自己工作涉及到的,还是比较火的,这边就不分类了)

andserver(网络框架)
zxing(扫码)

第三方接入经验,这个的话就多了,支付宝微信讯飞极光之类的巴拉巴拉,很多,要有自己的经历才能说得出来了

三、安卓架构MVC、MVP、MVVM

MVC、MVP、MVVM之间的区别和联系

四、设计模式

虽然是在java语言角度上写的,但是写的真的非常好
Java常见设计模式总结

面试题整理

不是什么大厂,就是博主自己去面试问到的一些问题,比较基础,但我第一次遇到的时候真的有没反应过来的问题,整理过的知识点的面试题就没有单独拿出来了

1.Activity A 跳转到 Activity B,生命周期的执行过程

Activity A 跳转到 Activity B,生命周期的执行过程
妈妈不担心系列之Activity的生命周期
这个文章题目比较。。。但是内容比较全

2.Android广播接收器(BroadcastReceiver)的启动优先级问题

Android广播接收器(BroadcastReceiver)的启动优先级问题

3.五大存储(见上文 Android之四大组件、六大布局、五大存储)

4.Android自定义view的种类

1.自绘控件,继承view,重写onDraw方法,在其中进行绘制,需要自己适配边距等等
2.继承ViewGroup派生的特殊Layout,主要用于实现自定义布局,也需要自己适配边距等
3.继承特定的View(如TextView等),不用自己适配支持wrap_conten,match_parent,可以给其加入新的功能
4.继承特定的ViewGroup,例如linearlayout,多用于多个控件的组合view,也不用自己去做适配
5.(个人补充,依据自己的经验说)activity设置弹窗模式

5.Activity 的四种启动模式

standard
  每次启动都会重新创建一个实例,不管这个 Activity 在栈中是否已经存在。谁启动了这个 Activity,那么 Activity 就运行在启动它的那个 Activity 所在的栈中。用 Application 去启动 Activity 时会报错,原因是非 Activity 的 Context 没有任务栈。解决办法是为待启动 Activity 制定 FLAG_ACTIVITY_NEW_TASH 标志位,这样就会为它创建一个新的任务栈。
singleTop
 如果新 Activity 位于任务栈的栈顶,那么此 Activity 不会被重新创建,同时回调 onNewIntent 方法。onCreate 和 onStart 方法不会被执行。
singleTask
  这是一种单实例模式。如果不存在 activity 所需要的任务栈,则创建一个新任务栈和新 Activity 实例;如果存在所需要的任务栈,不存在实例,则新创建一个 Activity 实例;如果存在所需要的任务栈和实例,则不创建,调用 onNewIntent 方法。同时使该 Activity 实例之上的所有 Activity 出栈。
参考:taskAffinity 属性用于标识 Activity 所需要的任务栈,相同标识的 Actvity 会在同一个栈中。
singleIntance
  单实例模式。具有 singleTask 模式的所有特性,同时具有此模式的 Activity 只能独自位于一个任务栈中。所以每次都会新建一个栈。
可以通过命令行 adb shell dumpsys activity 命令查看栈中的 Activity 信息。

6.单例模式下如果想要三个实例怎么写

在判空的地方根据不同的次数返回不同的实例(这个是个人理解,如有错误请在评论区加以指正)

后面问了技术群的群友才明白面试官想问的是什么,大佬说估计他是想问 线程间想实现不同的单例怎么做 因为平时说的单例是进程间的,然后面试官菜一点 没问到点子上。

然后还有说问的是设计模式中的享元模式,因为不常用,一是没有想起来(懊恼)

7.Java四种引用

这个问题是我自己说用到了弱引用解决activity内存泄漏问题衍生出来的。
Java四种引用

8.Android 事件分发机制

这个问题应该也比较基础吧,但是平常开发当中也就只是用一下onTouchEvent()这个方法,没有深究过,还是应该掌握的
Android 事件分发机制

9.插件化

这个问题是面试的人可能问的比较深了,我没怎么答得上来因为我开发的项目只有组件化没有插件化,但是如果要往这个方面发展的话,还是需要掌握的,初中级的话稍微了解说得出来应该就没问题了
【Android 插件化】插件化简介 ( 组件化与插件化 )


总结

站在巨人的肩膀上,吃透找工作轻轻松松啦,后面再有面试再补充
2022.7.20收到了一家满意的offer,本篇文章在下次换工作的时候再更新,当然可能就不是初中级了,哈哈,

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我怀里的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值