小米2020校招Android工程师笔试题一

335 阅读4分钟

单选题

  1. 假设英文字母从小到大的顺序为ABCDEFG,对于二叉搜索(排序)树,下面哪一个序列可能是中序遍历的结果(A)
  • [A] ABCDEFG
  • [B] ABCGDEF
  • [C] DEFGABC
  • [D] 都有可能
  1. 对于有n个结点和e条边的图,使用邻接表存储时,遍历图的时间复杂度为(D)
  • [A] O(e^2)
  • [B] O(n^2)
  • [C] O(ne)
  • [D] O(n+e)
  1. 以下结构中,查找操作时间性能最好的是(C)
  • [A] 栈
  • [B] 红黑树
  • [C] AVL树
  • [D] 堆
  1. 某棵二叉树只有度数为0和2的结点,其中度数为0的结点树为n,则这棵二叉树有多少结点?(B)
  • [A] 2n
  • [B] 2n-1
  • [C] 2n+1
  • [D] n+1
  1. 设指针 q 指向单链表中结点 A,指针 p 指向单链表中结点 A 的后继结点 B,指针 s 指向被插入的结点 X,则在结点 A 和结点 B 插入结点 X 的操作序列为:(B)
  • [A] s->next=p->next; p->next=s;
  • [B] q->next=s; s->next=p;
  • [C] p->next=s->next; s->next=p;
  • [D] p->next=s; s->next=q;
  1. 有一组数据(15,9,7,8,20,-1,7,4),用堆排序的筛选方法建立的初始堆为(最小顶堆)?(C)
  • [A] 1,4,8,9,20,7,15,7
  • [B] -1,7,15,7,4,8,20,9
  • [C] -1,4,7,8,20,15,7,9
  • [D] A,B,C均不对
  1. 在SQL中,与关系代数中的投影运算符对应的字句是(B)
  • [A] FROM
  • [B] SELECT
  • [C] WHERE
  • [D] OREDER BY
  1. 关于数据库死锁,以下描述不正确的是?(C)
  • [A] 串行执行事务的数据库不会发生死锁
  • [B] 处理已发生的死锁的方法是回滚部分事务以释放锁
  • [C] 对于死锁的处理,事先预防的机制可以提高数据使用率
  • [D] 解除死锁回滚事务的选择以最小代价为标准
  1. 下列选项中,(D)可以执行特权指令
  • [A] 普通用户程序
  • [B] 设备驱动程序
  • [C] 动态库函数
  • [D] 管理员用户的程序
  1. 以下关于TCP的说法,错误的是(A)
  • [A] 发送端发完一个包后,需要等待接收端确认,才能继续发送下一个
  • [B] TCP包大小会动态变化
  • [C] TCP接收方会丢掉重复的数据
  • [D] TCP对发送的每一个包进行编号,由接收方对数据包进行排序
  1. 以下关于Android线程的说法错误的是?(ACD)
  • [A] Service运行在子线程上,与主线程通过Binder来通信
  • [B] BroadcastReceiver可以在onReceiver里直接更新UI
  • [C] Activity与Fragment运行在不同的线程上,必须通过setArguments方式通信
  • [D] ContentProvider运行在子线程中,因此不会引发ANR错误
  1. 以下关于Handler的说法错误的是?(AC)
  • [A] Handler用于跨进程通信
  • [B] Handler是一个消息处理机制
  • [C] Handler只能在主线程中使用
  • [D] Handler和Looper,MessageQueue一起工作
  1. 下列关于BoradcastReceiver的说法正确的是(CD)
  • [A] 只能接收本应用发送的广播
  • [B] 一个广播intent,只能被一个BoradcastReceiver所接收
  • [C] onReceive方法是在广播接受者的主线程被调用的
  • [D] 对于有序广播,系统会根据接收者声明的优先级别按顺序执行
  1. 以下可以作为android系统的数据持久化方案的是(ABC)
  • [A] SharedPreference
  • [B] File
  • [C] Sqlite
  • [D] HashMap
  1. 以下可以实现多线程的是(AB)
  • [A] Thread
  • [B] AsyncTask
  • [C] Runable
  • [D] Handler
  1. 关于垃圾回收说法正确的有(ABD)
  • [A] 对于一个对象来说,只要有强引用的存在,它将不能被回收
  • [B] 一个对象被弱引用持有,不管当前内存空间足够与否,在下一次垃圾回收时都会被回收
  • [C] GC root不包括当前虚拟机栈(栈帧中的本地变量表)中引用的对象
  • [D] 垃圾回收不仅仅发生在堆区,也可以发生在方法区
  1. 下面关于多线程说法错误的是(ABC)
  • [A] ThreadLocal能够实现线程的同步
  • [B] volatile关键字能够保证原子性和可见性
  • [C] wait()和notify()必须结合synchronized对象一起使用,wait和notify()是Thread类中定义的方法
  • [D] 使用synchronized时,当一个线程得到了一个对象的锁之后,再次请求该对象时,可以再次得到该对象的锁
  1. 下列选项中关于反射的说法正确的有哪些?(AD)
  • [A] Class类也是一个类,不可以像普通类一样new一个Class对象
  • [B] 不能通过反射的方式获取private修饰的属性的值
  • [C] 不能够通过反射的方式调用父类的方法
  • [D] 能够通过反射的方式调用静态的方法
  1. 下面的代码运行的结果哪个是不正确的(ACD)
    class array_output {
        public static void main(String args[]) {
            int array_variable[][] = {{ 1, 2, 3}, { 4 , 5, 6}, { 7, 8, 9}};
            int sum = 0;
            for (int i = 0; i < 3; ++i)
                for (int j = 0; j <  3 ; ++j)
                    sum = sum + array_variable[i][j];
            System.out.print(sum / 5);
        } 
    }
  • [A] 8
  • [B] 9
  • [C] 10
  • [D] 11