zoukankan      html  css  js  c++  java
  • Andrid 高级程序员面试题


    ==========================20150518===================================
    一、 Acitvity组件
    1. 生命周期&killed&back
    2. onpause/onstop 区别(例子:DialogActivity)
    onSaveInstanceStatue调用时机(killed、锁屏)
    3. 作用
    onCreate 初始化View
    onPause 保存持久化数据、快速
    onDestory release resource
    onSaveInstanceStatue 保存瞬时状态(比如UI控件的状态,成员变量的值)
    4. onNewIntent()-->onRestart()-->OnStart()
    singleTask或位于栈顶时,再次new activity。

    二、 Service组件
    1. 生命周期&实现方式
    1. 启动方式
    Context.startService() ->onCreate()->onStartCommand()->Service running--调用context.stopService() ->onDestroy()
    Context.bindService() ->onCreate()->onBind()->Service running--调用>onUnbind() -> onDestroy()


    三、 优化
    1. ReativeLayout vs LinearLayout (灵活、减少嵌套)
    2. ListView性能优化
    1、使用Adapter提供的convertView(缓存机制,一屏幕item)
    2、使用自定义的视图缓存类(ViewHolder,setTag())
    3、减少不必要的视图更新(监听滚动事件,减少加载)
    3. 布局原则
    尽量多使用RelativeLayout,不要使用绝对布局AbsoluteLayout;
    将可复用的组件抽取出来并通过< include />标签使用;
    使用< ViewStub />标签来加载一些不常用的布局;
    使用< merge />标签减少布局的嵌套层次; 例如: 根节点是FrameLayout,则用merge,或 相同两个layout

    4. **Monitor.bat 性能检测
    5. PhoneWindow,ViewRoot,Activity之间的大致关系


    四、 java基础
    1. 异常&举例
    Throwable
    Error --> StackOverflowError/OutOfMemoryError
    Exception -->
    IOException FileNotFoundException/EOFException
    RuntimeException NullPointerException/ArrayIndexOutOfBoundsException/ClassNotFoundException
    2. 集合&数据结构
    Collection
    List(有序且允许元素重复)
    ArrayList(线性表)、LinkedList(链表)、Vector(线性表、同步)-->Stack
    Set(不允许元素重复)
    HashSet(哈希算法)、TreeSet(二叉树、排序)
    Map
    HashMap(哈希算法、key数组、value链表)
    TreeMap(树)
    HashTable(排序、同步)

    3. 接口 vs 抽象类
    行为/一类事物;语法不同
    4. Object类方法作用、transi、valite关键字
    5. ==、equals()
    6. 内存溢出、内存泄露区别、例子*********
    7. 设计模式
    单例模式
    观察者模式
    代理模式 http://gongjiayun.iteye.com/blog/948778
    适配器模式

    五、 android 零碎知识
    1. handler
    why: android UI线程不是线程安全的,不允许其他线程操作UI;
    UI线程处理耗时操作,界面卡死、超过5秒回提示"强制关闭"。
    目的: 对耗时操作进行 异步回调机制处理,改善用户体验。
    机制:
    Handler、Looper、MessageQueue和Message;
    主线程、消息循环、消息队列之间的关系是1:1:1;

    使用步骤: 创建消息(消息池);
    发送消息(其他线程);
    处理消息(主线程)。
    2. Task/IBinder
    *task(栈、launchMode): Activity是Android 应用程序的基础组件之一,在应用程序运行时,每一个Activity代表一个用户操作。用户为了完成某个功能而执行的一系列操作就形成了一个 Activity序列,这个序列在Android应用程序中就称之为任务,它是从用户体验的角度出发,把一组相关的Activity组织在一起而抽象出来 的概念。
    *Ibinder 远程调用(就是跨进程调用AIDL)***

    3. 开机时启动广播(BootCompletedReceiver)
    4. android log 文件
    1 程序异常退出 uncaused exception
    2 程序强制关闭 Force Closed (简称FC)现UncaughtExceptionHandler接口
       3 程序无响应 Application No Response(简称ANR),一般主线程超过5秒么有处理就会ANR
    4 手动生成
    5. surfaceview、view区别
    surfaceView是在一个新起的单独线程中可以重新绘制画面,而View必须在UI的主线程中更新画面。




    六、 ContentProvider 数据共享
    1. ContentResolver
    2. Uri/




    异常弹出
    Looper.prepare();
    CPToastManager.toast("很抱歉,程序出现异常,即将退出");
    Looper.loop();

    齊帥
  • 相关阅读:
    共享单车新规出台,或将引领行业走向正轨
    共享单车新规出台,或将引领行业走向正轨
    C#基础——谈谈.NET异步编程的演变史
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/qishuai/p/4512943.html
Copyright © 2011-2022 走看看