2019腾讯校园招聘开发岗面经(一面+二面+HR面)
背景:
华为实习结束前两天,突然接到腾讯的邮件,邀请我现场面试,但面试前需要我做道题,这道题的回答内容将作为一面时的沟通话题(当时整个人是懵的,咋还有这操作)。暑期实习投的腾讯是安卓岗,华为实习期间是软件开发岗,最后拿到腾讯offer的岗位是专项技术测试开发(我以为和软件测试岗一样,看到题目以及最后和面试官的沟通才发现这根本就是开发,为啥呢?慢慢往下看)
初面前的题目
一共有四道题,任选其一进行回答。第一题是有关语音识别的,不会;第二题是有关云计算服务的,不会;第四题是有关安卓的,本人做过一些安卓项目,对安卓比较熟悉,但早就不想走这个方向了,因此也放弃;第三题是有关后台开发和架构的,这是我喜欢的,于是选择了这道题(每个题目都是实际工程中需要解决的问题,给答题者非常大的发挥空间,做完题非常期待腾讯大佬当面指点我一下)。
题目及解答思路(题目太长,只写我选择的题目):
一、题目:现在后台开发可选择语言很多,从历史悠久的PHP到新兴的GO;可选择框架更多,Python下常用的就有Django、Tornado等等。 至于部署方案,从apache、nginx时代到容器时代,更是发生了天翻地覆的变化。 另外,一个后台系统离不开数据库存储。从上世纪70年代起,关系型数据库一直独占鳌头,但NoSQL的出现结束了前者一枝独秀的局面。比如,MongoDB、Redis、ElasticSearch都是近几年DB引擎用户量排名TOP 10的常客,在不同应用场景下发挥着独特的价值。 那么,你所开发的后台系统,选择该种框架、部署方案和数据库的根据是什么呢? 如果要求这个系统实现1000次/秒并发访问+100G/天数据库存储,你会考虑何种优化方案,或者何种技术选择呢?
二:我的思路:通过审题,首先这是一个高并发、高数据量的系统,这两个特点是选择语言、数据库的重要依据。我从数据库选择(选了MongoDB)、并发模型选择(选了基于go的GSP模型)、通信框架选择(选了grpc)和部署(选择了Nginx)四个方面进行了分析和解答;其次,关于优化方案,我认为提高效率,能复用的尽量多复用就是优化,我的方案是使