大数据开发面试问题总结

面试1

  1. hashmap,有一些乱序或者顺序的数据,我想逆序输出?

  2. sql查询一张很大的表,要怎么优化?

    • 表分区
    • 优化索引
    • 对重复查询操作表做缓存。
    • 根据业务情况改善表的粒度。
    • 拆分表
  3. hadoop的shuffle和spark的shuffle有什么区别?

  4. scala的map和foreach操作不同?
  5. 网络协议的get和post区别?
  6. TCP三次握手?
  7. 一张没有主键的表,有重复数据,如何删除重复数据?

面试2

  1. 自我介绍;
  2. 介绍下简历上的项目经历这一块;(我写的是离线数仓,所以介绍的是数仓相关的)
  3. 数仓为什么用星型模型?
  4. 维度建模除了星型模型外还有哪些?
  5. 承上第四问,回答这几种模型的优缺点?
  6. 星型模型较之于雪花模型在计算、存储、查询方面的优势是什么?
  7. 怎么理解数仓的分层,为什么分层?
  8. 大概说一下MR的原理?
  9. (MR)什么情况下会发生溢写呢?
  10. Map端会排序吗?或者说MR哪些流程中会涉及到排序,你觉得哪些是可以进行优化的呢?
  11. 数仓项目里涉及到的数据规模多大?(由于说了是几十万条,面试官嫌弃数据量太少了,回答是练习用的,本机带不动太多)
  12. 在数仓项目中,有没处理过复杂的数据计算的场景?举个例子?
  13. 出了一到实践的编程题,写代码实现(不限语言):
1
2
题目:有一个用户,他连续做了4次操作,求出他/她每次操作平均耗时。
字段:user_id, action_type(1, 2, 3 ,4), ts(timestamp)

面试3

  1. 自我介绍;

  2. 能来实习的时间?

  3. 专业课程中哪些内容跟数仓相关?(大三实习)

  4. 数仓数据分层是怎样的呢?

  5. 你希望实习达到什么样的收获或者你能给公司带来什么样的一个帮助?

  6. 大学课程中有哪些喜欢的课程,可以说说吗?

  7. 你能说说你平时有看哪些书呢?说出书名。

  8. 说说你学习这些(看的书)的目标是什么?

  9. 你对我们公司有什么想要了解的?

    1. 公司实习日常是做些什么事务呢?

      数仓这边工作是数据入仓的工作,相对简单些,数据来源简单,数据应用也会相对简单,数据量也不多,原系统也不复杂,所以你可能会做一些原系统梳理工作,一些数据入仓配置工作,从原系统不同表通过数据迁移工具(datax等),不同的策略配置入仓,再提供给下游应用,然后会有一些数据字典整理相关工作,基本上是把控在入仓这方面的一些工作。

    2. 公司用的一些框架有哪些?

      目前公司有两个平台,一个是旧数仓是oracle平台,正在往hadoop平台迁移。有包括应用的迁移和底层数据的迁移。

面试4

  1. 自我介绍;
  2. 你对数据仓库和数据开发的认识,你觉得这两个是做什么?
  3. 之前ETL操作有做过吗?主要用到哪一些工具?
  4. Python开发Hive UDF得流程?
  5. 在做数仓项目的时候,维度表和事实表你是怎么设计的?
  6. 能讲一下DWS层和DWT层它们的区别吗?
  7. 对于数据库你了解哪些?
  8. 在MySQL里面实现自增是用什么关键词?
  9. 平时对数据库底层有了解吗?能讲一下MySQL引擎吗?
  10. Hive里面存储格式有哪一些?(列式存储)
  11. 用Hive进行数仓开发的时候有遇到过哪些问题?
  12. 我们公司大数据项目有两条线,一个是Hadoop组件和Hadoop生态圈做的一个交通项目,另一个因为公司跟安全相关,安全的有要求必须用国产的数据库,所以公司用了一个叫greenplum的国产关系型数据仓库去做一些项目,所以以后在我们公司不仅会接受到hadoop生态相关的开发,还会接触到gp(postsql)关系型数据库。以后公司会往安全方面,pg和greenplum这一块去发力,而且公司本身要根据pg去做一些自己的数据库产品,所以这边的大数据可能除了正常的数据仓库的开发工作之外,还会跟一些基本的数据库和数据库底层都有接触。目前公司和政府部门有个交通相关的合作项目,一期重点是放在gp这上面
  13. 了解哪些语言?
  14. 小测试,在本机上完成一个比较简单的业务流程,在虚拟机上搭建一套greenplum,用dataxweb去完成数据导入这一块流程,能做通的话,我们再联系。