android面试题准备

最近刚忙完本学期的android课程设计答辩,有心准备安卓面试题。其实整理面试题的过程也相当于对基础的一次总结。

一,跨进程通讯的几种方式

intent,比如拨打电话
ContentProvider数据库存储技术
Broadcast广播通讯
AIDL通讯,通过接口共享数据

二,wait和sleep的区别
wait是Object的方法,wait是对象锁,锁定方法不让继续执行,当执行notify的方法后会继续执行。
sleep是Thread的方法,sleep是使线程睡眠,让出CPU,结束后自动继续执行

三,Strig,StringBuffer和StringBuilder的区别
String不可改变对象,一旦创建就不能修改

String str="aaa";
str="bbb";

上述的方法虽然改变了str,但是执行过程中回收str,把值赋给一个新的str

StringBuffer创建之后可以修改
StringBuilder也可以修改,执行效率高于StringBuffer,不安全
当字符赋值少使用时用String
当字符赋值频繁使用时用StringBuffer
当多线程同步操作数据时,使用StringBuffer

四,View和SurfaceView的区别
View基于主线程刷新UI,SurfaceView子线程也可以刷新UI

View的绘图原理
View为所有图形控件 的基类,View的绘制由三个函数完成
measure,计算视图的大小
layout,提供视图要显示的位置
draw,绘制

六,简述JNl
JNI是java和c语言之间的桥梁,由于java是一种半解释性语言,可以被反编译出来,一些重要涉及安全的代码就使用了C语言编程,再者很多底层功能调用C语言就可以实现,没必要用java重复造轮子,所以定义了JNI接口的实现

七,简述TCP,UDP,Socket
TCP是经过三次握手,四次挥手完成一串数据的传送
UDP是无连接的,知道ip地址和端口号,向其发送数据即可,不管数据是否发送成功
Socket是一种不同计算机,实时连接,比如传送文件,即时通讯

八,音视频相关类
视屏录制方面:Camear摄像头录制视频类,MediaProjection屏幕录制视屏类
编码方面:MediaCoder,MediaRecorder
预览方面:SurfaceView,GLSurfaceView,TextureView,VideoView

九,进程和线程的区别
进程包括多个线程,一个程序一个进程
多线程可以提高执行效率,提高资源利用率
创建:Thread类和Runnable接口
常用方法:
start()用于启动线程
run()调用线程对象中的run()方法
sleep() 睡眠释放cpu资源
setPriority 设置进程优先级

十,内存泄露如何查看和解决

十二,RecyclerView和ListView的区别
缓存上的区别:
RecyclerView缓存的是View+ViewHolder+flag,不用每次调用findViewById
ListView只是缓存View
刷新数据方面:
REcyclerView提供了局部刷新
LsitView是全部刷新

十三,recyclerview嵌套卡顿如何解决

设置预加载的数量为四个,默认是两个
设置子项缓存,
设置自带滑动冲突解决属性
rv.setHasFixSize(true)
rv.setNestedScrollingEnabled(false)
可以完美解决,不过google不推荐recyclerview嵌套
嵌套尽量找Exoandable之类的第三方控件

十四,谈MVC,MVP,MVVM
MVC:View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些 业务逻辑。 在MVC模型里,更关注的Model的不变,而同时有多个对Model的不同显示,及View。所以,在MVC模型里,Model不依赖于View,但是 View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更改View也是比较困难的,至少那些业务逻辑是无法重用的。
MVP:MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示。作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过 Controller。
MVVM:数据双向绑定,通过数据驱动UI,M提供数据,V视图,VM即数据驱动层

十七:hander原理
Hander,
loop轮询检测发送消息到messagequery
messagequery对message入列
handler回调方法处理消息,重写handmessage方法刷新UI

18.SharedPreference跨进程使用会怎么样?如何保证跨进程使用安全?
在两个应用的manifest配置中好相同的shartdUserId属性,A应用正常保存数据,B应用
createPackageContext(“com.netease.nim.demo”, CONTEXT_IGNORE_SECURITY)
获取context然后获取应用数据,为保证数据安全,使用加密存储

二十:activity,fragment传值问题
通过Bundle传值,在activity定义变量传值,扩展fragment创建传值

ANDROID

点击图标引发默认activity的启动,会启动一个进程加载相应的activity
四大组件 activity broadcast contentprovider service

大佬博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值