数据开发的简历及面试
简历
个人信息: 邮箱别写QQ邮箱, 写126邮箱/189邮箱等
学历>>本科及以上写,大专及以下不写
专业>>非计算机专业不写
政治面貌>>党员写, 群众不用写
掌握的技能: 精通 > 熟悉 > 了解
专业工具: 大数据相关的
公司: 如果没有可以写的>>金融服务外包公司的中小型公司; 地方性银行
外包公司: 业务范围写有技术服务的
工作经历: 从最近的一份工作往回写, 最近的一份工作一年以上
工作经验: 1-3年初级,4年中级,5年及以上高级
项目经验: 工作2-4年的, 3个或以上; 同一家公司的项目跨度别太大; 最后一个项目最好写银行项目,因为银行项目多
项目: 从最近的项目开始往回写; 项目内容包括项目介绍, 个人职责 ;把一个项目重点准备, 了解第二个项目,其他项目可以说时间隔得比较久,记不太清楚了.
简历风格: 简约不花哨
优点:
具备良好的定位问题及解决问题的能力
具备较强的学习能力,能快速学习新的技术
具备良好的沟通能力,
简历模板:
创客贴-做图做视频必备_会打字就能做设计,商用有版权
中文简历(免费下载 | word可编辑)- 简历模板资源网
面试
个人介绍:
问候语(你好) + 我是(个人信息) + 技能(简要介绍) + 数据开发经验 +突出闪光 + 着重介绍自己的最近一个项目(要说写简历上没有写的更具体一些的信息) + 结束语(以上就是我的大体情况)
面试官: 平常使用什么ETL工具抽取数据?
sqoop
(银行项目数据抽取尽量不用Kettle>>之前发生过数据泄密>>使用sqoop等ETL工具)
面试官: 数仓调度用什么工具?
sqoop(ETL工具)
面试官: 项目有多少层?每个项目层的是什么?
面试官: 贴源层的生命周期有多长?
1个月(或3个月)
(贴源层是临时存放数据的地方)
面试官:你对出差怎么看?
可以结束, 我觉得出差可以提供学习新事物、体验不同文化和拓宽视野的机会
面试官: 关系型数据库(比如oracle)和hive的区别?
1.存储格式的区别
关系型数据库: oracle 二进制; mysql 不同存储引擎的数据存储格式
hive: 数据存储格式由用户选择>>文本格式(默认), 序列化格式(SequenceFile), 列式存储格式(如Parquet和ORC)
2.计算引擎不同:
3.应用:
关系型数据库: 适用于需要事务处理、实时查询和数据完整性的场景(OLTP)面向企业日常运营的增删改查,企业必然会有
hive: 适合数据分析大规模数据集, (OLAP), 只有查和分析
4.查询性能
关系型数据库较快; hive较慢
5.事务支持
关系型数据库: 支持ACID(原子性、一致性、隔离性、持久性)事务
hive:不支持ACID事务,主要用于批量处理和分析
面试官: 为什么要用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的时候, 有没有遇到过数据倾斜?
有
面试官: 遇到数据倾斜怎么办?
面试官: 你遇到过的数据倾斜是什么原因?怎么办?(hive)
空值过多>>数据分布不均
sqoop底层也是使用map reduce程序>>也可能会产生数据倾斜
解决方法:
如何排查是否遇到数据倾斜?
去Yarn看一下进程, 看job日志, 看是否卡在某个阶段, 比如map端走完了,reduce端不动了, 就是数据倾斜
面试官: 开发过什么指标?
逾期天数,
面试官: 指标算错了怎么办?
排查原因: 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年以后转做业务
假设你做了项目经理, 你有什么想法?
根据每个人擅长的点,合理配置他们的工作.
面试官: 你还有什么要问的吗?
能否介绍一下贵公司典型的项目周期是怎样的?项目从启动到完成通常需要多长时间?
公司经常做的项目有哪些?
“您能否分享一下团队目前使用的主要技术栈?"
是否有二面? 二面的具体时间是什么时候?
能否介绍一下你们公司的团队结构和工作方式?
“贵公司如何支持员工的职业发展和技能提升?”
公司在未来几年有哪些主要的业务目标或发展方向?