Hi! 我是 Yumuing,一个技术的敲钟人
每天分享技术文章,永远做技术的朝拜者
欢迎关注我的博客:Yumuing’s blog
由于官方答案没有出来,所以,这部分都是根据个人经验和网上收集所得到的第六届青训营结营全解析,如果存在错误,也请在评论区友好讨论,让我们一起把这篇文章变得更加完美。
先罗列一下答案,以 ABCD 作为选择题次序,自行比对,完整解析在后头。
序号 | 答案 |
---|---|
05 | B |
06 | C |
07 | D |
08 | B |
09 | B |
10 | D |
11 | B |
12 | C |
13 | A |
14 | D |
15 | C |
16 | C |
17 | B |
18 | D |
19 | D |
20 | ABC |
21 | ACD |
22 | AD |
23 | ABC |
24 | ABC |
25 | ACD |
26 | ABC |
27 | AD |
不保证全部正确,只凭个人经验和网上收集结果所总结出的完整解析答案,如有错误,还希望不吝赐教!感谢。
05 在网络字节序中,所谓"小端”(little endian)说法正确的是
解析:
网络字节序一般是大端序,主机字节序一般是小端序(比如intel CPU)
故本题选 B
06 机器A的ip地址为202.96.128.130,子网掩码为255.255.255.128,则该ip地址的网络号为
解析:
ip地址 和 子网掩码 进行 与 运算(与运算:两位同时为“1”,结果才为“1”,否则为0):
由于 255 的二进制 11111111 ,与二进制 A 进行与运算后结果为其本身,即 A,故,ip 段前三段不转换为二进制,其他部分切换成二进制,方便计算,结果如下:
ip地址 202.96.128.130: xxxxxxxx .xxxxxxxx.xxxxxxxx.1000 0010
子网掩码 255.255.255.128 :11111111.11111111.11111111.1000 000 0
与运算之后等于: 202.96.128.128,根据子网掩码我们能知道,ip地址前25位是网络号,剩下的就是主机号
故本题选 C
07 下面的叙述中,()不是设备管理中引入缓冲机制的主要原因
解析:
缓冲技术是用在外部设备与其他硬件部件之间的一种数据暂存技术,它利用存储器件在外部设备中设置了数据的一个存储区域,称为缓冲区。缓冲技术一般有两种用途,一种是用在外部设备与外部设备之间的通信上的,还有一种是用在外部设备和处理器之间的。
CPU的速度远高于内存,当CPU直接从内存中存取数据时要等待一定时间周期,而Cache则可以保存CPU刚用过或循环使用的一部分数据,如果CPU需要再次使用该部分数据时可从Cache中直接调用,这样就避免了重复存取数据,减少了CPU的等待时间,因而提高了系统的效率。A 正确
在远程通信系统中,如果从远地终端发来的数据仅用一位缓冲来接收,如下图(a)所示,则必须在每收到一位数据时便中断一次 CPU,这样,对于速率为 9.6 Kb/s 的数据通信来说,就意味着其中断 CPU的频率也为 9.6 Kb/s,即每 100 μs 就要中断 CPU 一次,而且 CPU 必须在 100 μs 内予以响应,否则缓冲区内的数据将被冲掉。倘若设置一个具有 8 位的缓冲(移位)寄存器,如下图(b)所示,则可使 CPU 被中断的频率降低为原来的 1/8;若再设置一个 8 位寄存器,如下图©所示,则又可把 CPU 对中断的响应时间放宽到 800 μs。故B 正确
缓冲的引入可显著地提高 CPU 和 I/O 设备间的并行操作程度,提高系统的吞吐量和设备的利用率。例如,在 CPU 和打印机之间设置了缓冲区后,便可使 CPU 与打印机并行工作。故 C 正确
缓冲机制,简单讲就是通过空间换时间,故不可能节省系统内存。
故本题选 D
08 避免死锁的一个著名的算法是
解析:
这个就毋庸置疑了。银行家算法:
在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程。这种情况必须避免死锁的出现。
故本题选 B
09 原语的执行是屏蔽中断的
解析:
原语就是一种原子操作,故屏蔽中断操作
故本题选 B
10 关于无缓冲和有缓冲的channel,下面说法正确的是
解析:
故本题选 D
11 小袁今天刚学会了defer延迟调用,他在草稿纸上编写了下面一段代码。请问下列代码的输出是
解析:
很简单的逻辑,自行理解吧,原题可运行代码如下:
package main
import (
"fmt"
)
type S struct{}
func (s S) p(n int) S {
fmt.Print(n)
return s
}
func main() {
var s S
defer s.p(1).p(2)
fmt.Print(3)
}
可自行测试,答案为 132,故本题选 B
12 关于函数声明,下面语法错误的是
解析:
函数返回参数要么都有变量名,要么都用类型表示,选项C中返回参数一个有变量名,一个没变量名,不统一。故本题选 C。
13 Go语言中,以下选项正确的是
解析:
int 和 uint 的取值范围与体系架构有关,在 32 位机中等价于 int32 和 uint32,在 64 位机中等价于 int64 和 uint64。
故本题选 A
14 SQL语言允许使用通配符进行字符串匹配的操作,其中“%'可以表示
解析:
% 可以表示任意个字符,可以是零个、一个、多个字符。
故本题选 D
15 关系型数据库创建表都有主键,以下对主键描述正确的是
解析:
故本题选 C
16 以下可以获取历史消息的是
解析:
以上三个选项均为 RabbitMQ 交换器类型,fanout 和 topic 都是广播形式的,是没有历史数据的,也就是说对于中途创建的队列,获取不到之前的消息,而 direct 可以。
故本题选 C
17 某线性表中有100000个元素,其中前99990个元素递增有序,则采用()方法进行递增排序时关键字比较次数最少
解析:
根据题目中的“前99990个元素递增有序”,得出关键字比较次数最少的原理就是这99990个元素不参与比较或者移动等耗时操作。
根据以下对各种排序的思想分析,二路归并和快速排序没有利用大部分为递增序列而不参与比较或者移动的操作,简单排序的时间复杂度大于直接插入排序。
故本题选 B
18 某个大型的网络游戏网站,现有几亿用户,为了实时获取前十名游戏分数最高的玩家,使用以下哪个排序算法比较合理?
解析:
本题需要考虑两个方面的内容:
快速排序只有在对整个空间排序完成后才能找出前10名,因而时间复杂度是 O(logN) ,不够快
时间上,基数排序会比堆排要快。但是基数排序需要更多的额外空间
堆排序,每次排序的结果就是找到当前堆中的最大/最小值。因此完成需求的时间复杂度为O(logN)。当我们需要找到常数级的最大/最小值时,往往堆排序是我们应该最先考虑的。
故本题选 D
19 题目描述中给出了四个排序相关的说法,让我们选择错误的是哪个,下面是每个说法的具体内容
解析:
参考下图即可排除 A,可选 D
堆排序是依照二叉树的性质构成大顶堆或者小顶堆。arr[i]>=arr[2i+1]&&arr[i]>=arr[2i+2] 或者改成<=。例如大顶堆,整个序列的最大值就是堆顶根节点,将其与末尾元素交换,末尾就是最大值(确定了最终位置),然后剩余的元素继续建堆逐渐确定剩余元素的最终位置,排除 B
故本题选 D
20 下列有关进程的说法中,错误的是
解析:
进程和程序之间可以形成一对一,一对多,多对一,多对多的关系。 A错误,可选
执行一条命令或运行一个应用程序时 | 一对一 |
---|---|
进程在执行过程中可以加在执行不同的程序 | 一对多 |
以不同的参数或数据多次执行同一个程序 | 多对一 |
并发地执行不同的应用程序 | 多对多 |
进程是具有一定独立功能的程序关于某个数据集合上的一次运行运动,进程和程序的区别在于程序是静态的,而进程是动态的。 C 错误,可选
故本题选 ABC
21 以下有关Http协议的描述中,正确的有
解析:
301永久重定向 302 临时重定向,排除 B
故本题选 ACD
22 关于协程,下面说法正确是
解析:
协程(Coroutine,又称微线程)是一种比线程更加轻量级的存在,排除 B
协程间任务分配是分发式而非抢占式,所以不存在线程安全方面的问题,但没有死锁方面的特殊保护机制,还是存在死锁问题。排除 C
故本题选 AD
23 关于接口,下面说法正确的有
解析:
只要两个接口拥有相同的方法列表(次序不同不要紧),那么它们就是等价的,可以相互赋值。
go里面没有引用传递,只有值传递,故可以直接接口赋值
Go语言接口是否可以赋值,是在编译期就确定的。接口的查询是在运行期确定。如:
在接口类型进行赋值操作时,若类型不匹配,则编辑器就会提示错误,因此接口赋值操作是在编译期确定的
故本题选 ABC
24 关于数据库索引,以下说法错误的是
针对某些字段建立索引,能够有效的减少相关数据库表的磁盘空间占用;
针对某些字段建立索引,能够有效的提升相关字段的读与写的效率;
常见数据库管理系统,通常使用hash表来存储索引;
数据库索引的存在,可能导致相关字段删除的效率降低;
解析:
索引需要额外的磁盘空间,为一索引页,包含着索引记录,每条索引记录包含键值和逻辑指针。A 可选
针对某些字段建立索引,如果读写性能都能提高,那每个字段都建立索引,岂不是万事大吉,当然,不可能啦。B 可选
常见数据库管理系统,通常使用 B 树相关(B+、B*)来存储索引
数据库索引的存在,可能导致相关字段删除的效率降低;其增加了动态维护的成本,效率降低。D 排除
故本题选 ABC
25 请描述http请求get和post的区别,下面描述正确的有
GET用于信息获取,而且应该是安全的和幂等的,POST表示可能修改变服务器上的资源的请求
POST比GET安全,因为采用了SSL加密
GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据
POST提交,把提交的数据放置在是HTTP包的包体中,GET提交的数据会在地址栏中显示出来
解析:
故本题选 ACD
26 互联网接入系统内的负载均衡系统可以解决什么问题
解析:
本题答案较为不确定,自行判断。
域名解析是 DNS 服务器可以解决的问题。
故本题选 ABC
27 现有一数列(3,2.5.7.6.8),要求按升序排序,下面说法正确的是
插入排序(从后向前)需要做6次比较
快速排序,每次选择最后一个元素作为支点,需要比较5次
快速排序,每次选择最后一个元素作为支点,需要比较9次
快速排序,每次选择最后一个元素作为支点,需要比较12次
解析:
直接插入排序,每次需要遍历一次数组,需要5+4+3+2+1=15次比较
快速排序,选择最后一个元素为基,第一遍需要5次比较,第二趟对8的左侧进行快速排序,需要4次比较,结果使6,7交换,第三次在6的左侧快速排序,需要2次比较,第四次在5的左侧快排,需要1次比较,加起来5+4+2+1=12次
故本题选择 AD
说实话,此次的结营测试并没有想象的那么困难,更像是大学里面的期中考内容,与实际的开发内容并没有相关,甚至内容都是基础,并非特别深入,需要久久思考的题目。本次全解析内容就是这样了,有什么问题,都可以指出了,欢迎大家友好讨论!