[ 面试题 ] 常见题

音视频

================================================

  1. ###### 简述音乐广播的主意以及分?

1):MediaPlayer:重要用以广播音频,可以播放录像,不过一般不用其开展视频播放。
2):SoundPool:
首要用于广播一些短命的声有,首要优势是cpu资源占有量低,反应延迟小。

  • ###### 播放录像的落实情势

1)使用系统自带的播放器来播放,指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型。
//调用系统自带的播放器
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, “video/mp4”);
startActivity(intent);
2)使用VideoView组件来播音, 可以构成MediaController来实现播控,
只是匪可以轻易改动录像的深浅及岗位。
3)使用MediaPlayer和SurfaceView来贯彻,这种措施特别灵活,可以由定义录像播放的轻重缓急及岗位。

其他

================================================

  1. ###### 工作受到怎么着利用线程池的?

Java通过Executors提供四种植线程池,分别吗:
1)newCachedThreadPool创造一个可缓存线程池,如若线程池长度超过处理要,可灵活回收空闲线程,若任由可回收,则新建线程。
2)newFixedThreadPool
制造一个定长线程池,可控制线程最深并发数,超出的线程会在排中伺机。
3)newScheduledThreadPool
成立一个定长线程池,襄助定时及周期性任务尽。
4)newSingleThreadExecutor
创制一个单线程化的线程池,它不过会因而唯一的工作线程来举行任务,保证拥有任务按指定顺序(FIFO,
LIFO, 优先级)执行。

1.throw尽管是恃抛出的一个实际的坏类型。
2.常见以一个措施(类)的讲明处通过throws阐明方法(类)可能扔来底特别音讯,而在点子(类)内部通过throw表明一个现实的非凡音讯。
3.throws平时并非呈现的破获非凡,可由网活动将具备捕获的那多少个信息委给上司方法;
throw则需用户自己捕获相关的不得了,而后在对该展开连锁包装,最终在以包后的好音讯抛出。
假使当艺术被相会生出坏被撇下来而若而且不指望当这些方法体内对这相当举行处理,可以以throws在宣称方法的早晚又注解他可能会面飞起之杀。
4.两者地点不同.

  • ###### 如何用SQLite数据库(dictionary.db文件)与apk文件并发布?

解答:可以拿dictionary.db文件复制到Eclipse Android工程被的res
aw目录中。所有在res
aw目录中之文书未会面叫削减,这样好直接领取该目录中之公文。可以以dictionary.db文件复制到res
aw目录中

  • ###### 通过Intent传递一些二进制数据的章程有哪?

A.以Serializable接口实现系列化,这是java常用之计
B.实现Parcelable接口,这里Andriod的组成部分分类比如Bitmap类就早已实现了,同时Parcelable在Android
AIDL中互换数据也特别广泛

  • ###### 怎么样管一个字符串转换成URI?

uri uri=uri.parse("content://com.changcheng.provider.contactprovider/contact")

  • ###### SIM卡的EF文件来何打算?

    SIM卡的文件系统有谈得来之正规化,紧假诺为着跟手机通讯,SIM本身可以生出友好之操作系

  • ###### Android中列升级注意的题材

在清单文件里的android:versionCode和android:versionName有本文件,
客户端同时储存该使用时版号 (SharedPreferences/Sqlite),
每一回打开应用,去检测服务器版本号与地面版本号是否一致,假设未一
致,则从定义对话框指示是否下载更新

  • ###### 咋样落实音信推送,有咋样方法,各自优缺点,最常使用啊种?

报:实现信息推送的不二法门有五种,分别是轮询,SMS,C2DM,MQTT,XMPP最常使用的凡XMPP,
大家开项目时使用的是XMPP协议
1.XMPP协议,它是千篇一律种植基于XML的传递协议,具有特别强之八面玲珑与而扩大性。它的特征是拿复杂从客户端转移至了劳动器端。GTalk、QQ、IM等还用之协议。
2.轮询:客户端定时错过服务端取或者保持一个加上Socket,从实质讲这多少个不受推送,
而是去服务端拽数据。然则落实简单,首要弱点:耗电,浪费用户流量当
3.Google底C2DM,具体不细瞧说,缺点,服务器在国外,不是颇平静。
4.通过短信模式, 但是老为难找到免费缺信平台
5.MQTT协议, IBM提供的等同栽推送服务,不顶灵活

  • ###### 咋样控制耗电量

【在以下情形下耗电相比较多:】
1、 大数据量的导。
2、 不截止的在网络里切换。
3、 解析大量底公文数据。
【控制耗电量:】
1、
在需要网络连接的程序中,首先检查网络连接是否健康,即便无网络连接,那么就非需实施相应的先后。
2、 使用频率高之数格式和剖析方法。(fastJson,LoganSquare-master)
3、使用GZIP压缩形式下载数据,能减小网络流量
4、 其余一些优化措施:A. 回收java对象,特别是于生之java对像;
B.对固定要求不是太强之语句尽量不要使用GPS定位,可能采纳wifi和倒网络cell定位即可,GPS定位消耗的电量远远当先运动网络稳定;
C.尽量不要使浮点运算;
D.获取屏幕尺寸等信息可以选择缓存技术,不需要开展频繁央。

  • ###### Gps定位以及网络稳定的分别

GPS定位要安装权限android.permission.ACCESS_LOCATION_FINE
网络稳定要安装权限android.permission.ACCESS_LOCATION_COARSE
即使GPS定位于网络稳定在精确度方面再精准,但于进度方面略差有,而且GPS定位相符在室外条件下下,网络稳定于室内,室外都可以。

  • ###### 安卓底系统架构

详尽链接
应用层:使用Java语言举办开之有些应用程序
使用框架层:首假如Google公布之局部操作襄助的类库(API框架),开发人士可以运用这一个类库方便之拓次开发,不过当付出时必须信守框架的开原则
系运行库层:当用安卓框架层开展开时,安卓操作系统会自行使用部分c/c++的库文件来辅助所使用的一一零部件,使该好重好的也序服务;
Linux内核层:安卓操作系统首如果基于Linux内核,程序的安全性,驱动程序,进程管理等都出于Linux内核提供。

  • ###### 安卓上设置了差不两个浏览器,能否指定页面访问;

经一向发送URI把参数带过去,或者经Manifest里之intentfilter的data属性

  • ###### Android dvm的历程与Linux的长河, 应用程序的过程是否也和一个定义?

DVM指dalivk的虚拟机。每一个Android应用程序都以它们好之长河被运行,都享有一个独的Dalvik虚拟机实例。而诸一个DVM都是以Linux
中的一个进程,所以说得当是和一个概念。

  • ###### 依据自己之解描述下Android数字签名。

(1)所有的应用程序都无法不发生数字证书,Android系统不会合设置一个尚未数字证书的应用程序
(2)Android程序包下的数字证书可以是由签定的,不需要一个高于的数字证书机构签约认证
(3)倘使如若规范宣布一个Android程序,必须以一个恰如其分的私钥生成的数字证书来给程序签名,而未能够利用adt插件或者ant工具转的调试证书来发布。
(4)数字证书都是发出有效期的,Android只是以应用程序安装的下才会检查证之有效期。要是程序已经安装在系统受,尽管证书过期也不会晤影响程序的正规效能。

答:
客户端缓存机制是android应用开发被酷重大的同样件工作,使用缓存机制不仅可以为用户节省3G流量,同时以用户体验者呢是分外好的挑三拣四,比如有些情报客户端协理离线格局,也是经缓存机制实现的.缓存机制分为两片,一部分凡文缓存,另一样片段是多媒体文件缓存.
文缓存有零星栽实现:
1)可以以同服务器交互得到的json数据或者xml数据存入sd卡中,并当数据库添加该数据的记录.添加数据库记录时,提供个别单首要字段,一个凡是呼吁的URL,另一个虽说是当地保存后的文本地点,每一遍加载数据在此以前都会合因URL在数据库被搜索
2)将JSON数据解析后装入List<Map>对象吃,然后所有历List,将数据全写副相应的数目库表结构面临,未来每回向服务器发起呼吁以前可以先行在数据库中找寻,如果来一贯归回.
大多媒体文件缓存:紧要倚重图片缓存
图的缓存能够按照近日日子,时间为名字缓存到SD卡中的指定图片缓存目录,同时数据库中举办相应记录,记录道可以应用简单只根本字段控制,一个字段是拖欠图片的URL地址,另一个字段是欠图的本机地址.取图片时因URL在多少中搜寻,假若无则总是服务器下载,下载后还服务器碰着作出相应记录
缓存文件去策略:
1.各级一个模块于历次客户端自动或用户手动更新的时去相应模块的缓存文件,并还生充斥新的缓存文件.
2.在安装界面中提供删除缓存的功效,点击后删除本机所有缓存.

  • ###### Ddms和Traceview的区别

DDMS是一个程序执行查看器,在中可以看见线程和库房等音信,TraceView是次性能分析器

  • ###### 程序中的亲和性的亮

1.默服情形下一个行使之拥有Activity都是颇具同样的affinity,都是打application中继承,application的affinity默认就是manifest的包名。
2.affinity针对Activity来说,就比如是身份证同等,可以告知所在的Task,自己属于内部的平等员。
3.使用场地:
a:依照affinity重新为Activity采取适用的宿主Task;
b:与allowTaskReparenting属性配合;
c:启动Activity使用Intent设置了FLAG_ACTIVITY_NEW_TASK标记。

API(Application Programming
Interface,应用程序编程接口)是片事先定义的函数,目标是提供应用程序与开发人士基于某软件要硬件的因为访同组例程的能力,而而凭需访问源码,或知道中工作体制的细致节.
简言之的话,就是均等套只是供应调用的连串接口.

  • ###### Android项目之目结构

1)src目录:src(即SourceCode),src目录用来存放在应用程序中持有的源代码,代码的源文件一般存放于该目录下的相应的包下。
2)gen目录:gen目录,该目录下一般但是发一个文本,即R文件。该文件夹下边有只R.java文件,R.java是以创建项目时自动生成的,定义该品种有资源的目。
3)Android4.1目录:该文件夹下富含android.jar文件,这是一个Java归档文件,其中富含构建应用程序所欲的富有的AndroidSDK库(如Views、Controls)和APIs。
经android.jar将团结的应用程序绑定到AndroidSDK和AndroidEmulator,这允许而利用所有Android的库和包,且要你的应用程序在当的条件中调剂。
4)assets目录:该目录存放应用程序中选取的标资源文件,如声音录像等,在Android程序中得以经过输入/输出流对该目录中的文件举行读写。
5)res目录:该目录用来存放程序这之所以到之图纸、界面布局文件和XML格式的叙述文件。该目录下发生差不四只目录。新建一Android系列,在res目录下一般会爆发drawable,layout,valuse多少个目录。drawable用来存放图片资源,目录下一般会生两只目录分别寄存高中没有二种植不同分辨率的图样,layout目录用来存放在应用程序的界面布局文件,values目录下存放字符串资源,颜色资源,数组资源等XML文件。
6)AndroidManifest.xml

  • ###### Manifest中放大什么事物

AndroidManifest.xml是每个android程序中必的文书。它放在整个项目标干净目录,描述了package中爆出的机件(activities,services,等等),他们分其余兑现类似,各类力所能及被处理的多寡及起步地点。除了会宣称程序中之Activities,ContentProviders,瑟维斯(Service)s,和IntentReceivers,仍可以指定permissions和instrumentation(安全控制和测试),四分外组件,意图,权限,第三在key,版本号等

  • ###### Application类的用意

Application和Actovotu,Service一样是android框架的一个网组件,当android程序启动时系统会创建一个
application对象,用来囤系统的有消息。平日大家是未欲指定一个Application的,这时系统会自动帮大家创制,假设需要成立好
的Application,也不行粗略创立一个接近继承
Application并当manifest的application标签中开展注册(只待给Application标签扩充个name属性把好之
Application的名字定入即可)。
android系统会为每个程序运行时创制一个Application类的目标还仅创立一个,所以Application能够说凡是单例
(singleton)格局之一个类.且application对象的生命周期是成套程序中最为丰盛之,它的生命周期就顶是程序的生命周期。因为她是大局
的单例的,所以于不同的Activity,Service(Service)中拿到的靶子都是暨一个对象。所以通过Application来举办部分,数据传递,数据共享
等,数据缓存等操作。

  • ###### Activity中 this、getApplicationContext和getActivity的区别

this:代表时,在Activity当中就是表示时的Activity,换句话说就是是Activity.this在Activity当中可以缩写为this.
getActivity()指的凡当fragment当中调用得到他四处的Activity
getApplicationContext():生命周期是全部应用,应用摧毁,它才摧毁。

  • ###### asset和res的区别

报:res/raw和assets的相同点:
二者目录下之文本在包后会合原本封不动的保存在apk包中,不相会受编译成二进制。
res/raw和assets的不同点:
1)res/raw中的文件会吃射到R.java文件中,访问的时一贯下资源ID即
R.raw.filename;assets文件夹下之公文未会面受射到R.java中,访问的下用AssetManager类。
2)res/raw不得以有目录结构,而assets则可以来目录结构,也尽管是assets目录下可重复树文件夹
3)读取文件资源举例:
念取res/raw下的文本资源,通过以下格局赢得输入流来拓展勾勒操作
InputStream is = getResources().openRawResource(R.raw.filename);
读取assets下的文本资源,通过以下措施取得输入流来展开摹写操作

AssetManager am = null; 
am = getAssets(); 
InputStream is = am.open("filename");
  • ###### webservice的UDDI是什么

UDDI 是平等种目录服务,公司方可接纳它们对 Web services
举行登记和找。UDDI,英文为 “Universal Description, Discovery and
Integration”,可翻译为“通用描述、发现和合服务”。

  • ###### 程序运行的权力和文件系统权限的界别

运转时权 Dalvik( android 授权) 文件系统 linux 内核授权

  • ###### 对android系统的知道

5大优势:
一、 开放性
其次、 挣脱运营商的束缚
其三、 丰裕的硬件选用
季、 不让另限制的开发商
五、 无缝结合的Google应用
Android的5大不足
同一、 安全和隐私
次、 首先开卖Android手机的非是无比要命运营商
其三、 运营商如故能够影响至Android手机
季、 同类机型用户减弱
五、 过分依赖开发商少标准配置

  • ###### 手机上选取的传感器来啊

define SENSOR_TYPE_ACCELEROMETER 1 //加速度
define SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力
define SENSOR_TYPE_ORIENTATION 3 //方向
define SENSOR_TYPE_GYROSCOPE 4 //陀螺仪
define SENSOR_TYPE_LIGHT 5 //光线感应
define SENSOR_TYPE_PRESSURE 6 //压力
define SENSOR_TYPE_Java,TEMPERATURE 7 //温度
define SENSOR_TYPE_PROXIMITY 8 //接近
define SENSOR_TYPE_GRAVITY 9 //重力
define SENSOR_TYPE_LINEAR_ACCELERATION 10//线性加速度
define SENSOR_TYPE_ROTATION_VECTOR 11//旋转矢量

================================================
【ListView相关解析和面试题】
【关于Android四万分组件的相互关面试题】
【自定义View全解】
【View事件分发】
【自动登录的兑现】
重多内容要关注
本身的专题
转载请注明
初稿链接:
http://www.jianshu.com/users/c1b4a5542220/latest\_articles

View部分

================================================

  1. ###### Android自定义组件实现思路

帧布局(框架布局)FrameLayout,在斯布局中,所有的子元素统统放于这块区域之左上角,并且前边的子元素直接盖在前的子元素之上,将眼前的子元素部分及所有遮。
线性布局LinearLayout,最常用之均等栽布局模式,所有子控件的针对性齐形式,取决于如何定义
orientation的习性:vertical 垂直方向
,倘若照这种动向有的子控件将随垂直的章程分布于布局上,每行只允许生一个子元素,horizontal水平方向
,这时子控件将会晤盖水平的大方向分布在布局中。
绝布局AbsoluteLayout,又有何不可称作坐标布局,能够直接指定子元素的断然地点,这种布局简单直接,直观性强,但是出于手机屏幕尺寸差距相比较大,使用绝对化定位的服性会相比较不同。
争持布局RelativeLayout,允许子元素指定它们相对于这几个父元素或兄弟元素的职位,这是事实上布局中最为常用之布局模式有。它灵活性大群,当然属性也大抵,操作难度啊要命,属性之间有抵触之的可能也不行,使用相对布局时若是多开些测试。
表布局TableLayout,表格布局TableLayout以行的花样管理子元素,每一样执行是一个TableRow布局对象,当然也能够是普通的View对象,TableRow里每放一个要素即是一模一样列,总列数由列数最多之那一行决定。
网格布局 GridLayout,在Android
4.0遇,新引入的GridLayout网格布局,GridLayout布局使用虚细线将布局划分为实施,列和单元格,也支撑一个控件在举办,列上还生纵横排列。而GridLayout使用的实在是跟LinearLayout类似的API,只然则是修改了一下息息相关的竹签而已,所以对开发者来说,领悟GridLayout如故怪易之事情。

  • ###### UI中padding和margin的区别

Padding 用来指定组件内的内容去组件边界的离;
Margin用来指定控件与控件之间的偏离

  • ###### 哪个组件可以兑现手风琴效果,用来实现设置界面的接近,实现抽屉效果, 悬浮窗口?

答:实现手风琴效果(ExpandableListView)
安界面的近乎(preferenceActivity)保存至sharedpreference中
抽屉效果(slidingDrawer)组件
泛窗口: PopWindow,可以实现类似Dialog和菜单的效应

  • ###### gravity与layout_gravity的区别

Gravity用来指定组件内之情绝对于组件本身的职
Layout_gravity用来指定组件相对于其大组件的职位

  • ###### 如何从定义一个Adapter

此起彼伏自BaseAdapter实现中的章程,listView在起来绘制的时刻,系统率先调用getCount()函数,依照外的回到值拿到listView的长度,然后遵照这尺寸,调用getView()逐一绘制每一行。假使你的getCount()再次回到值是0的说话,列表将未显得平return
1,就光展现一行。系统呈现列表时,首先实例化一个适配器(这里用实例化自定义的适配器)。当手动完成适配时,必
须手动映射数据,这亟需再行写getView()方法。系统以绘制列表的每一行的早晚用调用此措施。getView()有五个参数,position表示将展示的凡第几履,covertView是打布局文件中inflate来之
布局。大家之所以LayoutInflater的法以定义好的main.xml文件提取变成View实例用来展示。然后
将xml文件被的依次零部件实例化(简单的findViewById()方法)。这样尽管得以拿数据对应到各类零部件上了。但是按钮为了响应点击事件,需要吗它填补加点击监听器,这样就能捕获点击事件。至此一个自定
义的listView就水到渠成了,现在让我们回过头起新审视这些过程。系统而绘制ListView了,他率先得到要绘制的此列表的尺寸,然后先导绘制第一推行,怎么绘制呢?调用getView()函数。在此函数里面
首先得到一个View(实际上是一个ViewGroup),然后再实例并安装各类零部件,展现的。好了,绘制了这同一履了。那再绘制下一行,直到绘完截止。在骨子里的运作过程中相会意识listView的各级一行没有典型了,那是因Button抢夺了listView的核心,只要布局文件中将Button设置也无问题就是OK了

  • ###### ViewFlipper和ViewPager的区别

1.ViewFilpper类继承给ViewAnimator类。而ViewAnimator类继承给FrameLayout。
翻ViewAnimator类的源码可以看此类的意假设吗中的View切换提供动画效果。该类有如下几单与动画片相关的不二法门。
2.ViewPager用于贯彻多页面的切换效果,该类存在于谷歌的包容包里面,所以当援时记得在BuilldPath中参加“android-support-v4.jar”

  • ###### View更新页面的五种植办法

Activity.runOnUiThread(Runnable)
View.post(Runnable)
View.postDelayed(Runnable,long);
View.postInvalidate();
View.Invalidate();
当得刷新的地点调用handle的sendMessage来发送信息,然后在handle的getMessage里执行
invaliate 或 postinvaliate

  • ###### 怎么样按照权重实现布局

//权重和父容器orientation有关
horizontal 指水平方向权重 android:layout_width
vertical 指垂直方向权重 android:layout_height
Layout_weight是线性布局,也不怕是LinearLayout里面所以到之
在layout_width设置为fill_parent的时候,layout_weight代表的是您的控件要事先尽可能的不胜,但尽可能大是有度的,即fill_parent.
在layout_width设置为wrap_content的时候,layout_weight代表的凡若的控件要先行尽可能的稍,但以此小是有限度的,即wrap_content.

  • ###### 如何兑现ViewPager

预先在布局文件中调用v4包下的ViewPager,在java代码中开头化ViewPager,并安装adapter(继承Pager艾达(Ada)pter),再安装监听onPageChangeListener

  • ###### SurfaceView实现之规律

SurfaceView,它有独立的绘图表面,即其不跟该宿主窗口共享同一个制图表面。由于具有独立的绘图表面,因而SurfaceView的UI就得当一个独立的线程中举行行绘制。又由未占主线程资源,SurfaceView一方面能够实现复杂而飞之UI,另一方面还要不会合导致用户输入得不至即响应

  • ###### PathImage是什么

.9.PNG是安卓开发中的等同栽独特之图形,这种格式的图样通过ADT自带的修工具转,使用九宫格切分的模式,使图片帮忙以android
环境下之打适应显示。

哪怕异步下充斥图片的早晚把图片添加到scrollview中,
而要几列就以scrollview中放置多少个linearlayout,在scrollview滑动的之下动态的测量linearlayout随机生成linearlayout的万丈

相关文章