安卓开发考试题库

直接背好吧,我自己也不会去看解析,答案直接给
时间也不多了,在这提前祝大家新年快乐,加油把这最后一科秒了吧

我也求求了,不要让我反复更新了QAQ

大题的话,这个还真不好背,正常人都是Ctrl大法完成的,尽量背吧

单选题

  1. Android查看应用程序日志的工具是( A )

    • A、 logcat
    • B、 console
    • C、 ddms
    • D、 tomcat
  2. 在程序中输出一条日志,下面代码正确的是( B )

    • A、Log.i(context,”msg”);
    • B、Log.i(“tag”,”msg”);
    • C、Log.i(“msg”);
    • D、Log.i();
  3. Android项目中放置常量的string.xml位于哪个目录下( C )

    • A、 res/layout
    • B、 layout
    • C、res/values
    • D、assets
  4. ConstraintLayout中当你想要让多个视图以等宽或等高的方式排列时,你应该使用什么?( C )

    • A. app:layout_constraintWidth_default=”match_parent”
    • B. app:layout_constraintHeight_default=”wrap_content”
    • C. app:layout_constraintDimensionRatio=”1:1”
    • D. app:layout_constraintWidth_percent 和app:layout_constraintHeight_percent
  5. 如果在帧布局FrameLayout中放入三个所有属性值相同按钮,能够在屏幕上显示的是( A )

    • A、最后一个被添加的按钮
    • B、第一个被添加的按钮
    • C、第二个被动添加的按钮
    • D、三个按钮都能显示
  6. 为了给一个线性布局设置自身相对于父控件的位置,应该怎么设置( A )

    • A、 android:layout_gravity=”right”
    • B、 android:gravity=”right”
    • C、 android:orientation=”vertical”
    • D、 android:layout_height=”match_parent”

  7. 在程序中得到一个按钮对象b后,向此按钮添加点击事件,下面代码正确的是( A

    • A、 b.setOnClickListener( )
    • B、 b.setOnclickListener( )
    • C、 b.setOnclick( )
    • D、 b.setOnLongClickListener( )
  8. 下列不属于android布局的是 ( C )

    • A、FrameLayout
    • B、LinearLayout 
    • C、TableRow
    • D、ConstraintLayout
  9. 关于Handler的说法不正确的是( A )[本人认为是D]

    • A、它实现不同进程间通信的一种机制
    • B、 它避免了在新线程中刷新UI的操作
    • C、 它采用队列的方式来存储Message
    • D、 它实现不同线程间通信的一种机制
  10. Activity生命周期中最后一个需要执行的方法是什么( D

    • A、onStart
    • B、onCreate
    • C、onStop
    • D、onDestroy
  11. Android是如何组织Activity的( B

    • A、 以堆的方式组织Activity
    • B、 以栈的方式组织Activity
    • C、 以树形方式组织Activity
    • D、 以链式方式组织Activity
  12. 一个应用程序如果要访问另一个应用程序的数据库,需要通过( C )来实现

    • A、BroadcastReceiver
    • B、Activity
    • C、ContentProvider
    • D、Service
  13. RecyclerView.Adapter的哪个方法用于创建新的ViewHolder实例( A )

    • A. onCreateViewHolder()
    • B. onBindViewHolder()
    • C. getItemCount()
    • D. onAttachedToRecyclerView()
  14. 下列关于内存回收的说明,哪个是正确的( B

    • A.程序员必须创建一个线程来释放内存
    • B.内存回收程序负责释放无用内存
    • C.内存回收程序允许程序员直接释放内存
    • D.内存回收程序可以在指定的时间释放内存对象
  15. 在Android Oreo (API level 26)及以上版本中,创建通知时必须指定什么( B )

    • A. Notification ID
    • B. Notification Channel
    • C. Notification Title
    • D. Notification Icon
  16. Activity生命周期中第一个需要执行的方法是什么( B

    • A、onStart
    • B、onCreate
    • C、onReStart
    • D、onResume
  17. 关于线程说法不正确的是( B )[本人认为是A]

    • A、 在 android 中,我们可以在主线程中,创建一个新的线程
    • B、 在创建的新线程中,它可以操作 UI 组件
    • C、 新线程可以和 Handler 共同使用
    • D、 创建的 Handler 对象,它隶属于创建它的线程
  18. 一个Intent对象调用getExtras( )方法返回的是一个什么类型( D

    • A、int
    • B、string
    • C、Serializable
    • D、Bundle
  19. 关于service生命周期的onCreate()和onStartCommand()说法正确的是( D

    • A、当第一次启动的时候先后调用onStartCommand()和onCreate()方法
    • B、当第一次启动的时候只会调用onCreate()方法
    • C、如果service已经启动,将先后调用onCreate()和onStartCommand()方法
    • D、如果service已经启动,只会执行onStartCommand()方法,不再执行onCreate()方法
  20. 关于 BroadcastReceiver 的说法不正确的是( B

    • A、是用来接收广播 Intent 的
    • B、一个广播 Intent 只能被一个订阅了此广播的 BroadcastReceiver 所接收
    • C、对有序广播,系统会根据接收者声明的优先级别按顺序逐个执行接收者
    • D、接收者声明的优先级别在的 android:priority 属性中声明,数值越大优先级别越高
  21. 使用HttpUrlConnection实现移动互联时,设置读取超时属性的方法是( B

    • A、setTimeout()
    • B、setReadTimeout()
    • C、setConnectTimeout()
    • D、setRequestMethod()
  22. 在ConstraintLayout中,如何设置一个视图与父布局顶部对齐?( A )

    • A. app:layout_constraintTop_toTopOf=”parent”
    • B. android:layout_alignParentTop=”true”
    • C. app:layout_constraintStart_toStartOf=”parent”
    • D. android:gravity=”top”
  23. 以下属于调用摄像头硬件的权限的是:( A

1
2
3
4
A.<uses-permission android:name="android.permission.CAMERA"/>
B.<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
C.<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
D.<uses-permission android:name="android.permission.INTERNET"/>
  1. 什么是Intent的主要用途?( D )

    • A. 启动服务
    • B. 发送广播
    • C. 进行组件间通信
    • D. 所有上述选项
  2. 使用HttpURLConnection的Get方式请求数据时,下列哪个属性是必须设置的( B

    • A、connection.setDoOutput(true)
    • B、connection.connect()
    • C、connection.setRequestMethod(“POST”)
    • D、connection.setDoInput(true)
  3. 对于AlertDialog的描述不正确的是( A )

    • A、使用new关键字创建AlertDialog的实例
    • B、对话框的显示需要调用show方法
    • C、setPositiveButton方法是用来加确定按钮的
    • D、setNegativeButton方法是用来加取消按钮的
  4. Android解析xml的方法中,将整个文件加载到内存中进行解析的是?( C )

    • A、SAX
    • B、PULL
    • C、DOM
    • D 、JSON
  5. 下列对SharePreferences存、取文件的说法中不正确的是:( C

    • A、属于移动存储解决方案
    • B、sharePreferences处理的就是key-value对
    • C、读取xml文件的路径是/sdcard/shared_prefx
    • D、信息的保存格式是xml
  6. 下列说法哪一个不正确( B

    • A、Java程序经编译后会产生字节码
    • B、java虚拟机加载.java文件
    • C、javac是编译的命令
    • D、javadoc是文档化的命令
  7. 关于Socket通讯正确的是( A

    • A、服务器端需要ServerSocket需要绑定端口号
    • B、服务器端需要ServerSocket需要绑定端口号和IP地址
    • C、客户端需要Socket,需要绑定端口号
    • D、客户端需要ServerSocket,需要绑定端口号
  8. 在Android中,哪种类型的存储适用于保存小量的数据?( B )

    • A. SQLite数据库
    • B. SharedPreferences
    • C. 文件系统
    • D. 网络存储
  9. ScrollView可以有几个子view ( A

    • A. 1个
    • B. 2个
    • C. 3个
    • D. 无限制
  10. Activity从可见状态变为半透明遮盖状态时,生命周期中哪个方法被调用( B

    • A.onStop()
    • B. onPause()
    • C. onRestart()
    • D.onStart()
  11. 一个应用程序如果要访问另一个应用程序的数据库,需要通过( C )来实现

    • A.BroadcastReceiver
    • B.Activity
    • C.ContentProvider
    • D.Service

多选题

  1. 下面关于Android触摸事件监听器的说法正确的是( ACD

    • A. 处理短时间单击按钮事件需要实现OnClickListener接口  
    • B. 处理长时间单击按钮事件需要实现OnTouchListener接口  
    • C. 处理屏幕触摸事件需要实现OnTouchListener接口  
    • D. 响应屏幕触摸事件的方法为onTouch()
  2. 关于线程说法正确的是( ACD

    • A. 在 android 中,我们可以在主线程中,创建一个新的线程
    • B. 在创建的新线程中,它可以操作 UI 组件
    • C. 新线程可以和 Handler 共同使用
    • D. 创建的 Handler 对象,它隶属于创建它的线程
  3. 下列哪些可以用来实现Activity之间的数据传递?( ABD )[本人认为是ACD]

    • A. Intent
    • B. Bundle
    • C. SharedPreferences
    • D. Static Variables
  4. 哪些是Android支持的网络请求方式?( ABCD

    • A. GET
    • B. POST
    • C. PUT
    • D. DELETE
  5. 下列哪些布局不能实现内部控件的相互重叠 ( AC

    • A. LineaLayout
    • B. ConstraintLayout
    • C. TableLayout
    • D. FrameLayout
  6. 下面说法错误的是( ABCD

    • A.Android采用单线程模型 
    • B.Android会默认会为线程创建一个关联的消息队列 
    • C.Handler会与多个线程以及该线程的消息队列对应 
    • D.程序组件首先通过Handler把消息传送给Looper,Looper把消息放入队列
  7. 对于AlertDialog的描述正确的是( BCD

    • A.使用new关键字创建AlertDialog的实例
    • B.对话框的显示需要调用show方法
    • C.setPositiveButton方法是用来加确定按钮的
    • D.setNegativeButton方法是用来加取消按钮的
  8. 在android中使用Menu时可能需要重写的方法有 ( AC )

    • A.onCreateOptionsMenu()
    • B.onCreateMenu()
    • C.onOptionsItemSelected()
    • D.onItemSelected()
  9. 下列代码可以为TextView设置所显示文字的语句是( AB

    • A,在配置文件中用属性 android:text=”abc”
    • B,在程序中用TextView对象的setText(“abc”)方法
    • C,在程序中用TextView的静态方法setText(“abc”)
    • D,在配置文件中用属性 android:value=”abc”
  10. 下面关于Intent对象与Intent过滤器的说法正确的是( ACD

    • A. 为了通过匹配,Intent中的每个种类必须与过滤器中的种类匹配
    • B. 为了通过匹配,过滤器中的种类必须是Intent对象中种类的子集
    • C. 为了通过匹配,Intent对象中的种类必须是过滤器中种类的子集
    • D. 过滤器中必须包含至少一个标签
  11. 下列哪些是RecyclerView中常用的布局管理器?( ABC )

    • A. LinearLayoutManager
    • B. GridLayoutManager
    • C. StaggeredGridLayoutManager 
    • D. FrameLayout
  12. 为了提高RecyclerView的性能,可以采取哪些措施?( ABCD

    • A. 使用ViewHolder模式
    • B. 减少视图层次
    • C. 实现缓存策略
    • D. 避免在主线程中执行耗时操作
  13. 下列关于Toast的说法不正确的是( ABD )[本人认为是ACD]

    • A. 只能通过Toast.makeText()来创建  
    • B. 可以显示图片  
    • C. 可以设置显示时间长短 
    • D. 只能显示文本内容

     

  14. 下面关于Intent 的作用的叙述不正确的是 ( BCD )

    • A.intent是连接四大组件的纽带,可以实现界面间切换,可以包含动作和动作数据
    • B.是一段长生命周期的没有用户界面的程序, 可以保持应用在后台运行而不会因为切换页面而消失
    • C.实现应用程序间的数据共享
    • D.处理一个应用程序整体性的工作
  15. 在android中使用Menu时可能需要重写的方法有 ( AC )

    • A.onCreateOptionsMenu()
    • B.onCreateMenu()
    • C.onOptionsItemSelected()
    • D.onItemSelected()
  16. 在web开发领域主要的数据交互格式有( AC

    • A,XML
    • B,HTML
    • C,JSON
    • D,AJAX
  17. 安卓为新建线程与UI线程之间的交互设计了下列哪些类( ABC

    • A. Handler
    • B. Looper
    • C. Message
    • D. Tools

简答题

1.写出代码实现存储字符串“helloworld”到文件名为data的文件中。

1
2
3
4
FileOutputStream outputStream=openFileOutput("data", Context.MODE_PRIVATE);
BufferedWriter bufferedWriter=new BufferedWriter(new OutputStreamWriter(outputStream));
bufferedWriter.write(“helloworld”);
bufferedWriter.close();

2.Android应用程序的4大组件是什么?
**Service Activity BroadcastReceiver ContentProvider **

3、简单介绍怎样实现监听每分钟的时间变化,可用代码表示
编写广播接收器类

1
2
3
4
5
6
7
8
9
10
11
class TimeChangeReceiver extends BroadcastReceiver{
int i=0;
@Override
public void onReceive(Context context, Intent intent) {
if(i==59) {
Toast.makeText(SecondActivity.this, "Time has changed", Toast.LENGTH_SHORT).show();
i=0;
}
else i++;
}
}

动态注册广播接收器:

1
2
3
4
IntentFilter intentFilter=new IntentFilter();
intentFilter.addAction("android.intent.action.TIME_TICK");
TimeChangeReceiver timeChangeReceiver=new TimeChangeReceiver();
registerReceiver(timeChangeReceiver,intentFilter);

4、写出Activity的四种启动模式(4分)
standard singletop singletask singleInstance

5、使用SharedPreferences存储两个参数,username=“lucy”,password=“123456”,写出代码。

1
2
3
4
5
SharedPreferences sharedPreferences= getApplicationContext().getSharedPreferences("userInfo",0);
SharedPreferences.Editor editor=sharedPreferences.edit();
editor.putString("username","lucy");
editor.putString("password","123456");
editor.commit();

6、写出Android应用程序开发中的常用布局方式,四种以上。
LinearLayout ConstraintLayout FrameLayout TableLayout

7、已知一个自定义广播接收器的过滤器的action属性为“com.example.broadcasttest”,写出代码发送一条广播,让这个接收器接收到

1
2
Intent intent=new Intent("com.example.broadcasttest");
sendBroadcast(intent);

8、已知一个字符串String hello=“hello world”,简述怎样实现将它分享至朋友圈。可用代码代替。(5分)

1
2
3
4
Intent intent=new  Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT,"文本内容");
startActivity(intent);

9、创建任意一个新项目,在Manifest文件中为FirstActivity设置启动方式为singleTop,为SecondActivity设置启动方式为singleTask,ThirdActivity不作设置。在FirstActivity中点击按钮启动SecondActivity,在SecondActivity中启动ThirdActivity,在ThirdActivity中点击按钮启动SecondActivity。简单画出Activity返回栈的图表示以上几个步骤变化。

编程题:

1、利用广播接收器监听广播,实现每隔2分钟弹出一个Toast显示“helloworld”。
广播接收器类:

1
2
3
4
5
6
7
8
9
10
11
class TimeChangeReceiver extends BroadcastReceiver{
int i=0;
@Override
public void onReceive(Context context, Intent intent) {
if(i==1) {
Toast.makeText(SecondActivity.this, "Time has changed", Toast.LENGTH_SHORT).show();
i=0;
}
else i=1;
}
}

动态注册广播接收器:

1
2
3
4
IntentFilter intentFilter=new IntentFilter();
intentFilter.addAction("android.intent.action.TIME_TICK");
TimeChangeReceiver timeChangeReceiver=new TimeChangeReceiver();
registerReceiver(timeChangeReceiver,intentFilter);

2、编写一个MainActivity和MyService,在MainActivity中的onCreate()函数中为两个按钮分别设置点击事件监听器,点击第一个按钮启动服务弹出一个Toast显示“您点击了第一个按钮”,点击第二个按钮启动服务弹出一个Toast显示“您点击了第二个按钮”在MainAtivity的onCreate()中写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
bt1=(Button) findViewById(R.id.button1);
bt.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,MyService.class);
intent.setAction("button1");
MainActivity.this.startService(intent);
}});
bt2=(Button) findViewById(R.id.button2);
bt2.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
Intent intent2=new Intent(MainActivity.this,MyService.class);
intent2.setAction("button2");
MainActivity.this.startService(intent2);
}});

在MyService的onStartCommand()中写

1
2
3
4
5
6
7
8
9
String action=intent.getAction();             
if(action.equals("button1"))
{
Toast.makeText(this, "您点击了第一个按钮", Toast.LENGTH_SHORT).show();
}
else if(action.equals("button2"))
{
Toast.makeText(this, "您点击了第二个按钮", Toast.LENGTH_SHORT).show();
}

3、写出一个类ActivityCollector实现活动管理,有3个方法分别可以实现添加活动到List、从List移除活动、结束List中的所有活动。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class ActivityCollector {
public static List<Activity> activities=new ArrayList<>();
public static void addActivity(Activity activity){
activities.add(activity);
}
public static void removeActivity(Activity activity){
activities.remove(activity);
}
public static void finishAll(){
for(Activity activity:activities){
if(!activity.isFinishing()){
activity.finish();
}
}
activities.clear();
}
}

4、在上题的基础上结合文字叙述怎样实现随时随地退出程序。
(1)编写一个Activity的基类

1
2
3
4
5
6
7
8
9
10
11
12
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy(){
super.onDestroy();
ActivityCollector.removeActivity(this);
}
}

(2)使所有的Activity都继承BaseActivity
(3)不管在什么地方想要退出程序,只需要调用
ActivityCollector.finishAll()即可

祝各位武运昌隆!