首页 后端开发 Golang 新鲜出炉的Go面试题(百度和米哈游)

新鲜出炉的Go面试题(百度和米哈游)

Sep 25, 2021 pm 04:38 PM
go语言

最近面了两家公司的go技术岗位,一家百度,一家米哈游,面试的情况也不太乐观,现在分享一下面试中问的问题吧。

两家都是采用线上面试的,当时没有录音,现在全靠自己的回忆来复盘一下了。

百度一面

百度的面试步骤分为计算机基础、go相关、mysql相关、redis相关、linux相关问题。还有一些发散性的问题。

基础相关

  • 算法,包括不限于红黑树、二叉树等等。
  • 数据结构,包括不限于链表、数组等。
  • tcpip相关的一些问题,比如三次握手、四次挥手、time_wait等等。
  • 浏览器输入地址,中间发生的过程,仔细的描述一下。(这个我感觉基本都会被问,哈哈哈)。

这一块的话,我回答的是稀碎,算法和数据结构我一个都没答上来,后面两个因为之前面试问到过,所以查过一些,回答的还算可以。

go相关

  • GC,(面GO必问题),GCstw时机,各个阶段是如何解决的。
  • gpm,(面GO必问题),这个必须要完全理解,抢占式调度是如何抢占的,怎么调度goroutine的,MP的数量问题。
  • 如何优雅的实现一个goroutine池(这个回答的稀碎)
  • 谈谈内存逃逸
  • 内存管理(这个也回答的稀碎)

mysql相关

  • mysql锁,分锁粒度和锁算法(间隙锁、记录锁,临键锁),以及锁算法在什么情况下会用到。大概意思就是如果精准能匹配到的话,用的就是记录锁,否则退化为间隙锁
  • mysql mvvc实现原理。
  • mysql 索引,索引建立时机,建立规则。
  • mysql 分库分表规则,有没有实践过?
  • mysql 索引的类型以及索引的数据结构
  • mysql 事务特性,以及隔离级别。

redis

  • redis的数据类型有哪些,使用场景说说。
  • redis zset的编码方式,应该有两种,在配置文件中配置的,默认128个元素是ziplist(压缩表),大于128则是skiplist
  • redis的内存淘汰策略
  • redis的持久化策略
  • redis分布式锁
  • redis分布式架构有哪些
  • 如果有一个排行榜,用zset,根据积分和时间来排序,积分高的,时间最近的拍前面,怎么实现?

linux

  • 你熟悉的有哪些命令
  • 如果线上流量暴增,全都打到一个upstream上了,怎么排查。
  • 如何在nginx的access log中查出请求前10的ip

总结

我面试结束后,一般都会问面试官,根据这次面试,针对我的技术上面,有什么好的建议或者意见,这位面试官给我的回答是:计算机基础比较薄弱,但是业务能力很强。这也是我目前的现状,哈哈,所以最近一直在看哈工大老师的计算机理论和操作系统。希望能勤能补拙吧。

米哈游一面

米哈游面试总体分为四个部分,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基础较差,但是业务能力较强。可能这就是之前干外包的特点吧。

米哈游的二面

米哈游二面主要问的是业务方面和算法方面的问题,主要有三部分。

  • 微服务相关,包括微服务的注册与发现,微服务的监控,微服务的限流相关等等,还有微服务怎么守护进程,我回答的是supervisor,也不知道对不对。
  • 具体业务的实现,兑换码的实现,如何批量生成几十万或者上百万的兑换码,(这个我回答的是用雪花算法实现),高并发下,一个兑换码如何保证只能被一个人兑换一次,以及一个兑换码如何可以被多个人兑换的实现。(这道题前前后后回答了有半个小时吧,因为之前做过相关的业务,所以心里有点底)
  • 三个算法问题。
    1. 写一个方法,解决:输入4个数字,通过加减乘除,输出一个期望值。
    2. 广度优先算法:怎么输出各层的值。
    3. 台阶问题,假如对于上台阶,可以一次上一阶,也可以一次上两阶,写一个方法,实现输入台阶数,输出可以有多少种上法。

推荐:《golang教程

以上是新鲜出炉的Go面试题(百度和米哈游)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Go的爬虫Colly中Queue线程的问题是什么? Go的爬虫Colly中Queue线程的问题是什么? Apr 02, 2025 pm 02:09 PM

Go爬虫Colly中的Queue线程问题探讨在使用Go语言的Colly爬虫库时,开发者常常会遇到关于线程和请求队列的问题。�...

Go语言中用于浮点数运算的库有哪些? Go语言中用于浮点数运算的库有哪些? Apr 02, 2025 pm 02:06 PM

Go语言中用于浮点数运算的库介绍在Go语言(也称为Golang)中,进行浮点数的加减乘除运算时,如何确保精度是�...

在 Go 语言中,为什么使用 Println 和 string() 函数打印字符串会出现不同的效果? 在 Go 语言中,为什么使用 Println 和 string() 函数打印字符串会出现不同的效果? Apr 02, 2025 pm 02:03 PM

Go语言中字符串打印的区别:使用Println与string()函数的效果差异在Go...

在Go语言中使用Redis Stream实现消息队列时,如何解决user_id类型转换问题? 在Go语言中使用Redis Stream实现消息队列时,如何解决user_id类型转换问题? Apr 02, 2025 pm 04:54 PM

Go语言中使用RedisStream实现消息队列时类型转换问题在使用Go语言与Redis...

Go语言中`var`和`type`关键字定义结构体的区别是什么? Go语言中`var`和`type`关键字定义结构体的区别是什么? Apr 02, 2025 pm 12:57 PM

Go语言中结构体定义的两种方式:var与type关键字的差异Go语言在定义结构体时,经常会看到两种不同的写法:一�...

GoLand中自定义结构体标签不显示怎么办? GoLand中自定义结构体标签不显示怎么办? Apr 02, 2025 pm 05:09 PM

GoLand中自定义结构体标签不显示怎么办?在使用GoLand进行Go语言开发时,很多开发者会遇到自定义结构体标签在�...

Go语言中哪些库是由大公司开发或知名的开源项目提供的? Go语言中哪些库是由大公司开发或知名的开源项目提供的? Apr 02, 2025 pm 04:12 PM

Go语言中哪些库是大公司开发或知名开源项目?在使用Go语言进行编程时,开发者常常会遇到一些常见的需求,�...

使用 sql.Open 时,DSN 传空为什么不报错? 使用 sql.Open 时,DSN 传空为什么不报错? Apr 02, 2025 pm 12:54 PM

使用sql.Open时,DSN传空为什么不报错?在Go语言中,sql.Open...

See all articles