今天面了一家专门做数据的公司GrowingIO,是一个数据总监面试的我,上来先给了一张笔试题,如下:
然后让我20分钟之内用代码给他手写出来,嗯,我果然没写出来,因为代码太长而时间有点短,就大概写了下思路,主要就是按照用户id和位置id进行分组,然后是一组的判断时间是否连续,不是一组的直接输出,等等巴拉巴拉一大堆扯,以下就开始进入挖坑环节了:
1.项目中你主要做的是哪块?是你独立完成的吗?都遇到了什么困难?怎么解决的?
2.你们这个数据量多少啊?这个数据量你们是根据什么来计算的?
3.你们的数据源是从哪收集来的?怎么收集的?你们GPS是在你们APP上嵌入的吗?为什么不在APP上嵌入啊?
4.你们数据每隔多久收集一次啊?那万一收集失败了你是怎么知道的?有报过错吗?你亲眼见过吗?报的什么错?怎么解决的?
5.你觉得数据分析处理的框架里你最擅长哪个?HDFS啊?那假如现在有个100G的文件,我要用命令行hdfs -put给它上传到hdfs上,你能给我讲讲输入这个命令行之后按下回车后都发生什么了吗?不要讲原理,就讲具体发生的事情?那假如现在这个文件同时有两台机器去完成,会出现什么问题?这个问题是出现在哪个环节了?为什么会出现?你怎么去解决怎么调优?
6.你近期工作中你觉得对你来说最大的挑战的事情是什么?具体到技术点上?那这个问题你是怎么解决的?
7.收集数据的时候肯定会有一些冗余数据啊,你怎么解决的?用的什么选择器?怎么过滤的?
8.你们存储数据是存储到哪了?那rowkey怎么设计的?为什么这样设计?为什么不倒过来设计呢?你们为什么用取Hash的方法来避免热点问题而不是加前缀或者其他方式来解决呢?
9.为什么MapReduce要分map,shuffle,reduce三个阶段呢?为什么不是四个五个更多呢?你觉得分区和combine有什么区