ETL开发面试问题加吐槽加职业发展建议
写在前面:
作为甲方,对于乙方派来的开发人员,我是会自己面一下。总体来说遇到的水平不一,于是经过这三年多的面(cui)试(can),总结了一套自己的面试套路,中间也遇到过很多想吐槽的东西,于是大概记录了下来。在后面, 也写了些关于这方面的职业发展和我个人的建议。
问题很基础,DBA路过误笑,同行高手欢迎过来喷一喷,一起进步。
先说下面试的顺序,首先我们现有的开发人员问基本的SQL语句问题和SSIS组件问题,然后我继续问以下问题。
问题1:假如有一个job突然失败了,那么你第一时间应该先去看哪里。
我的答案:
首先去看job history,看具体的错误信息,根据这个信息决定如何去解决问题。
如果在ETL中有自定义的日志输出,那么再去看自定义日志的内容。

吐槽:
居然很大一部分人不看job history,而是看自定义的日至。还有看哪里都不知道的,开发ETL不管后期的维护和错误排查,就算再简单的ETL,也不可能一直不出问题,好比写个代码不知道如何排错一样,所以到底做没做过ETL开发 ,这个问题直接能看出来。
另,往往大型项目会有自定义日至输出,但是能说出这一点的先别给高分,因为很有可能只是知道而已,具体了解多少还要参考下面几个问题。
问题2:假如一个job本来应该在凌晨两点跑完的,但是早上上班的时候发现还没有跑完,接下来会怎么做。
我的答案:
这么久的延迟最有可能是阻塞,比如下游报表或者客户端仍在数据仓库里查数。
排除这个问题,先用系统自带的报表查看目前是否有阻塞,或者用sp_who3网上大家扩展的一个方法来进行查询。如果发现ETL进程被阻塞,kill掉阻塞的进程,确保ETL能正常进行下去。
避免类似阻塞的情况发生,可以在ETL进行之前终止报表服务或查询账号,ETL成功之后再启动他们。

吐槽:
很多人都归结到数据量的巨增导致,这对一个正常的业务来说可能性比较低一些,但如果能说出这个原因也会多少加一点分。能知道用sp_who3来看目前有哪些语句在转的会加很大一部分分数,这个意识很关键。
问题3:接到用户抱怨说一个报表运行的很慢,如何处理。
我的答案:
先跑一下这个报表,重现一下运行缓慢的现象。然后在sql server端sp_who3一下看看到底是卡在了哪条查询,把查询单独拿出来进行进一步分析和优化。
点评:
偶尔问题也会问成ETL运行很慢,像上一个问题一样,主要还是考察是否有查看当前哪些语句在跑的意识。
吐槽:
会有人回答说把报表源代码拿过来一行一行去分析,这样虽然有可能找到问题,但是很慢。所以我会对做这个超过三年经验的人产生质疑。
问题4:如何进一步优化
我的答案:
看执行计划,查看几个关键点,比如索引缺失,SQL语句需要优化等问题。
点评:
能第一时间想到索引问题的加分,能想到SQL语句写法不地道的也加分。
这个需要追问,进一步考察执行计划,详见下一个问题。
吐槽:
有不少说一行一行去看的,所以会继续追问执行计划的问题。
问题5:如何快速的知道是由于索引缺失导致的
我的答案:
看执行计划,通常执行计划会直接提示具体缺失哪个索引,并且提供相应语句创建索引。
另外这个时候在执行计划里,看是否有表扫描,如果有说明索引缺失,如果看到索引查找说明是命中索引的。
如果系统无法给出的,可以先看执行计划里哪部分消耗的资源(百分比)最高,然后看里面所消耗的io数值是否很高,如果是的话说明索引也是有缺失,需要根据具体的情况添加索引。

点评:
如果提到WHERE顺序的加分。
没提执行计划,但是提到看join条件,再看有没有索引的,我只能少加点分,毕竟这样查问题效率不高。
吐槽:
居然很少人提到系统自动的索引缺失提示。。。
半数人说看执行计划里每个步骤的时间 。。。
也有半数人知道看执行计划,但是说不出表扫描和索引扫描。
能看io消耗的真的很少很少。
问题6:索引的进一步问题。
比如:
聚集索引和非聚集索引的区别。(看对叶级结点的区别)
为什么聚集索引只能有一个。
一个表是否有聚集索引,对这个表的数据存储方式区别是什么。(这个回答不上来通常不减分)
吐槽:
具体答案就不写了,主要看回答是否能回答到点上,比如叶级结点的区别,数据排序,堆表等。
面试的所有人当中,能把部分问题说明白的很少,部分人也只是背书。
写在后面:
这些问题,估计做DBA的或者BI的同行应该是在边看边笑吧,但我吐槽的大家也看到了,能答到点子上的,在北京,很少,也许你说我们的vendor不给力,我可没这么说。
另外汇总了下我个人认为的,ETL开发对于不同工作年限的最低要求。
工作一年的要求:
熟悉各种SQL语句的写法,熟悉SSIS包里常用的模块。
三年:
知道索引,知道优化SQL语句,熟悉建模。能够处理日常ETL以及数据库级别的常见问题。
五年:
知道如何规划整个ETL,对设计数据仓库非常熟悉。
七年:
可以带领团队实施大规模的项目。
最后的最后:
说实在的,这行能一直干下来的很少很少,大多都是半路转过来,或者干不下去转别的了。
另外纯ETL开发从技能角度来说,如果只偏向这个方向确实以后的路越走越窄,同时配合些辅助的技能会路子宽很多,比如报表开发,DBA,架构,大数据等。
还有,甭管做什么,对业务的理解也很重要,而做BI这方面,是最适合对整个公司的系统架构有比较宽泛和略微深入的理解的,很多招聘要求里,都需要对某领域的业务有一定的了解,所以可以看出来这个的重要性,以及从乙方跳到甲方的重要资本。
ETL开发面试问题加吐槽加职业发展建议的更多相关文章
- AngularJS进阶(三十)AngularJS项目开发技巧之图片预加载
AngularJS项目开发技巧之图片预加载 绪 项目(移动端采用Ionic 框架)开发完毕,测试阶段发现移动APP首页的广告图片(图片由服务器端返回相应url地址)很难加载,主要原因还是网速.如下图左 ...
- Unity开发实战探讨-资源的加载释放最佳策略简要心得
Unity开发实战探讨-资源的加载释放最佳策略简要心得 看过我另外一篇关于Unity资源释放随笔<Unity开发实战探讨-资源的加载释放最佳策略>如果觉得略微复杂,那么下面是一些比较简要的 ...
- 支付宝小程序室内地图导航开发-支付宝小程序JS加载esmap地图
如果是微信小程序开发,请参考微信小程序室内地图导航开发-微信小程序JS加载esmap地图文章 一.在支付宝小程序里显示室内三维地图 需要满足的两个条件 调用ESMap室内地图需要用到小程序web-vi ...
- (java web后端方向)如何让你的简历为你争取到更多的面试机会,内容来自java web轻量级开发面试教程
我们在做培训时,会发现一个不合理的情况,一些程序员能力不错,在公司里也是技术牛人,但发出去的简历往往会石沉大海,没有回复.对于刚毕业的大学生或工作年限在2年之内的程序员,这个情况会更严重. 这种情况下 ...
- Java开发面试总结
Java开发面试总结.. ----------------------- java 基础知识点这一块: 1.面向对象的三大特征.(继承,封装,多态) 1.1 在什么样的场合下面会使用到继承 1.2 什 ...
- 前端开发面试知识点大纲--摘自jackyWHJ
前端开发面试知识点大纲:HTML&CSS: 对Web标准的理解.浏览器内核差异.兼容性.hack.CSS基本功:布局.盒子模型.选择器优先级及使用.HTML5.CSS3.移动端适应 Ja ...
- Android开发面试经——6.常见面试官提问Android题②(更新中...)
版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http://blog.csdn.net/fi ...
- Android开发面试经——5.常见面试官提问Android题①
版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客: http://blog.csdn.net/f ...
- Android开发面试经——4.常见Android进阶笔试题(更新中...)
Android开发(29) 版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http:/ ...
随机推荐
- 10分钟精通SharePoint - SharePoint发展历程
SharePoint 2001: SharePoint Team Service(STS) SharePoint Portal Server(SPS) SharePoint 2003: Windows ...
- HTTP协议分析
一.域名概述 1.域名解析的作用: 主机数量增多时,IP地址不容易记忆,域名方便记忆.域名记忆更加直观. 2.hosts文件 早期通过hosts文件进行域名的解析,Linux系统中hosts文件存放路 ...
- ubuntu14.04下安装有道词典
1.打开官方下载链接:http://cidian.youdao.com/index-linux.html 2.下载相应版本的安装包 3.直接双击安装包进行安装 可能会存在软件打不开的情况,更新下系统, ...
- 学习CSS了解单位em和px的区别
这里引用的是Jorux的“95%的中国网站需要重写CSS”的文章,题目有点吓人,但是确实是现在国内网页制作方面的一些缺陷.我一直也搞不清楚px与em之间的关系和特点,看过以后确实收获很大.平时都是用p ...
- PHP开发人员对JAVA的WEB开发入门(初版-已废弃)
最近准备对其他部门PHP开发的童鞋做一个对JAVA的培训.知己知彼,百战不殆,我要先了解点PHP,才能确认他们的基础,达到好的授课效果. PHP(原始为Personal Home Page的缩写,后正 ...
- js简单省级联动菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 【canvas系列】canvas实现"雷达扫描"效果
今天来讲解"雷达扫描"效果demo,来源于QQ群里边有群友说想要个雷达效果,就尝试写了一下. 效果图: demo链接: https://win7killer.github.io/c ...
- Codeforces 765E. Tree Folding [dfs][树形dp]
题解:先从节点1开始dfs.对于每一个节点,用一个set记录:以该点为根的子树的深度. a) 如果此节点的某个子节点打出了GG,则此节点直接打出GG. b) 若set的元素个数<=1,那么,以该 ...
- 老李分享:Robotium创建Note的实例
老李分享:Robotium创建Note的实例 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq ...
- 老李分享:《Linux Shell脚本攻略》 要点(二)
老李分享:<Linux Shell脚本攻略> 要点(二) poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课 ...