最近面了两家公司的go
技术岗位,一家百度,一家米哈游,面试的情况也不太乐观,现在分享一下面试中问的问题吧。
两家都是采用线上面试的,当时没有录音,现在全靠自己的回忆来复盘一下了。
百度一面
百度的面试步骤分为计算机基础、go
相关、mysql
相关、redis
相关、linux
相关问题。还有一些发散性的问题。
基础相关
- 算法,包括不限于红黑树、二叉树等等。
- 数据结构,包括不限于链表、数组等。
tcp
、ip
相关的一些问题,比如三次握手、四次挥手、time_wait
等等。- 浏览器输入地址,中间发生的过程,仔细的描述一下。(这个我感觉基本都会被问,哈哈哈)。
这一块的话,我回答的是稀碎,算法和数据结构我一个都没答上来,后面两个因为之前面试问到过,所以查过一些,回答的还算可以。
go相关
GC
,(面GO
必问题),GC
中stw
时机,各个阶段是如何解决的。gpm
,(面GO
必问题),这个必须要完全理解,抢占式调度是如何抢占的,怎么调度goroutine
的,M
和P
的数量问题。- 如何优雅的实现一个
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,也不知道对不对。
- 具体业务的实现,兑换码的实现,如何批量生成几十万或者上百万的兑换码,(这个我回答的是用雪花算法实现),高并发下,一个兑换码如何保证只能被一个人兑换一次,以及一个兑换码如何可以被多个人兑换的实现。(这道题前前后后回答了有半个小时吧,因为之前做过相关的业务,所以心里有点底)
- 三个算法问题。
- 写一个方法,解决:输入4个数字,通过加减乘除,输出一个期望值。
- 广度优先算法:怎么输出各层的值。
- 台阶问题,假如对于上台阶,可以一次上一阶,也可以一次上两阶,写一个方法,实现输入台阶数,输出可以有多少种上法。
以上就是新鲜出炉的Go面试题(百度和米哈游)的详细内容,更多请关注亿码酷站其它相关文章!
<!––>新鲜出炉的Go面试题(百度和米哈游)
—–文章转载自PHP中文网如有侵权请联系ymkuzhan@126.com删除
转载请注明来源:新鲜出炉的Go面试题(百度和米哈游)
本文永久链接地址:https://www.ymkuzhan.com/44204.html
本文永久链接地址:https://www.ymkuzhan.com/44204.html
下载声明:
本站资源如无特殊说明默认解压密码为www.ymkuzhan.com建议使用WinRAR解压; 本站资源来源于用户分享、互换、购买以及网络收集等渠道,本站不提供任何技术服务及有偿服务,资源仅提供给大家学习研究请勿作它用。 赞助本站仅为维持服务器日常运行并非购买程序及源码费用因此不提供任何技术支持,如果你喜欢该程序,请购买正版! 版权声明:
下载本站资源学习研究的默认同意本站【版权声明】若本站提供的资源侵犯到你的权益,请提交版权证明文件至邮箱ymkuzhan#126.com(将#替换为@)站长将会在三个工作日内为您删除。 免责声明:
您好,本站所有资源(包括但不限于:源码、素材、工具、字体、图像、模板等)均为用户分享、互换、购买以及网络收集而来,并未取得原始权利人授权,因此禁止一切商用行为,仅可用于个人研究学习使用。请务必于下载后24小时内彻底删除,一切因下载人使用所引起的法律相关责任,包括但不限于:侵权,索赔,法律责任,刑事责任等相关责任,全部由下载人/使用人,全部承担。以上说明,一经发布视为您已全部阅读,理解、同意以上内容,如对以上内容持有异议,请勿下载,谢谢配合!支持正版,人人有责,如不慎对您的合法权益构成侵犯,请联系我们对相应内容进行删除,谢谢!