美文网首页
求职路上的面试题,学习+回顾!

求职路上的面试题,学习+回顾!

作者: ChamanZou | 来源:发表于2017-06-20 17:38 被阅读0次

    Android dvm的进程和Linux的进程,应用程序的进程是否为同一个概念?

    DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。

    sim卡的EF文件是什么?有何作用

    EF(Elementary File)基本文件——既有文件头,也有文件体, 文件头存放该文件的位置和控制信息, 文件体存放真正的数据, 整个SIM卡中只有基本文件EF有文件体, 也只有基本文件EF才用来存放数据.也就是EF是用来存数据的!

    嵌入式操作系统内存管理有哪几种,各有何特性?

    页式,段式,段页,用到了MMU,虚拟空间等技术

    1.页式存储管理中的逻辑地址有页号和业内地址两部分组成,但作业仍然使用连续的逻辑地址,可把它看作是一维的(线性的)地址结构。用户没有分页的概念,操作系统把作业信息装入主存时才按照块长进行分页。
    2.段式存储管理中的逻辑地址有段号和段内地址两部分组成。他支持用户的分段,每段内的逻辑地址是连续的,而段与段之间的逻辑地址是不连续的。因此段式存储管理中的逻辑地址实际上是采用了二维的地址结构。
    注:MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权。
    其作用:
    1、将虚拟地址映射为物理地址;
    2、提供硬件机制的内存访问授权。

    什么是嵌入式实时操作系统,Android操作系统属于实时操作系统吗?

    实时操作系统:当外界事件或数据产生时,能够接受并以足够快的速度予以处理,处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。
    而Android系统是基于linux内核的,因此属于软实时。

    一条最长的短信息约占多少byte?

    140byte

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

    总共分为三类:

    一、Drawable Animation也就是所谓的帧动画,Frame动画。指通过指定每一帧的图片和播放时间,有序的进行播放而形成动画效果。(可以理解成多张图片播放,图片过大容易OOM。)
    二、View Animation视图动画,也就是所谓补间动画,Tween动画。指通过指定View的初始状态、变化时间、方式,通过一系列的算法去进行图形变换,从而形成动画效果,主要有Alpha、Scale、Translate、Rotate四种效果。注意:只是在视图层实现了动画效果,并没有真正改变View的属性。(影像变化,view的实际位置其实还是移动前的位置。)
    三、Property Animation属性动画,通过不断的改变View的属性,不断的重绘而形成动画效果。相比于视图动画,View的属性是真正改变了。注意:Android 3.0(API 11)以上才支持。(动态改变对象的属性从而达到动画效果。)

    Handler机制的原理?

    简单来说就是Handler 是一个消息分发对象,而消息分发,有赖于消息循环,也就是 Looper,在一个线程中,Looper 阻塞线程,等待消息构成循环,有了消息,分配到对应的 Handler,让他进一步分发处理。

    说说Handler、Looper、Message、MessageQueue之间的关系。

    在主线程创建之后会创建一个Looper对象,创建Looper对象的时候会去创建一个MessageQueue,而Looper是一个轮询器,会不停的轮询MessageQueue中的消息,在获取到消息之后就会把这个消息交给相应的handler来进行处理,在主线程中创建一个handler对象,这个handler对象把一个Message放到消息队列中,然后获取到消息进行处理。

    说说 mvc 模式的原理,它在 android 中的运用。

    1、模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。
    2、视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个 mvc 中用户唯一可以看到的一层,接收用户的输入,显示处理结果。
    3、控制器(control)对象:是根据用户的输入,控制用户界面数据显示及更新 model 对象状态的部分。
    View:自定义 View 或 ViewGroup,负责将用户的请求通知 Controller,并根据 model 更新界面;
    Controller:Activity 或者 Fragment,接收用户请求并更新 model;
    Model:数据模型,负责数据处理相关的逻辑,封装应用程序状态,响应状态查询,通知 View改变,对应 Android 中的 datebase、SharePreference 等。

    请描述一下Activity的生命周期。

    1. 创建 onCreate - 启动onStart – 开始 onResume – 暂停 onPause – 结束 onStop – 销毁onDestroy
    2. 在一个Activity正常启动的过程中,他们被调用的顺序是 onCreate -> onStart -> onResume, 在Activity被干掉的时候顺序是onPause -> onStop -> onDestroy ,这样就是一个完整的生命周期。
    3.如果当前Activity被其他Activity全屏遮挡,责会依次调用onPause->onStop,当重新出现的时候调用->onStart->onResume;如果当前Activity被一个dialog所覆盖,责只调用onPause-,当重新出现的时候调用->onResume即可。

    简述Android系统层次结构是哪些?

    应用程序层(Applications)、应用程序框架层(Application Framework)、系统运行库层(Libraries和androidRuntime)和Linux内核层(linuxKernel)。

    请介绍下Android的数据存储方式。

    Android提供了5种方式存储数据:

    --使用SharedPreferences存储数据;
    --文件存储数据;
    --SQLite数据库存储数据;
    --使用ContentProvider存储数据;
    --网络存储数据。

    IntentService有何优点?

    IntentService会创建独立的worker线程来处理所有的Intent请求;
    会创建独立的worker线程来处理onHandleIntent()方法实现的代码,无需处理多线程的问题;
    所有请求处理完成后,IntentService会自动停止,无需调用stopSelf()方法停止Service;
    为Service的onBind()提供默认实现,返回null;
    为Service的onStartCommand提供默认实现,将请求Intent添加到队列中。

    NDK是什么?

    Android NDK是一个让开发人员在android应用中嵌入使用本地代码编写的组件的工具集。
    Android应用运行在Dalvik虚拟机中。NDK允许开发人员使用本地代码语言(例如C和C++)实现应用的部分功能。这样以代码重用的形式能够给某类应用提供方便,而且在某些情况下能提高运行速度。

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

    Android提供了ContentProvider,一个程序可以通过实现一个ContentProvider的抽象接口将自己的数据完全暴露出去,而且ContentProviders是以类似数据库中表的方式将数据暴露,也就是说ContentProvider就像一个“数据库”。那么外界获取其提供的数据,也就应该与从数据库中获取数据的操作基本一样,只不过是采用URI来表示外界需要访问的“数据库”。外部访问通过ContentResolver去访问并操作这些被暴露的数据。

    Android本身的api并未声明会抛出异常,则其在运行时有无可能抛出runtime异常,你遇到过吗?若有的话会导致什么问题?如何解决?

    会抛出异常,如NullPointerException,TextView没有初始化时,却调用了其方法。打开控制台,查看logcat找出异常并修改。

    什么是ANR,如何避免它?

    如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。
    避免:运行在主线程里的任何方法都尽可能少做事情。特别是,Activity应该在它的关键生命周期方法(如onCreate()和onResume())里尽可能少的去做创建操作。

    什么情况会导致Force Close ?如何避免?能否捕获导致其的异常?

    抛出运行时异常时就会导致Force Close,比如空指针、数组越界、类型转换异常等等。
    捕获:可以通过logcat查看抛出异常的代码出现的位置,然后到程序对应代码中进行修改。
    避免:编写程序时,要思维缜密,在可能出现异常的地方都作相应的处理,增强程序的健壮性。

    相关文章

      网友评论

          本文标题:求职路上的面试题,学习+回顾!

          本文链接:https://www.haomeiwen.com/subject/istaqxtx.html