简历
个人信息: 邮箱别写QQ邮箱, 写126邮箱/189邮箱等
学历>>本科及以上写,大专及以下不写
专业>>非计算机专业不写
政治面貌>>党员写, 群众不用写
掌握的技能: 精通 > 熟悉 > 了解
专业工具: 大数据相关的
公司: 如果没有可以写的>>金融服务外包公司的中小型公司; 地方性银行
外包公司: 业务范围写有技术服务的
工作经历: 从最近的一份工作往回写, 最近的一份工作一年以上
工作经验: 1-3年初级,4年中级,5年及以上高级
项目经验: 工作2-4年的, 3个或以上; 同一家公司的项目跨度别太大; 最后一个项目最好写银行项目,因为银行项目多
项目: 从最近的项目开始往回写; 项目内容包括项目介绍, 个人职责 ;把一个项目重点准备, 了解第二个项目,其他项目可以说时间隔得比较久,记不太清楚了.
简历风格: 简约不花哨
优点:
具备良好的定位问题及解决问题的能力
具备较强的学习能力,能快速学习新的技术
具备良好的沟通能力,
简历模板:
创客贴-做图做视频必备_会打字就能做设计,商用有版权
中文简历(免费下载 | word可编辑)- 简历模板资源网
持续面试的好处
在职也保持每个月一两场面试>>能发现自己的不足, 认知市场需要什么技术
(电话面试, 视频面试)
岗位和技术
ETL 工程师 数据仓库开发hadoop hive spark ---->SQL
数据开发:数据平台开发 数据接口开发 UDF ------>SQL +JAVA /Python+scala
大数据运维 :服务器 保证公司服务器集群安全稳定运行的岗位。
BI工程师:finreport 数据分析:Excel powerBI Tabule 了解业务
面试
个人介绍:
问候语(你好) + 我是(个人信息) + 技能(简要介绍) + 数据开发经验 +突出闪光 + 着重介绍自己的最近一个项目(要说写简历上没有写的更具体一些的信息) + 结束语(以上就是我的大体情况)
面试官: 平常使用什么ETL工具抽取数据?
sqoop
(银行项目数据抽取尽量不用Kettle>>之前发生过数据泄密>>使用sqoop等ETL工具)
面试官: 数仓调度用什么工具?
sqoop(ETL工具)
面试官: 项目有多少层?每个项目层的是什么?
面试官: 贴源层的生命周期有多长?
1个月(或3个月)
(贴源层是临时存放数据的地方)
面试官: 对建模有什么理解?
会使用图形化的界面来表示表格和表格之间的关系,以及表格本身的内容。这个表
示数据之间的表达关系的图,就叫做 ER 图。怎么去设计某个功能需要的表格,以及中间的小表,每个表格有哪些不同的关系等,这个就是数据建模的过程
面试官:你对出差怎么看?
可以结束, 我觉得出差可以提供学习新事物、体验不同文化和拓宽视野的机会
面试官: 关系型数据库(比如oracle)和hive的区别?
1. hive数据库是使用hdfs存储数据的,oracle数据库使用.dbf 文件存储数据
2. hive 数据库使用 mr (即mapreduce) 引擎计算数据,oracle 有自己自带的 executor 进行计算
3. hive 的语句运行延迟比较高,oracle 延迟很低
4. hive 支持的容量比较大,可以支持 TB PB,但是 oracle 只能支持 GB
5. hive 数据库没有约束条件的部分,oracle 有约束
6. hive 没有索引,oracle 有索引
面试官: 为什么要用hive进行数据分析?
大规模的数据分析会影响oracle数据库的正常运行>>使用hive分开分开操作
面试官:怎么进行sql优化?
1.先查看执行计划, 看哪个进程耗费的资源多
2.再对sql进行优化
面试官: shell循环方式有多少呢?
for循环; while循环; untill循环(取反值)
面试官: 用shell进行增量抽取,怎么判定脚本是否正常运行?
$? 查看shell脚本是否正常运行
$0查看脚本的名字
$1查看脚本的参数
面试官:(hive) 数据采集从数据源到ODS会遇到什么问题?怎么办?
1.数据采集前后数量不一致:
检查脚本,修改脚本问题>>删除数据>>进行数据重跑
如果还有问题>>找负责上游系统的同事问一下是不是在我抽数据的过程中, 同事进行了数据删除
如果使用sqoop采集
先看sqoop日志>>看程序是否执行成功>>即代码是否成功
其次进行数据测试
完整型(count(*)对数)
准确性(对地区,金额的关键字段进行聚合计算, 如果不准确要进行抽象测试)
时效性 (T+1)
唯一性(确定数据的唯一版本)
2.数据倾斜
3.数据飘逸/数据漂移:表过去了,数据没有过去
面试官: 如何测试数据是否前后一致?
-
大体上看条数是否一致(对数):首先,通过SQL使用count(*), count(1), count(字段)来比较两个数据源的记录总数是否一致。(多了或少了)
-
找出不一致的字段:通过分组和计数操作找出记录数不一致的字段。例如,可以使用以下SQL语句来找出具有重复记录的字段
面试官: Mapreduce的完整工作流程?
面试官: 数据有多少种? 依据数据的组织方式和特性进行分类的
结构化数据(指具有明确格式和规则的数据,通常以表格或数据库的形式存在 ;
sql语言>>结构化查询语言)
半结构化数据(数据通常具有自描述性, 如XML和JSON)
非结构化数据(文本、图片、音频、视频等)
面试官: 数据量是多少?
总数据量没有计算过, 我负责的部分日增量30来万
抽取数据花多长时间?
2个小时
怎么花怎么长时间?
公司服务器性能比较差
怎么抽怎么快?
并行度大,通过sqoop把并行度调高了(原本的4个进程调成8个)
面试官: 你之前使用过什么技术栈
数据库:MySQL, Oracle等
Hadoop生态系统
面试官: 做过报表开发吗?
做过,做得比较少
面试官: 上一份工作的离职原因?
项目结束之后一直没有新的项目,我想找一个能长期有项目的工作
面试官: 面试通过多长时间能入职?
一周后
面试官: shell脚本怎么传参?
在执行脚本的时候传参, 用$1和$2
面试官: 如何强行转换数据类型?
hive 和oracle都是
面试官: 如果namenode挂掉了, 怎么办?
可以启用SecondaryNameNode
(作用是辅助NameNode进行元数据管理和检查点(Checkpoint)操作)
面试官:怎么启用SecondaryNameNode?
面试官: 什么是数据倾斜?
在进行表格的查询和计算过程中,如果有的进程计算的数据很大,有的进程计算的数据比较少,有的部分进程就需要等待其他数据大的进程运行完成才能结 束。所以计算过程中资源的分布发生了不合理的现象。经常发生在尤其是在涉及连接、聚合等操作时
面试官: 在使用hive的时候, 有没有遇到过数据倾斜?数据倾斜的表现是?
有, reduce 的进程在日志里面卡在了 99 或者 100 的部分不动了。
面试官: 遇到数据倾斜怎么办?
面试官: 你遇到过的数据倾斜是什么原因?怎么办?(hive)
空值过多>>数据分布不均
解决方法:
先过滤掉空值NULL, 再处理数据
如何排查是否遇到数据倾斜?
去Yarn看一下进程, 看job日志, 看是否卡在某个阶段, 比如map端走完了,reduce端不动了, 就是数据倾斜
面试官:什么情况会导致数据倾斜?
1. map 和 reduce 的设置不合理
2. 对表格进行了去重的结果查询
3. 大小表格进行数据的查询
4. key 值分配不均
5. 进行数据查询的时候有大量的空值数据参与了数据的运算
6. sqoop底层也是使用map reduce程序>>也可能会产生数据倾斜
为什么对表格进行了去重的结果查询会导致数据倾斜?
-
数据分布不均
去重前,某些键值可能重复较多,去重后这些键值的数据量显著减少,而其他键值的数据量相对增加,导致分布不均。 -
去重逻辑问题
去重逻辑不当可能导致某些键值被错误保留或删除,进一步加剧数据分布不均。 -
数据倾斜已存在
去重前数据本身已存在倾斜,去重后这种倾斜可能更加明显。 -
去重操作实现方式
去重操作(如GROUP BY
或DISTINCT
)可能导致某些节点处理更多数据,尤其是在分布式系统中,资源分配不均会加剧倾斜。 -
数据分区问题
去重后,数据可能集中在某些分区,导致倾斜。
面试官: 怎么解决数据倾斜?
1.设置 map 和 reduce 任 务 数
设 置 mapred.map.tasks;
mapred.reduce.tasks;
2. 在句子中尽可能少的使用去重统计
3. 使用 hive 里面的优化器 /*+ mapjoin(小表的名字) */
它通过将小表加载到内存中,在 Map 阶段直接进行连接操作,从而避免 Reduce 阶段的数据处理,显著提高查询性能
4. 调整表格的前后顺序,hive 里面,永远读取 Join 前面的表格
5. 对表格设置分桶
6. 使用 hive 里面的万能开关,来解决异常数据的问题
-万能方法
set hive.groupby.skewindata=true; -
适用于当进行 Group By 操作时,如果某些键值对应的数据量特别大,可能会导致某些 Reducer 负载过重
--任务执行中合并文件的大小
set hive.map.aggr=true;
Hive 会在 Map 阶段进行部分聚合,这样可以减少传输到 Reduce 阶段的数据量,提高效率,但需要更多的内存。这个参数有助于减轻 Reduce 阶段的负担,因为它减少了需要处理的数据量,从而可能减少执行时间
set hive.merge.size.per.task=256000000;
set mapred.map.tasks=10;
面试官: 开发过什么指标?
逾期天数,
面试官: 指标算错了怎么办?
排查原因: 1.数据量是否存在问题,2.指标计算口径是否出错
面试官: 什么是逾期?
逾期是指借款人未能在贷款合同规定的还款日期内按时偿还贷款本金或利息
面试官: 逾期率怎么计算?
面试官:举一个例子说一下你写过的存储过程具体实现了什么业务?
在我之前负责的项目中,我开发了一个存储过程专门用于计算客户的贷款利息。这个存储过程会根据贷款的本金、利率和贷款期限来计算应收的利息金额,并将结果更新到贷款账户中。 (说两句代码)更好
面试官: 在实际开发过程中有没有遇到特别难点?怎么处理的?
没有太难的,难的主要是对业务的理解, 我会频繁和业务人员进行沟通
复杂的指标计算>>涉及到十来张表,需要连接, 嵌套
面试官: 解释一下呆账和坏账?
面试官: 在hive中如何处理小文件?
处理已经存在的小文件
手动合并小文件
使用INSERT OVERWRITE
语句:通过将数据重新写入目标表的方式合并小文件
使用CONCATENATE
命令:适用于ORC文件格式的表,可以合并分区内的小文件
使用Hadoop命令合并:适合ORC或Parquet格式文件
自动合并小文件
在Hive作业中配置参数,自动触发文件合并
SET hive.merge.mapfiles = true; --控制是否在Map-only作业结束后合并小文件
SET hive.merge.mapredfiles = true; --控制是否在Map-Reduce作业结束后合并小文件
SET hive.merge.size.per.task = 256000000; -- 合并后文件的目标大小
SET hive.merge.smallfiles.avgsize = 16000000; -- 触发合并的平均文件大小
预防小文件的生成:
控制Reduce任务数量:通过调整mapred.reduce.tasks
或hive.exec.reducers.bytes.per.reducer
参数,减少输出文件数量
SET hive.exec.reducers.bytes.per.reducer = 256000000; -- 每个Reduce任务处理的数据量
使用INSERT INTO
替代多次小批量写入:集中写入可以减少文件数量
合理规划分区和分桶策略,避免因分区过多导致小文件问题
文件格式: 使用ORC或Parquet格式,并启用压缩(如LZO、Snappy),减少文件数量和存储空间
面试通过多长时间能入职?
一周后
未来的职业规划?
想继续精进自己的技术, 2, 3年以后转做业务
面试官:对加班怎么看?
合理的加班, 项目需要的时候可以加班
假设你做了项目经理, 你有什么想法?
根据每个人擅长的点,合理配置他们的工作.
面试官: 你还有什么要问的吗?
项目使用的技术栈是什么?
项目制(短期)的还是做需求或者版本迭代(长期)
项目是长期的还是短期的
项目是从0到1, 还是中间接入, 还是项目收尾
会经常出差吗?
加班多不多?
公司项目的人员架构?预期多少人?
是否有二面? 二面的具体时间是什么时候?