Android面试题大全

简介: Android面试题大全

Android四大组件

Android六大布局

Android类加载器

Android开发中,不管是插件化还是组件化,都是基于Android系统的类加载器ClassLoader来设计的。只不过Android平台上虚拟机运行的是Dex字节码,一种对class文件优化的产物,传统Class文件是一个Java源码文件会生成一个.class文件,而Android是把所有Class文件进行合并、优化,然后再生成一个最终的class.dex,目的是把不同class文件重复的东西只需保留一份,在早期的Android应用开发中,如果不对Android应用进行分dex处理,那么最后一个应用的apk只会有一个dex文件。


Android中常用的类加载器有两种,DexClassLoader和PathClassLoader,它们都继承于BaseDexClassLoader。区别在于调用父类构造器时,DexClassLoader多传了一个optimizedDirectory参数,这个目录必须是内部存储路径,用来缓存系统创建的Dex文件。而PathClassLoader该参数为null,只能加载内部存储目录的Dex文件。所以我们可以用DexClassLoader去加载外部的apk文件,这也是很多插件化技术的基础。

Android之View介绍

Android进程与线程

Android的数据存储

Android的系统架构

从小到上就是:linux,kernel,lib,dalvik vm,application,framework, app

Android应用程序结构

  1. main code
  2. unit test
  3. manifest
  4. res -> drawable,drawable-xxhdpi,layout,value,mipmap
    mipmap 是一种很早就有的技术了,翻译过来就是纹理映射技术.
    google建议只把启动图片放入。
  5. lib
  6. color

Android中的几种动画

帧动画:指通过指定每一帧的图片和播放时间,有序的进行播放而形成动画效果,比如想听的律动条。

视图动画(补间动画):指通过指定View的初始状态、变化时间、方式,通过一系列的算法去进行图形变换,从而形成动画效果,主要有Alpha、Scale、Translate、Rotate四种效果。注意:只是在视图层实现了动画效果,并没有真正改变View的属性,比如滑动列表,改变标题栏的透明度。


属性动画:在Android3.0的时候才支持,通过不断的改变View的属性,不断的重绘而形成动画效果。相比于视图动画,View的属性是真正改变了。比如view的旋转,放大,缩小。

通过变化属性来达到动画的效果,性能略差,支持点击等事件。android 3.0


Gif动画:原理和帧动画差不多,是canvas画出来。

Android内存溢出内存泄露

// 内存溢出:

out of memory:是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。内存溢出通俗的讲就是内存不够用。

// 内存泄露:

memory leak:是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光

// 内存泄露检测工具 → LeakCanary

跨进程通讯的几种方式

// Android 跨进程通信,像intent,contentProvider,广播,service都可以跨进程通信。

1、Files 文件系统(包括内存映射)

2、Sockets

3、Pipes 管道

、共享内存

5、Intents, ContentProviders, Messenger

6、Binder


intent:这种跨进程方式并不是访问内存的形式,它需要传递一个uri,比如说打电话。

contentProvider:这种形式,是使用数据共享的形式进行数据共享。

service:远程服务,aidl

广播

Android为什么不能在子线程更新UI

Android程序运行时权限与文件系统权限的区别

文件的系统权限是由linux系统规定的,只读,读写等。

运行时权限是对于某个系统上的app的访问权限,允许,拒绝,询问。这个可以防止非法的程序访问敏感的信息。

Activity详解

Service介绍

Context

Context是一个抽象基类。在翻译为上下文,也可以理解为环境,是提供一些程序的运行环境基础信息。

Context下有两个子类,ContextWrapper是上下文功能的封装类,而ContextImpl则是上下文功能的实现类。

而ContextWrapper又有三个直接的子类, ContextThemeWrapper、Service和Application。

其中,ContextThemeWrapper是一个带主题的封装类,而它有一个直接子类就是Activity,所以Activity和Service以及Application的Context是不一样的,只有Activity需要主题,Service不需要主题。


Context一共有三种类型,分别是Application、Activity和Service。

这三个类虽然分别各种承担着不同的作用,但它们都属于Context的一种,而它们具体Context的功能则是由ContextImpl类去实现的,因此在绝大多数场景下,Activity、Service和Application这三种类型的Context都是可以通用的。不过有几种场景比较特殊,比如启动Activity,还有弹出Dialog。出于安全原因的考虑,Android是不允许Activity或Dialog凭空出现的,一个Activity的启动必须要建立在另一个Activity的基础之上,也就是以此形成的返回栈。而Dialog则必须在一个Activity上面弹出(除非是System Alert类型的Dialog),因此在这种场景下,我们只能使用Activity类型的Context,否则将会出错。


getApplicationContext()和getApplication()方法得到的对象都是同一个application对象,只是对象的类型不一样。


Context数量 = Activity数量 + Service数量 + 1(1为Application)

Intent

Intent —— 意图

用于 android 个组件的启动和组件间传递数据

属性:

component —— 目标组件描述

action —— 对Intent执行动作的描述

data —— 对此次Intent操作相关数据的描述

type —— 对Intent所关联的数据类型的描述

category —— 对Intent执行动作的附加信息描述

extra —— 对其他一切附加信息的描述,他是对其他所有附加信息的集合

Intent-Filter —— 意图 过滤器

IntentFilter

IntentFilter —— 意图过滤器

对 Intent 的描述进行过滤操作,对 Intent 的各个属性进行匹配,从而选择出相应的组件来执行 Intent 想要进行的操作

在 IntentFilter中action、category、data都可以存在多个

匹配原则

action —— Intent 中的 action 只要和 IntentFilter 中的任意一个 action 一样即可

category —— Intent 中添加的 category 必须全部在 IntentFileter 定义的 category 中

data —— Intent 中的 data 要和 IntentFilter 中的 data 的描述匹配

type —— Intent 中的 type 要和 IntentFilter 中 data 要求的 mimeType 一致

Handler、Message、MessageQueue、Looper详解

Socket通信相关

EventBus相关

Fragment简介

Java反射机制

apk简单介绍(组成以及打包安装流程)

Android之代码混淆

Android事件冲突原理及解决方法

Android签名算法的原理

目录
相关文章
|
3天前
|
XML Android开发 数据格式
ConstraintLayout 2,Android高级开发面试
ConstraintLayout 2,Android高级开发面试
|
3天前
|
测试技术 Android开发
Android开发规范,性能优化,Android面试2024
Android开发规范,性能优化,Android面试2024
|
3天前
|
消息中间件 安全 关系型数据库
100天!教你逐步突破,快速掌握成为 Python 高手!,安卓面试题及答案
100天!教你逐步突破,快速掌握成为 Python 高手!,安卓面试题及答案
|
3天前
|
XML 前端开发 Android开发
Android架构设计——MVC,滴滴 战略 面试
Android架构设计——MVC,滴滴 战略 面试
|
3天前
|
Android开发 异构计算 前端开发
Android显示原理,安卓自定义view面试
Android显示原理,安卓自定义view面试
|
3天前
|
算法 前端开发 Android开发
Android文字基线Baseline算法的使用讲解,Android开发面试题
Android文字基线Baseline算法的使用讲解,Android开发面试题
Android文字基线Baseline算法的使用讲解,Android开发面试题
|
3天前
|
存储 Android开发
Android插件化-Broadcast篇,2024年最新安卓面试自我介绍
Android插件化-Broadcast篇,2024年最新安卓面试自我介绍
|
3天前
|
XML 存储 Android开发
Android技能树 — Fragment总体小结,2024年最新腾讯面试gm
Android技能树 — Fragment总体小结,2024年最新腾讯面试gm
|
3天前
|
架构师 网络协议 算法
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
|
3天前
|
Android开发
Android高级开发面试题以及笞案整理,实战解析
Android高级开发面试题以及笞案整理,实战解析