本篇博客所分享的知识非常硬核,建议各位看官(尤其是大数据专业的同学啊),赶紧搬好小板凳,带好西瓜,我们边看边吃瓜。
说错了,是带着小本,边看边记下来
申明:本篇仅仅只是作为一个大纲目录,具体内容我会在后续详细展开说明!
为什么这么说,继续往下看大家就明白了~
【第一章】 面试说明
1.1 面试过程最关键的是什么?
1)不是你说了什么,而是你怎么说 2)大大方方的聊,放松
1.2 面试时该怎么说?
1 ) 语言表达清楚
- 思维逻辑清晰,表达流畅
- 一二三层次表达
2)所述内容不犯错
- 不说前东家或者自己的坏话
- 往自己擅长的方面说
- 实质,对考官来说,内容听过,就是自我肯定;没听过,那就是个学习的过程。
1.3 面试技巧
1.3.1 六个常见问题
1)你的优点是什么?
大胆的说出自己各个方面的优势和特长
2)你的缺点是什么?
不要谈自己真实问题;用“缺点”衬托自己的优点
3)你的离职原因是什么?
- 不要谈自己真实问题;用“缺点”衬托自己的优点
- 合情合理合法
- 不要说超过1个以上的原因
4)您对薪资的期望是多少?
- 非终面不深谈薪资
- 只说区间,不说具体数字
- 底线是不低于当前薪资
- 非要具体数字,区间取中间值,或者当前薪资的 20%
5)您还有什么想问的问题?
- 这是体现个人眼界和层次的问题
- 问题本身不在于面试官想得到什么样的答案,而在于你跟别的应聘者的对比
- 标准答案:
①公司希望我入职后的3-6个月内,给公司解决什么样的问题
②公司(或者对这个部门)未来的战略规划是什么样子的?
③以你现在对我的了解,您觉得我需要多长时间融入公司?
6)您最快多长时间能入职?
一周左右,如果公司需要,可以适当提前。
1.3.2 两个注意事项
1)职业化的语言
2)职业化的形象
1.3.3 自我介绍(控制在4分半以内,不超过5分钟)
1)个人基本信息
2)工作履历
时间,公司名称,任职岗位,主要工作内容,工作业绩、离职原因
3)深度沟通(也叫压力面试)
刨根问底下沉式追问(注意是下沉式,而不是发散式的)
基本技巧:往自己熟悉的方向说
【第二章】手写代码
2.1 冒泡排序
2.2 二分查找
2.3 快排
2.4 归并
2.5 二叉树之scala实现
2.6 手写Spark-WordCount
2.7 手写Spark程序
【第三章】项目结构
3.1 数仓概念
3.2 系统数据流程设计
3.3 框架版本选型
3.4 服务器选型
3.5 集群规模
3.6 人员配置参考
【第四章】项目涉及技术
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又根据什么决定task个数? (笔试重点)
4.10.7 请列举Spark的transformation算子(不少于8个),并简述功能(重点)
4.10.8 请列举Spark的action算子(不少于6个),并简述功能(重点)
4.10.9 请列举会引起Shuffle过程的Spark算子,并简述功能。
4.10.10 简述Spark的两种核心Shuffle(HashShuffle与SortShuffle)的工作流程(包括未优化的HashShuffle、优化的HashShuffle、普通的SortShuffle与bypass的SortShuffle)(重点)
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.5 Spark Shuffle默认并行度
4.11.6 kryo序列化
4.11.7 创建临时表和全局临时表
4.11.8 BroadCast join 广播join
4.11.9 控制Spark reduce缓存 调优shuffle
4.11.10 注册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.7 Spark Streaming 默认分区个数
4.13 元数据管理(Atlas血缘系统)
4.14 数据质量监控(Griffin)
【第五章】 项目开发经验
5.1 项目开发中遇到哪些问题
5.1.1 Hadoop
5.1.2 Flume
5.1.3 Kafka
5.1.4 Hive
5.1.5 MySql
5.1.6 Tez引擎优点?
5.1.7 Sqoop
5.1.8 Azkaban
5.1.9 Spark
5.2 业务经验
5.2.1 ODS层采用什么压缩方式和存储格式?
5.2.2 DWD层做了哪些事?
5.2.3 DWS层做了哪些事?
5.2.4 分析过哪些指标(一分钟至少说出30个指标)
5.2.5 分析过最难的两个指标,现场手写
5.2.6 数据仓库每天跑多少张表,大概什么时候运行,运行多久?
5.2.7 数仓中使用的哪种文件存储格式
5.2.8 数仓中用到过哪些Shell脚本及具体功能
5.2.9 项目中用过的报表工具
5.2.10 测试相关
5.2.11 项目实际工作流程
5.2.12 项目中实现一个需求大概多长时间
5.2.13 项目在3年内迭代次数,每一个项目具体是如何迭代的
5.12.14 项目开发中每天做什么事
【第六章】JavaSE
6.1 HashMap底层源码,数据结构
6.2 Java自带哪几种线程池?
6.3 HashMap和HashTable区别
6.4 TreeSet和HashSet区别
6.5 String buffer和String build区别
6.6 Final、Finally、Finalize
6.7 ==和Equals区别
【第七章】 Redis
7.1 缓存穿透、缓存雪崩、缓存击穿
7.2 哨兵模式
7.3 数据类型
7.4 持久化
7.5 悲观锁
7.6 乐观锁
【第8章】MySql
8.1 MyISAM与InnoDB的区别
8.2 索引
8.3 b-tree和b tree的区别
8.4 redis是单线程的,为什么那么快
8.5 MySQL的事务
【第9章】JVM
9.1 JVM内存分哪几个区,每个区的作用是什么?
9.2 Java类加载过程?
9.3 java中垃圾收集的方法有哪些?
9.4 如何判断一个对象是否存活?(或者GC对象的判定方法)
9.5 什么是类加载器,类加载器有哪些?
9.6 简述Java内存分配与回收策略以及Minor GC和Major GC(full GC)
【第10章】 JUC
10.1 Synchronized与Lock的区别
10.2 Runnable和Callable的区别
10.3 什么是分布式锁
10.4 什么是分布式事务
【第11章】手写HQL
…
以上【1-11章】具体内容来源于尚硅谷,我只是借此为大家给出了一个复习准备的方向,大家可以从自己的实际情况出发。而我也会对于上面所提到的问题后续按着这个顺序陆续更博,为大家带来解答。
其中部分答案已经在我前面的专栏文章中所提到,感兴趣的朋友可以先去自行探索,寻找答案。
相关专栏:?
HDFS MapReduce YARN HIVE ZooKeeper HBase Redis Spark
如果以上过程中出现了任何的纰漏错误,烦请大佬们指正?
受益的朋友或对大数据技术感兴趣的伙伴记得点赞关注支持一波?