过往经历的三家游戏公司,第一家是纯C/C++,第二家是lua+部分C/C++,第三家是Nodejs。第三家游戏公司并不是纯游戏公司,而只是部分业务涉及游戏,且技术栈不限定。
我是比较喜欢捣鼓底层方面的东西,所以对那种框架和优化类比较感兴趣,业务嘛其实都差不多,对C/C++这门语言掌握的比较好。但是呢,随着工作和时间拉长,使用不到会忘的差不多,所以当换工作时,不得不去复习这些八股文,来cover到可能会被问到的基础知识。
是否都需要掌握源码呢?好像并不需要,但至少对于我来说,当需要时会去看一下,过后就忘记了。记得一八年的时候,捣鼓lua的热更新和性能分析工具,以及lua的协程相差的,花了较多的时间在这上面,也取得一些成果。但是后面大部分时间在业务上,以及游戏上线后的线上问题解决,根本不会时不时的去看这些。
我记得去年初尝试看看外面的机会,其中有一家公司是招C/C++服务器,但是问我的除了算法,剩下的都是lua语言实现的源码,说实在的,我只能回答个五十分左右,我更感觉应届生都比我适合来回答这些。
后来我问对方,咋问的都是lua方面的,原来他们招进去是写lua。。。你咋不问问我框架设计啥的,性能优化啥的,线上遇到什么问题怎么解决的。。。
入职上一家公司时,也是招C/C++,都是问我这方面的东西,还有算法和网络,优化相关,所以我回答的挺好,因为那会一直作这方面的工作,所以比较容易,也没问我lua方面的,因为没学习过没使用过,虽然正式工作是使用lua语言开发,不久,就成了脚本程序员。
每家公司的技术栈可能都不一样,出于历史原因和当时项目的考量,所以在候选人入职后,发现从事的和自己的预期不一样,要么待下去花点时间去学习,要么离职重新找工作,但这样是无法避免下次是否还会出现这样的情况。
后来来现在这家公司,当时面试就问了C++的几个问题和算法题,主要是集中在项目上的,遇到什么问题,怎么发现和解决的,以及总结。但是,我更喜欢这样的方式。不是说基础不重要,也不是说经验丰富怎么样,只是要看重候选人具备什么特点,是否能为项目带来帮助和对团队/公司带来什么。
有些基础的东西只是忘记了,可能查下资料看下或者简单学习下就会了,这些不是重点。切换技术栈有时是没办法选择的,哪怕现在项目不行,说不定转到其他项目组,又是其他语言比如python。我觉得一个人,学习能力是重要的,不光对方现在会什么。
有些公司不一样,对方希望你什么都会,从基础到源码,到项目各种技能。有些会问你,你应该掌握的东西,问你三四年前的项目,但你忘了或者没有使用过,那不就是个不会吗?
所以如果换工作,不得不把几年前的项目回忆下,甚至源码级的也要看下,怕回答的不好,其实挺折腾的。我也怕换工作,怕背题,只是应付面试。