国内一线互联网公司内部面试题库二:Android(一)

1,如何导入外部数据库

  把原数据库包括在项目源码的 res/raw

  android系统下数据库应该存放在 /data/data/com..(package name)/ 目录下,所以我们需要做的是把已有的数据库传入那个目录下.操作方法是用FileInputStream读取原数据库,再用FileOutputStream把读取到的东西写入到那个目录.

  [Android]如何导入已有的外部数据库

2,本地广播和全局广播有什么差别

  BroadcastReceiver是针对应用间、应用与系统间、应用内部进行通信的一种方式

  LocalBroadcastReceiver仅在自己的应用内发送接收广播,也就是只有自己的应用能收到

  因广播数据在本应用范围内传播,不用担心隐私数据泄露的问题。 不用担心别的应用伪造广播,造成安全隐患。 相比在系统内发送全局广播,它更高效。

  本地广播和全局广播的一大区别就是,本地广播不能通过静态的方式来注册接受。其实这也可以理解,因为静态注册是要是让程序在未启动的情况下也能接受广播,发送本地广播的时候程序可定启动了。

3,intentService作用是什么,AIDL解决了什么问题-小米

  生成一个默认的且与主线程互相独立的工作者线程来执行所有传送至onStartCommand() 方法的Intetnt。

  生成一个工作队列来传送Intent对象给你的onHandleIntent()方法,同一时刻只传送一个Intent对象,这样一来,你就不必担心多线程的问题。在所有的请求(Intent)都被执行完以后会自动停止服务,所以,你不需要自己去调用stopSelf()方法来停止。

  该服务提供了一个onBind()方法的默认实现,它返回null

  提供了一个onStartCommand()方法的默认实现,它将Intent先传送至工作队列,然后从工作队列中每次取出一个传送至onHandleIntent()方法,在该方法中对Intent对相应的处理。

  AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码。如果在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,就可以使用AIDL生成可序列化的参数。 AIDL IPC机制是面向接口的,像COM或Corba一样,但是更加轻量级。它是使用代理类在客户端和实现端传递数据。

4,Activity Window View三者的差别,fragment的特点-360

  Activity像一个工匠(控制单元),Window像窗户(承载模型),View像窗花(显示视图) LayoutInflater像剪刀,Xml配置像窗花图纸。

  1)在Activity中调用attach,创建了一个Window
  2)创建的window是其子类PhoneWindow,在attach中创建PhoneWindow
  3)在Activity中调用setContentView(R.layout.xxx)
  4)其中实际上是调用的getWindow().setContentView()
  5)调用PhoneWindow中的setContentView方法
  6)创建ParentView:作为ViewGroup的子类,实际是创建的DecorView(作为FramLayout的子类)
  7)将指定的R.layout.xxx进行填充,通过布局填充器进行填充【其中的parent指的就是DecorView】
  8)调用到ViewGroup
  9)调用ViewGroup的removeAllView(),先将所有的view移除掉
  10)添加新的view:addView()

Fragment 特点

  1)Fragment可以作为Activity界面的一部分组成出现;
  2)可以在一个Activity中同时出现多个Fragment,并且一个Fragment也可以在多个Activity中使用;
  3)在Activity运行过程中,可以添加、移除或者替换Fragment;
  4)Fragment可以响应自己的输入事件,并且有自己的生命周期,它们的生命周期会受宿主Activity的生命周期影响。

5,描述一次网络请求的流程-新浪

国内一线互联网公司内部面试题库二:Android(一)_第1张图片
image.png

你可能感兴趣的:(国内一线互联网公司内部面试题库二:Android(一))