2019独角兽企业重金招聘Python工程师标准>>>
经过了慵懒的五一小长假,再次想起还有挖好的坑没有填。于是,回来再往这大坑中添点土。
争取今年能有个有始有终的博客系列。。。其实我还是想写点技术相关的,苦于最近真没有什么头绪。暂时先水着吧。
直接进入正文吧。今天的主角是:网易、折800、雪球
再次事先声明:此系列文章只代表个人观点,如果任何个人或团体对文章有疑问,请联系本人沟通,我会考虑修改。
还有,禁止转载,禁止人肉
网易:
公司背景:
不介绍了,他们老板养猪的,你们懂的。。。
面试职位描述:
资深Java后端开发工程师。网易基础架构部门。
面试过程:
笔试:
网易的笔试题很全面,基础语法,数据库,算法,linux常用命令。
是我见过的笔试题中最全面的一家。
基础语法部分:选择题考的比较详细。finally和return的执行顺序都考到了。
数据库:主要考了子查询、聚合函数和group by等。还问到了如何建立索引。
算法:记不住了,貌似是写个快排。
linux常用命令:涉及到cpu、内存、网络状态的查看。还有常用的日志内的搜索,比如cat + grep。基础+实用主义
一面:
技术面,
自我介绍少不了了。
面试官根据笔试内容提出一些问题,问为什么这样答。多数是针对答错了的问题乘胜追击。
之后是针对之前做过的项目的提问。比如:红包项目是如何保证一致性和可靠性的。
首先是介绍红包平台的服务架构和基本思路。此处是了解项目,考察在此项目的参与度,重点是挑项目中的问题
红包项目基本是应用服务器向redis请求抽取红包,redis中用lua脚本进行红包的抽取计算,并保存操作结果队列。
应用服务器将红包的抽取结果返回给客户端。并且通过异步线程(线程池维护)从redis中取出之前的操作结果,
并写入mysql中进行持久化。
由于redis的持久化和可靠性功能并不完全保证内存数据的不丢失。所以面试官根据此处提问,如何保证100%的可靠性。
针对redis掉电crash,应用服务器掉电crash等情况提出了问题,如何保证操作不丢失。
应用服务器的crash是通过redis里面的操作队列(List)中的数据时使用RPOPLPUSH这个命令将数据放在另外的队列里。
如果应用服务器成功持久化,再删除这个队列的内容,否则再把此队列的内容回复到操作队列中。
redis的crash是不可避免丢内存的东西的,因为我们的主redis是无法设置为aof模式的,太慢。
所以,有个改进方案和替代方案。
改进方案是:redis两个备机,一个延迟写入,保证备份的实时性,一个aof模式,保证备份的可靠性。
替代方案是:使用kafka这样的带持久化和数据多份拷贝的消息中间件来存储操作队列。这样mysql加消息中间件中的所有数据就是整个的操作全集。可靠性问题能够保障。当然,如果机房在同一地理位置,还会有灾难性问题。可以多地机房解决。
后面,后面就没有了。。。
面试结果:
未通过
总结:
1.互联网公司的鄙视链真心严重。开发人员跟我吹嘘他们的彩票系统保持了实时性和可靠性,我问他怎么做的,用了哪些中间件,什么架构。他支支吾吾。。。奶奶个腿啊!!!!
2.网易的笔试题是我见到的最全面的笔试题,涉猎范围很广。而且考基础的时候靠的比较精细。linux的实用命令也出的很好。
3.网易这种公司可能对实时性和可靠性要求都很高。所以可能需要多多针对分布式、实时性、可靠性准备。
4.基础一定要打牢,因为细节最能看出一个人的能力。大牛也是非常注重细节的一帮人呢啊。
5.互联网的大公司的大公司病可能已经有一些了。对于有能力的人的筛选上,其实先入为主很不好(当然,不是说我的能力匹配的上网易)
折800:
公司背景:
团购系的门户,半死不活的状态吧。
职位描述:
后台Java高级开发工程师
面试过程:
笔试:
笔试卷子非常简单,甚至卷子题目就是校园招聘开发工程师笔试,当然被涂黑了,我是看阴影看出来的。
而且跟考在校生差不多,填空题都是些理论概念题。比如:线程有多少种状态
一面:
无。让我在会议室内等了1个半小时,然后说面试官开会,今天不能来。
我只能呵呵。
面试结果:
就算通过了我也不去!
总结:
1.没什么可总结的。这样看,这样的公司半死不拉活也就有原因了。
雪球:
公司背景:
移动股票类垂直社交性APP。公司貌似背景深厚,你们懂的。
职位描述:
高级开发工程师,后端架构方向
面试过程:
笔试:
无
一面:
貌似是一个高开的人员,
开场貌似统一是自我介绍,
简单的问了Redis的持久化方式的配置。
然后针对之前的工作问一系列的问题,IM服务器是什么情况,如何保持长连接。
各系统之间的调用使用什么方式。
整体的产品架构,各个服务器都是扮演什么角色。
对红包平台比较感兴趣,让我详细的讲解了产品的架构和实现。
二面:
技术总监,上面直接跟CEO汇报,很扁平,不错。
再次自我介绍。
介绍雪球的情况,雪球如何运作,理念。
不好意思,我都没记住。
然后是问公司平台的架构。
我简单画了一下,他的评价是是个简单而且小规模的平台。
当然,这点见仁见智了。。我也没说啥。
然后提出聊聊红包的设计。
一面怎么说,二面就怎么说吧。
但是有个非常明显的问题,在我说的过程中,很多架构和算法我都要跟他解释2-3遍。
感觉他没跟着我的思路走下去。当然,也可能我讲的不好,不过一面是能跟上的。。。这点很诡异。
然后是挑刺时间,如何保证一致性,可靠性。并发是不是还能再高点。
给出了分布式Queue中间件的解决方案。表示还算满意。
最后谈钱,直接谈崩。
面试结果:
没有结果。
总结:
1.一个互联网公司是要有一定的范儿的,雪球做的最好。办公环境很fasion。前台有投影实时的大盘变化。让人觉得很舒服,像是一个科技公司哦。
2.对于自己做的事情一定要清晰,而且了解细节。面试官很容易问到细节。
3.要有自信,强大的自信。对于自己做的事情不要持怀疑态度。坚定的信任。
4.要善于调节面试节奏。比如薪资这种敏感问题,需要慢慢的从侧面了解对方的底线。不要过于直接。因为相互的预期一定是不匹配的。
好吧,其实没什么干货。诸位看官凑合着看看。
本系列之前的文章链接:
1.我的面试经历--缘起