diff --git "a/homework/\345\237\272\347\241\200\351\230\266\346\256\265\346\265\213\350\257\225/GO11104+\346\267\261\345\234\263+\345\260\217\345\271\263\345\217\260.md" "b/homework/\345\237\272\347\241\200\351\230\266\346\256\265\346\265\213\350\257\225/GO11104+\346\267\261\345\234\263+\345\260\217\345\271\263\345\217\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..33050283e49ed0f2cf1199141be2be89b344368c --- /dev/null +++ "b/homework/\345\237\272\347\241\200\351\230\266\346\256\265\346\265\213\350\257\225/GO11104+\346\267\261\345\234\263+\345\260\217\345\271\263\345\217\260.md" @@ -0,0 +1,210 @@ +# GO11104+深圳+小平台 + +**不定项选择题:** + +1、AD + +2、ABC + +3、BCD + +4、AC + +5、ABCD + +6、D + +7、ABD + +8、A + +9、BD + +10、BC + +**判断题** + +1、 √ + +2、√ + +3、√ + +4、√ + +5、x + +6、√ + +7、x + + + + + +# golang基础阶段测试 + +## 选择题(不定选项) + +1、定义一个包内全局字符串变量,下面语法正确的是()**AD** import里面 + +A. var str string + +B. str := "" 函数内部使用声明+定义 + +C. str = "" 函数内使用赋值 + +D. var str = "" + + + +2、关于接口和类的说法,下面说法正确的是 ()**ABC** + +A. **一个类**只需要**实现**了**接口**要求的**所有函数**,我们就说**这个类实现了该接口** + +B. **实现类**的时候,只需要关心自己应该提供哪些**方法**,不用再纠结**接口**需要拆得多细才合理 + +C. 类实现接口时,需要**导入接口所在的包** 相当于引用接口 + +D. 接口由使用方按自身需求来定义,使用方无需关心是否有其他模块定义过类似的接口 要解耦 + + + +3、关于整型切片的初始化,下面正确的是 ()**BCD** + +A. s := make([]int) 由于整型切片初始化为0,那么初始化长度不能为空 + +B. s := make([]int, 0) + +C. s := make([]int, 5, 10) + +D. s := []int{1, 2, 3, 4, 5} + + + +4、关心接口,下面说法正确的是 ()**AC** + +A. 只要两个接口拥有相同的方法列表(次序不同不要紧),那么它们就是等价的,可以相互赋值 + +B. 如果接口A的方法列表是接口B的方法列表的子集,那么接口B可以赋值给接口A 反了 + +C. 接口查询是否成功,要在运行期才能够确定 + +D. 接口赋值是否可行,要在运行期才能够确定 debug + + + +5、关于channel的特性,下面说法正确的是()**ABCD** + +A. 给一个 nil channel 发送数据,造成永远阻塞 + +B. 从一个 nil channel 接收数据,造成永久阻塞 + +C. 给一个已经关闭的 channel 发送数据,引起 panic + +D. 从一个已经关闭的 channel 接收数据,如果缓冲区中为空,则返回一个零值 + + + +6、关于无缓冲和有冲突的channel,下面说法正确的是()**D** + +A. 无缓冲的channel是默认的缓冲为1的channel 0 + +B. 无缓冲的channel和有缓冲的channel都是同步的 + +C. 无缓冲的channel和有缓冲的channel都是非同步的 + +D. 无缓冲的channel是同步的,而有缓冲的channel是非同步的 此句与前面都对立 + + + +7、cap函数可以用于下列类型中的()**ABD** + +A. array + +B. slice + +C. map KV对没有容量可言,离散。 + +D. channel + + + +8、关于map,下面说法正确的是()**A** + +A. map反序列化时json.unmarshal的入参必须为map的地址 字符串(地址)->json->字典 + +B. 在函数调用中传递map,则子函数中对map元素的增加不会导致父函数中map的修改 + +C. 在函数调用中传递map,则子函数中对map元素的修改不会导致父函数中map的修改 得看扩展和引用的情况 + +D. 不能使用内置函数delete删除map的元素 delete会对map内存结构删除,也就是删除的是地址,不是元素 + + + +9、下面赋值正确的是()**BD** nil智能赋值给指针、chan、func、interface、map或slice类型的变量。也就是引用类型的变量 + +A. var x = nil + +B. var x interface{} = nil + +C. var x string = nil 字符串不能在声明时赋值空 + +D. var x error = nil + + + +10、golang中的**引用类型**包括()**BC** **指针、slice、map和函数、channel**,其中slice、map和channel能够申请内存和初始化相关属性 + +A. 数组切片 数组无法重新申请内存,因为长度固定 + +B. map + +C. channel + +D. interface 接口方法固定,接口没有类型的引用 + + + + + +## 判断题 + +1、import后面的最后一个元素是包名() **对,包名特征** + +2、结构体在序列化时非导出变量(以小写字母开头的变量名)不会被encode,因此在decode时这些非导出变量的值为其类型的零值()**对** + +3、golang虽然没有显式的提供继承语法,但是通过匿名组合实现了继承()**对** + +4、可以给任意类型添加相应的方法()**对,这个是go语言的特色,形式多变** + +5、函数执行时,如果由于panic导致了异常,则延迟函数不会执行()**错,都设置defer 后的函数延迟执行,就不会管panic出现异常的情况了。** + +6、interface{}是可以指向任意对象的Any类型()**对,是go语言给与的** + +7、内置函数delete可以删除数组切片内的元素()**错,只会导致内存地址被删除而找不到元素** + + + + + + + + + + + + + + + + + + + + + + + + +