第1章 面试说明
1.1 面试过程最关键的是什么?
1.2 面试时该怎么说?
1.3 面试技巧
1.3.1 六个常见问题
1.3.2 两个注意事项
1.3.3 自我介绍(控制在4分半以内,不超过5分钟)
第2章 手写代码
2.1 冒泡排序
2.2 二分查找
2.3 快排
2.4 归并
2.5 二叉树之Scala实现
2.6 手写Spark-WordCount
2.7 手写Spark程序
第3章 项目架构
3.1 数仓概念
3.2 系统数据流程设计
3.3 框架版本选型
3.4 服务器选型
3.5 集群规模
3.6 人员配置参考
3.6.1 整体架构
3.6.2 你们部门的职级等级,晋升规则
3.6.3 人员配置参考
第4章 项目涉及技术
4.1 Linux&Shell相关总结
4.1.1 Linux常用命令
4.1.2 Shell常用工具
4.2 Hadoop相关总结
4.2.1 Hadoop常用端口号
4.2.2 Hadoop配置文件以及简单的Hadoop集群搭建
4.2.3 HDFS读流程和写流程
4.2.4 MapReduce的Shuffle过程及Hadoop优化(包括:压缩、小文件、集群优化)
4.2.5 Yarn的Job提交流程
4.2.6 Yarn的默认调度器、调度器分类、以及他们之间的区别
4.2.7 项目经验之LZO压缩
4.2.8 Hadoop参数调优
4.2.9 项目经验之基准测试
4.2.10 Hadoop宕机
4.3 Zookeeper相关总结
4.3.1 选举机制
4.3.2 常用命令
4.4 Flume相关总结
4.4.1 Flume组成,Put事务,Take事务
4.4.2 Flume拦截器
4.4.3 Flume Channel选择器
4.4.4 Flume监控器
4.4.5 Flume采集数据会丢失吗?(防止数据丢失的机制)
4.4.6 Flume内存
4.4.7 FileChannel优化
4.4.8 HDFS Sink小文件处理
4.5 Kafka相关总结
4.5.1 Kafka架构
4.5.2 Kafka压测
4.5.3 Kafka的机器数量
4.5.4 Kafka的日志保存时间
4.5.5 Kafka的硬盘大小
4.5.6 Kafka监控
4.5.7 Kakfa分区数
4.5.8 副本数设定
4.5.9 多少个Topic
4.5.10 Kafka丢不丢数据
4.5.11 Kafka的ISR副本同步队列
4.5.12 Kafka分区分配策略
4.5.13 Kafka中数据量计算
4.5.14 Kafka挂掉
4.5.15 Kafka消息数据积压,Kafka消费能力不足怎么处理?
4.5.16 Kafka幂等性
4.5.17 Kafka事务
4.5.18 Kafka数据重复
4.5.19 Kafka参数优化
4.6 Hive总结
4.6.1 Hive的架构
4.6.2 Hive和数据库比较
4.6.3 内部表和外部表
4.6.4 4个By区别
4.6.5 窗口函数
4.6.6 自定义UDF、UDTF
4.6.7 Hive优化
4.7 HBase总结
4.7.1 HBase存储结构
4.7.2 rowkey设计原则
4.7.3 RowKey如何设计
4.7.4 Phoenix二级索引(讲原理)
4.8 Sqoop参数
4.8.1 Sqoop导入导出Null存储一致性问题
4.8.2 Sqoop数据导出一致性问题
4.8.3 Sqoop底层运行的任务是什么
4.8.4 Sqoop数据导出的时候一次执行多长时间
4.9 Scala
4.9.1 开发环境
4.9.2 变量和数据类型
4.9.3 流程控制
4.9.4 函数式编程
4.9.5 面向对象
4.9.6 集合
4.9.7 模式匹配
4.9.8 异常
4.9.9 隐式转换
4.9.10 泛型
4.10 Spark
4.10.1 Spark有几种部署方式?请分别简要论述
4.10.2 Spark任务使用什么进行提交,JavaEE界面还是脚本
4.10.3 Spark提交作业参数(重点)
4.10.4 简述Spark的架构与作业提交流程(画图讲解,注明各个部分的作用)(重点)
4.10.5 如何理解Spark中的血统概念(RDD)(笔试重点)
4.10.6 简述Spark的宽窄依赖,以及Spark如何划分stage,每个stage又根据什么决
4.10.7 请列举Spark的transformation算子(不少于8个),并简述功能(重点)
4.10.8 请列举Spark的action算子(不少于6个),并简述功能(重点)
4.10.9 请列举会引起Shuffle过程的Spark算子,并简述功能。
4.10.10 简述Spark的两种核心Shuffle(HashShuffle与SortShuffl
4.10.11 Spark常用算子reduceByKey与groupByKey的区别,哪一种更具优势
4.10.12 Repartition和Coalesce关系与区别
4.10.13 分别简述Spark中的缓存机制(cache和persist)与checkpoint机
4.10.14 简述Spark中共享变量(广播变量和累加器)的基本原理与用途。(重点)
4.10.15 当Spark涉及到数据库的操作时,如何减少Spark运行中的数据库连接数?
4.10.16 简述SparkSQL中RDD、DataFrame、DataSet三者的区别与联系?
4.10.17 SparkSQL中join操作与left join操作的区别?
4.10.18 SparkStreaming有哪几种方式消费Kafka中的数据,它们之间的区别是什么
4.10.19 简述SparkStreaming窗口函数的原理(重点)
4.10.20 请手写出WordCount的Spark代码实现(Scala)(手写代码重点)
4.10.21 如何使用Spark实现TopN的获取(描述思路或使用伪代码)(重点)
4.10.22 京东:调优之前与调优之后性能的详细对比(例如调整map个数,map个数之前多少、之后
4.11 Spark Sql、DataFrames、DataSet
4.11.1 append和overwrite的区别
4.11.2 coalesce和repartition的区别
4.11.3 cache缓存级别
4.11.4 释放缓存和缓存
4.11.4 Spark Shuffle默认并行度
4.11.5 kryo序列化
4.11.6 创建临时表和全局临时表
4.11.7 BroadCast join 广播join
4.11.7 控制Spark reduce缓存 调优shuffle
4.11.7 注册UDF函数
4.12 Spark Streaming
4.12.1 Spark Streaming第一次运行不丢失数据
4.12.2 Spark Streaming精准一次消费
4.12.3 Spark Streaming控制每秒消费数据的速度
4.12.4 Spark Streaming背压机制
4.12.5 Spark Streaming 一个stage耗时
4.12.6 Spark Streaming 优雅关闭
4.12.6 Spark Streaming 默认分区个数
4.13 元数据管理(Atlas血缘系统)
4.14 数据质量监控(Griffin)
第5章 用户行为数据分析
5.1 数仓分层架构表
5.2 埋点行为数据基本格式(基本字段)
5.3 项目经验总结
5.3.1 项目经验之元数据备份
5.3.2 日期处理函数
5.3.3 Union与Union all区别
5.3.4 Shell中单引号和双引号区别
5.3.5 Tez引擎优点?
5.4 ods层
5.5 dwd层
5.5.1 自定义UDF/UDTF(项目中的应用)
5.5.2 事件日志基础明细表
5.5.3 商品点击表
5.5.4 其他的具体事件明细表
5.6 需求一:用户活跃主题
5.6.1 DWS层日活明细表
5.6.2 DWS层周活明细表
5.6.3 DWS层月活明细表
5.6.4 ADS层日周月活跃设备数表
5.7 需求二:用户新增主题
5.7.1 DWS层日新增明细表
5.7.2 ADS层每日新增设备数表
5.8 需求三:用户留存主题
5.8.1 DWS层日留存明细表
5.8.2 ADS层留存用户数表
5.8.3 ADS层留存用户率表
5.9 需求四:沉默用户
5.10 需求五:本周回流用户数
5.11 需求六:流失用户数
5.12 需求七:最近连续3周活跃用户数
5.13 需求八:最近七天内连续三天活跃用户数
5.14 需求逻辑
5.14.1 如何分析用户活跃?
5.14.2 如何分析用户新增?
5.14.3 如何分析用户1天留存?
5.14.4 如何分析沉默用户?
5.14.5 如何分析本周回流用户?
5.14.6 如何分析流失用户?
5.14.7 如何分析最近连续3周活跃用户数?
5.14.8 如何分析最近七天内连续三天活跃用户数?
第6章 业务交互数据分析
6.1 电商常识
6.2 电商业务流程
6.3 业务表关键字段
6.3.1 订单表(order_info)
6.3.2 订单详情表(order_detail)
6.3.3 商品表
6.3.4 用户表
6.3.5 商品一级分类表
6.3.6 商品二级分类表
6.3.7 商品三级分类表
6.3.8 支付流水表
6.4 MySql中表的分类
6.5 同步策略
6.6 关系型数据库范式理论
6.7 数据模型
6.8 业务数据数仓搭建
6.8.1 ods层
6.8.2 dwd层
6.8.3 dws层
6.9 需求一:GMV成交总额
6.10 需求二:转化率
6.10.1 新增用户占日活跃用户比率表
6.10.2 用户行为转化率表
6.11 需求三:品牌复购率
6.11.1 用户购买商品明细表(宽表)
6.11.2 品牌复购率表
6.12 项目中有多少张宽表
6.13 拉链表
第7章 即席查询数据仓库
第8章 项目开发经验
8.1 项目开发中遇到哪些问题
8.1.1 Hadoop
8.1.2 Flume
8.1.3 Kafka
8.1.4 Hive
8.1.5 MySql
8.1.6 Tez引擎优点?
8.1.7 Sqoop
8.1.8 Azkaban
8.1.9 Spark
8.2 业务经验
8.2.1 ODS层采用什么压缩方式和存储格式?
8.2.2 DWD层做了哪些事?
8.2.3 DWS层做了哪些事?
8.2.4 分析过哪些指标(一分钟至少说出30个指标)
8.2.5 分析过最难的两个指标,现场手写
8.2.6 数据仓库每天跑多少张表,大概什么时候运行,运行多久?
8.2.7 数仓中使用的哪种文件存储格式
8.2.8 数仓中用到过哪些Shell脚本及具体功能
8.2.9 项目中用过的报表工具
8.2.10 测试相关
8.2.11 项目实际工作流程
8.2.12 项目中实现一个需求大概多长时间
8.2.13 项目在3年内迭代次数,每一个项目具体是如何迭代的。
8.2.14 项目开发中每天做什么事
第9章 电商运营经验
9.1 电商指标整理
9.2 电商8类基本指标
9.3 五大关键电商指标和三个思路
9.4 电商运营数据挖掘
9.5 直播指标
第10章 JavaSE(答案精简)
10.1 HashMap底层源码,数据结构
10.2 Java自带哪几种线程池?
10.3 HashMap和HashTable区别
10.4 TreeSet和HashSet区别
10.5 String buffer和String build区别
10.6 Final、Finally、Finalize
10.7 ==和Equals区别
第11章 Redis(答案精简)
11.1 缓存穿透、缓存雪崩、缓存击穿
11.2 哨兵模式
11.3 数据类型
11.4 持久化
11.5 悲观锁
11.6 乐观锁
第12章 MySql
12.1 MyISAM与InnoDB的区别
12.2 索引
12.3 b-tree和b+tree的区别
12.4 redis是单线程的,为什么那么快
12.5 MySQL的事务
第13章 JVM
13.1 JVM内存分哪几个区,每个区的作用是什么?
13.2 Java类加载过程?
13.3 java中垃圾收集的方法有哪些?
13.4 如何判断一个对象是否存活?(或者GC对象的判定方法)
13.5 什么是类加载器,类加载器有哪些?
13.6 简述Java内存分配与回收策略以及Minor GC和Major GC(full GC)
第14章 JUC
14.1 Synchronized与Lock的区别
14.2 Runnable和Callable的区别
14.3 什么是分布式锁
14.4 什么是分布式事务
第15章 手写HQL
15.1 手写HQL 第1题
15.2 手写HQL 第2题
15.3 手写HQL 第3题
15.4 手写HQL 第4题
15.5 手写HQL 第5题
15.6 手写HQL 第6题
15.7 手写HQL 第7题
15.8 手写HQL 第8题
15.9 手写HQL 第9题
15.10 手写HQL 第10题
15.11 手写HQL 第11题
15.12 手写HQL 第12题