zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Mvc+三层(批量添加、删除、修改)
    js中判断复选款是否选中
    EF的优缺点
    Git tricks: Unstaging files
    Using Git Submodules
    English Learning
    wix xslt for adding node
    The breakpoint will not currently be hit. No symbols have been loaded for this document."
    Use XSLT in wix
    mfc110ud.dll not found
  • 原文地址:https://www.cnblogs.com/Paul-watermelon/p/11209961.html
Copyright © 2011-2022 走看看