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://www.cnblogs.com/Paul-watermelon/p/11209961.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值