迹忆客 计算机编程题库

Go 经典面试题 部分三

1.
(单选题)下面哪个函数可以返回slice中当前元素的个数?
  • len()
  • cap()
  • length()
  • append()
2.
(多选题)对于于下面的函数定义 ```go func add(args ...int) int { sum :=0 for _,arg := range args { sum += arg } return sum } ``` 下面对 add() 函数调用正确的是?
  • add(1, 2)
  • add(1, 3,7)
  • add([]int{1, 2})
  • add([]int{1, 3, 7}...)
3.
(多选题)关于 GetPod 定义,下面赋值正确的是 ```go type Fragment interface { Exec(transInfo *TransInfo) error } type GetPod struct { } func (g GetPod) Exec(transInfo *TransInfo) error { ... return nil } ```
  • var fragment Fragment = new(GetPod)
  • var fragment Fragment = GetPod
  • var fragment Fragment = &GetPod{}
  • var fragment Fragment = GetPod{}
4.
(单选题)以下哪种方式是 Go 中默认的参数传递方法?
  • 按值传递
  • 引用传递
  • 以上都是
  • 以上都不是
5.
(单选题)以下哪种方式是 Go 中默认的参数传递方法?
  • 按值传递
  • 引用传递
  • 以上都是
  • 以上都不是
6.
(单选题)关于 map,下面说法正确的是
  • map 反序列化时 json.unmarshal 的入参必须为 map 的地址
  • 在函数调用中传递 map,则子函数中对 map 元素的增加不会导致父函数中 map 的修改
  • 在函数调用中传递 map,则子函数中对 map 元素的修改不会导致父函数中 map 的修改
  • 不能使用内置函数 delete 删除 map 的元素
7.
(多选题)golang中没有隐藏的this指针,这句话的含义是
  • 方法施加的对象显式传递,没有被隐藏起来
  • golang沿袭了传统面向对象编程中的诸多概念,比如继承、虚函数和构造函数
  • golang的面向对象表达更直观,对于面向过程只是换了一种语法形式来表达
  • 方法施加的对象不需要非得是指针,也不用非得叫this
8.
(单选题)关于接口,下面说法正确的是
  • 只要两个接口拥有相同的方法列表(次序不同不要紧),那么它们就是等价的,可以相互赋值
  • 如果接口A的方法列表是接口B的方法列表的子集,那么接口B可以赋值给接口A
  • 接口查询是否成功,要在运行期才能够确定
  • 接口赋值是否可行,要在运行期才能够确定
9.
(单选题)关于内存泄露,下面说法正确的是
  • golang 有自动垃圾回收,不存在内存泄露
  • golang 中检测内存泄露主要依靠的是 pprof 包
  • 内存泄露可以在编译阶段发现
  • 应定期使用浏览器来查看系统的实时内存信息,及时发现内存泄露问题
10.
(多选题)关于协程,下面说法正确是
  • 协程和线程都可以实现程序的并发执行
  • 线程比协程更轻量级
  • 协程不存在死锁问题
  • 通过channel来进行协程间的通信
扫码一下
查看教程更方便