2023.12.1(米哈游)

597 阅读2分钟

官网活动平台组一面

  1. 自我介绍
  2. 你对现在面试的岗位有啥了解吗?
  3. 说一下golang里头的数组和切片的区别吗
  4. 有了解过他们在类型上有什么区别吗(值类型还是引用类型)
  5. 说一下golang中的context有哪些使用场景?
  6. 多个defer的执行顺序是怎么样的?
  7. 如何判断一个channel是否已关闭?
  8. 读写一个已关闭的channel会有什么表现?
  9. 写一段代码,期望是对下面这个map,按key从小到大的顺序打印出来
data := map[int]string{1: "a", 4: "b", 2: "c", 5, "d", 3: "f"}
  1. 下面这段代码的输出是什么(假设我期望求得1加到100的累和即5050,这个代码能正确计算得到结果吗)
func main() {
   var res int
   for i := 1; i <= 100; i++ {
      go func() {
         res += i
      }()
   }
   fmt.Println(res)
}
  1. 那如果我改成这样呢,现在输出还会是正确的吗?
func main() {
   var res int
   for i := 1; i <= 100; i++ {
      go func() {
         res += i
      }()
   }
   time.Sleep(3 * time.Second)
   fmt.Println(res)
}
  1. 原因是什么呢?你能改成正确的代码吗?
  2. 了解Redis有哪些数据类型?
  3. 如何用Redis实现一个分布式锁?
  4. 如何防止死锁发生?
  5. 用完这个锁,要怎么释放掉?
  6. 假设你的程序上了这把锁,设置了30s过期,然后第35s又被另一个进程取锁,但是你在第40s的时候才去删这个key,你要怎么保证你删的时候,删的就是之前你自己的协程一开始上的锁?
  7. 能说一下如何使用Redis实现一个限流器吗?
  8. 说下缓存击穿,缓存穿透,缓存雪崩有什么区别?
  9. 解释一下innoDB中聚集索引和非聚集索引的区别
  10. 解释一下什么叫做左前缀原则
  11. 如果现在有个联合索引(a, b, c),where b = 2 order by a 这一句查询语句会走完整索引吗?
  12. 解释一下什么是乐观锁和悲观锁
  13. 能列举几种MySQL索引失效的场景吗?
  14. 反问

负责业务: 一个是游戏里头嵌入的H5活动开发;一个是提供给运营人员的管理工具开发