SIM卡的EF文件有什么作用?

SIM卡里的全部文件按树来组织:

主文件MF(Master File)——主文件仅仅有文件头,里面存放着整个SIM卡的控制和管理信息

专用文件DF(Dedicated File)——也是仅仅有一个文件头, 里面存放着整个文件夹的管理控制信息, 专用文件相当于一个文件夹的根.

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


一条短信最长约占多少byte?
中文70(包含标点),英文160个字节


handler机制的原理?

andriod提供了 Handler 和 Looper 来满足线程间的通信。Handler 先进先出原则。

Looper类用来管理特定线程内对象之间的消息
交换(Message Exchange)。

  1)Looper: 一个线程能够产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)

  2)Handler: 你能够构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper从Message Queue
取出)所送来的消息。

  3) Message Queue(消息队列):用来存放线程放入的消息。

  4)线程:UI thread 通常就是main thread,而Android启动程序时会替它建立一个Message Queue。


mvc模式的原理,在android中的应用?
目的:减少耦合性,使组件反复利用
mvc是model,view,controller的缩写,mvc包括三个部分:

  模型(model)对象:是应用程序的主体部分。全部的业务逻辑都应该写在该层。

  视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一能够看到的一层。接收用户的输入,显示处理结果。

  控制器(control)对象:是依据用户的输入,控制用户界面数据显示及更新model对象状态的部分。控制器更重要的一种导航功能,想用用户出发的相关事件,交给m哦得了处理。

在android中mvc的详细体现例如以下:

   1)视图层(view):一般採用xml文件进行界面的描写叙述,使用的时候能够很方便的引入。当然,怎样你对android了解的比較的多了话,就一定 能够想到在android中也能够使用javascript+html等的方式作为view层,当然这里须要进行java和javascript之间的通 信,幸运的是。android提供了它们之间很方便的通信实现。

  2)控制层(controller):android的控制层的重 任通常落在了众多的acitvity的肩上。这句话也就暗含了不要在acitivity中写代码,要通过activity交割model业务逻辑层处理, 这样做的另外一个原因是android中的acitivity的响应时间是5s,假设耗时的操作放在这里。程序就非常easy被回收掉。

  3)模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,当然对业务计算等操作也是必须放在的该层的。


怎样让Activity变成一个窗体?

在AndroidManifest.xml 中定义 Activity的属性:android :theme="@android:style/Theme.Dialog"


后台的Activity被系统回收怎么办?
当你的程序中某一个Activity A 在执行时中。主动或被动地执行还有一个新的Activity B 这个时候A会执行
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putLong("id", 123456);
}

B 完毕以后又会来找A, 这个时候就有两种情况,一种是A被回收,一种是没有被回收。被回收的A就要又一次调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上參数savedInstanceState,没被收回的就还是onResume就好了.

if(savedInstanceState != null){
long id = savedInstanceState.getLong("id");}


Intent的作用


怎样退出Activity?怎样安全退出已调用多个Activity的Application?
对于单一Activity的应用来说,退出非常easy,直接finish()就可以。

当然,也能够用killProcess()和System.exit()这个方案。




Android的数据存储方式
1、使用SharedPreferences存储数据。

2、文件存储数据。

3、SQLite数据库存储数据;

4、使用ContentProvider存储数据;

5、网络存储数据;


Android经常使用的布局
线性/相对/绝对/网格/表格/帧布局


Android的多屏幕适配
a.在manifest里定义你的程序支持的屏幕类型,对应代码例如以下:

<supports-screens android:resizeable=["true"| "false"]

android:smallScreens=["true" | "false"] //是否支持小屏

android:normalScreens=["true" | "false"] //是否支持中屏

android:largeScreens=["true" | "false"] //是否支持大屏

android:xlargeScreens=["true" | "false"] //是否支持超大屏

android:anyDensity=["true" | "false"] //是否支持多种不同密度的屏幕

android:requiresSmallestWidthDp=”integer”

android:compatibleWidthLimitDp=”integer”

android:largestWidthLimitDp=”integer”/>



b.对不同大小的屏幕提供不同的layout。

比方。假设须要对大小为large的屏幕提供支持。须要在res文件夹下新建一个文件夹layout-large/并提供layout。当然。也能够在res
文件夹下建立layout-port和layout-land两个文件夹,里面分别放置竖屏和横屏两种布局文件。以适应对横屏竖屏自己主动切换。

c.对不同密度的屏幕提供不同的图片。

应尽量使用点9格式的图片,如需对密度为low的屏幕提供合适的图片,需新建目录drawable-ldpi/。并放入合适大小的图片。
相应的,medium相应drawable-mdpi /,high相应drawable-hdpi/,extra high相应drawable-xhdpi/。

图片大小的确定:low:medium:high:extra high比例为3:4:6:8。

举例来说。对于中等密度(medium)的屏幕你的图片像素大小为48×
48,那么低密度(low)屏幕的图片大小应为36×36。高(high)的为72×72,extra high为96×96。



ContentProvider是怎样实现数据共享的?
一个程序能够通过实现一个Content provider的抽象接口将自己的数据全然暴露出去,并且Content providers是以类似数据库中
表的方式将数据暴露。Content providers存储和检索数据,通过它能够让全部的应用程序訪问到。这也是应用程序之间唯一共享
数据的方法。



要想使应用程序的数据公开化,可通过2种方法:创建一个属于你自己的Content provider或者将你的数据加入到一个已经存在的
Content provider中,前提是有同样数据类型而且有写入Content provider的权限。



注冊广播有几种方式?有何优缺点?
静态注冊:常驻型,占资源比較大
动态注冊:优先级比較高,广播尾随程序的生命周期


有哪些方法能够实现前后台的数据交换,包含文字和图片?



有哪些方法实现消息的推送?

轮询 : 应用程序应当阶段性的与server进行连接并查询是否有新的消息到达。你必须自己实现与server之间的通信
SMS :(通过发送短信并解析短信内容来获取server端的指令),这个出现的问题是非常难找到免费的网关来发送短信
持久连接 : 主要是Socket通讯,这个攻克了性能问题。可是耗电问题依然没能解决


网络通信的方式
TCP/URL(URLConnection)/HTTP(HttpClient)/WebView/WebService

Activity启动模式
1. standard

模式启动模式。每次激活Activity时都会创建Activity,并放入任务栈中。



2. singleTop

假设在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实
例。仅仅要不在栈顶。都会创建实例)。



3. singleTask

假设在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面
的实例将会被移除栈。

假设栈中不存在该实例,将会创建新的实例放入栈中。



4. singleInstance

在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。

一旦改模式的Activity的实例存在于某个栈中。任
何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,无论谁激活该Activity都会进入同
一个应用中。


NDK是什么

NDK是一些列工具的集合,

NDK提供了一系列的工具,帮助开发人员迅速的开发C/C++的动态库。并能自己主动将so和java 应用打成apk包。

NDK集成了交叉编译器,并提供了对应的mk文件和隔离cpu、平台等的差异。开发者仅仅需简单的改动mk文件就能够创建出so


描写叙述一下android的系统架构

android系统架构分从下往上为linux 内核层、执行库、应用程序框架层、和应用程序层


linuxkernel:负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能。



  libraries和 androidruntime:libraries:即c/c++函数库部分,大多数都是开放源码的函数库。比如webkit,该函数库负责 android网页浏览器的执行,比如标准的c函数库libc、openssl、sqlite等,当然也包含支持游戏开发2dsgl和 3dopengles,在多媒体方面有mediaframework框架来支持各种影音和图形文件的播放与显示,比如mpeg4、h.264、mp3、 aac、amr、jpg和png等众多的多媒体文件格式。android的runtime负责解释和执行生成的dalvik格式的字节码。



  applicationframework(应用软件架构)。java应用程序开发者主要是使用该层封装好的api进行高速开发。

   applications:该层是java的应用程序层,android内置的googlemaps、e-mail、即时通信工具、浏览器、mp3播放 器等处于该层。java开发者开发的程序也处于该层。并且和内置的应用程序具有平等的位置,能够调用内置的应用程序,也能够替换内置的应用程序。


谈谈Android的IPC机制

IPC是内部进程通信的简称, 是共享"命名管道"的资源。Android中的IPC机制是为了让Activity和Service之间能够随时的进行交互,故在Android中该机制。仅仅适用于Activity和Service之间的通信。类似于远程方法调用。类似于C/S模式的訪问。通过定义AIDL接口文件来定义IPC接口。Servier端实现IPC接口,Client端调用IPC接口本地代理。

java中怎样引用本地语言?

能够用JNI接口

DDMS和TraceView的差别?

DDMS是一个程序运行查看器。在里面能够看见线程和堆栈等信息,TraceView是程序性能分析器

android中的动画有哪几类。它们的特点和差别是什么?

  两种,一种是Tween动画、另一种是Frame动画。Tween动画,这样的实现方式能够使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。

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

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



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



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



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

  嵌入式实时操作系统是指当外界事件或数据产生时,可以接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出高速响应。并控制全部实时任务协调一致执行的嵌入式操作系统。主要用于工业控制、 军事设备、 航空航天等领域对系统的响应时间有苛刻的要求,这就须要使用实时系统。又可分为软实时和硬实时两种。而android是基于linux内核的。因此属于软实时。

Activity的生命周期

  和其它手机 平台 的应用 程序 一样,Android的应用程序 的生命周期是被统一掌控 的。也就是说我们写的应用程序命运掌握在别人(系统)的手里,我们不能改变它,仅仅能学习 并适应它。简单地说一下为什么是这样:我们手机在执行 一个应用程序的时候,有可能打进来电话发进来短信 。或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能 。另外系统也不同意你占用太多资源 。至少要保证电话功能吧,所以资源不足的时候也就有可能被干掉。



     在一个Activity正常启动的过程中,他们被调用的顺序是 onCreate -> onStart -> onResume, 在Activity被干掉的时候顺序是onPause -> onStop -> onDestroy ,这样就是一个完整的生命周期。可是有人问了 ,程序正执行着呢来电话了,这个程序咋办?

中止了呗,假设中止的时候新出的一个Activity是全屏的那么:onPause->onStop 。恢复的时候onStart->onResume ,假设打断 这个应用程序的是一个Theme为Translucent
或者Dialog 的Activity那么仅仅是onPause ,恢复 的时候onResume 。



  具体介绍一下这几个方法中系统在做什么以及我们应该做什么:



  onCreate: 在这里创建界面 。做一些数据 的初始化工作



  onStart: 到这一步变成用户可见不可交互 的



  onResume: 变成和用户可交互 的,(在activity 栈系统通过栈的方式管理这些个



  Activity的最上面,执行完弹出栈,则回到上一个Activity)



  onPause: 到这一步是可见但不可交互 的,系统会停止动画 等消耗CPU 的事情从上文的描写叙述已经知道,应该在这里保存
你的一些数据,由于这个时候你的程序的优先级减少,有可能被系统收回。在这里保存的数据。应该在



  onResume里读出来。注意:这种方法里做的事情时间要短,由于下一个activity不会等到这种方法完毕才启动



  onstop: 变得不可见 。被下一个activity覆盖了



  onDestroy: 这是activity被干掉前最后一个被调用方法了,可能是外面类调用finish方法或者是系统为了节省空间将它暂
时性的干掉。能够用isFinishing()来推断它,假设你有一个Progress Dialog在线程中转动。请在onDestroy里把他cancel
掉,不然等线程结束的时候。调用Dialog的cancel方法会抛异常的。



  onPause,onstop, onDestroy。三种状态 下 activity都有可能被系统干掉为了保证程序的正确性,你要在onPause()里
写上持久层操作的代码。将用户编辑的内容都保存到存储介质上(一般都是数据库 )。实际工作中由于生命周期的变化而
带来的问题也非常多,比方你的应用程序起了新的线程在跑。这时候中断了,你还要去维护那个线程,是暂停还是杀掉还
是数据 回滚。是吧?由于Activity可能被杀掉,所以线程中使用的变量和一些界面元素就千万要注意了,一般都是採用
Android的消息机制 [Handler,Message]来处理多线程和界面交互的问题。

Android面试精华的更多相关文章

  1. Android 面试精华题目总结

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24015867 下面的题目都是楼主在android交流群大家面试时遇到的,如果大家 ...

  2. Android面试一天一题(1Day)

    写在前面 该博客思路源于在简书看到goeasyway博主写的Android面试一天一题系列,无copy之意,仅为让自己总结知识点,成长一点点.先感谢各位大神的无私分享~! 关于题目,大部分则出自And ...

  3. Android面试总结 (转)

    1. 下列哪些语句关于内存回收的说明是正确的? (b) A. 程序员必须创建一个线程来释放内存 B. 内存回收程序负责释放无用内存 C. 内存回收程序允许程序员直接释放内存 D. 内存回收程序可以在指 ...

  4. 【Android面试】Android面试题集锦 (陆续更新)(最新2012-6-18) eoe上看到的

    ===============eoeAndroid社区推荐:======================= 1.Android开发新浪面试题[开发者必看哦]下载地址 http://www.eoeand ...

  5. Android面试题目及其答案

    转自:http://blog.csdn.net/wwj_748/article/details/8868640 Android面试题目及其答案 1.Android dvm的进程和Linux的进程, 应 ...

  6. Android面试题目2

    1. 请描述下Activity的声明周期. onCreate->onStart->onRemuse->onPause->onStop->onRestart->onD ...

  7. 百度的android面试总结分析

    今天就是今天上午10点,我接到了百度的电话面试,当然提前和我说了,我的拖延症是有多强烈,以至于我没怎么准备,当然我也想着看看自己的真实水平,在此检讨一下!!!!!!!!!!!!!!!!!!!!!!!! ...

  8. Android面试之高级篇

    结合自己之前去很多大公司的面试经历和自己面别人的一些题,这里做一些总结,Android面试中常见的面试题. 1,Android的Handler运行机制 要解释Handler的运行机制就要讲几个对象:M ...

  9. Linux运维跳槽必备的40道面试精华题(转)

    Linux运维跳槽必备的40道面试精华题(转)   下面是一名资深Linux运维求职数十家公司总结的Linux运维面试精华,助力大家年后跳槽找个高薪好工作. 1.什么是运维?什么是游戏运维? 1)运维 ...

随机推荐

  1. Mybatis动态代理实现函数调用

    如果我们要使用MyBatis进行数据库操作的话,大致要做两件事情: 1. 定义DAO接口 在DAO接口中定义需要进行的数据库操作. 2. 创建映射文件 当有了DAO接口后,还需要为该接口创建映射文件. ...

  2. Mysql数据库事务的隔离级别和锁的实现原理分析

    Mysql数据库事务的隔离级别和锁的实现原理分析 找到大神了:http://blog.csdn.net/tangkund3218/article/details/51753243 InnoDB使用MV ...

  3. cloudstack给已有zone加入物理网络

    默认情况下,假设zone建立完后.cloudstack是不提供加入物理网络接口的. 基础架构- 域 - 物理网络 以下仅仅有我们创建zone的时候加入的物理网络 假设想在这个基础上加入一个物理网络是没 ...

  4. CC2540/CC2541 : Set the Peripheral Being Advertising while It is Being Connected

    There is possible to set your CC254X be scanable when it is in connection. But, based on my test,the ...

  5. Android语音播报、后台播报、语音识别

    Android语音播报.后台播报.语音识别 本文介绍使用讯飞语音实现语音播报.语音识别功能. 讯飞开放平台:http://www.xfyun.cn/index.php/default/index 程序 ...

  6. 性能监控之监控SQL语句

    分析表 analyze table tablename compute statistics for all indexes; analyze table tablename compute stat ...

  7. DB-MySQL:MySQL 语句性能优化

    ylbtech-DB-MySQL:MySQL 语句性能优化 1.返回顶部 1. MySQL概述1.数据库设计 3范式2.数据库分表分库---会员系统() 水平分割(分页如何查询)MyChar .垂直3 ...

  8. Windows 10 Mobile 演示:系统输入法功能演示

    笔者近期会发布多篇<Windows 10 Mobile 演示>文章,帮助想买 Windows 10 手机的朋友了解 Windows 10 Mobile 系统特色.今天给大家带来 Windo ...

  9. (转载) Android开发时,那些相见恨晚的工具或网站!

    huangmindong的专栏       目录视图 摘要视图 订阅 赠书 | 异步2周年,技术图书免费选      程序员8月书讯      项目管理+代码托管+文档协作,开发更流畅 Android ...

  10. 《汇编语言(第三版)》pushf 和 popf 指令,以及标志寄存器在 Debug 中的表示

    pushf 和 popf pushf 的功能是将标志寄存器的值压栈,而 popf 是从栈中弹出数据,输入标志寄存器. pushf 和 popf,为直接访问寄存器提供了方法. 格式 pushf popf ...