Go语言面试题
创始人
2024-02-28 02:58:58
0

关于go vendor,下面说法正确的是()

A. 基本思路是将引用的外部包的源代码放在当前工程的vendor目录下面
B. 编译go代码会优先从vendor目录先寻找依赖包
C. 可以指定引用某个特定版本的外部包
D. 有了vendor目录后,打包当前的工程代码到其他机器的$GOPATH/src下都可以通过编译参考答案:ABD

1.使用了go-mod模式,项目可以放在gopath的src下吗?和gopath的区别?

使用go-mod以后,项目可以放在任何非中文路径下,gopath必须放在gopath的src下

2.go vendor的作用?

将依赖包下载到项目根目录下的vendor文件夹,这样在写代码的时候可以有提示

1.下面属于关键字的是

A.def B.Class C.func D.struct E.var答案:C、D、E

2.定义全局变量,正确的做法是?

A.var Name string B.Name := "hallen" C.var Name string = "hallen"
D.var Name = "hallen" E.var Name string := "hallen"答案:A、C、D

3.关于局部变量的初始化,下面正确的使用方式是?

A. var i int = 10
B. var i = 10
C. i := 10
D. i = 10参考答案:ABC

4.对于以下的代码,获取成员变量正确的做法是?

type Student struct {
Name string
}func main() {
var student *Student
student = new(Student)
*student = Student{Name:"hallen"}
}A.student.Name B.(*student).Name C.(&student.Name) D.*student.Name答案:A、B

5.字符串拼接正确的是?

A."hello"+"hallen" B."hello"+'h' C."hello'+"hallen"
D.fmt.Printf("%s%s","hello","hallen") E.fmt.Sprintf("%s%s","hello","hallen")答案:A、E

6.已申明的bool类型变量ok,关于其赋值,下面说法错误的是()

var ok bool
A. ok = true
B. ok = 1
C. ok = bool(1)
D. ok = (1 == 2)参考答案:BC

8.关于switch语句,下面说法正确的是()

A. 条件表达式必须为常量或者整数
B. 单个case中,可以出现多个结果选项
C. 需要用break来明确退出一个case
D. 只有在case中明确添加fallthrough关键字,才会继续执行紧跟的下一个case参考答案:BD

9.golang中的引用类型包括()

A. 数组
B. map
C. channel
D. interface
E.数组切片参考答案:BCDE

10.golang中的指针运算包括()

A. 可以对指针进行自增或自减运算
B. 可以通过“&”取指针的地址
C. 可以通过“*”取指针指向的数据
D. 可以对指针进行下标运算参考答案:BC

11.关于整型切片的初始化,下面正确的是()

A. s := make([]int)
B. s := make([]int, 0)
C. s := make([]int, 5, 10)
D. s := []int{1, 2, 3, 4, 5}
参考答案:BCD

12.ok是bool型变量,下面if表达式符合编码规范的是()

A. if ok == 1{}
B. if ok{}
C. if ok == false{}
D. if !ok{}
参考答案:BD

13.value是整型变量,下面if表达式符合编码规范的是()

A. if value == 0 {}
B. if value {}
C. if value != 0{}
D. if !value{}参考答案:AC

14.关于map,下面说法正确的是()

A. map反序列化时json.marshal的入参必须为map的地址
B. 在函数调用中传递map,则子函数中对map元素的增加不会导致父函数中map的修改
C. 在函数调用中传递map,则子函数中对map元素的修改不会导致父函数中map的修改
D. 不能使用内置函数delete删除map的元素参考答案:A

15.下面赋值正确的是()

A. var x = nil
B. var x interface{} = nil
C. var x string = nil
D. var x error = nil答案:BD,nil 只能赋值给指针

16.下面代码的结果为?

str := "hallen"
str[0] = 'z'
fmt.Println(str)A.hallen B.zallen c.compilation error答案:c,Go 语言中的字符串是只读的,不能进行修改

二、简答题
1.简述数组和切片的区别;程序中什么场景使用数组,什么场景使用切片?

类型区分:数组是值类型,切片是引用
可变性:数组长度不可变,切片长度可变,数组:已知的长度
切片:一般在参长度可变,未知的长度

2.Go语言局部变量分配在栈还是堆?

Go语言编译器会自动决定把一个变量放在栈还是放在堆,
当发现变量的作用域没有跑出函数范围,就可以在栈上,反之则必须分配在堆。

3.int和uint的区别?两个uint值能不能直接相减?

int是正数和负数都可以
uint不能是负数uint不能直接相减,如果结果是负数会变成一个很大的uint

4.提示:slice底层是数组,保存了len,capacity和对数组的引用

5.下面代码输出结果为?

func main() {
slice := make([]int, 3)
slice = append(slice , 9, 8, 7)
fmt.Println(slice )
}答案:[0 0 0 9 8 7]

6.下面代码的区别?那个为nil?

var slice1 []int
var slice2 = []int{} // var slice2 []int = []int{}答案:s1为nil切片,和nil相等,s2为空切片,和nil不相等

7.分别写出下面代码的执行结果

func Get() (int,int){
return 3,4
}func main() {
var a int
a,_ = Get() // 结果为a=3
a,_ := Get() // 报错,a已申明,不需要自动推导
a,b := Get() // a=3,b=4
a,b = Get() // 报错,b没有申明
fmt.Println(a)}

8.go语言中指针运算有哪些?

可以通过“&”取指针的地址可以通过“*”取指针指向的数据

9.说说各种类型的缺省值?

指针的缺省值是nil,其他的都是对应类型的零值,bool类型的缺省值是false

10.map如何顺序读取?

map不能顺序读取,是因为他是无序的,
想要有序读取,
首先的解决的问题就是,把key变为有序,所以可以把key放入切片,对切片进行排序,遍历切片,通过key取值。map_data1 := map[string]interface{}{
"name":"hallen",
"age":18,
}keys := []string{}
for k,_ := range map_data1 {
keys = append(keys,k)
}sort.Strings(keys)for _,v := range keys {
fmt.Println(map_data1[v])
}

11.字符串打印时,%v 和 %+v 的区别

“%+v”会以字段键值对的形式key-value格式打印,“%v”只会打印字段值value信息

相关内容

热门资讯

英诺特7月4日获融资买入558... 7月4日,英诺特跌0.92%,成交额4165.16万元。两融数据显示,当日英诺特获融资买入额558....
西测测试7月4日获融资买入92... 7月4日,西测测试涨0.44%,成交额10.24亿元。两融数据显示,当日西测测试获融资买入额9243...
盟科药业7月4日获融资买入11... 7月4日,盟科药业涨1.77%,成交额1.22亿元。两融数据显示,当日盟科药业获融资买入额1145....
泰祥股份7月4日获融资买入23... 7月4日,泰祥股份涨0.00%,成交额4242.25万元。两融数据显示,当日泰祥股份获融资买入额23...
三维股份7月4日获融资买入22... 7月4日,三维股份跌3.35%,成交额1941.70万元。两融数据显示,当日三维股份获融资买入额22...
7月4日科技100ETF(51... 7月4日,科技100ETF(515580)跌0.35%,成交额1582.56万元。当日份额减少200...
7月4日房地产ETF基金(51... 7月4日,房地产ETF基金(515060)跌0.62%,成交额1724.81万元。当日份额减少200...
7月4日红利低波50ETF(5... 7月4日,红利低波50ETF(515450)涨0.95%,成交额1.66亿元。当日份额增加3850....
7月4日医药龙头ETF(515... 7月4日,医药龙头ETF(515950)涨0.33%,成交额1712.85万元。当日份额减少100....
与机器人相伴过暑假   7月6日,浙江省金华市金华之光文化广场科技馆内,小朋友在体验足球机器人。当日,金华之光文化广场科...