新鲜出炉的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. 台阶问题,假如对于上台阶,可以一次上一阶,也可以一次上两阶,写一个方法,实现输入台阶数,输出可以有多少种上法。

上述内容就是新鲜出炉的Go面试题有哪些,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


分享标题:新鲜出炉的Go面试题有哪些
网站URL:http://scyanting.com/article/goecgp.html