小米2020校招Android笔试题

1.对序列{15,9,7,8,20,-1,4}进行排序,进行一趟后数据的排列变为{4,9,-1,8,20,7,15};则采用的是()排序。

增量为3的希尔排序,15 8 4 三个排序 4 8 15,9和20排序 9 20,7和-1排序 -1 7 。
第一趟选择 4 9 -1 8 20 7 1

2.数据库索引经常使用B+树。以下关于B+树的描述,错误的是哪一项?

A. B+树的插入、删除可以保证其平衡性
B. 与二叉树相比,B+树更利于降低高度
C. B+树能够支持顺序查找
D. B+树空间复杂度低于B树

解析:B+树相比B树额外存储了顺序查找的指针,空间复杂度更大。

3.下列方法中,()不可以用来程序调优?

A.改善数据访问方式以提升缓存命中率
B.使用多线程的方式提高 I/O 密集型操作的效率
C.利用数据库连接池替代直接的数据库访问
D.利用迭代替代递归
解析:B.I/O密集型指的是所有的线程都在等待一个I/O的操作,当他输入输出端所有的数据来了之后,我们非常快的就能处理完,而大部分时间都会在等待中,所以既然已经在等待中的话再去增加 线程的量也没法提高效率的,因为就是处于等待中的嘛。
D.递归会使用栈,它的消耗是很大的

4.以下关于GET和POST的说法,错误的是()

A.GET一般用于获取资源,POST用于上传资源
B.POST安全性比GET高
C.GET和POST参数长度都不受限制
D.GET参数之间以&连接
解析:
get请求提交的url中的数据最多只能是1024字节,这个限制是浏览器或者服务器给添加的,http协议并没有对url长度进行限制,目的是为了保证服务器和浏览器能够正常运行,防止有人恶意发送请求。
post请求则没有大小限制。

5.下面是属于GLSurFaceView特性的是? ABC

A.管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上。
B.管理一个EGL display,它能让opengl把内容渲染到上述的surface上。
C.让渲染器在独立的线程里运作,和UI线程分离。
D.可以直接从内存或者DMA等硬件接口取得图像数据

GLSurfaceView是一个视图,继承至SurfaceView,它内嵌的surface专门负责OpenGL渲染。

    GLSurfaceView提供了下列特性:
    1.管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上。
    2.管理一个EGLdisplay,它能让opengl把内容渲染到上述的surface上。
    3.用户自定义渲染器(render)。
    4.让渲染器在独立的线程里运作,和UI线程分离。
    5.支持按需渲染(on-demand)和连续渲染(continuous)。
     6.一些可选工具,如调试。
6.下面关于BroadcastReceiver正确的是()

A.BroadcastReceiver有两种注册方式,静态注册和动态注册。
B.BroadcastReceiver必须在AndroidMainfest文件中声明
C.BroadcastReceiver的使用,一定有一方发送广播,有一方监听注册广播,onReceive方法才会被调用。
D.广播发送的Intent都是隐式启动。

解析:四大组件中广播接受者是可以不在清单文件中配置的,BroadcastReceiver还可以用代码来注册,
两者的区别是,如果在清单文件中配置,那么即使应用关掉后,还是可以接收到广播,
如果用代码注册,那么应用关掉后,就不能接收广播了。

7.在这里插入图片描述
8.下面关于HashMap说法正确的是() BD

A.HashMap是线程安全的,可以用于多线程环境下
B.HashMap容量不足(超过了阈值)时,会自动增长
C.HashMap是基于哈希表实现,是有序的
D.HashMap实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克

HashMap线程安全详见

HashMap不是有序的,顺序的Map实现类:TreeMap和LinkedHashMap。

9.在这里插入图片描述
10.下结构中,查找操作时间性能最好的是()

A.栈
B.红黑树
C.AVL 树
D.堆
解析:叉查找数的查找速度取决于树的深度 相同节点数深度最小的是平衡二叉树。

10.以下关于Android线程的说法错误的是?(  ) ACD

A. Service运行在子线程上,与主线程通过Binder来通信
B. BroadcastReceiver可以在onReceiver里直接更新UI
C. Activity与Fragment运行在不同的线程上,必须通过setArguments方式通信
D. ContentProvider运行在子线程中,因此不会引发ANR错误

解析:四大组件均运行在主线程中,Service执行耗时任务需要自己开线程,而IntentService则默认运行在子线程中。onReceive运行在主线程,需要耗时的操作可以调用goAsync(),但也不能超过10s。

11.以下可以实现多线程的是() AB

A. Thread
B. AsyncTask
C. Runable
D. Handler
解析:runnable两个n注意!!!

Java多线程实现的方式有四种
1.继承Thread类,重写run方法
2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target
3.通过Callable和FutureTask创建线程
4.通过线程池创建线程
 
#AsyncTask
封装了Thread和Handler,存在两个线程池
12.下面关于多线程说法错误的是() ABC

A.ThreadLocal能够实现线程的同步
B.volatile关键字能够保证原子性和可见性
C.wait()和notify()必须结合synchronized对象一起使用,wait()和notify()是Thread类中定义的方法
D.使用synchronized时,当一个线程得到了一个对象的锁之后,再次请求该对象时,可以再次得到该对象的锁

解析:1.ThreadLocal 是每个线程独有的用来存放局部变量的类,实现了线程的数据隔离
2.volatile 指令重排序和线程可见性
3.wait() 和 notify() 是Object类都有的方法

13.下列选项中关于反射的说法正确的有哪些?() AD

A.Class类也是一种类,不可以像普通类一样new一个Class对象
B.不能通过反射的方式够获取private修饰的属性的值
C.不能够通过反射的方式调用父类的方法
D.能够通过反射的方式调用静态的方法

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值