迹忆客 计算机编程题库

Go 精编练习题

1.
(单选题)下面的程序的运行结果是? ```go func main() { if (true) { defer fmt.Printf("1") } else { defer fmt.Printf("2") } fmt.Printf("3") } ```
  • 321
  • 32
  • 31
  • 13
2.
(多选题)golang中大多数数据类型都可以转化为有效的JSON文本,下面几种类型除外
  • 指针
  • channel
  • complex
  • 函数
3.
(多选题)flag是bool型变量,下面if表达式符合编码规范的是?
  • if flag == 1
  • if flag
  • if flag == false
  • if !flag
4.
(多选题)关于函数返回值的错误设计,下面说法正确的是
  • 如果失败原因只有一个,则返回bool
  • 如果失败原因超过一个,则返回error
  • 如果没有失败原因,则不返回bool或error
  • 如果重试几次可以避免失败,则不要立即返回bool或error
5.
(单选题)关于同步锁,下面说法正确的是
  • 当一个goroutine获得了Mutex后,其他goroutine就只能乖乖的等待,除非该goroutine释放这个Mutex
  • RWMutex在读锁占用的情况下,会阻止写,但不阻止读
  • RWMutex在写锁占用情况下,会阻止任何其他goroutine(无论读和写)进来,整个锁相当于由该goroutine独占
  • Lock()操作需要保证有Unlock()或RUnlock()调用与之对应
6.
(多选题)关于channel,下面语法正确的是?
  • var ch chan int
  • ch := make(chan int)
  • <- ch
  • ch <-
7.
(多选题)关于Go语言中 channel 的特性,下列说法正确的是?
  • 给一个 nil channel 发送数据,造成永远阻塞;
  • 从一个 nil channel 接收数据,造成永远阻塞;
  • 给一个已经关闭的 channel 发送数据,引起 panic;
  • 从一个已经关闭的 channel 接收数据,如果缓冲区中为空,则返回一个零值;
  • 无缓冲的channel是同步的,而有缓冲的channel是非同步的。
8.
(多选题)关于接口和类的说法,下面说法正确的是?
  • 一个类只需要实现了接口要求的所有函数,我们就说这个类实现了该接口
  • 实现类的时候,只需要关心自己应该提供哪些方法,不用再纠结接口需要拆得多细才合理
  • 类实现接口时,需要导入接口所在的包
  • 接口由使用方按自身需求来定义,使用方无需关心是否有其他模块定义过类似的接口
9.
(多选题)golang中的指针运算包括
  • 可以对指针进行自增或自减运算
  • 可以通过“&”取指针的地址
  • 可以通过“*”取指针指向的数据
  • 可以对指针进行下标运算
10.
(多选题)关于布尔变量b的赋值,下面错误的用法是
  • b = true
  • b = 1
  • b = bool(1)
  • b = (1 == 2)
扫码一下
查看教程更方便