1、项目都分析过哪些业务模型
参考各个需求文档:
- 离线的报表(展示量,点击量,点击率,参与竞价数,竞价成功数,消费)
- 终端设备分析(运营商,联网方式,操作系统,客户端)
- 渠道分析
- 媒体分析
- 统一用户识别
- 数据标签化
- 用户上下文标签合并
- 图计算再次合并标签
- 把标签存入HBase,再次合并标签 --> 数据到了HBase以后,就到了精准营销部门
2、项目中的知识点
1)parquet文件存储(列式存储)
a、可以跳过不符合条件的数据,只读取需要的数据,降低IO数据量
b、压缩编码可以降低磁盘存储空间,由于同一列的数据类型是一样的,可以使用不同的压缩编码。
c、只读取需要的列,支持向量运算,能够获取更好的扫描性
d、parquet 适配多种计算框架,查询引擎(Hive,Impala,Pig,IBM Big SQL);计算框架(MapReduce,Spark,Kite,Cascading等等);数据模型(Avro,Thrift,Protocol Buffers等)
2)Spark算子运算
Map,flatMap,filter,case,groupBy,reduceByKey等。
3、面试中最常问的问题
1)首先简单的介绍一下自己的情况(一分钟的自我介绍)
2)介绍一下项目的情况(主要想观察你对项目了解多少)
答:我们做过一个DMP项目,用户画像,根据用户社会的一些特有属性,生活的习惯和一些消费行为等信息,从而抽象出一个标签化的用户模型。通过用户的调研去了解用户,然后根据他们的目标,行为和和观点的差异,将他们分为不同的类型,从而可以做一些精准的营销。
3)你们的这个项目用到哪些技术?用的是哪些版本?
答:
hadoop:2.7.5
Spark:Spark1.6.3
Java:java8
Scala:Scala2.11
4)你在开发过程中遇到了哪些问题?
答:
5)你们开发团队有多少人并说说他们干的什么活?小团队
答:一般是6 - 7人的团队
一个人运维
一个人ETL的活和Hive
两个Spark的活
一个前端
一个领导
一个实习生
6)你在公司里干什么活?平时做的项目需求?
7)说说你的上一家公司?一定不要说上一家坏话
8)为什么要离职?
9)你说说对我们公司的认识?(小公司会问)
10)你未来两到三年的规划?
11)你们这个项目写了多少行代码?一共多少个文件?写了多长时间?
答:
40多个文件,每个大概是70 - 100行左右
12)你们公司的集群多大,配置如何?(50个节点以内)
答:
一共18太节点
128G内存,(20 + 2 * 1T) 浪潮/戴尔/联想/IBM
20(数据盘)+2(系统)块硬盘 * 1 T(一个节点,一台机器)
13)你们公司有测试集群吗?多大?
答:
50个节点 -> 4台测试
20个节点 -> 3台测试(HA,分布式的效果)
14)每天的数据量有多大?压缩前后比例是3:1
答:
压缩前:150G左右
压缩后:40G左右
15)每天有多少条数据?
答:
16)每条数据多大?
答:
4KB左右
17)每条数据有多少个字段?
答:
90个字段
18)你们的数据保留周期是多少?
答:
一个月
集群一定要存的下这个值:(30 * 每天的数据量 * 3个副本)
20)你们公司一天跑多少个脚本?
答:
60左右,20个是常态化的脚本
21)跑一个脚本需要多长时间?
答:
5分钟左右
3-6分钟:太快了吧 。(我们调优做得好,我们集群性能也不错)
10分钟:太慢了吧。(我们集群性能不是很好)
22)当一个项目问到了一些需求?
答:
实在说你清楚的时候,就说是同事做的
23)必须要会的代码(具有一票否决权)
答:
手写冒泡排序
手写wordcount
手写单例模式