2024年4月8日发(作者:)

2023年android面试题整理

2023年android面试题整理篇一

1、 有一个一维整型数组int[] data保存的是一张宽为width,高为height

的图片像素值信息。请写一个算法,将该图片所有的白色不透明(0xffffffff)

像素点的透明度调整为50%。

答:像素数组int[]data里就是一个个像素的颜色值,你循环和0xffffffff

比较,如果相等,那么就把这个值换成0x88ffffff就行了,这样像素数组里所

有的白色不透明(0xffffffff)都变成的半透明

2、 你如何评价Android系统?优缺点。

优点:开源特性,得到众多厂商支持。

软件发展很快。

界面UI,系统优化不错。

缺点:版本过多,升级过快。

用户体验不一致。

3、android中的动画有哪几类,他们的特点和区别是什么?

两种,

一种是Tween动画(补间动画),

一种是Frame动画(逐帧动画)。

Tween动画:使试图组件移动,放大,缩小以及产生透明度的变化。

Frame动画:传统的动画方法,通过顺序的播放排列好的图片来实现,类

似电影。

4、横竖屏切换时activity的生命周期

不设置Activity的android:configChanges时,切屏会重新调用各个生命

周期,切横屏时会执行一次,切竖屏时会执行两次。

设置Activity的android:configChanges="orientation"时,切横,竖屏

时生命周期只会执行一次。

设置Activity的

android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用

声明周期,只会执行onConfigurationChanged方法。

进程与线程

当一个程序开始运行时,它就是一个进程,进程包含运行中的程序和程序

所使用的内存和系统资源。而一个进程又是由多个线程组成的。引入线程优点是

易于调度,提供开发效率,通过线程可以方便有效的实现并发,进程可创建多个

线程来执行同一个程序的不同部分,开销小,创建线程比创建进程要快,所需开

销很少。

2023年android面试题整理篇二

1. 请介绍下android的数据存储方式。

SharedPreferences方式

用来存储”key-value paires”格式的数据,它是一个轻量级的键值存储

机制,只可以存储基本数据类型,可以通过它保存一些上次用户所做的修改操作

文件存储方式

它通过FileInputStream和FileOutputStream对文件进行操作。但是在

Android中,文件是一个应用程序私有的,一个应用程序无法读写其他应用程序

的文件,如果要共享数据就用Content Providers

SQLite数据库方式

Android提供的一个标准的数据库,支持SQL语句

内容提供器(Content provider)方式

是所有应用程序之间数据存储和检索的桥梁,它的作用是使得各个应用程

序之间实现数据共享

网络存储方式

通过网络来存储和获取数据

2.请介绍下ContentProvider是如何实现数据共享的。

Android提供了ContentProvider,一个程序可以通过实现一个

ContentProvider的抽象接口将自己的数据完全暴露出去,而且

ContentProviders是以类似数据库中表的方式将数据暴露,也就是说

ContentProvider就像一个“数据库”。那么外界获取其提供的数据,也就应该

与从数据库中获取数据的操作基本一样,只不过是采用URI来表示外界需要访问

的“数据库”。外部访问通过ContentResolver去访问并操作这些被暴露的数据。

3.如何启用Service,如何停用Service。

Intent intent = new Intent();

ss(this,);

startService(intent);

stopService(intent);

4. 请解释下在单线程模型中Message,Handler,Message Queue,Looper之

间的关系。

Message

Message消息,理解为线程间交流的信息,处理数据后台线程需要更新UI,

则发送Message内含一些数据给UI线程。

Handler

Handler处理者,是Message的主要处理者,负责Message的发送,Message

内容的执行处理。后台线程就是通过传进来的 Handler对象引用来

sendMessage(Message)。而使用Handler,需要implement 该类的

handleMessage(Message)方法,它是处理这些Message的操作内容,例如Update

UI。通常需要子类化Handler来实现handleMessage方法。

Message Queue

Message Queue消息队列,用来存放通过Handler发布的消息,按照先进

先出执行。 每个message queue都会有一个对应的Handler。Handler会向

message queue通过两种方法发送消息:sendMessage或post。这两种消息都会

插在message queue队尾并按先进先出执行。但通过这两种方法发送的消息执行

的方式略有不同:通过sendMessage发送的是一个message对象,会被 Handler

的handleMessage()函数处理;而通过post方法发送的是一个runnable对象,

则会自己执行。

Looper

Looper是每条线程里的Message Queue的管家。Android没有Global的

Message Queue,而Android会自动替主线程(UI线程)建立Message Queue,但

在子线程里并没有建立Message Queue。所以调用nLooper()得到