最近面了两家公司的 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,也不知道对不对。

  • 具体业务的实现,兑换码的实现,如何批量生成几十万或者上百万的兑换码,(这个我回答的是用雪花算法实现),高并发下,一个兑换码如何保证只能被一个人兑换一次,以及一个兑换码如何可以被多个人兑换的实现。(这道题前前后后回答了有半个小时吧,因为之前做过相关的业务,所以心里有点底)

  • 三个算法问题:

  1. 写一个方法,解决:输入 4 个数字,通过加减乘除,输出一个期望值。

  2. 广度优先算法:怎么输出各层的值。

  3. 台阶问题,假如对于上台阶,可以一次上一阶,也可以一次上两阶,写一个方法,实现输入台阶数,输出可以有多少种上法。

分享最近在百度和米哈游的 Go 岗位面试相关推荐

  1. 米哈游客户端笔试题_校招进米哈游客户端开发岗位需要具备哪些能力?

    虽然没有参加过米哈游的面试,但勉强算是在国内较好的游戏公司面试过一些应届生,来回答一下. 首先是游戏客户端开发需要哪些能力.对于一个游戏程序员来说,需要的不仅仅是编程能力和游戏制作相关工具的使用能力, ...

  2. 米哈游再发干货,分享《原神》新角色魈的创作历程

    不知不觉,距离<原神>与大家正式见面已经过去了近五个月,各位在提瓦特大陆的旅行进展得如何呢?自公测以来,<原神>收到了许多宝贵的建议与反馈,均已由制作组成员逐一整理记录. 其中 ...

  3. 《原神》米哈游突然押注脑机接口,CEO:10年内造出10亿人生活的虚拟世界

    鱼羊 杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一入原神深似海,从此钱包是路人. 盆友,你氪出胡桃来了吗? 来自游戏玩家的一单单648,如今已经把<原神>的收益堆到了56 ...

  4. 围观|第一代云原生企业米哈游如何让想象发生?

    作者 | 贾宁宇 来源|阿里巴巴云原生公众号 在米哈游的办公区,有一间会议室,专门留给了阿里云工程师. 今年,是这家二次元文化公司创立的第九年,米哈游和阿里云的交情,也有八年了. 米哈游总裁刘伟还记得 ...

  5. 某游戏大厂员工爆料:米哈游给留守过年员工5000元奖励,网友:我司邮件暗示让为爱发电...

    Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨飞鸟 来源丨程序员直聘 春节将近,想必大家都在 ...

  6. 米哈游贺甲:如何实现次世代卡通渲染效果?

    在5月12日Unite2017开发者大会上,米哈游技术总监兼美术指导贺甲进行了主题为次世代卡通渲染的演讲.一下为详细分享内容: 大家好,首先自我介绍一下,我叫贺甲,在米哈游担任技术总监和美术指导工作, ...

  7. 崩坏3》画面效果为何惊艳?看米哈游怎么做卡通渲染的你就明白了

    崩坏3>画面效果为何惊艳?看米哈游怎么做卡通渲染的你就明白了 http://youxiputao.com/articles/11839 <崩坏3>上架以来,我们看到了卡通渲染技术在游 ...

  8. (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer

    2022秋招季来临,有人欢喜有人愁,不管是想要毕业求职的,还是想要跳槽加薪的,面对面试这座大山,难免感叹一句蜀道难,的确,在这个行行业业都在内卷的时代,你不付出点努力,想进入满意的公司,拿到心仪的of ...

  9. 数说热点|米哈游新作《崩坏:星穹铁道》今日公测,能否再现原神奇迹?

    游戏玩家们心心念念的米哈游新作<崩坏:星穹铁道>终于问世啦,游戏已于上周日上线PC.安卓.iOS平台开启预下载,今日正式公测."崩坏"系列本就是米哈游的起家游戏,收获了 ...

最新文章

  1. 绝望,上传文件失败。。遇到并解决java.lang.NullPointerException
  2. 数据访问层设计(持久层架构设计)
  3. AWS云使用100条宝贵经验分享
  4. python3精要(40)-数组与矩阵
  5. Android:WiFi连接之一
  6. MySQL存储引擎InnoDB,MyISAM
  7. [css] 使用纯css来创建一个滑块
  8. linux通过I2C地址查看设备名称
  9. linux常用命令实战
  10. 利用Gulp实现JSDoc 3的文档编写过程中的实时解析和效果预览
  11. 聚溶众星CEO朱纯仪:MCN一年营收2.5亿,带货才是直播的未来
  12. Qt各版本官方下载地址
  13. ubuntu10.10下安装五笔86输入法
  14. 计算机操作系统原理——第一章.绪论
  15. Java8的stream处理List集合的相同部分(交集)、去重
  16. 两台计算机通信 系统态和用户态,os2014-期末试卷A答案.pdf
  17. 八月六日个人训练记录
  18. 数据结构与算法基础(青岛大学-王卓)(4)
  19. MySQL要监控什么?
  20. 查询Windows下的dll/exe所依赖的文件

热门文章

  1. 谷歌联合佐治亚州为小企业免费建站
  2. 【计算机毕业设计】139华强北商城二手手机管理系统
  3. Android Modbus 通讯实现
  4. nodejs-硬连接符号连接
  5. js 实现封装 WebSocket 连接
  6. 关于如何赚钱的一些文章
  7. ethos-专用系统 2019.08.18升级公告!
  8. 三子棋(井字棋)超详细
  9. .net开发人员等级
  10. solor快速_Solr快速教程