本人整理了一份Android面试题,适用于初高级开发工程师,仅供参考
Android面试题
一.Activity的启动模式
四种启动模式1.startdard每次都会创建2.TOP只要不在栈顶都会进行创建3.Task如果存在,就重用,没有则创建,重用是,移到栈顶,在他上面的都会被移除栈4.Instance创建并共享该栈的实例,相当于多个应用共享一个应用,适用于闹铃,不适用于中间页面跳转
二.MVC、MVP设计模式
1.前者主要将逻辑交互和用户交互都放到Controllor中,也就是Activity2.后者将用户交互和逻辑交互分离开来3.前者允许Model与View进行交互,后者Model与View的交互有Presenter完成 M:业务逻辑和实体模型 V:view的绘制和用户交互C:逻辑处理 P:model与view的交互
三.四大组件以及使用方式
四.网络请求
1.Volley使用方法 2.OKHttp使用方法3.Retrofit使用方法 三者区别和联系
五.get/post请求的区别
1.查询类操作/增删改类操作2.安全性能3.前者传递的数据量较少4.前者获取数据,后者传送数据
六.xml/json的区别以及解析方式
相同点:可读性、扩展性都差不多
不同点:1.Json编码、解码难度较低2.Json数据体积较小,传递速度比较快3.Json与JS交互根据方便4.XML对数据的描述性较好
七.谈谈对Handler的理解
1.四个对象,Handler,Message,MessageQueue,Looper
八.service的启动方式
onStart,生命周期startService-onCreate-onStartCommond-onStop-onDestory onBind,生命周期bindService-onCreate-onBind-unBind-OnDestory
九.屏幕适配
1.图片放到对应大小的文件夹2.创建多个分辨率下的dimens文件3.多余RelativeLayout4.巧用weight属性5.多用wrap-content以及match-parent6.在代码中拿到屏幕像素,按照比例适配
十.文件存储方式
1.sp2.文件存储3.网络存储4.ContentProvider5.SQLite
十一.创建子线程的方式
1.继承Thread 2.实现 Runnable接口 3.实现Callable接口
十二.开发中遇到哪些问题?如何解决的?(开放性的题目,几乎每家公司都会问到,加减分的重要题目)
三年以上工作经验加试
十三.ArrayList与LinkedList区别
1.前者基于数组,后者基于链表2.前者实现随机访问接口,后者实现队列接口3.前者读取速度快,添加值很慢;后者添加值很快4.前者增删的开销大于后者
十四.Android中PID和UID的区别
1.前者是进程的身份标识,唯一,进程终止后,会产生新的较大的进程号2.后者为linux中的用户ID,标明哪个用户运行了这个程序,主要用于权限管理3.都是用来识别应用身份,后者还能用于数据共享
十五.Binder的理解,以及为什么要用Binder,进程间通信的方式
效率高效,安全可靠
intent、广播、Binder、contentProvider
1.四个角色Client、Server、serviceManager、Binder驱动
十六.框架搭建选型的注意点
十七.第三方SDK应用
支付、地图等 ,一般说一个整个使用的流程就OK了。
十八.内存优化,性能优化
1.APP性能优化:APP启动优化、布局优化、响应优化、内存优化、电池使用优化、网络优化 内存优化:1.及时清空对象2.及时关闭游标3.及时释放图片4.注册与反注册5.IO流的及时关闭
十九.TCP与UDP的区别
1.前者面向连接、可靠的数据流传输,后者非面向连接、不可靠的数据流传输2.前者提供可靠的服务,无差错、不丢失、不重复,后者不保证可靠交付3.前者面向字节流,后者面向报文4.TCP只支持点对点,后者支持one to more,more to one,more to more,one to one.5.TCP首部开销大于UDP,前者20字节,后者8个字节6.前者全双工可靠信道, 后者不可靠信道 定义:TCP面向连接、可靠、基于字节流的传输层通信协议 UDP:是OSI中的无连接的传输层协议,提供面向事务的简单不可靠信息传送服务
二十.hybird APP