(转)Android 50道面试题总结(大家看看吧)


1、 方法重载与覆盖的区别?(Overload与Override的区别)
2、 String 和StringBuffer的区别
3、 字符串“abcde”通过写一个函数不让调用第三方的字符串,实现一个字符串倒序,比如字符串“abcde”变成“edcba”.
4、 抽象类与接口的区别(abstract与interface的区别
5、 集合的实现类与区别?
6、 线程有几种状态,分别是哪些?(调用run()和调用start()的区别
7、 线程的实现方式
8、 sleep() 与wait()的区别
9、 线程中wait,join,sleep,yield,notify,notifyall,synchronized,区别及联系
10、 Final、finally、finanlize()的区别
11、 常用设计模式及应用场景,用两种方式实现单例模式,要求线程安全
12、 常用排序算法,时间复杂度,实现思路
13、 android系统架构?
14、 Activity生命周期?保存activity的一些信息在哪个生命周期方法中
15、 Activity的onSaveInstanceState() 和 onRestoreInstanceState()
16、 Android的四大组件是什么?它们的作用是什么?
17、 广播如何调用,有什么方式,各自的区别?
18、 Android中asset文件夹和raw文件夹区别
19、 Android中的五种存储方式及其应用场景
20、 什么是ANR 如何避免它?(Android线程间的通信方式?
21、 Handler的运行机制(运行原理)(Handler,Looper,MessageQueue,Message之间的关系) 8
22、 listview优化策略
23、 ListView分页加载实现思路
24、 ListView图片异步加载实现思路
25、 Intent的原理,作用,可以传递哪些类型的参数
26、 如何实现屏幕分辨率的自适应
27、 简述Android中的IPC机制
28、 Android程序入口如何判断?
29、 android哪几种方式访问网络
30、 说说HttpClient的通信过程
31、 移动互联数据交互格式有哪些及其区别?(Json与xml的区别
32、 XML解析有哪几种?各自优缺点,官方推荐使用哪种?
33、 百度地图核心类,及实现的功能
34、 GC内存泄露在什么情况下回出现?怎么解决
35、 android内存的优化
36、 加载大图片的时候如何防止内存溢出
37、 Android缓存机制
38、 如何实现消息推送,有哪些方式,各自优缺点,最常使用哪种?
39、 MVC在Android中的应用
40、 Android自定义组件实现思路
41、 版本更新的实现思路
42、 播放视频有哪些实现方式
43、 NDK开发流程?(JNI运行原理
44、 如何实现一键退出
45、 AndroidManifest.xml清单文件<Activity>标签中属性android:excludeFromRecents="true"android:screenOrientation="portrait" android:configChanges="orientation|locale"的含义
46、 如何将一个Activity设置成窗口的样式
47、 谈谈UI中,Padding和Margin有什么区别,gravity与layout_gravity的区别
48、 哪个组件可以实现手风琴效果,用来实现设置界面的类,实现抽屉效果,悬浮窗口?
49、 Android SDK 3.0(HoneyComb)及4.0(IceCream)新特性
50、 android客户端如何实现自动登录

1、方法重载与覆盖的区别?( Overload与Override的区别)

答: 方法的重载属于编译时多态,方法名相同参数列表不同,返回值必须相同或都没有返回值类型。方法的覆盖属于运行时多态,子类覆盖父类的方法,子类指向父类引用,在调用方法的时候用父类的引用调用。

2、String和StringBuffer的区别

答: STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法。

StringBuder是不安全的 StringBuffer 是安全的

3、字符串“abcde”通过写一个函数不让调用第三方的字符串,实现一个字符串倒序,比如字符串“abcde”变成“edcba”

答: String   src   =  "ABCDEF ";
String   dst   =  new  StringBuffer(src).reverse().toString();

4、抽象类与接口的区别(abstract与interface的区别)

答:abstract可以修饰抽象方法,而一个类只要有一个抽象方法,就必须用abstract定义该类,即抽象类。

用interface修饰的类,里面的方法都是抽象方法,因此在定义接口的时候,可以直接不加那些修饰,系统会默认的添上去。接口里面的字段都是公有常量,即public static final修饰的字段。

5、集合的实现类与区别?

答:Collection接口,集合结构总的父接口,有两个子接口list和set

List接口元素有序可重复.

实现类有:ArrayList 数组实现轻量级,运行快,线程不安全。JDK1.2 查询快

Vector   数组实现重量级,运行慢,线程安全。JDK1.0

LinkedList链表实现 常用语堆栈与队列的实现增删操作快

Set 接口 元素无序不可重复

实现类有:HashSet,底层用hashCode()算法实现,保证元素的无序唯一,自定义对象存进HashSet为了保证元素内容不重复需要覆盖hashCode()与equals()方法。

SortedSet(不重要) 元素有序(Unicode升序)唯一

TreeSet要求元素有序,自定义的对象需要实现Comparable接口的 compareTo(object o)方法

Map(接口): 与Collection接口无关,有一个子接口SortedMap特点: 元素是key-value, key

唯一,无序; value可重复

实现类: HashMap 轻量级线程不安全的,允许key或value为null JDK1.2

HashTable 重量级线程安全的 不允许key或value为null   JDK1.0

Properties是HashTable的子类,主键和值都是字符串

SortedMap:(不重要)

特点: key唯一,有序(Unicode升序)

实现类:TreeMap

6、线程有几种状态,分别是哪些?(调用run()和调用start()的区别)

答:1)、新建状态(New):新创建了一个线程对象。

  2)、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。

  3)、运行状态(Running):就绪状态的线程获取了CPU,执行run()方法。

  4)、阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。阻塞的情况分三种:

  (一)、等待阻塞:运行的线程执行wait()方法,JVM会把该线程放入等待池中。

  (二)、同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中。

  (三)、其他阻塞:运行的线程执行sleep()或join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。

5)、死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

当调用start方法的时候,该线程就进入就绪状态。等待CPU进行调度执行,此时还没有真正执行线程。

当调用run方法的时候,是已经被CPU进行调度,执行线程的主要任务。

7、线程的实现方式

答:线程的实现有两种方式,一是继承Thread类,二是实现Runnable接口

8、sleep()与 wait()的区别

答:1.这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object

类。

2.最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可

以使用同步控制块或者方法。sleep不出让系统资源;wait是进入线程等待池

等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,

因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用

notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系

统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到

只能调用interrupt()强行打断。

3.wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而

sleep可以在任何地方使用

4. Sleep需要捕获异常,而wait不需要

9、线程中wait,join,sleep,yield, notify,notifyall,synchronized,区别及联系

答:1).sleep()方法

在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”。不推荐使用。sleep()使当前线程进入阻塞状态,在指定时间内不会执行。

2).wait()方法

在其他线程调用对象的notify或notifyAll方法前,导致当前线程等待。线程会释放掉它所占有的“锁标志”,从而使别的线程有机会抢占该锁。

唤醒当前对象锁的等待线程使用notify或notifyAll方法,waite() 和notify()必须在synchronized函数或synchronized block中进行调用。

  • yield方法暂停当前正在执行的线程对象。yield()只是使当前线程重新回到可执行状态,所以执行
  • 3)yield()的线程有可能在进入到可执行状态后马上又被执行。yield()只能使同优先级或更高优先级的线程有执行的机会。

    4).join方法

    等待该线程终止。等待调用join方法的线程结束,再继续执行。如:t.join();//主要用于等待t线程运行结束,若无此句,main则会执行完毕,导致结果不可预测。

    Final、finally、finanlize()的区别

    答:final?用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不

    可继承。

    finally是异常处理语句结构的一部分,表示总是执行。

    finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

Loader: 装载器从android3.0开始引进。它使得在activity或fragment中异步加载数据变得简单

50、android客户端如何实现自动登录

答: 通过SharedPreferences存储用户名,密码,当存储不为空时实现自动登录功能

(转)Android 50道面试题总结(大家看看吧)

时间: 2024-08-28 13:54:28

(转)Android 50道面试题总结(大家看看吧)的相关文章

JavaSSM框架精选50道面试题

JavaSSM框架精选50道面试题 2019年02月13日 19:04:43 EerhtSedah 阅读数 7760更多 分类专栏: 面试题 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_41735004/article/details/87199651 1.什么是MVC框架?传统MVC框架存在的问题是什么? MVC框架是为了解决传统MVC模式(Jsp + Servlet + Ja

疯狂Java学习笔记(59)-----------50道Java线程面试题

50道Java线程面试题 下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒.Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点.欲了解更多详细信息请点击这里. 2) 线程和进程有什么区别? 线程是进程的子集,一个

50 道 Java 线程面试题(转载自牛客网)

下面是 Java 线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成一个任务要 100 毫秒,那么用十个线程完成改任务只需 10 毫秒.Java 在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点.欲了解更多详细信息请点击这里. 2) 线程和进程有什么区别? 线程是进程的子集,一个进程可以有很

50道Java线程面试题

本文由 ImportNew - 李 广 翻译自 javarevisited.欢迎加入翻译小组.转载请见文末要求. 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎.大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发.调试.优化经验,所以线程相关的问题在面试中经常会被提到. 在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建

2017年50道Java线程面试题

下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对 运算密集型任务提速.比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒.Java在语言层面对多线程提供了卓越的支 持,它也是一个很好的卖点.欲了解更多详细信息请点击这里. 2) 线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每

线程面试题50道

50道Java线程面试题 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒.Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点. 2) 线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务.不同的进程使用不同的内存空间,而所有的线程共享

Java 50道Java线程面试题

不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎.大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发.调试.优化经验,所以线程相关的问题在面试中经常会被提到. 在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用什么方式创建线程比较好(比如:继承thread类还是调用Runnable接口),然后逐渐问到并发问题像在J

数据挖掘150道笔试题

数据挖掘150道笔试题 单选题 1. 某超市研究销售纪录数据后发现,买啤酒的人很大概率也会购买尿布,这种属于数据挖掘的哪类问题?(A) A. 关联规则发现 B. 聚类 C. 分类 D. 自然语言处理 2. 以下两种描述分别对应哪两种对分类算法的评价标准? (A) (a)警察抓小偷,描述警察抓的人中有多少个是小偷的标准. (b)描述有多少比例的小偷给警察抓了的标准. A. Precision, Recall B. Recall, Precision C. Precision, ROC D. Rec

6、50道JAVA基础编程练习题跟答案

1 50道JAVA基础编程练习题 2 [程序1] 3 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 4 程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... 5 public class Prog1{ 6 public static void main(String[] args){ 7 int n = 10; 8 System.out.println("第"+n+