先介绍了这个岗位是光子事业群,做的内容是手游后端开发,开发语言是Go。我说了我做过DSL相关的项目,对转语言还是有优势的。
然后让我自我介绍。说了lottery的项目。
上来先放水了一道算法题:高精度算法,字符串乘法。然后开始面试。
项目
- 问:你是怎么做DSL做开发的?从语法的设计、正则表达式的匹配,讲到了编译原理(自顶向下:递归下降法,自底向上:LL、LR)
- 你项目中用到了什么框架来开发的?回答在技术选型的时候,选择了langium和xtext
DB
- 你觉得MySql跟Redis有什么区别?
- 从技术选型的角度回答了,说两个数据库解决的问题不一样。面试官继续引导,说从范式的角度回答。
- 回答说Redis是key-value型数据库,没有范式这一说法,MySql是关系型数据库。面试官说我回答的思路有问题,为什么不一开始就说这个。
- 面试官说我知道你对八股已经很熟悉了,请你介绍一个Redis中你觉的你与别人不一样的地方。
- 先介绍了Redis的本质,是一个key-value数据库,是用c语言写的,key是string,value是其他的数据结构,接着开始介绍Redis集群和分布式锁。
- 面试官看我一直在讲,开始打断施法,开始问Redis的数据结构
- 开始介绍Redis的数据结构,讲了底层c语言的各种实现
- 面试官打断施法,问Redis的value是怎么做到兼容这么多个数据结构的
- 回答了有一个父类 Entry,可以其他的继承它?(回答不上来了,但是记得有这么个东西,面试官开始质疑)
JAVA
- 如果你要给一个小朋友介绍JVM,你怎么介绍?
- 讲了JVM设计之初的思想是“一次编译,多次运行”,然后说了JAVA代码到字节码,然后在虚拟机上运行的流程,面试官打断说这不是给一个初学者讲的?
- 反问:初学者知道什么?回答:没有计算机基础的一个小孩。开始回答物理机和虚拟机的区别。
面试官开始跟我解释这样是为了考验你能不能深入浅出的学习知识。
网络
- 面试官说我知道你对八股已经很熟悉了,请你介绍一个网络中你觉的你与别人不一样的地方。
- 很大范围地回答了网络分为linux中的socket协议栈和网络传输。
- 面试官吐槽说,你回答大方向还是很好的(内心:不是你喜欢说大方向的概念吗?)。继续问:你知道怎么做UDP的可靠传输吗?
- 回答:传输层做不了,就在应用层做,说了QUIC和在应用层实现TCP那一套的思想。
生活
- 话题一转,开始问对生活的看法。现在的简历很多清华北大的(本来以为他要问你觉的你有什么优势?),你怎么看待现在这种这么卷的现象?
反问
- 反问面试官,你在公司里面是怎么学习的?面试官说不方便透露。
- 反问面试官,感觉你在面试的过程中很反感背八股?那你怎么看待背八股这个现象?面试官说我已经跟你不是一个阶段了,我不用背八股了。
- 继续问,那你现在已经跟我不是一个阶段了,你肯定当时也是从我这个阶段过来的,那你对这个阶段的我有什么建议?面试官终于开始说当时也是背八股啥的。然后说感觉你的发散性思维很好,但是先有需要一个总结性的开局。
- 吐槽说三个问题都没有得到正面的回答。面试官开始继续问你现在有没有在面其他的,回答在面腾讯音乐,说了你跟腾讯音乐的面试官的风格不一样,腾讯音乐的那个面试官问了很多场景题,建议他对下面的面试者也可以这么问,然后总结了腾讯音乐的面试官就像在筛选工作伙伴,你就像在筛选一个人的性格,都挺好的。
- 面试官开始继续问那你的第一意向地是不是上海,我们这个岗位在深圳。
感觉他会用这个理由把我给挂了。