美文网首页
Android知识大纲

Android知识大纲

作者: jackzhoud | 来源:发表于2017-04-27 09:43 被阅读0次

    Android知识大纲

    Java垃圾回收机制

    Java内存是如何划分的,Java语言为什么要使用垃圾回收机制?

    垃圾判定

    1. 标记引用算法
    2. 根搜索法
    

    垃圾清扫

    1. 标记-清除法    概念以及特点
    2. 复制算法
    3. 标记-整理法
    4. 分代回收算法
    

    有了垃圾回收机制,Java还会出现内存泄露吗,如果说存在,Java有什么应对机制吗?

    Java的四种引用方式

    1. 强引用
    2. 软引用
    3. 弱引用
    4. 虚引用
      软引用、弱引用配合引用队列如何使用,使用的目的是什么?
      可参考:http://blog.csdn.net/u012152619/article/details/46981643
      <font color=red size=5>以上这么多关于Java垃圾回收和内存的东西,你在编写代码的时候有需要注意的地方吗?</font>

    java数据结构

    数据结构相关的类:Collection、List、Set、Map

    __List:__ArraryList、LinkedList和Vector
    __Set:__hashSet、LinkedSet和TreeSet
    __Map:__HashTable、HashMap、LinkedMap和TreeMap
    内存存放特性、数据增长特性和各自的适用场景
    遍历Iterator、ListIterator和Foreach
    线程安全问题,Tree一类的红黑树概念
    了解Collections和Arrays两个辅助工具类的用法
    HashMap/ArrayMap/SparseArray三个区别和使用场景
    http://blog.csdn.net/u010687392/article/details/47809295

    clone拷贝

    多线程

    线程用法

    Thread、Runnable和Callable,以及各自的特点

    线程的几个状态

    创建、就绪、运行、阻塞、停止

    线程池

    为什么要使用线程池?

    1. 线程池常见的几个类的用法:
      ThreadPoolExecutor、Executor,Executors,ExecutorService,CompletionService,Future,Callable 等
    2. 线程池四个分类
      newCachedThreadPool、newFixedThreadPool、newScheduledThreadPool和SingleThreadExecutor
    3. 自定义线程池 ThreadPoolExecutor

    线程池工作原理

    核心线程数、等待队列、处理策略等

    线程同步

    同步方式:synchronized和lock
    同步相关方法:wait()/notify()/notifyAll() sleep()/join()/yield() await()/signal()/signalAll
    如何使用,各自适用场景?

    参考:http://wiki.jikexueyuan.com/project/java-concurrency/executor.html

    设计模式

    面向对象设计六大原则

    优化代码的第一步——单一职责原则
    让程序更稳定、更灵活——开闭原则
    构建扩展性更好的系统——里氏替换原则
    让项目拥有变化的能力——依赖倒置原则
    系统有更高的灵活性——接口隔离原则
    更好的可扩展性——迪米特原则

    参考:http://blog.csdn.net/bboyfeiyu/article/details/50103471

    android适配问题

    不同系统版本之前的适配 -- API变化

    不同手机厂商之间的适配 -- 对Android原生系统进行了改造

    屏幕适配 -- 尺寸单文(dp/sp/px)、布局layout和图片资源

    可参考:http://blog.csdn.net/qq_28758749/article/details/51297842

    Handler机制

    1. 使用方法, send/post两种方式
    2. handler底层怎么从发送消息到接收消息的
    3. 理清楚Looper、Handler、MessageQueue和Message概念和关系
    4. HandlerThread是什么东东,如何使用,和Handler有什么区别呢?
      参考:http://blog.csdn.net/jackzhouyu/article/details/49079699

    Activity

    1. 正常执行时,生命周期是何变化?异常时和Activity重新展开时,注意方法的调用时机: onSaveInstance()、onRestoreInstance()、onWindowFocusChanged()和onConfigurationChanged()以及使用方法
    2. onStart()和onResume()、 onPause()和onDestroy()这两方法用处都很类似,Android为什么要这么设计呢?
    3. Activity的四种启动方式standard、singleTop、singTask和singleInstance是什么?他们onNewIntent()方法的关系

    参考:
    (1) http://blog.csdn.net/woshimalingyi/article/details/50961380
    (2) http://blog.csdn.net/jiangwei0910410003/article/details/16968881
    (3) http://www.cnblogs.com/lijunamneg/archive/2013/03/26/2982461.html
    (4)http://blog.csdn.net/mynameishuangshuai/article/details/51491074

    Fragment

    1. 什么是fragment?为什么要使用fragment?  
    需要对比Activity才能更好的作出解答
    2. fragment的生命周期,并且和Activity的联系?
    3. fragmentManger和FragmentTransaction两者用法,它的replace/add/remove/hide/show方法,以及添加到回退站和回退的用法
    4. fragment和Activity的通信,以及何种方案保证降低他们的耦合性
    以及fragment上踩过的一些坑
        a. 嵌套fragment时Duplicated id或者Tag
        b. replace之痛
        c. Fragment的public默认无参数构造方法
        原因:Fragment会被重新销毁(Activity销毁的时候它里面的Fragment就被销毁了,可能因为内存不足,手机配置发生变化,横竖屏切换)。在重新创建的时候系统调用的是无参构造函数。
        d. getActivity()为空指针
        讲解:http://blog.csdn.net/goodlixueyong/article/details/48715661
        f. frgament和viewpager配合使用,生命周期影响几何,fragment如何感知自己已经处于显示状态,并且与Activity通信
        http://blog.csdn.net/tongcpp/article/details/41978751
    参考:
    (1)http://toughcoder.net/blog/2015/04/30/android-fragment-the-bad-parts/
    (2)http://blog.csdn.net/lmj623565791/article/details/37970961
    

    Service

    1. 生命周期及两种启动方式
    2. Service的线程关系和Thread,它属于哪个线程和进程
    3. Service和IntentService的区别
    

    参考:
    http://blog.csdn.net/xiao__gui/article/details/11579087
    http://blog.csdn.net/huutu/article/details/40357481

    android事件分发机制

    1. Activity里面的组件发生点击事件时,事件是如何传递的?
    2. view和viewgroup事件分发区别,理解dispatchTouchEvent()、onInterceptTouchEvent、onTouchEvent、onTouch和onClick事件
    

    <font color=red>public boolean dispatchTouchEvent(MotionEvent ev)</font>
    用来进行事件的分发。如果事件能够传递到当前View,此方法一定会被调用,返回结果受当前View的onTouchEvent()和下级View的diapatchTouchEvent()方法的影响,表示是否消耗当前事件

    <font color=red>public boolean onInterceptTouchEvent(MotionEvent event)</font>
    用来判断是否拦截某个事件,如果当前View拦截了某个事件,那么在同一个事件序列当中,此方法不会被再次调用,返回结果表示是否拦截当前事件。
    <font color=red>public boolean onTouchEvent(MotionEvent event)</font>
    在dispatchTouchEvent()中调用,用来处理点击事件,返回结果表示是否消耗当前事件,
    如果不消耗,则在同一个事件序列中,当前View无法再次接收事件

    当子view的action_down事件不处理后,后续事件序列将不再传递给他
    当子view除action_down外的事件不处理后,虽然后续事件也会收到,但是它的父组件却无法处理
    requestDisallowInterceptTouchEvent,onInterceptTouchEvent两个方法
    参考:
    https://segmentfault.com/a/1190000005268399

    精通网络通信机制;
    对TCP、HTTP协议有丰富实践经验;
    熟悉HTML、CSS、JS等web基础知识,独立或主导完成过大中型移动app经验者优先;
    深入研究过android系统机制和framework源码,精通android上的app开发、调试、编译、打包等流程;
    有技术难题攻关经验,在移动端app内存优化、绘制效率优化、IO优化或数据库、电量等调优方面有丰富的经验。

    面试问题准备

    干货资源

    https://juejin.im/entry/578d938079bc44005ff26aec

    相关文章

      网友评论

          本文标题:Android知识大纲

          本文链接:https://www.haomeiwen.com/subject/wvdgzttx.html