• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Go_笔试题记录-不熟悉的

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go语言使用-基础语法(6)运算符(6)优先级发布时间:2022-07-10
下一篇:
Go语言学习之路-10-go函数发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap