第1章 项目涉及技术
1.1 Linux&Shell相关总结
1.1.1 Linux常用命令
1.1.2 Shell常用工具
1.2 Hadoop相关总结
1.2.1 Hadoop常用端口号
1.2.2 Hadoop配置文件以及简单的Hadoop集群搭建
1.2.3 HDFS读流程和写流程
1.2.4 MapReduce的Shuffle过程及Hadoop优化(包括:压缩、小文件、集群优化)
1.2.5 Yarn的Job提交流程
1.2.6 Yarn的默认调度器、调度器分类、以及他们之间的区别
1.2.7 项目经验之LZO压缩
1.2.8 Hadoop参数调优
1.2.9 项目经验之基准测试
1.2.10 Hadoop宕机
1.2.11 Hadoop解决数据倾斜方法
1.2.12 集群资源分配参数(项目中遇到的问题)
1.3 Zookeeper相关总结
1.3.1 选举机制
1.3.2 常用命令
1.4 Flume相关总结
1.4.1 Flume组成,Put事务,Take事务
1.4.2 Flume拦截器
1.4.3 Flume Channel选择器
1.4.4 Flume监控器
1.4.5 Flume采集数据会丢失吗?(防止数据丢失的机制)
1.4.6 Flume内存
1.4.7 FileChannel优化
1.4.8 Flume Channel容量
1.4.9 HDFS Sink小文件处理
1.5 Kafka相关总结
1.5.1 Kafka架构
1.5.2 Kafka压测
1.5.3 Kafka的机器数量
1.5.4 Kafka的日志保存时间
1.5.5 Kafka的硬盘大小
1.5.6 Kafka监控
1.5.7 Kakfa分区数
1.5.8 副本数设定
1.5.9 多少个Topic
1.5.10 Kafka丢不丢数据
1.5.11 Kafka的ISR副本同步队列
1.5.12 Kafka分区分配策略
1.5.13 Kafka中数据量计算
1.5.14 Kafka挂掉
1.5.15 Kafka消息数据积压,Kafka消费能力不足怎么处理?
1.5.16 Kafka幂等性
1.5.17 Kafka事务
1.5.18 Kafka数据重复
1.5.19 Kafka参数优化
1.5.20 Kafka 高效读写数据
1.5.21 Kafka支持传输
1.5.22 Kafka过期数据清理
1.5.23 Kafka可以按照时间消费数据
1.5.24 Zookeeper中存储kafka哪些信息
1.6 Hive总结
1.6.1 Hive的架构
1.6.2 Hive和数据库比较
1.6.3 内部表和外部表
1.6.4 4个By区别
1.6.5 窗口函数
1.6.6 自定义UDF、UDTF
1.6.7 Hive优化
1.6.8 Hive解决数据倾斜方法
1.6.9 用的是动态分区吗?动态分区的底层原理是什么?
26. Hive里边字段的分隔符用的什么?为什么用\t?有遇到过字段里边有\t的情况吗,怎么处理的?
1.7 HBase总结
1.7.1 HBase存储结构
1.7.2 RowKey设计原则
1.7.3 RowKey如何设计
1.7.4 HBase二级索引(详见Phoenix)
1.8 Sqoop参数
1.8.1 Sqoop导入导出Null存储一致性问题
1.8.2 Sqoop数据导出一致性问题
1.8.3 Sqoop底层运行的任务是什么
1.8.4 Sqoop数据导出的时候一次执行多长时间
1.8.5 Sqoop一天导多少数据
1.8.6 Sqoop在导入数据的时候数据倾斜
1.13 数据倾斜
1.13.1 数据倾斜表现
1.13.2 数据倾斜产生原因
1.13.3 解决数据倾斜思路
第2章 项目架构
2.1 数仓概念
2.2 系统数据流程设计
2.3 框架版本选型
2.4 服务器选型
2.5 集群规模
2.6 人员配置参考
2.6.1 整体架构
2.6.2 你们部门的职级等级,晋升规则
2.6.3 人员配置参考
第3章 用户行为数据分析
3.1 数仓分层架构表
3.2 埋点行为数据基本格式(基本字段)
3.3 项目经验总结
3.3.1 项目经验之元数据备份
3.3.2 日期处理函数
3.3.3 Union与Union all区别
3.3.4 Shell中单引号和双引号区别
3.3.5 Tez引擎优点?
3.4 需求逻辑(重点)
3.4.1 如何分析用户活跃?
3.4.2 如何分析用户新增?vivo
3.4.3 如何分析用户1天留存?
3.4.4 如何分析沉默用户?
3.4.5 如何分析本周回流用户?
3.4.6 如何分析流失用户?
3.4.7 如何分析最近连续3周活跃用户数?
3.4.8 如何分析最近七天内连续三天活跃用户数?
第8章 手写代码
8.1 基本算法
8.1.1 冒泡排序
8.1.2 二分查找
8.1.3 快排
8.1.4 归并
8.1.5 二叉树之Scala实现
8.2 手写HQL
8.2.1 手写HQL 第1题
8.2.2 手写HQL 第2题
8.2.3 手写HQL 第3题
8.2.4 手写HQL 第4题
8.2.5 手写HQL 第5题
8.2.6 手写HQL 第6题
8.2.7 手写HQL 第7题
8.2.8 手写SQL 第8题
8.2.9 手写HQL 第9题
8.2.10 手写HQL 第10题
第9章 JavaSE
9.1 HashMap底层源码,数据结构
9.2 Java自带哪几种线程池?
9.3 HashMap和HashTable区别
9.4 TreeSet和HashSet区别
9.5 String buffer和String build区别
9.6 Final、Finally、Finalize
9.7 ==和Equals区别
第10章 Redis
10.1 缓存穿透、缓存雪崩、缓存击穿
10.2 哨兵模式
10.3 数据类型
10.4 持久化
11.5 悲观锁
11.6 乐观锁
第11章 MySql
11.1 MyISAM与InnoDB的区别
11.2 索引优化
11.3 b-tree和b+tree的区别
11.4 redis是单线程的,为什么那么快
11.5 MySQL的事务
第12章 JVM
12.1 JVM内存分哪几个区,每个区的作用是什么?
12.2 Java类加载过程?
12.3 java中垃圾收集的方法有哪些?
12.4 如何判断一个对象是否存活?(或者GC对象的判定方法)
12.5 什么是类加载器,类加载器有哪些?
12.6 简述Java内存分配与回收策略以及Minor GC和Major GC(full GC)
第13章 JUC
13.1 Synchronized与Lock的区别
13.2 Runnable和Callable的区别
13.3 什么是分布式锁
13.4 什么是分布式事务
第14章 面试说明
14.1 面试过程最关键的是什么?
14.2 面试时该怎么说?
14.3 面试技巧
14.3.1 六个常见问题
14.3.2 两个注意事项
14.3.3 自我介绍(控制在4分半以内,不超过5分钟)
第15章 LeetCode题目精选
15.1 两数之和
15.1.1 问题描述
15.1.2 参考答案
15.2 爬楼梯
15.2.1 问题描述
15.2.2 参考答案
15.3 翻转二叉树
15.3.1 问题描述
15.3.2 参考答案
15.4 反转链表
15.4.1 问题描述
15.4.2 参考答案
15.5 LRU缓存机制
15.5.1 问题描述
15.5.2 参考答案
15.6 最长回文子串
15.6.1 问题描述
15.6.2 参考答案
15.7 有效的括号
15.7.1 问题描述
15.7.2 参考答案
15.8 数组中的第K个最大元素
15.8.1 问题描述
15.8.2 参考答案
15.9 实现 Trie (前缀树)
15.9.1 问题描述
15.9.2 参考答案
15.10 编辑距离
15.10.1 问题描述
15.10.2 参考答案