/ 2019-11-27
Go语言面试题分享:(选择题10道)
1、关于init函数,下面说法正确的是( )
A. 一个包中,可以包含多个init函数
B. 程序编译时,先执行导入包的init函数,再执行本包内的init函数
C. main包中,不能有init函数
D. init函数可以被其他函数调用
解答:AB
2、golang中没有隐藏的this指针,这句话的含义是( )
A. 方法施加的对象显式传递,没有被隐藏起来
B. golang沿袭了传统面向对象编程中的诸多概念,比如继承、虚函数和构造函数
C. golang的面向对象表达更直观,对于面向过程只是换了一种语法形式来表达
D. 方法施加的对象不需要非得是指针,也不用非得叫this
解答:ACD
3、golang中的引用类型包括( )
A. 数组切片 B. map C. channel D. interface
解答:ABCD
4、golang中的指针运算包括( )
A. 可以对指针进行自增或自减运算
B. 可以通过“&”取指针的地址
C. 可以通过“*”取指针指向的数据
D. 可以对指针进行下标运算
解答:BC
5、下面赋值正确的是( )
A. var x = nil
B. var x interface{} = nil
C. var x string = nil
D. var x error = nil
解答:BD
6、关于整型切片的初始化,下面正确的是( )
A. s := make([]int)
B. s := make([]int, 0)
C. s := make([]int, 5, 10)
D. s := []int{1, 2, 3, 4, 5}
解答:BCD
7、关于GoMock,下面说法正确的是( )
A. GoMock可以对interface打桩
B. GoMock可以对类的成员函数打桩
C. GoMock可以对函数打桩
D. GoMock打桩后的依赖注入可以通过GoStub完成
解答:AD
8、关于接口,下面说法正确的是( )
A. 只要两个接口拥有相同的方法列表(次序不同不要紧),那么它们就是等价的,可以相互赋值
B. 如果接口A的方法列表是接口B的方法列表的子集,那么接口B可以赋值给接口A
C. 接口查询是否成功,要在运行期才能够确定
D. 接口赋值是否可行,要在运行期才能够确定
解答:ABC
9、golang中大多数数据类型都可以转化为有效的JSON文本,下面几种类型除外( )
A. 指针 B. channel C. complex D. 函数
解答:BCD
10、关于go vendor,下面说法正确的是( )
A. 基本思路是将引用的外部包的源代码放在当前工程的vendor目录下面
B. 编译go代码会优先从vendor目录先寻找依赖包
C. 可以指定引用某个特定版本的外部包
D. 有了vendor目录后,打包当前的工程代码到其他机器的$GOPATH/src下都可以通过编译
解答:ABD
(12)