京东:移动端主观题

问答题

  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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,842评论 25 709
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,385评论 11 349
  • 周日晚,小蓝终于在平日保持训练之余的时间把暑假作业都做完了,我也终于把这一期的水彩画画课程结束了,刚好蓝爸爸...
    七彩蓝澜阅读 791评论 2 14
  • tensorflow中关于BN(Batch Normalization)的函数主要有两个,分别是: tf.nn.m...
    Traphix阅读 65,709评论 9 62
  • 其实,我是一个演员 窗口是舞台, 绵延不绝的常绿灌木, 排着队列扑面而来, 又一拥而去。 没有开始, 没有掌声, ...
    yiyi_4f59阅读 283评论 0 0