zoukankan      html  css  js  c++  java
  • 面试知识点总结01

    1.Android 版本Bug

    想必使用过 Android 5.0.1 系统的用户对内存泄露 bug 不会感到陌生,此缺陷不仅会导致内存占用过高,还会进而致使应用及其后台进程被强制关闭,甚至是系统界面崩溃等。

      内存泄露

      信息泄露

      流量泄露

    2.ArrayList 和LinkList的区别

    ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦

    LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 ,但是缺点就是查找非常麻烦 要丛第一个索引开始。

    通俗理解: 你可以把 ArrayList看做是一个大小长度可变的数组来使用~~~ 一般情况也常用这个做查询操作;

    LinkedList呢 他其实是一种链表形式的容器,插入删除很方便 。

    3.Service的生命周期以及Banding Service 和 Start Service 的区别?

    service根据不同的启动方式会展现出不同的生命周期:

    如果以onStart()方式: context.startService() ->onCreate()- >onStart()->Service running context.stopService() | ->onDestroy() ->Service stop

    如果Service还没有运行,则android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次。

    stopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。

    该Service的调用者再启动起来后可以通过stopService关闭Service。 所以调用startService的生命周期为:onCreate --> onStart(可多次调用) --> onDestroy

    如果以onBInd()方式:   

    使用使用context.bindService()启动Service会经历:

       context.bindService()->onCreate()->onBind()->Service running

      onUnbind() -> onDestroy() ->Service stop

      onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。  这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用onUnbind->onDestroy相应退出。

       所以调用bindService的生命周期为:onCreate --> onBind(只一次,不可多次绑定) --> onUnbind --> onDestory。    

    在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),其他onCreate,onBind,onUnbind,onDestory在一个生命周期中只能被调用一次。

      onStart()的方式一般用以本地服务的调用,Activity与Service不需要交互,调用者与Service无任何关系 如果以onBInd()方式:远程调用,Activity与Service会有交互,调用者与Service绑定在一起。

    注意:Service需要在清单文件中进行配置才能使用。

    关于四大组件: http://www.cnblogs.com/pepcod/archive/2013/02/11/2937403.html 这个帖子写的很好。

    4.res/raw和assets目录的区别

    答:  二者的相同点:都会直接原封不动的保存在APK中而不会被编译成二进制文件  

      不同点:   

      1.raw目录下,不能存在文件,而不能包含文件夹。而assets可以包含下一级的文件夹  

       2.raw目录下的资源会映射到R.java下生成资源ID,assets不会。

        3.获得资源的方法不同如下:   

       this.getAssets().open("xml/channels.xml");    

      this.getResources().openRawResource(R.raw.students);    

      this.getClassLoader().getResourceAsStream("students.xml");

    5.String与StringBuffer,StringBuilder的区别

       1.三者在执行速度方面的比较: StringBuilder>StringBuffer>String

      2.String执行速度最慢的原因  String :字符串常量  StringBuffer:字符串变量  StringBuilder:字符串变量  由上可知:string是字符串常量也就是不可改变的对象,

     如: String str1 ="Hello";   

      str1 = str1+"wolrd";   

      syso(str1);---->Helloworld;   

      虽然输出是这样,但是内部实现是:首先创建一个对象str1,然后在创建一个新的对象str1来合并操作,   而原来的对象被GC回收掉。   

      而StringBuffer和StringBuilder则是在原来的对象上进行操作。   StringBuffer有一个方法:append(),添加字符串;  

       2.线程安全性:    

        StringBuffer是线程安全的    

        StringBuilder 是线程非安全的;  

    对于三者使用的总结:

     1.如果要操作少量的数据用 = String  

      2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder  

      3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

    6. .9.PNG是干什么的?怎么使用?  

    9png图片一般用在需要拉伸的地方,比如聊天程序的对话框,字数不同,对话框的大小也不同。

     所以就有了9png,之所以叫9是因为图片被分割为9个部分。

     //目前制作还不是太理解。。。  

  • 相关阅读:
    ES6 Set.Map.Symbol数据结构
    ES6 class类 静态方法及类的继承
    ES6 浅谈Reflect
    ES6 proxy代理详解及用法
    Vue之生命周期函数
    Vue之自定义键盘修饰符、自定义指令
    v-show和v-if区别
    迭代器iterator
    es6之Proxy代理
    es6之symbol数据类型
  • 原文地址:https://www.cnblogs.com/taotaomajia/p/4629568.html
Copyright © 2011-2022 走看看