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 mainimport "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]intfmt.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"] = 1fmt.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