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

  • 相关阅读:
    javaWeb普通类获取ApplicationContext
    医学图像处理最全综述
    图像分割最全综述
    解放双手——相机与IMU外参的在线标定
    从零开始一起学习SALM-ICP原理及应用
    SLAM、三维重建,语义相关数据集大全
    SLAM面试常见问题
    SLAM方向国内有哪些优秀公司?
    三维视觉、SLAM方向全球顶尖实验室汇总
    SLAM方向公众号、知乎、博客上有哪些大V可以关注?
  • 原文地址:https://www.cnblogs.com/Paul-watermelon/p/11209961.html
Copyright © 2020-2023  润新知