米哈游 golang 一面

米哈游面试总体分为四个部分,go 相关,mysql 相关,redis 相关,linux 相关。

go 相关

  • 第一题就给我干懵逼了。代码如下:
... m := make(map[int]int, 10) for i := 1; i<= 10; i++ {     m[i] = i } for k, v := range(m) {     go func() {         fmt.Println("k ->", k, "v ->", v)     }() } 

问会出现什么状况,为什么,怎么解决。就是不要闭包直接使用外部变量,通过传参就能解决了。

  • 内存泄露,什么情况下内存会泄露。
  • channel 的底层实现原理,(其实就是问 buf 是环形链表的数据结构)
  • defer,这个一定要认真回答,defer 在什么时机会修改返回值。多个 defer 的顺序。
  • make 和 new 的区别
  • channel 关闭了接着 send 数据会发生什么,关闭一个已经关闭的 channel 会发生什么。
  • map 是线程安全的吗,map 的扩容规则。
  • 数组和切片的区别。
  • GC
  • GPM 模型
  • 进程、线程、协程区别。(这个很重要)

还有其他的我忘记了。

redis

差不多就是百度那样。

mysql

也差不多和百度那样。

linux

大差不差,就问了一个怎么根据进程名查该进程的 id.

总结

根据面试反馈来看,米哈游给出的是 go 基础较差,但是业务能力较强。可能这就是之前干外包的特点吧。