Go_笔试题记录-不熟悉的详解编程语言

1、golang中没有隐藏的this指针,这句话的含义是()

A. 方法施加的对象显式传递,没有被隐藏起来 
B. golang沿袭了传统面向对象编程中的诸多概念,比如继承、虚函数和构造函数 
C. golang的面向对象表达更直观,对于面向过程只是换了一种语法形式来表达 
D. 方法施加的对象不需要非得是指针,也不用非得叫this 

参考答案:ACD

2、关于GoMock,下面说法正确的是()

A. GoMock可以对interface打桩 
B. GoMock可以对类的成员函数打桩 
C. GoMock可以对函数打桩 
D. GoMock打桩后的依赖注入可以通过GoStub完成 

参考答案:AD

3、关于接口,下面说法正确的是()

A. 只要两个接口拥有相同的方法列表(次序不同不要紧),那么它们就是等价的,可以相互赋值 
B. 如果接口A的方法列表是接口B的方法列表的子集,那么接口B可以赋值给接口A 
C. 接口查询是否成功,要在运行期才能够确定 
D. 接口赋值是否可行,要在运行期才能够确定 

参考答案:ABC

4、golang中大多数数据类型都可以转化为有效的JSON文本,下面几种类型除外()

A. 指针 
B. channel 
C. complex 
D. 函数 

参考答案:BCD

5、关于go vendor,下面说法正确的是()

A. 基本思路是将引用的外部包的源代码放在当前工程的vendor目录下面 
B. 编译go代码会优先从vendor目录先寻找依赖包 
C. 可以指定引用某个特定版本的外部包 
D. 有了vendor目录后,打包当前的工程代码到其他机器的$GOPATH/src下都可以通过编译 

参考答案:ABD

6、关于函数返回值的错误设计,下面说法正确的是()

A. 如果失败原因只有一个,则返回bool 
B. 如果失败原因超过一个,则返回error 
C. 如果没有失败原因,则不返回bool或error 
D. 如果重试几次可以避免失败,则不要立即返回bool或error 

参考答案:ABCD

7、关于异常设计,下面说法正确的是()

A. 在程序开发阶段,坚持速错,让程序异常崩溃 
B. 在程序部署后,应恢复异常避免程序终止 
C. 一切皆错误,不用进行异常设计 
D. 对于不应该出现的分支,使用异常处理 

参考答案:ABD

8、关于slice或map操作,下面正确的是()

A. 
var s []int 
s = append(s,1) 
 
B. 
var m map[string]int 
m["one"] = 1  
 
C. 
var s []int 
s = make([]int, 0) 
s = append(s,1) 
 
D. 
var m map[string]int 
m = make(map[string]int) 
m["one"] = 1  

参考答案:ACD

package main 
 
import "fmt" 
 
func main() { 
	//var s []int 
	//fmt.Printf("1 s = %+v/n", s) //1 s = [] 
	//s = append(s, 1) 
	//fmt.Printf("2 s = %+v/n", s) //2 s = [1] 
 
	//var m map[string]int 
	//fmt.Printf("m = %+v/n", m) //m = map[] 
	//m["one"] = 1 
	//fmt.Printf("m[/"one/"] = %+v/n", m["one"]) // 报错panic: assignment to entry in nil map 
 
	//var s []int 
	//fmt.Printf("1 s = %+v/n", s) //1 s = [] 
	//s = make([]int, 0) 
	//fmt.Printf("2 s = %+v/n", s) //2 s = [] 
	//s = append(s, 1) 
	//fmt.Printf("3 s = %+v/n", s) //3 s = [1] 
 
	var m map[string]int 
	fmt.Printf("m = %+v/n", m) //m = map[] 
	// Map: 根据 size 大小来初始化分配内存,不过分配后的 map 长度为 0,如果 size 被忽略了,那么会在初始化分配内存时分配一个小尺寸的内存 
	m = make(map[string]int) 
	fmt.Printf("m = %+v/n", m) //m = map[] 
	m["one"] = 1 
	fmt.Printf("m[/"one/"] = %+v/n", m["one"]) //m["one"] = 1 
} 
 

9、关于goconvey,下面说法正确的是()

A. goconvey是一个支持golang的单元测试框架 
B. goconvey能够自动监控文件修改并启动测试,并可以将测试结果实时输出到web界面 
C. goconvey提供了丰富的断言简化测试用例的编写 
D. goconvey无法与go test集成 

参考答案:ABC

10、关于GoStub,下面说法正确的是()

A. GoStub可以对全局变量打桩 
B. GoStub可以对函数打桩 
C. GoStub可以对类的成员方法打桩 
D. GoStub可以打动态桩,比如对一个函数打桩后,多次调用该函数会有不同的行为 

参考答案:ABD

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/18139.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论