Golang精编100题-搞定golang面试
Golang精编100题 能力模型
选择题 1.???【初级】下面属于关键字的是() ? 2.???【初级】定义一个包内全局字符串变量,下面语法正确的是() ? 3.???【初级】通过指针变量 p 访问其成员变量 name,下面语法正确的是() ? 4.???【初级】关于接口和类的说法,下面说法正确的是() ? 5.???【初级】关于字符串连接,下面语法正确的是() ? 6.???【初级】关于协程,下面说法正确是() ? 7.???【中级】关于init函数,下面说法正确的是() ? 8.???【初级】关于循环语句,下面说法正确的有() ? 9.???【中级】对于函数定义: 10. func add(args ...int) int { 11. ?sum :=0 12. ?for _,arg := range args { 13. ??? sum += arg 14. ?} 15. ?returnsum } 下面对add函数调用正确的是() ? 16. 【初级】关于类型转化,下面语法正确的是() 17. type MyInt int 18. var i int = 1 var jMyInt = i B. type MyIntint var i int= 1 var jMyInt = (MyInt)i C. type MyIntint var i int= 1 var jMyInt = MyInt(i) D. type MyIntint var i int= 1 var jMyInt = i.(MyInt) 参考答案:C ? 19. 【初级】关于局部变量的初始化,下面正确的使用方式是() ? 20. 【初级】关于const常量定义,下面正确的使用方式是() 21. const Pi float64 = 3.14159265358979323846 const zero= 0.0 B. const ( size int64= 1024 eof = -1 ) C. const ( ERR_ELEM_EXISTerror = errors.New("element already exists") ERR_ELEM_NT_EXISTerror = errors.New("element not exists") ) D. const u,vfloat32 = 0,3 const a,b,c = 3,4,"foo" 参考答案:ABD ? 22. 【初级】关于布尔变量b的赋值,下面错误的用法是() ? 23. 【中级】下面的程序的运行结果是() 24. func main() { ? 25. if (true) { 26. ???defer fmt.Printf("1") 27. } else { 28. ???defer fmt.Printf("2") 29. } 30. fmt.Printf("3") } A. 321 ? 31. 【初级】关于switch语句,下面说法正确的有() ? 32. 【中级】 golang中没有隐藏的this指针,这句话的含义是() ? 33. 【中级】 golang中的引用类型包括() ? 34. 【中级】 golang中的指针运算包括() ? 35. 【初级】关于main函数(可执行程序的执行起点),下面说法正确的是() ? 36. 【中级】下面赋值正确的是() ? 37. 【中级】关于整型切片的初始化,下面正确的是() ? 38. 【中级】从切片中删除一个元素,下面的算法实现正确的是() 39. func (s *Slice)Remove(value interface{})error { 40. for i,v := range *s { 41. ???if isEqual(value,v) { 42. ??? ? ?if i== len(*s) - 1 { 43. ??? ? ? ? ?*s = (*s)[:i] 44. ??? ? ?}else { 45. ??? ? ? ? ?*s = append((*s)[:i],(*s)[i + 2:]...) 46. ??? ? ?} 47. ??? ? ?return nil 48. ???} 49. } 50. return ERR_ELEM_NT_EXIST } B. func (s*Slice)Remove(value interface{}) error { for i,v:= range *s { ?? ?if isEqual(value,v) { ?? ? ? ?*s =append((*s)[:i],(*s)[i + 1:]) ?? ? ? ?return nil ?? ?} } returnERR_ELEM_NT_EXIST } C. func (s*Slice)Remove(value interface{}) error { for i,v) { ?? ? ? ?delete(*s,v) ?? ? ? ?return nil ?? ?} } returnERR_ELEM_NT_EXIST } D. func (s*Slice)Remove(value interface{}) error { for i,(*s)[i + 1:]...) ?? ? ? ?return nil ?? ?} } returnERR_ELEM_NT_EXIST } 参考答案:D ? 51. 【初级】对于局部变量整型切片x的赋值,下面定义正确的是() 52. x := []int{ 53. 1, 54. 4,6, } B. x :=[]int{ 1, 4,6 } C. x :=[]int{ 1,6} D. x :=[]int{1,} 参考答案:ACD ? 55. 【初级】关于变量的自增和自减操作,下面语句正确的是() 56. i := 1 i++ B. i := 1 j = i++ C. i := 1 ++i D. i := 1 i-- 参考答案:AD ? 57. 【中级】关于函数声明,下面语法错误的是() ? 58. 【中级】如果Add函数的调用代码为: 59. func main() { 60. var a Integer = 1 61. var b Integer = 2 62. var i interface{} = &a 63. sum := i.(*Integer).Add(b) 64. fmt.Println(sum) } 则Add函数定义正确的是() typeInteger int func (aInteger) Add(b Integer) Integer { ?return a + b } B. typeInteger int func (aInteger) Add(b *Integer) Integer { ?return a + *b } C. typeInteger int func (a*Integer) Add(b Integer) Integer { ?return *a + b } D. typeInteger int func (a*Integer) Add(b *Integer) Integer { ?return *a + *b } 参考答案:AC ? 65. 【中级】如果Add函数的调用代码为: 66. func main() { 67. var a Integer = 1 68. var b Integer = 2 69. var i interface{} = a 70. sum := i.(Integer).Add(b) 71. fmt.Println(sum) } 则Add函数定义正确的是() typeInteger int func (a Integer)Add(b Integer) Integer { ?return a + b } B. typeInteger int func (aInteger) Add(b *Integer) Integer { ?return a + *b } C. typeInteger int func (a*Integer) Add(b Integer) Integer { ?return *a + b } D. typeInteger int func (a*Integer) Add(b *Integer) Integer { ?return *a + *b } 参考答案:A ? 72. 【中级】关于GetPodAction定义,下面赋值正确的是() 73. type Fragment interface { 74. Exec(transInfo *TransInfo) error 75. } 76. type GetPodAction struct { 77. } 78. func (g GetPodAction) Exec(transInfo*TransInfo) error { 79. ... 80. return nil } A. var fragment Fragment =new(GetPodAction) ? 81. 【中级】关于GoMock,下面说法正确的是() ? 82. 【中级】关于接口,下面说法正确的是() ? 83. 【初级】关于channel,下面语法正确的是() ? 84. 【初级】关于同步锁,下面说法正确的是() ? 85. 【中级】 golang中大多数数据类型都可以转化为有效的JSON文本,下面几种类型除外() ? 86. 【中级】关于go vendor,下面说法正确的是() ? 87. 【初级】 flag是bool型变量,下面if表达式符合编码规范的是() ? 88. 【初级】 value是整型变量,下面if表达式符合编码规范的是() ? 89. 【中级】关于函数返回值的错误设计,下面说法正确的是() ? 90. 【中级】关于异常设计,下面说法正确的是() ? 91. 【中级】关于slice或map操作,下面正确的是() 92. var s []int s =append(s,1) B. var mmap[string]int m["one"]= 1 C. var s[]int s =make([]int,0) s =append(s,1) D. var mmap[string]int m =make(map[string]int) m["one"]= 1 参考答案:ACD ? 93. 【中级】关于channel的特性,下面说法正确的是() ? 94. 【中级】关于无缓冲和有冲突的channel,下面说法正确的是() ? 95. 【中级】关于异常的触发,下面说法正确的是() ? 96. 【中级】关于cap函数的适用类型,下面说法正确的是() ? 97. 【中级】关于beego框架,下面说法正确的是() ? 98. 【中级】关于goconvey,下面说法正确的是() ? 99. 【中级】关于go vet,下面说法正确的是() ? 100.?????????????【中级】关于map,下面说法正确的是() ? 101.?????????????【中级】关于GoStub,下面说法正确的是() ? 102.?????????????【初级】关于select机制,下面说法正确的是() ? 103.?????????????【初级】关于内存泄露,下面说法正确的是() ? 填空题 1.???【初级】声明一个整型变量i__________ ? 2.???【初级】声明一个含有10个元素的整型数组a__________ ? 3.???【初级】声明一个整型数组切片s__________ ? 4.???【初级】声明一个整型指针变量p__________ ? 5.???【初级】声明一个key为字符串型value为整型的map变量m__________ ? 6.???【初级】声明一个入参和返回值均为整型的函数变量f__________ ? 7.???【初级】声明一个只用于读取int数据的单向channel变量ch__________ ? 8.???【初级】假设源文件的命名为slice.go,则测试文件的命名为__________ ? 9.???【初级】 go test要求测试函数的前缀必须命名为__________ ? 10. 【中级】下面的程序的运行结果是__________ 11. for i := 0; i < 5; i++ { 12. defer fmt.Printf("%d ",i) } 参考答案:4 3 2 1 0 ? 13. 【中级】下面的程序的运行结果是__________ 14. func main() { 15. x := 1 16. { 17. ???x := 2 18. ???fmt.Print(x) 19. } 20. fmt.Println(x) } 参考答案:21 ? 21. 【中级】下面的程序的运行结果是__________ 22. func main() { 23. strs := []string{"one","two","three"} 24. ? 25. for _,s := range strs { 26. ???go func() { 27. ??? ? ?time.Sleep(1 * time.Second) 28. ??? ? ?fmt.Printf("%s ",s) 29. ???}() 30. } 31. time.Sleep(3 * time.Second) } 参考答案:three threethree ? 32. 【中级】下面的程序的运行结果是__________ 33. func main() { ? 34. x := []string{"a","b","c"} 35. for v := range x { 36. ???fmt.Print(v) 37. } } 参考答案:012 ? 38. 【中级】下面的程序的运行结果是__________ 39. func main() { ? 40. x := []string{"a","c"} 41. for _,v := range x { 42. ???fmt.Print(v) 43. } } 参考答案:abc ? 44. 【初级】下面的程序的运行结果是__________ 45. func main() { ? 46. i := 1 47. j := 2 48. i,j = j,i 49. fmt.Printf("%d%dn",i,j) } 参考答案:21 ? 50. 【初级】下面的程序的运行结果是__________ 51. func incr(p *int) int { 52. *p++ ? 53. return *p 54. } 55. func main() { ? 56. v := 1 57. incr(&v) 58. fmt.Println(v) } 参考答案:2 ? 59. 【初级】启动一个goroutine的关键字是__________ ? 60. 【中级】下面的程序的运行结果是__________ 61. type Slice []int 62. func NewSlice() Slice { 63. return make(Slice,0) 64. } 65. func (s* Slice) Add(elem int) *Slice { 66. *s = append(*s,elem) 67. fmt.Print(elem) 68. return s 69. } 70. func main() { ? 71. s := NewSlice() 72. defer s.Add(1).Add(2) 73. s.Add(3) } 参考答案:132 ? 判断题 1.???【初级】数组是一个值类型() ? 2.???【初级】再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |