zoukankan      html  css  js  c++  java
  • Android面试经验汇总(二)

    1.Activity的生命周期

    2.Activity的启动模式

      1.standard

          默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加

      2.singleTop

         可以有多个实例,但是不允许多个相同Activity叠加。即,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。

      3.singleTask

      只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。

      4.singleInstance

        只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。

    3.广播的注册方式及区别

      1.静态注册

           在Android.manifest里面进行注册,通过在<intent-filter>中添加<action>来设置能接收的广播类型。静态注册的广播一旦应用程序启动,就实时处于接收广播的监听中,即使应用程序关闭了,同样能接收来自系统或其他应用程序发出的广播。

      2.动态注册

           在Java代码中进行注册,首先创建一个继承BraodcastReceiver的类,重写onReceive()方法;然后实例化这个类的对象,通过这个对象设置能接收的广播类型,并通过registerReceiver()方法进行注册,使用结束后调用unRegisterReceiver()方法进行解注册。动态注册的广播只能在注册之后,解注册之前进行监听,一旦解注册或者是应用程序结束,将无法再接收广播。

    4.final关键字

      1.修饰类

           当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。

           在使用final修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用来继承或者出于安全的考虑,尽量不要将类设计为final类。

      2.修饰方法

          使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。

          因此,如果只有在想明确禁止该方法在子类中被覆盖的情况下才将方法设置为final的。类的private方法会隐式地被指定为final方法。

      3.修饰变量

       对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

      4.深入理解final关键字

    a) 类的final变量和普通变量有什么区别?

          当用final作用于类的成员变量时,成员变量(注意是类的成员变量,局部变量只需要保证在使用之前被初始化赋值即可)必须在定义时或者构造器中进行初始化赋值,而且final变量一旦被初始化赋值之后,就不能再被赋值了。

    b) 被final修饰的引用变量指向的对象内容可变吗?

          引用变量被final修饰之后,虽然不能再指向其他对象,但是它指向的对象的内容是可变的。

    5.单链表中如何判断是否有环
         采用追赶的方式判断,即同时使用两个指针对该链表进行遍历。其中一个为快指针,每次前进两步,一个为慢指针,每次前进一步。如果存在环,那么两者一定会相遇;如果不存在环,那么快指针为Null时退出遍历。
    public boolean isExistLoop(SingleList list){
                  Node slow = list. head;
                  Node fast = list. head;
                   while(fast != null && fast.next != null){
                          slow = slow. next;
                          fast = fast. next. next;
                         
                          if(slow == fast ){
                                return true;
                         }
                  }
                   return false;
           }
    

      

     
  • 相关阅读:
    hibernate 继承映射关系( JOINED)
    hibernate 继承映射关系( TABLE_PER_CLASS)
    hibernate 继承映射关系( SINGLE_TABLE)
    hibernate list和iterate
    hibernate 1 + N 问题解决
    hibernate EJBQL QBC QBE
    Visual Studio 2015 Update 3 RC 候选预览版粗来了
    【Xamarin挖墙脚系列:Xamarin正式发布了IOS的模拟器在Windows下】
    Windows服务安装完成后自动启动
    用户IP地址的三个属性的区别(HTTP_X_FORWARDED_FOR,HTTP_VIA,REM_addr
  • 原文地址:https://www.cnblogs.com/siguoyi/p/5280030.html
Copyright © 2011-2022 走看看