美文网首页
京东:移动端主观题

京东:移动端主观题

作者: 安安zoe | 来源:发表于2017-09-08 18:55 被阅读0次

    问答题

    1. 如何退出Activity?如何安全退出已调起多个Activity的Application?
    1. finish()
    2. 新建一个类ActivityCollector用于管理全部的Activity对象,每生成一个Activity对象就将其添加到ActivityCollector一个List中,在ActivityCollector中实现一个finishAll()方法,用于结束list 中所有的Activity对象
    //1.创建一个类(MyApplication)继承Application
    public class MyApplication extends Application{
    
    // 2.创建一个用于存放activity的集合,这里可以创建一个Activity的基类,
    // 叫BaseActivty,让所有的Activity都继承它,在BaseActivity中我们可以写共性的方法或变量等。
    //创建一个用于存放Activitiy的集合
     List<BaseActivity> mActivityList = new ArrayList<>();
    
    //3. 添加3个方法,分别用于添加Activity,移除Activity,清空集合
    //提供一个添加activity的方法
        public void addActivity(BaseActivity activity) {
            if (!mActivityList.contains(activity)) {
                mActivityList.add(activity);
            }
        }
    
        //提供一个移除activity的方法
        public void removeActivity(BaseActivity activity) {
            if (!mActivityList.contains(activity)) {
                mActivityList.remove(activity);
            }
        }
    
        //提供一个清空集合的方法
        public void clearAllActivity() {
            for (int i = 0; i< mActivityList.size(); i++) {
                BaseActivity activity = mActivityList.get(i);
                activity.finish();
            }
            mActivityList.clear();
        }
    
    1. 用至少两种方式实现一个Singleton(单例模式)。
    public class Singleton{
        private volatile static Singleton single;
        private Singleton(){
        }
        public static Singleton getInstance(){
            if (single == null){
                synchronized(Singleton.class){
                    if (single == null){
                        single = new Singleton();
                    }
                }
            }
            return single;
        }
    }
    
    
    
    public class Singleton {
        private static class SingletonHolder {
            private static final Singleton INSTANCE = new Singleton();
        }
        private Singleton(){}
        public static final Singleton getInstance() {
            return SingletonHolder.INSTANCE;
        }
    }
    
    1. 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?

    方式1:继承Thread类。
    A:自定义类MyThread继承Thread类。
    B:MyThread类里面重写run():run Alt+/
    C:创建对象
    D:启动线程
    方式2:实现Runnable接口的步骤:
    A:自定义类MyRunnable实现Runnable接口
    B:重写run()方法
    C:创建MyRunnable类的对象
    D:创建Thread类的对象,并把C步骤的对象作为构造参数传递
    方法3:实现Callable接口,重写call()方法:不常用
    一般使用方法2

    同步有几种实现方法,都是什么?
    (1)synchronized关键字:包括 synchronized方法和 synchronized块
    (2)wait()方法和notify()方法
    (3)Lock接口及其实现类ReentrantLock

    1. 请描述下Activity的生命周期
    2. 什么是ANR和Force Close?如何避免?

    ANR: Application Not Responding
    产生原因:
    1.主线程(UI线程)响应用户操作事件时间超过5秒
    2.BroadcastReceiver超过10秒钟任未执行完毕。
    避免方法:
    Android应用程序完全运行在一个独立的线程中。任何在主线程中运行的,需要消耗大量时间的操作都会引发ANR。因此,需要消耗大量时间的操作如访问网络和数据库,都要放到子线程中或者使用异步方式来完成。

    Force Close.
    产生原因:
    程序出现异常,一般像空指针、数组越界、类型转换异常等。
    避免方法:
    编写程序时要思维缜密,异常出现时可以通过logcat查看抛出异常代码出现的位置,然后到程序中进行修改。

    选择题

    1. 算法的五个特征:有穷性,确切性,输入项,输出项,可行性
    2. 堆排序复杂度:时间复杂度O(nlogn),整个构建堆的时间复杂度为O(n),堆排序的空间复杂度为O(1),堆排序是一种不稳定的排序算法
    3. 基于比较的排序算法有:(1)直接插入排序;(2)冒泡排序;(3)简单选择排序;(4)希尔排序;(5)快速排序;(6)堆排序;(7)归并排序。
      另外:基数排序、桶排序都属于分配式排序
    4. 链地址法
    5. SNMP基于传输层UDP用户数据报协议,在管理者和被管理设备(确切的说是agent)之前传递信息。
      SNMP管理包括下面三个部分:
      (1)MIB管理信息库
      (2)SMI管理信息的结构和标识(也称管理信息接口SMI)
      (3)SNMP简单网络管理协议
    6. DHCP 有 8 种消息类型,分别是 Discover、Request、Release、Inform、Decline、Offer、ACK、NAK。
      其中前 5 种可由主机发起,后 3 种只能是 DHCP 服务端向主机发送
    7. 匹配是指在同一子网内
    8. TCP 21 端口: FTP 文件传输服务
      TCP 23 端口: TELNET 终端仿真服务
      TCP 25 端口: SMTP 简单邮件传输服务
      UDP 53 端口: DNS 域名解析服务
      TCP 80 端口: HTTP 超文本传输服务
      TCP 110 端口: POP3 “邮局协议版本3”使用的端口
      TCP 443 端口: HTTPS 加密的超文本传输服务
      默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制。
    9. 利用归并排序方法对数字序列:5,19,17,21,11,8,1进行排序,共需要进行( )次比较
      (5, 19, 17, 21, 11,8,1)
      (5, 19, 17, 21)( 11,8,1)
      (5, 19)( 17, 21)( 11,8)(1)
      开始合并:
      (5, 19)( 17, 21)( 8,11)(1)比较3次
      (5, 17, 19, 21)(1, 8, 11)比较4=3+1次
      (1, 5, 8, 11, 17, 19, 21)比较4次
      共比较11=3+4+4次
    10. 采用计数排序算法对数组A = {1,0,3,1,0,1,1}进行排序,则辅助数组C的长度值为max-min+1,max和min为待排序序列的最大值和最小值,故C的长度为:3-0+1=4;(注意:计数排序是特殊的桶排序,每个桶的长度为1。所以辅助数组的长度为(max-min)/1+1);

    相关文章

      网友评论

          本文标题:京东:移动端主观题

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