记录一次腾讯Go开发岗位面试经过

跳槽看机会是每个职场人的必经之路,笔者也是个俗人,加上公司领导也是对人不对事的,于是在猎头的怂恿下,我就有了想试试的冲动,毕竟闭门造车是兵家大忌。而事实证明,确实如此。我们没有用到微服务,没有高并发,没有什么值得拿出手的技术亮点。惭愧,想要拿高薪,还要继续学习才是。于是面试完之后我赶紧记录一下,起码知道自己改学习的方向有哪些。作为一个只有两年后端经验的小白,面试完之后就只有一个想法,不容易啊。

先记录下面试问的问题:

1、谈一下Go的GC机制

2、说下三色标记算法的原理

3、算法:判断链表是否有回环

4、介绍下自己的项目

5、开发的流程规范是什么?

6、半连接是什么?

7、粘包是什么?怎么发送的?

8、怎么创建索引

9、怎么避免缓存击穿,还有其他的什么方法吗?

10、go的mutx怎么使用,乐观和悲观锁分别怎么实现,使用场景是什么?

11、服务器受到攻击怎么定位服务器问题?

12、rpc的具体实现

13、怎么反转树的左右节点

14、谈谈epoll和select

在问到第14个问题的时候,我直接放弃了,因为我知道接下来要问什么。面试造火箭,工作拧螺丝,这话一点不假。接下来肯定问区别和实现原理。在我放弃之后,我就请教了一下面试官,顺便验证一下我的猜想。面试官确实打算这么问。后面我就干脆问下,我该继续学习补充哪些知识点?面对这样的面试,我该怎么回答问题?面试官人还比较好,说回答问题要有深度和广度,一个问题要由此及彼的回答,并且和多语言之间进行对比。

惭愧的是,前十个问题我还知道,从第十一个问题开始我就不知道了。后面的操作系统和网络安全相关的,我就是个小白,更别谈实现原理了。搞GO的,一定要会微服务,不管你简历上有没有写这些技术。所以,同学们一定要研究这块,否则进大厂无缘了。大家加油!


     之所以不贴出答案,是因为我本人也是背书的,又有几个人是看源码就知道的呢对吧,都是看别人的文档,所以提倡去自己找答案,这样印象深刻,正如下面评论说的,不是工作用到的,谁会知道?就算背下了,不久也是会忘记的。我就说下面试过程和我的回答吧。

    一开始的面试就是不平等的,我必须开视频,人家不开视频,我对着屏幕上的自己回答问题。1、开始问GC,我直接回答:Go会定时进行GC清理操作,为了防止频繁的触发GC,在内存达到某个阈值的时候也会进行GC操作。可能回答的没达到他的预期,就打断了直接问2、三色标记算法,我回答的也简单:这是清除-标记算法的一种,在1.9之前版本,清除和标记都会进行STW,之后的版本为了减少STW的时间,采用异步清除,但是标记阶段还是会有STW。大致的原理是,轮询白色区域,有引用放入灰色,轮询灰色有引用放入黑色,黑色不进行轮询,所以为了加强数据的准确性Go添加了写屏障。面试官这时候就嗯了一句,就问了个算法,3、回环连表的判断这个刚好我做过有点印象:两个指针,分别是前指针和后指针,按照节点往下走,当前指针位置大于或者等于后指针的位置时就代表有回环。然后面试官又是嗯了一句就开始问项目相关的东西了。所以45都是根据简历上实际项目进行问的。可能因为项目中没有涉及到微服务,就没怎么往下问,就开始问网络相关的了,我估计半连接和粘包都是随口问问的,半连接是TCP三次握手的初始阶段出现的,粘包是长连接比较常见,但是我没回答完就下一个问题了。8、创建索引,我是直接说根据业务来实现,不能直接这么问吧,然后我就从B+树的结构说起,谈到了引擎和联合索引,覆盖索引以及回表的原因和过程。后面还问了一句:为什么mysql用B+树,我说这是产品特性问题,每个产品的侧重点不同,采用的算法也不用。MongoDB侧重单条记录,MySQL侧重遍历和数据关联,不过,看面试官的语气显然不是他要的结果。至于9、避免缓存击的其他方法,可以当redis获取为空的时候设置一个空串,但是没有互斥锁保险。乐观锁和悲观锁 的使用场景无非就是效率问题,时间相应短的需求就是乐观锁,稳定和保险采用悲观锁。再往后的问题,就是象征性的问吧,具体答案,我也没法贴,只能大家自己去找了,操作系统的东西,实在接触不上,时间短见效慢。待我有空再来一个一个解答。

     关于面试:对于一般的公司,基本只看工作年限。我去过高灯面试,开始写的是一年经验,过了初面,第二面的时候说相关经验时间太短,面试官面都没见到就让我离开了。第二次,我改成3年换个部门,这个复试倒是看到面试官了,但是说只能给个中级岗位。我在想要不要写成6年的后端开发经验,估计就会评一个高级的了。我也去过明源云面试,也是写的一年经验,但是,这个就有点悲催了,问的都是语言的新特性,甚至连多态和继承都问,这个面试官比较年轻,说想要个年纪小点的培养,我尼玛。。。面试这种事情,以前是三分天注定,七分靠打拼,现在怕啥反过来了,除了大厂的技术硬伤之外,其他的面试大家随缘就好不要强求,毕竟到哪都是坑,只是有的臭有点特别臭,仅此而已。欢迎吐槽,^_^
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 2个月前 自动加精
棋布
讨论数量: 12

:see_no_evil:一直疑惑,面试问的这些东西如果不是工作上一直用到,很难回答上来吧!感觉这种面试模式也是中国应试教育的一种延续 :grin: :grin: :grin:

2个月前 评论
棋布 (楼主) 2个月前
frans 1个月前
starwu 1个月前

厉害了,我哭了出来~~

2个月前 评论
棋布 (楼主) 2个月前

我能答出来的也就五道题 :joy:

2个月前 评论
棋布 (楼主) 2个月前

:joy: 我一道题都答不上, 大佬能不能把答案也写上

2个月前 评论
棋布 (楼主) 2个月前
棋布 (楼主) 2个月前
Sunsongoing (作者) 2个月前

还是要靠内推,不然面试就是背的都没问,问的都没背

2个月前 评论
棋布 (楼主) 2个月前

写出了我的心声

2个月前 评论

萌新瑟瑟发抖 , 全部都不会, 或者讲不好,

2个月前 评论
棋布 (楼主) 1个月前

七分靠缘分,三分靠打拼

缘分一:你的过往经历和岗位的相关性,如果强相关,技术倒是其次了,如果你的过往经历太杂,就只能从技术本身去面试你了

缘分二:面试官自身技术水平也会影响面试的难易

缘分三:面试官的性格,有些面试官很古板,专注技术,有些面试官比较开放,会看重求职者的思维发散能力

缘分四:公司或项目所处的阶段,公司处于扩张阶段,招人会很宽容,如果处于守成阶段,每进一个人都是百里挑一

缘分五:大公司的萝卜坑(概率比较小)

1个月前 评论
棋布 (楼主) 1个月前

面试官不开视频 你开视频,这感觉好难受啊。话说楼主是几年经验

1个月前 评论
棋布 (楼主) 1个月前
棋布 (楼主) 1个月前
棋布 (楼主) 1个月前
ZKJABLE 1个月前

啥都不说了。点赞,收藏,加评论,素质三连。 :joy:

1个月前 评论
棋布 (楼主) 1个月前
_jue

就想知道你面的是多少的 :joy:

1个月前 评论
惊风破浪 1个月前
棋布 (楼主) 1个月前

为什么mysql用B+树 这个问题我遇到过的面试官,基本想问的是你对B+树的理解,主要是横向对比下 B树B+树,哈希表这些的优缺点。如果拿不准,还是可以问下,你是想让我回答Mysql为什么用B+树。还是对比下Mysql和mongo再索引设计上的区别。毕竟是面试 不是笔试,问问清楚 也好针对回答。

1个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!