小米2019秋招软件开发笔试题A选择部分解析

之前去牛客做了一下,顺手把答案和解析写下。
只是个人的理解,个人水平有限,如果有哪里错了各位可以提醒一下我改一下,非常感谢。
1.哪些语言是面向对象的多选)

小米2019秋招软件开发笔试题A选择部分解析
A选项,双端队列可以模拟栈,只从一边进出就可以模拟栈了;栈也可以模拟队列,用两个栈,进来一个元素就把之前的全部出栈到另一个栈,进来的这元素沉底了再从另一个栈出元素放回这个栈,就可以模拟队列了。
C选项明显不对叭。
D选项明显对叭。
B选项,栈和队列的底层可能是数组或链表,链表很明显不能随机访问,我认为这里不管说是能随机访问还是不能随机访问其实都不太全面。
由于这题是多选题,所以排除法排除A,C后就只剩B,D了;

3.关于快速排序,说法正确的是 (多选)

小米2019秋招软件开发笔试题A选择部分解析
这题目这么长还有这密密麻麻的sql语句给我看麻了都,随手选的一个。
这题做的我很迷,我觉得有问题——所以用navicat复制了一下这个表。

A选项:括号中的t表:

小米2019秋招软件开发笔试题A选择部分解析
加上having:
小米2019秋招软件开发笔试题A选择部分解析

B选项: 有括号的那一段是:按照app_id和version_code分组,按照下载量的降序排序,将统计下载量总和(总和别名:download_sum)后的app_id,version_code和down_sum作为一张新表t,将t按照版本号分组,在其中选择版本号和最大的下载量。

括号部分:按照app_id和version_code分组,按照下载量的降序排序,将统计下载量总和

小米2019秋招软件开发笔试题A选择部分解析
不是一个应用里选一个最大下载量的版本吗选了一堆。

C选项:

小米2019秋招软件开发笔试题A选择部分解析
D选项我觉的没错啊这。

我觉得这个题有问题,官方选B是因为select只选了两项,version_code和max(t.download_sum)吗余的都选了app_id。

5.不同级别的用户对同一对象拥有不同的访问权利或某个客户端不能直接操作到某个对象,但又必须和那个对象有所互动,这种情况最好使用什么设计模式。(单选)

小米2019秋招软件开发笔试题A选择部分解析
这么大的数一点一点换算成二进制表示,等算完说不定笔试早结束了。
看这个数的最后一位是3,除了2^0=1,不管前面31位上是0还是1它一定是偶数,偶数和偶数相加也是偶数,所以可以得知3232238233转换为二进制后最后一位上肯定是1,二进制最后一位是1,按8位一取最后的肯定也是个奇数,A,B,C选项都是偶数,所以pass。

7.一个栈的入栈顺序为K、L、M、N,则以下哪种出栈顺序不可能发生(单选)

小米2019秋招软件开发笔试题A选择部分解析
小米2019秋招软件开发笔试题A选择部分解析
A选项,明显对,代树哪一层算算就知道了
B选项,明显对,最多节点的情况就是整棵树都满了,节点总和可不就是(2^k)-1,代树算下也很明了。
C选项,往A的式子一套,C的意思就是给了个第k层也就是最后一层的最多节点数目,树的k层上头的节点可没算。个人认为最少的节点数应该是(2^(k-1))个。
第k层上面算整个树的节点,最后一层再来一个,所以就是 (2^(k-1))-1+1。
D选项,是公式背一下,是[logn]+1,logn要向下取整。
选A,B嗷。

9.访问 https://www.mi.com/ 会经过哪些协议多选)

小米2019秋招软件开发笔试题A选择部分解析
都转十进制:
A:259
B:257
C:258
D:256

11.一个作业系统中有4台打印机,每个作业需要独占2台打印机才能完成,则该系统最多可以同时执行多少作业而保证不会死锁单选)

小米2019秋招软件开发笔试题A选择部分解析
D选项:主键不能为空。这错了。选D。
C选项:删表用的关键字不是delete,是drop,drop table “table_name”
B选项:可以拆的,不知道咋解释
A选项:都是悲观锁,共享锁是读锁,排他锁是写锁,加了排他锁其他事务就不能再加锁了。

13.Unix系统中,以下哪些可以用于进程间通信(多选)

小米2019秋招软件开发笔试题A选择部分解析
没学过C++不是很懂
但是A,B很显然是对的,定义就是这样的。
D选项构造方法可以重载,有参无参的构造函数体现的就是这一点。
去百度了下析构函数和虚函数:
析构函数:析构函数是特殊的类函数,没有返回类型,没有参数,不能随意调用,也没有重载可以重写。
虚函数:C++里虚函数和多态性息息相关,其实就是重载的另一种表现形式。
所以选ABD。

15.假设把随机分布的整数作为关键字的元素散列到有N个槽的散列表中,以下哪些散列函数是比较好的散列函数多选)

小米2019秋招软件开发笔试题A选择部分解析
A选项:进程有自己独立的堆和栈,都不共享。线程也有自己独立的栈和共享的堆,栈不共享但是堆共享。
B选项:进程是资源分配的最小单位,线程是CPU独立运行和调度的基本单位。
C选项:协程是比线程更轻量级的存在,一个线程可以有多个协程。
D选型:进程线程都是操作系统调度,协程是用户或用户的程序进行调度,协程的切换只在用户态,没有陷入内核态。
所以选A,B,C。

17.在游戏Dota2中,有一位非常强大的英雄卡尔,他有三种属性:冰、火、雷。同时卡尔身上有三个无顺序的属性槽,他可以从三种属性中任意选择三个放入属性槽中,然后通过当前的属性组合召唤技能。每种不同的属性组合都可以为卡尔召唤出不同的技能,共有十种组合:
1、冰冰冰
2、冰冰火
3、冰冰雷
4、冰火火
5、冰火雷
6、冰雷雷
7、火火火
8、火火雷
9、火雷雷
10、雷雷雷
现在我们想继续加强卡尔,如果给卡尔四种属性:冰、火、雷、风,同时给卡尔四个无顺序的属性槽,从而让卡尔可以从四种属性中任意选择四个,则请问卡尔共可以召唤出多少种不同的技能/strong>
小米2019秋招软件开发笔试题A选择部分解析
其实就算前面最大的几项比如前两项结果就已经是0.72了,只能选D
A可能第一把就赢了:P = 0.6
A可能和B先平局一把再赢:P = 0.4 * 0.5 * 0.6
A可能和B先平局两把再赢:P = 0.4 * 0.5 * 0.4 * 0.5 * 0.6

A可能和B先平局N把再赢:P = (0.4 * 0.5)^N * 0.6
牛客解析很清楚:
小米2019秋招软件开发笔试题A选择部分解析
选C。

20.假设一个无向图中包含 12 个顶点,其中 5 个顶点有 5 个度,7 个顶点有 7 个度,那么这个图有几条边)

小米2019秋招软件开发笔试题A选择部分解析
无向图里一条边连接两个顶点,所以有2边的数量 = 顶点的度数之和。
(5
5+7*7)/2 = 37 = 边的数量。

文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览33871 人正在系统学习中

来源:abucheck

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年8月16日
下一篇 2022年8月16日

相关推荐