2021年国内一线互联网大厂内部题库Android面试(Android篇)

本文详细探讨了Android面试中常见的技术问题,涵盖Android基础、数据库操作、进程间通信、线程与并发、内存管理、UI框架、事件处理等多个方面,结合实例深入解析了Android开发的关键知识点,适合准备Android面试的技术人员参考。
摘要由CSDN通过智能技术生成

android基础

1.数据库的操作类型有哪些,如何导入外部数据库?

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

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

2.是否使用过本地广播,和全局广播有什么差别?

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

3.是否使用过intentServer,作用是什么,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机制是面向接口的,像COMCorba一样,但是更加轻量级。它是使用代理类在客户端和实现端传递数据。

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()

关于文中所说到的知识点,我都放在GitHub上了,如有需要,可自行查看。
同时我也推荐一下我的Android交流裙Android技术交流不仅可以免费获取资料,而且还能有一帮大佬为你摆平关于Android的技术问题~

 

 

 

fragment 特点

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

5.描述一次网络请求的流程(新浪)

6.Handler、ThreadHandlerThread的差别(小米)

http://blog.csdn.net/guolin_blog/article/details/9991569

http://droidyue.com/blog/2015/11/08/make-use-of-handlerthread/

AndroidThread(java.lang.Thread -> java.lang.Object)描述可以看出,AndroidThread没有对JavaThread做任何封装,但是Android提供了一个继承自Thread的类HandlerThread(android.os.HandlerThread -> java.lang.Thread),这个类对Java的Thread做了很多便利Android系统的封装。

android.os.Handler可以通过Looper对象实例化,并运行于另外的线程中,Android提供了让Handler运行于其它线程的线程实现,也是就HandlerThreadHandlerThread对象start后可以获得其Looper对象,并且使用这个Looper对象实例Handler

7.低版本SDK实现高版本api(小米)

自己实现或@TargetApi annotation

8.编译安卓系统(百度)

1.创建一个大小写敏感的磁盘镜像文件 2.首先你要安装的就是Xcode 3.macports.org安装MacP

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值