下午算是回「老东家」又参与了一次面试。我去年(2016)下半年在美团厦门研发中心实习了半年多一点的时间,后来学校有安排任务只好先离职,但在今年秋招再次走了内推。

个人觉得有几分幸运,当时实习的部门今年居然免笔试,原本约的8月底去面试,又因为厦门这边召开金砖会议,整整一个礼拜的时间,到处戒备森严,面试不得不推迟到了今天。

一面

下午的面试一共就两轮技术面,51分钟+17分钟,可能是之前实习过的缘故吧,感觉难度没有想象中的大。到现场后见了之前的老大一面,就被带到会议室开始一面。

1、自我介绍
2、先前实习的收获和成长
3、对微服务的理解;微服务的优势和劣势
4、Java8的新特性
5、HashMap和ConcurrentHashMap的实现
6、对RESTful的理解
7、MySQL存储引擎MyISAM和InnoDB的区别
8、数据库事务的隔离级别,所解决的问题
9、简介Redis;是否了解Redis集群;是否看过Redis的源码(一致性哈希算法)
10、服务间通信的方式
11、类加载机制
12、常用的JVM调试命令
13、GC机制;Java8在内存管理上的区别
14、项目中常用的JVM参数(GC参数);是否观察过项目GC情况
15、【场景设计】需要在酒店列表上展示:XX酒店,当XX月XX日入住,XX月XX日离店时,房价XX元。酒店ID、入离时间和区间内每一天的价格都是已知的,注意酒店可能很多,入离时间区间可能很长

阶段1:直接查询,全部压力落在DB上

1
2
3
4
select hotel_id, min(price)
from hotel_price_calendar
where (search_conditions) and date >= checkin and date <= checkout
group by hotel_id

阶段2:缓存历史查询结果或热门查询结果
阶段3:预先查询全部可能结果,保证后续每次请求都高效响应,即“以空间换时间”
假定缓存以今天为基准,前后2年(720天计)内入住,2年内离店的最低价,所需空间仅720*720*4=2073600 B,每个酒店需约2M缓存空间
第一个720是可能的入住时间,第二个720是可能的离店时间,4是假设每天的房价用一个int表示,查询时根据入离日期换算数组下标,O(1)可命中

16、【智力?】有去掉大小王的52张扑克牌一副,定义“顺子”为连续的5张牌,从A-2-3-4-5、2-3-4-5-6一直到10-J-Q-K-A,共10种,从这副牌中随机抽5张,求刚好是“顺子”的概率
17、如果防止HTTP接口未授权的调用;还需考虑哪些安全因素
18、对反爬策略的了解

二面

嗯,二面的面试官是厦门这边的老大,所以可能就比较少涉及的技术吧,反而有点像HR面了都……

1、说说回学校这段时间的完成的项目和工作职责
2、半年实习学到的东西是否对自己的项目有所帮助
3、研三最后一年自己和老师的安排;目前在实验室的工作
4、自己的优势和不足;对未来职业的规划
5、自己和班级其他同学秋招进展
6、【我提问】了解了一下实习离职这半年团队(新)项目的情况和发展;所遇到的挑战

HR面

技术面结束5天后接到了HR的电话,是来自上海的点评侧同学,可能又是跟我在团队实习过的缘故吧,原本说定15分钟的HR面竟然5分钟就(有点草草地)结束了。

1、技术面感觉
2、对公司和团队的了解
3、对实习期间Leader的评价
4、工作地点为什么选择厦门
5、是否已有其他Offer
6、实习期间最有成就感的一件事
7、实习期间遇到团队同学意见不统一时如何处理

Update

9月20日收到短信形式的口头Offer,等待正式结果ing……