yumuing博客:Java Golang springboot 后端微服务技术控

【题解】第六届字节后端青训营结营小测试全解析

前言

👏 Hi! 我是 Yumuing,一个技术的敲钟人

👨‍💻 每天分享技术文章,永远做技术的朝拜者

📚 欢迎关注我的博客:Yumuing's blog

由于官方答案没有出来,所以,这部分都是根据个人经验和网上收集所得到的第六届青训营结营全解析,如果存在错误,也请在评论区友好讨论,让我们一起把这篇文章变得更加完美。

先罗列一下答案,以 ABCD 作为选择题次序,自行比对,完整解析在后头。

序号答案
05B
06C
07D
08B
09B
10D
11B
12C
13A
14D
15C
16C
17B
18D
19D
20ABC
21ACD
22AD
23ABC
24ABC
25ACD
26ABC
27AD

详细解析

不保证全部正确,只凭个人经验和网上收集结果所总结出的完整解析答案,如有错误,还希望不吝赐教!感谢。

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 段前三段不转换为二进制,其他部分切换成二进制,方便计算,结果如下:

与运算之后等于: 202.96.128.128,根据子网掩码我们能知道,ip地址前25位是网络号,剩下的就是主机号

故本题选 C

07 下面的叙述中,()不是设备管理中引入缓冲机制的主要原因

解析:

缓冲技术是用在外部设备与其他硬件部件之间的一种数据暂存技术,它利用存储器件在外部设备中设置了数据的一个存储区域,称为缓冲区。缓冲技术一般有两种用途,一种是用在外部设备与外部设备之间的通信上的,还有一种是用在外部设备和处理器之间的。

故本题选 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 关于数据库索引,以下说法错误的是

解析:

故本题选 ABC

25 请描述http请求get和post的区别,下面描述正确的有

解析:

故本题选 ACD

26 互联网接入系统内的负载均衡系统可以解决什么问题

解析:

本题答案较为不确定,自行判断。

域名解析是 DNS 服务器可以解决的问题。

故本题选 ABC

27 现有一数列(3,2.5.7.6.8),要求按升序排序,下面说法正确的是

解析:

故本题选择 AD

总结

说实话,此次的结营测试并没有想象的那么困难,更像是大学里面的期中考内容,与实际的开发内容并没有相关,甚至内容都是基础,并非特别深入,需要久久思考的题目。
本次全解析内容就是这样了,有什么问题,都可以指出了,欢迎大家友好讨论!

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »