百度数据开发实习面经(一二面)
作者:wujx1998
链接:https://www.nowcoder.com/discuss/585647?source_id=discuss_experience_nctrack&channel=-1
来源:牛客网
一面(12.31 / 40min)
网比较卡面得有点慢
上来就是一个sql题,表结构是:
uuid event time
1 start t1
2 start t2
1 audit t3
1 publish t4
3 start t5
大概就是这么一个表结构
1.求三个event(start audit publish)的人数(漏斗)
我直接就用了in方法,然后面试官反问我还有没有别的,我说exists和自连接
面试官问还有没有别的,提醒之后说可以用case when把event转成三列然后就可以算了
2.求次日留存,然后扩展到求N日留存
然后因为看我会java问了点java
ArrayList和HashMap有什么区别
算法题:两个有序队列合成一个有序队列
其他:
对大数据的理解是什么?
为什么做大数据?
一面结束直接给过了,1.1直接约了1.2的面试
二面(1.2 / 1.5h)
二面上来面试官都没让自己介绍,直接上算法题
题目:将一个二维数组Z字输出
做出来了然后面试官说没啥问题,然后来了道SQL
表结构和一面的差不多,就是把event三个换了名字(我这里直接复制下来了):
uuid event time
1 start t1
2 start t2
1 audit t3
1 publish t4
3 start t5
题目:求start -> audit和audit-> pubish两个过程所用时间的50和80分位数
题目不算很难,只不过我后面算百分比的时候一开始想用窗口函数算第一行到现在这一行的count然后再除以count()
面试官提醒我可以直接用rank(),我改了之后说基本没什么问题,不过可以用count()作为total乘以0.5和0.8来找,而不是用rank()/count(*)
到这里才40min,我感觉不错,谁知道后面50min让我人都傻了。。。。。。
两道算法题后自我介绍,开始挖项目
项目巨简单,就是做了个pg和ES的数据同步,中间件还是开源的,做了个队列持久化
我介绍完项目之后,直接问我:你这个数据有多大?TB?(不知道,我就做了个中间队列的持久化)
你刚刚说你会把没同步成功的log持久化,你有考虑过你的中间件在ES断开之后有什么操作吗?(就是把Log放到数据库中)
放到数据库后你怎么处理的呢?(用modify_time标识,要是同一条数据在后续的修改被同步到数据库中,那log表里面的其实就作废了)
那你这个属于状态量,你有考虑过过程量吗?(给我介绍了全量和增量的区别,在业务上状态量和过程量的区别)
你有考虑过数据量如果太大的话如何进行处理吗?(分布式?)
然后面试官说你这个项目问题很多,你自己做的时候多想想
然后问java基础
ArrayList和LinkedList的区别,效率上,底层上
JVM垃圾回收机制(这里因为之前面试没说出来,特意去背了,说完感觉自己说的挺不错的)
然后。。。面试官问:那这个垃圾回收调参你知道怎么调吗?就是这些算法在什么情况下用什么参数?(我:???这学习的时候也没人说还有这个啊, 有大佬知道麻烦给我贴个链接谢谢)
面试官说,你学习的时候记得要多多联系业务实际
最后问了下HDFS,spark,Hadoop有没有接触过?
最后问我为什么想搞大数据,以后职业发展准备咋样
——————————————————-分割线———————————————————————
二面面试官真的问的细,学到了很多,今天是1.4没有消息,大概率是没了,继续努力吧~