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道面试题总结(大家看看吧)的更多相关文章

  1. JavaSSM框架精选50道面试题

    JavaSSM框架精选50道面试题 2019年02月13日 19:04:43 EerhtSedah 阅读数 7760更多 分类专栏: 面试题   版权声明:本文为博主原创文章,遵循CC 4.0 BY- ...

  2. Android 70道面试题汇总

    1. 下列哪些语句关于内存回收的说明是正确的? (b) A. 程序员必须创建一个线程来释放内存 B. 内存回收程序负责释放无用内存 C. 内存回收程序允许程序员直接释放内存 D. 内存回收程序可以在指 ...

  3. 50道Redis面试题及答案整理,史上最全!

    在网上看到有关Redis的50道面试题,但是没有给出答案,之前我也在寻找这份Redis面试题的答案,今天特地把答案分享出来. 花了大量时间整理了这套Redis面试题及答案,希望对大家有帮助哈~ 弄明白 ...

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

    下面是 Java 线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理 ...

  5. 50道java线程面试题

    50道Java线程面试题 下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序 ...

  6. 2017年50道Java线程面试题

    下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编 ...

  7. 50道Java集合经典面试题(收藏版)

    前言 来了来了,50道Java集合面试题也来啦~ 已经上传github: https://github.com/whx123/JavaHome 1. Arraylist与LinkedList区别 可以 ...

  8. java170道面试题汇总+详细解析

    2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对 ...

  9. ASP.NET 经典60道面试题

    转:http://bbs.chinaunix.net/thread-4065577-1-1.html ASP.NET 经典60道面试题 1. 简述 private. protected. public ...

随机推荐

  1. MongoDB快速入门(十)- Limit(),Skip() 方法

    Limit() 方法 要限制 MongoDB 中的记录,需要使用 limit() 方法. limit() 方法接受一个数字型的参数,这是要显示的文档数. 语法: limit() 方法的基本语法如下 & ...

  2. linux 分析进程占用CPU过高

    重点是查看进程的线程中,哪个线程占用cpu过高,然后用gdb附加到进程,调试线程,看是否有死循环或者死锁等问题,步骤如下: 1 先用ps + grep找出该死的进程pid,比如 1706 2 top ...

  3. Android中Fragment的Hide和Show

    我们都知道,Fragment动态添加的时候我们可以使用FragmentTransaction的add和replace方法,replace方法就等效于对这个Fragment先执行remove(),再执行 ...

  4. Sub-process /usr/bin/dpkg returned an error code (1) 如何解决

    cd /var/lib/dpkg sudo mv info info.bak sudo mkdir info sudo dpkg --configure -a sudo apt-get install ...

  5. SSL HTTPS 生成证书

    SSL HTTPS 一.生成服务器私钥.公钥 $ openssl genrsa -out server.key 2048 $ openssl rsa -in server.key -pubout -o ...

  6. APP埋点:页面统计与事件统计该如何入手?

    我们平时所说的埋点,可以大致分为两部分,一部分是统计APP页面访问情况,即页面统计:另外一部分是统计APP内的操作行为,及自定义事件统计. 一.页面统计 页面统计,可以统计应用内各个页面的访问次数(P ...

  7. UVA 11538 排列组合

    https://vjudge.net/problem/UVA-11538#author=0 将两个不同的皇后放入N*M棋盘中,问使得二者可以相互攻击的方案个数.有可能在同一行,同一列,同一对角线,分开 ...

  8. oepnstack笔记

    openstack简介: 组件:Nova 提供计算资源池neutron 网络资源管理horizon 基于openstack API借口使用django开发的web管理 组件:Nova 提供计算资源池n ...

  9. js数组排序sort()方法

    一.sort方法升序: <script> var arr=[1,15,10,3,56]; arr.sort(function(num1,num2){ return num1-num2; } ...

  10. ARM的编程模式和7种模式

    ARM采用的是32位架构 ARM阅读 --Byte:        8   bits --Halfword:  16  bits(2 byte)  半字 --Word:       32  bits( ...