记一次腾讯云(西安)后台开发面试经历
作者:z小赵
★一枚用心坚持写原创的“无趣”程序猿,在自身受益的同时也让朋友们在技术上有所提升。
各位读者朋友们还好吗?是不是觉着有一段时间没有看到我的新文章了?本篇文章总结一下最近发生的事情,主要有两方面:
其一:最近这段时间因为公司组织架构的调整,身边朋友走了挺多,内心躁动的我也有些不太安分了。
其二:女朋友在西安的工作确定了下来,加之房子也在西安,所以就萌生了回西安的想法。
接下来就心仪公司的选择和面试经历做一些简单总结。希望对朋友们找工作,尤其是在西安准备尝试腾讯云的朋友们有所帮助。
西安好找工作吗?
答案是取决于你想去一个什么样的企业。自毕业以后一直觉得西安互联网环境应该还不错,有华为、中兴、360、京东等等一些不错的国内的大厂,也有一些如 Thouhtworks 等等不错的外企。但是最近和猎头朋友交流以后发现,在西安想找到一个自己称心如意的岗位,难度相对来说还是有些大的,下面是一些猎头朋友反馈的目前西安的情况。
我对于这个回复还是持有一些疑问的,于是自己亲自逛了 Boss 直聘,发现情况基本上确实差不多。造成这种现象我认为基本上有两点,其一是自己对于市场的期望值过高(可能因为在一线城市待习惯了),其二是相对可选择的空间还是比较少。
对市场有了一些了解之后,最后选择去试试腾讯云西安的岗位,我选择的是 Java 开发,偏向于高并发、分布式相关的工作,下面是面试过程中面试官提问的一些问题,希望能够对正在西安找工作或者有跳槽想法的朋友有所帮助。
面试涉及题目及答案
面试官提问 1:自我介绍及项目经历
关于这道题,每个人的项目经历都不太一样,所以各位朋友根据自己的实际情况来介绍吧,在这里就不多介绍了。
面试官提问 2:看你项目介绍中大量使用了 Redis,那能不能介绍下 Redis 的主从同步机制呢?
关于这道题,因为我在之前的文章也分析过 Redis 主从同步的机制,所以我从 完整重同步 和 部分重同步 两个阶段去分析的,结果也得到了面试官的认可。详细的完整重同步和部分重同步机制原理是什么样的,在这里就不展开介绍了,附上链接朋友们自行查看吧。主从同步原理,点击查看
面试官提问 3:你们项目中 Redis 的内存使用和过期数据是怎么做的?
这是两道题,先来说说内存是怎么设计的,首先我们是按照业务维度去评估资源内存的使用量和 QPS 两个维度去评估 Redis 该部署多少资源,然后提到了业务中 Redis 的部署方式及原因。然后在聊到过期数据的剔除策略,这些在之前的文章也有介绍过,附上链接朋友们自行查看吧。缓存过期剔除策略
面试官提问 4:看你在实际项目中使用 Streaming 做了一些实时推荐的项目,能介绍下吗?
我们的部分实时推荐项目使用的是 Steaming,其通过对 Kafka 的 Consumer 进行了二次开发封装,屏蔽了 Kafka 不同版本对于业务的影响,同时也可以用 Steaming 去对接不同的数据源,比如现在也支持 xx 数据源的消费(因为业务比较那啥,在这里就不说明了)
面试官提问 5:既然使用了 Kafka,你知道为什么 Kafka 那么快吗?
这道题之前在 Kafka 常见面试题中有提到过,这里需要补充一点是,Kafka 的“零拷贝”机制需要朋友在深入研究下,在之前的文章里面没有深入解释过这个点,剩余的其他方面附上链接朋友们自行查看吧。Kafka 为什么那么快
面试官提问 6:使用 Kafka 有遇到过重复消费的情况吗?你们是怎么解决的?
有遇到过,这里补充一点,因为业务形态所决定消息重复消费产生的影响不是特别严重,所以在一定程度上可以暂时接受,后续通过一些手段去解决了,解决办法之前介绍过如何处理,懒得在这里继续重复了,直接看链接吧。Kafka 重复消费怎么办
面试官提问 7:关于项目咱们先聊这么多,出个题吧,怎么实现一个阻塞队列?
网上解决办法一大堆,大家自行百度吧,需要额外注意的一个点是,如何提高其并发处理的能力(这点我没答上来,期待朋友们留言一起来探讨)
面试官提问 8:MySQL 熟悉吗?MySQL 事务是什么?
ACID 准备下,时间不多了,直接略过,准备面试的朋友们记得准备一下哈。简单聊了下 读未提交、读已提交、重复读、序列化几种情况。需要额外再准备下业务中使用的事务隔离级别是怎么用的(我在项目中使用的 MySQL 不多,面试官也没有多问,主要是一个小时的面试时间快到了,哈哈哈)
面试官提问 9:知道 MySQL 的 MVCC 机制吗?
平时基本不用 MySQL,这个没答出来,之后了解了下 InnoDB 大概是通过 undo log 和版本号机制来实现的(怪我没有充分准备就面试了,哈哈,自己活该)
面试官提问 9:JVM 的垃圾回收机制了解吗?
标记-清楚算法、复制算法、标记-压缩算法、分代收集算法的实现原理。
面试官提问 10:项目中用的是 CMS 垃圾回收器吗?为什么要分为四个阶段?
初始标记,并发标记,重新标记,并发清理四阶段,系统要求快速响应低延迟,对于多核 CPU 性能更佳等方面去回答即可,网上文章很多,这里不多赘述了。
总结
以上内容基本上就是这次面试遇到了问题了,基本上围绕这项目来问的,问题也不是很难,大部分问题在之前的文章了自己也都研究过,所以答起来就很轻松。
希望通过本文能够对正在准备面试的朋友有所帮助,另外也希望不着急的朋友们平时好好打基础,面试的时候大概准备下基本上问题就不大了。
通过本次面试也知道自己对于 MySQL 这块比较鸡肋,下个系列开始搞 MySQL,继续查漏补缺,干就完了。觉得内容对你有帮助的话请多多转发支持一下我呗。
2. 一个空格引发的“惨案“
3. 大型网站架构演化发展历程
扫码二维码关注我
·end·
—如果本文有帮助,请分享到朋友圈吧—
我们一起愉快的玩耍!