android面试笔试题详解
android面试题笔试题总结
<div class="article_manage clearfix"><div class="article_r"><span class="link_postdate">2015-11-07 14:49</span><span class="link_view" title="阅读次数">966人阅读</span><span class="link_comments" title="评论次数"> <a href="#comments" onclick="_gaq.push(['_trackEvent','function', 'onclick', 'blog_articles_pinglun'])">评论</a>(1)</span><span class="link_collect tracking-ad" data-mod="popu_171"> <a href="javascript:void(0);" onclick="javascript:collectArticle('android%e9%9d%a2%e8%af%95%e9%a2%98%e7%ac%94%e8%af%95%e9%a2%98%e6%80%bb%e7%bb%93','49702077');return false;" title="收藏" target="_blank">收藏</a></span><span class="link_report"> <a href="#report" onclick="javascript:report(49702077,2);return false;" title="举报">举报</a></span></div>
</div>
<div class="embody" style="display:none" id="embody"><span class="embody_t">本文章已收录于:</span><div class="embody_c" id="lib" value="{"err":0,"msg":"ok","data":[]}"></div>
</div>
<style type="text/css"> .embody{padding:10px 10px 10px;margin:0 -20px;border-bottom:solid 1px #ededed; }.embody_b{margin:0 ;padding:10px 0;}.embody .embody_t,.embody .embody_c{display: inline-block;margin-right:10px;}.embody_t{font-size: 12px;color:#999;}.embody_c{font-size: 12px;}.embody_c img,.embody_c em{display: inline-block;vertical-align: middle; }.embody_c img{ width:30px;height:30px;}.embody_c em{margin: 0 20px 0 10px;color:#333;font-style: normal;}
</style>
<script type="text/javascript">$(function () {try{var lib = eval("("+$("#lib").attr("value")+")");var html = "";if (lib.err == 0) {$.each(lib.data, function (i) {var obj = lib.data[i];//html += '<img src="' + obj.logo + '"/>' + obj.name + " ";html += ' <a href="' + obj.url + '" target="_blank">';html += ' <img src="' + obj.logo + '">';html += ' <em><b>' + obj.name + '</b></em>';html += ' </a>';});if (html != "") {setTimeout(function () {$("#lib").html(html); $("#embody").show();}, 100);}} } catch (err){ }});
</script>
<script type="text/javascript" src="http://static.blog.csdn.net/scripts/category.js"></script> <div class="bog_copyright"> <p class="copyright_p">版权声明:本文为博主原创文章,未经博主允许不得转载。</p></div>
2、书写出android工程的目录结构
3、什么是ANR 如何避免它?
4、谈谈Android的优点和不足之处
5、一条最长的短信息约占多少byte?
6、sim卡的EF文件有何作用?
文件 |
文件标识符
|
文件缩写
|
中文名称
|
文件作用
|
MF |
3F00
|
根目录
|
备注:所有非ETSI GSM协议中规定的应用文件由各厂家自行定义在根目录下(如:PIN1,PIN2…)
|
|
EFICCID |
2FE2
|
ICCID
|
SIM卡唯一的识别号
|
包含运营商、卡商、发卡时间、省市代码等信息
|
DFGSM |
7F20
|
GSM目录
|
备注:根据ETSIGSM09.91的规定Phase2(或以上)的SIM卡中应该有7F21并指向7F20,用以兼容Phase1的手机
|
|
EFLP语言选择 |
6F05
|
LP
|
语言选择文件
|
包含一种或多种语言编码
|
EFIMSI |
6F07
|
IMSI
|
国际移动用户识别符
|
包含SIM卡所对应的号段,比如46000代表135-139号段、46002代表1340-1348
|
EFKC语音加密密钥 |
6F20
|
Kc
|
计算密钥
|
用于SIM卡的加密、解密
|
EFPLMNsel网络选择表 |
6F30
|
PLMNsel
|
公共陆地网选择
|
决定SIM卡选择哪种网络,在这里应该选择中国移动的网络
|
EFHPLMN归属地网络选择表 |
6F31
|
HPLMN
|
两次搜索PLMN的时间间隔
|
两次搜索中国移动的网络的时间间隔
|
EFACMmax最大计费额 |
6F37
|
ACMmax
|
包含累积呼叫表的最大值
|
全部的ACM数据存在SIM卡中,此处取最大值
|
EFSST SIM卡服务表 |
6F38
|
SST
|
SIM卡服务列表
|
指出SIM卡可以提供服务的种类,哪些业务被激活哪些业务没有开通
|
EFACM累加计费计数器 |
6F39
|
ACM
|
累计呼叫列表
|
当前的呼叫和以前的呼叫的单位总和
|
EFGID1分组识别1 |
6F3E
|
GID1
|
1级分组识别文件
|
包含特定的SIM-ME组合的标识符,可以识别一组特定的SIM卡
|
EFGID2分组识别2 |
6F3F
|
GID2
|
2级分组识别文件
|
包含特定的SIM-ME组合的标识符,可以识别一组特定的SIM卡
|
EFPUCT单位价格/货币表 |
6F41
|
PUCT
|
呼叫单位的价格和货币表
|
PUCT是与计费通知有关的信息,ME用这个信息结合EFACM,以用户选择的货币来计算呼叫费用
|
EFCBMI小区广播识别号 |
6F45
|
CBMI
|
小区广播信息标识符
|
规定了用户希望MS采纳的小区广播消息内容的类型
|
EFSPN服务提供商 |
6F46
|
SPN
|
服务提供商名称
|
包含服务提供商的名称和ME显示的相应要求
|
EFCBMID |
6F48
|
CBMID
|
数据下载的小区广播消息识别符
|
移动台将收到的CBMID传送给SIM卡
|
EFSUME |
6F54
|
SUME
|
建立菜单单元
|
建立SIM卡中的菜单
|
EFBCCH广播信道 |
6F74
|
BCCH
|
广播控制信道
|
由于BCCH的存储,在选择小区时,MS可以缩小对BCCH载波的搜索范围
|
EFACC访问控制级别 |
6F78
|
ACC
|
访问控制级别
|
SIM卡有15个级别,10个普通级别,5个高级级别
|
EFFPLMN禁止网络号 |
6F7B
|
FPLMN
|
禁用的PLMN
|
禁止选择除中国移动以外的其他运营商,比如中国联通、中国卫通等
|
EFLOCI位置信息 |
6F7E
|
LOCI
|
位置信息
|
存储临时移动用户识别符、位置区信息等内容
|
EFAD管理数据 |
6FAD
|
AD
|
管理数据
|
包括关于不同类型SIM卡操作模式的信息。例如:常规模式(PLMN用户用于GSM网络操作),型号认证模式(允许ME在无线设备的认证期间的特殊应用);小区测试模式(在小区商用之前,进行小区测试),制造商特定模式(允许ME制造商在维护阶段进行特定的性能自动测试)
|
EFPHASE阶段 |
6FAE
|
PHASE
|
阶段标识
|
标识SIM卡所处的阶段信息,比如是普通SIM卡还是STK卡等
|
DFTELECOM |
7F10
|
电信目录
|
||
EFADN缩位拨号 |
6F3A
|
AND
|
电话簿
|
用于将电话记录存放在SIM卡中
|
EFFDN固定拨号 |
6F3B
|
FDN
|
固定拨号
|
包括固定拨号(FDN)和/或补充业务控制字串(SSC),还包括相关网络/承载能力的识别符和扩展记录的识别符,以及有关的α识别符
|
EFSMS短消息 |
6F3C
|
SMS
|
短消息
|
用于将短消息记录存放在SIM卡中
|
EFCCP能力配置参数 |
6F3D
|
CCP
|
能力配置参数
|
包括所需要的网络和承载能力的参数,以及当采用一个缩位拨号号码,固定拨号号码,MSISDN、最后拨号号码、服务拨号号码或禁止拨号方式等,建立呼叫时相关的ME配置
|
EFMSISDN电话号码 |
6F40
|
MSISDN
|
移动基站国际综合业务网号
|
存放用户的手机号
|
EFSMSP短信息参数 |
6F42
|
SMSP
|
短消息业务参数
|
包括短信中心号码等信息
|
EFSMSS短信息状态 |
6F43
|
SMSS
|
短消息状态
|
这个标识是用来控制流量的
|
EFLND最后拨号 |
6F44
|
LND
|
最后拨叫号码
|
存储最后拨叫号码
|
EFExt1扩展文件1 |
6F4A
|
EXT1
|
扩展文件1
|
包括AND,MSISDN或LND的扩展数据
|
EFExt2扩展文件2 |
6F4B
|
EXT2
|
扩展文件2
|
包含FDN的扩展数据
|
7、如何判断是否有SD卡?
8、dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念?
9、Android程序与Java程序的区别?
10、启动应用后,改变系统语言,应用的语言会改变么?
11、请介绍下adb、ddms、aapt的作用
12、ddms 和traceview的区别
13、补充知识:TraceView的使用
- public class MainActivity extends ActionBarActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- }
- public void method1(View view) {
- int result = jisuan();
- System.out.println(result);
- }
- private int jisuan() {
- for (int i = 0; i < 10000; i++) {
- System.out.println(i);
- }
- return 1;
- }
- public void method2(View view) {
- SystemClock.sleep(2000);
- }
- public void method3(View view) {
- int sum = 0;
- for (int i = 0; i < 1000; i++) {
- sum += i;
- }
- System.out.println(“sum=” + sum);
- }
- public void method4(View view) {
- Toast.makeText(this, “” + new Date(), 0).show();
- }
- }
复制代码
列名 |
描述
|
Name |
该线程运行过程中所调用的函数名
|
Incl Cpu Time |
某函数占用的CPU时间,包含内部调用其它函数的CPU时间
|
Excl Cpu Time |
某函数占用的CPU时间,但不含内部调用其它函数所占用的CPU时间
|
Incl Real Time |
某函数运行的真实时间(以毫秒为单位),内含调用其它函数所占用的真实时间
|
Excl Real Time |
某函数运行的真实时间(以毫秒为单位),不含调用其它函数所占用的真实时间
|
Call+Recur Calls/Total |
某函数被调用次数以及递归调用占总调用次数的百分比
|
Cpu Time/Call |
某函数调用CPU时间与调用次数的比。相当于该函数平均执行时间
|
Real Time/Call |
同CPU Time/Call类似,只不过统计单位换成了真实时间
|
二、Activity
1、什么是Activity?
2、请描述一下Activity 生命周期
3、如何保存Activity的状态?
- @Override
- protected void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- }
复制代码
4、两个Activity之间跳转时必然会执行的是哪几个方法?
5、横竖屏切换时Activity的生命周期
6、如何将一个Activity设置成窗口的样式
7、如何退出Activity?如何安全退出已调用多个Activity的Application?
- //伪代码
- List<Activity> lists ;// 在application 全局的变量里面
- lists = new ArrayList<Activity>();
- lists.add(this);
- for(Activity activity: lists)
- {
- activity.finish();
- }
- lists.remove(this);
复制代码
8、请描述一下Activity的启动模式都有哪些以及各自的特点
8.1 standard
- public class FirstActivity extends Activity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.first);
- TextView textView = (TextView) findViewById(R.id.tv);
- textView.setText(this.toString());
- Button button = (Button) findViewById(R.id.bt);
- button.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(FirstActivity.this, FirstActivity.class);
- startActivity(intent);
- }
- });
- }
- }
复制代码
8.2 singleTop
- public class SecondActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.second);
- TextView textView = (TextView) findViewById(R.id.tv);
- textView.setText(this.toString());
- Button button = (Button) findViewById(R.id.button);
- button.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(SecondActivity.this, FirstActivity.class);
- startActivity(intent);
- }
- });
- }
- }
复制代码
- Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
- startActivity(intent);
复制代码
8.4 singleInstance
我们修改FirstActivity的launchMode=”standard”,SecondActivity的launchMode=”singleInstance”,由于涉及到了多个栈结构,我们需要在每个Activity中显示当前栈结构的id,所以,我们为每个Activity添加如下代码:
- TextView taskIdView = (TextView) findViewById(R.id.taskIdView);
- taskIdView.setText(“current task id: ” + this.getTaskId());
复制代码
我们发现这两个Activity实例分别被放置在不同的栈结构中,关于singleInstance的原理图如下:
- <activity
- android:name=”.ShareActivity”
- android:launchMode=”singleInstance” >
- <intent-filter>
- <action android:name=”android.intent.action.MAIN” />
- <category android:name=”android.intent.category.LAUNCHER” />
- </intent-filter>
- <intent-filter>
- <action android:name=”android.intent.action.SINGLE_INSTANCE_SHARE” />
- <category android:name=”android.intent.category.DEFAULT” />
- </intent-filter>
- </activity>
复制代码
- Intent intent = new Intent(“android.intent.action.SINGLE_INSTANCE_SHARE”);
- startActivity(intent);
复制代码
- <service
- android:name=”com.baidu.location.f”
- android:enabled=”true”
- android:process=”:remote” >
- </service>
复制代码
2、Activity怎么和Service绑定,怎么在Activity中启动自己对应的Service?
3、请描述一下Service的生命周期
- public void click(View view){
- Intent intent = new Intent(this, MyIntentService.class);
- intent.putExtra(“start”, “MyIntentService”);
- startService(intent);
- }
复制代码
- public class MyIntentService extends IntentService {
- private String ex = “”;
- private Handler mHandler = new Handler() {
- public void handleMessage(android.os.Message msg) {
- Toast.makeText(MyIntentService.this, “-e ” + ex, Toast.LENGTH_LONG).show();
- }
- };
- public MyIntentService(){
- super(“MyIntentService”);
- }
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- ex = intent.getStringExtra(“start”);
- return super.onStartCommand(intent, flags, startId);
- }
- @Override
- protected void onHandleIntent(Intent intent) {
- /**
- * 模拟执行耗时任务
- * 该方法是在子线程中执行的,因此需要用到handler跟主线程进行通信
- */
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- mHandler.sendEmptyMessage(0);
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
复制代码
6、Service和Activity在同一个线程吗
7、Service里面可以弹吐司么
四、BroadCastReceiver
2、在manifest和代码中如何注册和使用BroadcastReceiver
- <receiver android:name=”.BroadcastReceiver1” >
- <intent-filter>
- <action android:name=”android.intent.action.CALL” >
- </action>
- </intent-filter>
- </receiver>
复制代码
- receiver = new BroadcastReceiver();
- IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction(CALL_ACTION);
- context.registerReceiver(receiver, intentFilter);
复制代码
五、ContentProvider
- <provider
- android:exported=”true” android:name=”com.itheima.contenProvider.provider.PersonContentProvider”android:authorities=”com.itheima.person” />
复制代码
2、请介绍下Android的数据存储方式
3、为什么要用ContentProvider?它和sql的实现上有什么差别?
4、说说ContentProvider、ContentResolver、ContentObserver之间的关系
六、Android中的布局
2、谈谈UI中, Padding和Margin有什么区别?
2、当ListView数据集改变后,如何更新ListView
3、ListView如何实现分页加载
4、ListView可以显示多种类型的条目吗
5、ListView如何定位到指定位置
6、当在ScrollView中如何嵌入ListView
- lv = (ListView) findViewById(R.id.lv);
- adapter = new MyAdapter();
- lv.setAdapter(adapter);
- setListViewHeightBasedOnChildren(lv);
- public void setListViewHeightBasedOnChildren(ListView listView) {
- ListAdapter listAdapter = listView.getAdapter();
- if (listAdapter == null) {
- return;
- }
- int totalHeight = 0;
- for (int i = 0; i < listAdapter.getCount(); i++) {
- View listItem = listAdapter.getView(i, null, listView);
- listItem.measure(0, 0);
- totalHeight += listItem.getMeasuredHeight();
- }
- ViewGroup.LayoutParams params = listView.getLayoutParams();
- params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
- params.height += 5;// if without this statement,the listview will be a little short
- listView.setLayoutParams(params);
- }
复制代码
7、ListView中如何优化图片
8、ListView中图片错位的问题是如何产生的
9、Java中引用类型都有哪些
- String abc=new String(“abc”); //1
- SoftReference<String> softRef=new SoftReference<String>(abc); //2
- WeakReference<String> weakRef = new WeakReference<String>(abc); //3
- abc=null; //4
- softRef.clear();//5
复制代码
八、JNI&NDK
2、请介绍一下NDK
3、JNI调用常用的两个参数
1、Android中如何访问网络
2、如何解析服务器传来的JSON文件
3、如何解析服务器传来的XML格式数据
- public List<Person>getPersons(InuptStream in){
- XmlPullParserparser=Xml.newPullParser();//获取解析器
- parser.setInput(in,”utf-8”);
- for(inttype=){ //循环解析
- }
- }
复制代码
- XmlSerializer serial=Xml.newSerializer();//获取xml序列化工具
- serial.setOuput(put,”utf-8”);
- serial.startDocument(“utf-8”,true);
- serial.startTag(null,”persons”);
- for(Person p:persons){
- serial.startTag(null,”persons”);
- serial.attribute(null,”id”,p.getId().toString());
- serial.startTag(null,”name”);
- serial.attribute(null,”name”,p.getName().toString());
- serial.endTag(null,”name”);
- serial.startTag(null,”age”);
- serial.attribute(null,”age”,p.getAge().toString());
- serial.endTag(null,”age”);
- serial.endTag(null,”persons”);
- }
复制代码
4、如何从网络上加载一个图片显示到界面
5、如何播放网络视频
十、Intent
2、Serializable和Parcelable的区别
- public class MyParcelable implements Parcelable {
- private int mData;
- public int describeContents() {
- return 0;
- }
- public void writeToParcel(Parcel out, int flags) {
- out.writeInt(mData);
- }
- public static final Parcelable.Creator<MyParcelable> CREATOR
- = new Parcelable.Creator<MyParcelable>() {
- public MyParcelable createFromParcel(Parcel in) {
- return new MyParcelable(in);
- }
- public MyParcelable[] newArray(int size) {
- return new MyParcelable[size];
- }
- };
- private MyParcelable(Parcel in) {
- mData = in.readInt();
- }
- }
复制代码
3、请描述一下Intent 和 IntentFilter
十一、Fragment
- FragmentManager fragmentManager = getFragmentManager();
- Fragment fragment = fragmentManager.findFragmentByTag(tag);
- Fragment fragment = fragmentManager.findFragmentById(id);
复制代码
2、描述一下Fragment的生命周期
document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js?cdnversion=" + Math.ceil(new Date()/3600000)
<div id="digg" articleid="49702077"><dl id="btnDigg" class="digg digg_disable" onclick="btndigga();"><dt>顶</dt><dd>3</dd></dl><dl id="btnBury" class="digg digg_disable" onclick="btnburya();"><dt>踩</dt><dd>0</dd> </dl></div><div class="tracking-ad" data-mod="popu_222"><a href="javascript:void(0);" target="_blank"> </a> </div>
<div class="tracking-ad" data-mod="popu_223"> <a href="javascript:void(0);" target="_blank"> </a></div>
<script type="text/javascript">function btndigga() {$(".tracking-ad[data-mod='popu_222'] a").click();}function btnburya() {$(".tracking-ad[data-mod='popu_223'] a").click();}</script>
- 上一篇java基础2
- 下一篇android基础2
<div style="clear:both; height:10px;"></div>
android面试笔试题详解相关推荐
- 蘑菇街2015校招 Java研发笔试题 详解,2015java
蘑菇街2015校招 Java研发笔试题 详解,2015java 1. 对进程和线程描述正确的是( ) A. 父进程里的所有线程共享相同的地址空间,父进程的所有子进程共享相同的地址空间. B. 改变 ...
- Android面试Hash原理详解二
Hash系列目录 Android面试Hash原理详解一 Android面试Hash原理详解二 Android面试Hash常见算法 Android面试Hash算法案例 Android面试Hash原理详解 ...
- c语言进阶(3)——指针进阶笔试题详解
1.指针和数组笔试题解析 关键:数组名在两种情况下是指整个数组: (1)sizeof(数组名)(2)&数组名 其它的情况下,都是代表数组的首元素地址. 例题 1 :一维数组 int main( ...
- mysql 笔试题_MySQL笔试题详解(一)(中等难度)
有一位学生在找数据分析工作的时候,遇到一个笔试题,内容如下: 现有注册用户表table_user,有两个字段:user_id(用户id).reg_tm(注册时间).有订单表table_order,有三 ...
- Android工程师面试宝典面试实战试题详解01
1. 什么是Activity? 四大组件之一,一般的,一个用户交互界面对应一个activity setContentView() ,// 要显示的布局 , activity 是Context的子类,同 ...
- Android 2017-2018面试题详解
面试题(固定答案不解答,自己可以找到) 顺序是根据记忆排的,没有优先级之分,都是重点. 1.Activity的启动过程(不要回答生命周期) http://blog.csdn.net/luosheng ...
- 2018 美团校招笔试题详解
栈必考题目 栈和队列必考题目 不选安全性,可以猜出是ABD 操作系统死锁的题目经常考 这题也是一道必考题 二叉树必考题 第一张抽出红的,第二张抽出黑的,概率是P=1/2* 26/51 第一张抽出黑的, ...
- 2020年小红书校招数据分析笔试题详解
1.如果在小红书商城中某一商户给一产品定价,如果按照全网最低价500元定价,那么客人就一定会选择在此购买:价格每增加1元,客人的流失的可能性就会增加1%.那么该商户给客人报出最优价格为() A.520 ...
- python 数据类笔试题_一道 Python 类的笔试题详解
r = {} class C(object): def __init__(self, a, b): self.a = a self.b = b if b == 'a': orig = super(C, ...
- 微软2013年笔试题详解及深入
Microsoft 下面哪些调用转换支持可变长度参数: A. cdecl B. stdcall C. pascal D. fastcall 几种函数调用方式: __cdecl 是C Declar ...
最新文章
- 什么是java一句话一个例子_一句话讲清楚什么是JavaEE
- 如何在推送后压缩git中的提交?
- 绝了!“修仙模式”学编程是什么体验?
- C指针原理(14)-C指针基础
- 当我们在聊监控,我们在聊什么?
- Leedcode10-linked-list-cycle-ii
- jQuery基本知识
- 获取aplicationContext对象,从而获取任何注入的对象
- java契约_基于契约式设计的Java编译器实现
- win10右键卡顿原因_个个都能惊呆你WIN10小技巧分享(无需安装第三方软件)
- 【实战项目惜时App项目总结分析】Vue-cli3+Vant UI+Vue-element-admin+Egg.js+Mysql
- 大恒MER-1070-10GC相机 LINUX环境 QT开发记录
- 数学分析对计算机有帮助吗,计算机辅助数学分析教学的好处
- 【笔试题】求最小公倍数 C++(两种方法)
- 基于JAVA+SpringBoot+Mybatis+MYSQL的相册管理系统
- lua中 高效判断数组(table)中是否存在某个字符 值
- lisp把选集转成表_cad_lisp基础教程.pdf
- 织梦响应式精密机械模具类网站织梦模板(自适应手机端)
- 环境配置 | ubuntun16.04下卸载matlab
- 实战▍利用卷积神经网络(VGG19)实现火灾分类(附tensorflow代码及训练集)