酷家乐后端三次面试
酷家乐总体的面试体验还是挺不错的,这里给大家分享一下面试过程中的一些问题。
一面(1.5h):视频
自我介绍
问了一些简历相关的问题
出了一道设计题:火车票购票,分别有购票、退票、检票三个功能,一共五十张票,有文件A和文件B,文件A记录买票人信息,文件B记录检票人信息,模拟真实场景进行设计,需要考虑各种异常情况。(面试官最后说这个题有一个比较重要的考察点就是缓存和文件的读写顺序)
二面(1.2h):视频
自我介绍
问了实习项目相关的问题
gc算法
arraylist和linkedlist区别
mysql的锁
代码题:设计一个循环队列,区别于arraylist的扩容机制,空间可重用。
智力题:给N根长度不同密度不均匀的绳子,从头到尾燃烧完需要1小时,需要多少根才能计时1小时15分
三面(1.2h):电话
自我介绍
项目详细介绍,问了一些细节
gc、jvm调优
nio,poll、epoll
系统设计:图书管理系统,每人一张卡,最多能借十本书,一本书最多能借30天,系统包括借书和还书,借书超过30天会计算罚金,罚金没还完无法继续借书。此外后面还加了一个预约功能。(基本就是从数据库表设计去回答了)
算法题1:给一个数组A,其中每个数表示股票每天的价格,输出一次买入卖出的收益最大值。(动态规划,两个数组temp1, temp2,temp1记录从第1天到第i天的收益最大值,temp2记录第1天到第i天的最低价格,temp1[i+1] = Math.max(temp1[i], A[i+1]-temp2[i]))
算法题2:给n个有序数组,求一个区间[a, b],确保每一个数组至少有一个值在区间内,并使区间最小。(先取出每个数组的最小值,用这n个数构建最小堆,然后每次去掉堆顶元素,将堆顶元素对应的那个数组的下一个元素加进堆里面,再调整成最小堆,重复至某个数组元素被清空为止)
其他可能还有一些问题不太记得了,因为面试比较多,记忆有点混乱,但是总的来说面试官给人的感觉还是挺好的。而且酷家乐面经好像挺少的,就整理了一下,供大家参考~
#校招##酷家乐##面经##Java工程师#