一次Android面试题
来源:互联网 发布:菜鸟网络 高科技园区 编辑:程序博客网 时间:2024/04/28 05:13
这是一次在qq群里,有群友拍照贴上来的Android面试题,有不少高手进行了部分解答,后来,我做了一次系统整理,当然某些部分也加了些自己的理解,有不同意见的同学,欢迎讨论。
题目如下:
下面是我总结的答案:
一,基本数据类型的大小(单位:bit)
Byte:8Short:16Char:16Int:32Long:64
分析:两个注意点:1,以bit为单位;2,Char是2字节,与C语言的1字节,不要混淆了。
二,字符串比较,s1==s2的结果
答案:结果是false。原因:String是引用类型的,不同对象有不同的地址,两个对象的地址,是不同的。
三,Thread类
下面哪个动作,明确的停止一个执行中的线程?
wait()notify()yield()suspend()sleep()
分析:
wait():线程调用该方法后,线程状态将从running 变为 waiting。
notify():线程调用notify(),将随机的从wait队列中挑选一个线程,将其状态从waitting 变为 runningable。
yield:调用yield方法会让当前线程交出CPU权限,让CPU去执行其他的线程。它跟sleep方法类似,同样不会释放锁。但是yield不能控制具体的交出CPU的时间. 调用yield方法并不会让线程进入阻塞状态,而是让线程重回就绪状态,它只需要等待重新获取CPU执行时间。
suspend()方法就是将一个线程挂起(暂停)。
sleep相当于让线程睡眠,交出CPU,让CPU去执行其他的任务。但是有一点要非常注意,sleep方法不会释放锁,也就是说如果当前线程持有对某个对象的锁,则即使调用sleep方法,其他线程也无法访问这个对象。
答案:suspend()
四,编码能力
1,类的设计。鸟、兽、蝙蝠的故事,3个类一个接口。
//兽类,能吃肉 public abstract class Beast { public abstract void EatMeat(); } //飞行接口 public interface InterfaceFly{ void Fly(); } //鸟类,有飞行能力 public class Bird implements InterfaceFly{ public void Fly(){} } //蝙蝠,是兽类,能吃肉;同时,它还拥有飞行能力 public class Bat extends Beast implements InterfaceFly { public void EatMeat(){} public void Fly(){} }
2,算法,洗牌,有序数组转无序
提供了3种方式,核心都是使用随机数。
//随机取两张牌,交换位置。 private int[] shuffle_mix(int[] ayCardValue){ Random random = new Random(); int temp=0; int index1=0; int index2=0; int len=ayCardValue.length; for(int i=0;i<len;i++) { index1 = random.nextInt(len); index2 = random.nextInt(len); temp = ayCardValue[index1]; ayCardValue[index1] = ayCardValue[index2]; ayCardValue[index2] = temp ; } return ayCardValue; } //把第一位的牌与一个随机位置的牌进行交换 private int[] shuffle_buluma(int[] ayCardValue){ Random random = new Random(); int temp=0; int index=0; int len=ayCardValue.length; for(int i=0;i<len*2;i++) { index = random.nextInt(len); temp = ayCardValue[0]; ayCardValue[0] = ayCardValue[index]; ayCardValue[index] = temp ; } return ayCardValue; } //随机取走一张牌,用最后一张填充 private int[] shuffle_ahui(int[] ayCardValue){ int index_ramdom=0; int len=ayCardValue.length; int[] retCard=new int[len]; Random random = new Random(); for(int i=0;i<len;i++) { index_ramdom = random.nextInt(len-i); retCard[i]=ayCardValue[index_ramdom];//转移 ayCardValue[index_ramdom] = ayCardValue[len-i-1];//补充 } return retCard; }
五,Android
1,Service的生命周期方法
通过startService启动: Service会经历 onCreate –> onStart 。
stopService的时候直接onDestroy 。
如果是 调用者 直接退出而没有调用stopService的话,Service会一直在后台运行。 下次调用者再起来仍然可以stopService。
通过bindService启动: Service先运行onCreate(),然后执行onBind(),这个时候 调用者和Service绑定在一起。
调用者退出了,Service就会调用onUnbind–>onDestroyed
2,分辨率
hvga:480*320 (half vga)qvga:320*240 (1/4 vga)wvga:800*480 (wide vga)
3,aidl概念及作用
aidl: Android Interface definition language的缩写,是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口。
- 一次Android面试题
- 一次面试题总结
- 腾讯百度一次面试题和经历
- android面试题 不单单为了面试也是一次很好的学习
- android面试题 不单单为了面试也是一次很好的学习
- android面试题 不单单为了面试也是一次很好的学习
- android面试题 不单单为了面试也是一次很好的学习
- android面试题 不单单为了面试也是一次很好的学习
- android面试题 不单单为了面试也是一次很好的学习
- android面试题 不单单为了面试也是一次很好的学习
- android面试题 不单单为了面试也是一次很好的学习
- android面试题 不单单为了面试也是一次很好的学习
- android面试题 不单单为了面试也是一次很好的学习
- android面试题 不单单为了面试也是一次很好的学习
- android面试题 不单单为了面试也是一次很好的学习
- android面试题 不单单为了面试也是一次很好的学习
- Android面试题
- Android 面试题积累
- 多继承
- Java基本语法
- libconfig++示例详解
- HDU - 3177 Crixalis's Equipment
- JSP主要用法及共享总结
- 一次Android面试题
- 1034. Head of a Gang
- Struts2的<result>结果
- 程序员必须知道的10大基础实用算法及其讲解
- 常见进程调度算法
- 过滤器
- 1035. Password
- 这半年给自己的一个定位
- 获取一个文本上每个字符出现的次数,将结果写在times.txt上