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. Python 类的设计原则

    # 面向对象遵循的原则: SOLID # S(Single Responsibility Principle) # 单一职责原则 # 一个类只负责一项职责 # 好处 # 易于维护, 写出高内聚的代码 ...

  2. Hibernate的一级缓存、二级缓存和查询缓存。

    Hibernate的Session提供了一级缓存的功能,默认总是有效的,当应用程序保存持久化实体.修改持久化实体时,Session并不会立即把这种改变提交到数据库,而是缓存在当前的Session中,除 ...

  3. 解决Spark用Maven编译时报Exception in thread "main" java.lang.OutOfMemoryError: PermGen space异常

    异常截图: 解决方法: export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"

  4. SSH2 增删查改实例

    (一)引入包 (共73个,不一定都需要,但是我的项目是这么多,经过调试,没有包冲突) (二)创建数据库表 建立数据库octtest,并创建user表,表里面一共4个字段:id,姓,名,年龄. 语句如下 ...

  5. OpenCV几种边缘检测的简例

    简单记录一下OpenCV的几种边缘检测函数的用法. 边缘检测算法 以Sobel边缘检测算法为例. Sobel卷积核模板为: 偏导公式为: Gx(i,j)=[f(i+1,j−1)+2f(i+1,j)+f ...

  6. Ceph Monitor基础架构与模块详解

    转自:https://www.ustack.com/blog/ceph-monitor/ Ceph rados cluster离不开Monitor,如果没有Monitor,则Ceph将无法执行一条简单 ...

  7. C++轮子队-软件需求规格说明书

    团队Github项目仓库 软件规格需求说明书 引言 编写目的 软件规格需求说明书书了“2048俄罗斯方块”1.0版本的软件功能性需求和非功能性需求. 文档约定 描述编写文档时所采用的标准或排版约定,包 ...

  8. node 一站式 学习 教程

    还是比较全面的, 包括了 : monogoDB的安装 使用 , 各种插件, 中间件的介绍, 路由的介绍, 各种数据库框架的介绍, 测试介绍;  掌握后应该可以开发一个中型的程序, 大型程序因为有性能的 ...

  9. Android开发技巧——写一个StepView

    在我们的应用开发中,有些业务流程会涉及到多个步骤,或者是多个状态的转化,因此,会需要有相关的设计来展示该业务流程.比如<停车王>应用里的添加车牌的步骤. 通常,我们会把这类控件称为&quo ...

  10. Java进阶知识点8:高可扩展架构的利器 - 动态模块加载核心技术(ClassLoader、反射、依赖隔离)

    一.背景 功能模块化是实现系统能力高可扩展性的常见思路.而模块化又可分为静态模块化和动态模块化两类: 1. 静态模块化:指在编译期可以通过引入新的模块扩展系统能力.比如:通过maven/gradle引 ...