面试题: 你在工作/学习过程中遇到过什么深刻问题吗?怎么克服?

Posted 宝哥大数据[离职找工作中,大佬帮内推下]

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题: 你在工作/学习过程中遇到过什么深刻问题吗?怎么克服?相关的知识,希望对你有一定的参考价值。

最近面试高频问题,回答的一脸懵逼

因为面试官,基本都是先问项目中相关知识点以及延申问题,然后询问擅长的技术栈并深挖,最后来一个问题: 你遇到的最深刻问题是什么?怎么解决?

卧槽, 前面两个部分已经将项目中问题,及知识点说完了,现在又问这个是啥意思?突然一下不知道说什么了。怎么感觉没有遇到啥问题?

离线: 数据倾斜
实时: 程序稳定性及数据一致性,数据恢复
数据治理:

到底怎么回答才合适?

被问到这样的问题时,不妨先站住面试官的角度换位思考。
面试官是想了解你是怎么发现问题?怎么解决问题?恐怕不仅仅这么简单的的,这是一个考察你综合能力的题。

面试官想考察的内容有几个方面:

  • 你的沟通能力,表达能力
  • 技术能力(业务难题,技术难题)
  • 领导能力 (团队资源协调,总结,分享,成长)

这是一个送分题,基本逢面试必问,面试前一定要准备好,能体现你技术能力、沟通能力、领导能力的任何方面都可以融汇进去,难题不仅仅指程序出现的 bug,也包括代码的设计、优化、重构,哪怕你没遇到过难题也要虚拟难题,表现你在不同方面的特长;

在设计的时候为什么没有多考虑一些,从架构或者业务层面避免解决不了的问题发生;要是bug为什么开发的时候遗漏了测试的时候没有发现;

  • 确定存在难点,那么是技术上的问题,还是跨部门跨团队沟通协调的问题亦或其他各个方面的问题,这时候就是重点了,你解决的任何问题都可能是难题,在面试的时候把握些尽量往自己驾轻就熟的点上靠,详述问题如何解决的,到这里是不是够了;

  • 问题有方案解决了,那么后续对于难点有没有复盘,有没有优化方案,有没有在团队做分享;

  • 要回答这类的问题,重在平时的积累和反思;不管是自己遇到的还是团队中其他同事遇到的问题,只要是自己不会的,都要留心;好记性不如烂笔头,一定要笔记,等积累的多了,就要进行整理,标记出一些经典的问题;

  • 最后的最后,你的总结你的思路有没有形成套路,当下一次遇到问题的时,是否有自己的解决问题的思路;

1、发现问题
某日通过azkaban调度监控,邮件告知某个任务运行时间超过正常运行时间30%,仍然卡死,通过spark history server web ui 界面,发现卡死在某个task, 查看这个task的数据量是其他完成的task 的 两个数量级
2、猜测 是 数据倾斜
通过查看源数据数据分布,的确有部分key数据量比较大

3、解决数据倾斜,数据倾斜,怎么办?

我们可以采用一些解决数据倾斜的办法,老刘大致讲一下关于数据倾斜的几个解决方案:

  • 1、如果发现导致数据倾斜的key就几个,而且对计算本身的影响并不大的话,就可以采用过滤少数导致倾斜的key

  • 2、两阶段聚合,将原本相同的key通过附加随机前缀的方式,变成多个不同的key,就可以让原本被一个task处理的数据分散到多个task上去做局部聚合,进而解决单个task处理数据量过多的问题。接着去除掉随机前缀,再次进行全局聚合,就可以得到最终的结果。但是这个方法只适用于聚合类的shuffle操作,不适合join类的shuffle操作。

  • 3、对于join导致的数据倾斜,如果只是某几个key导致了倾斜,可以将少数几个key分拆成独立RDD,并附加随机前缀打散成n份去进行join,此时这几个key对应的数据就不会集中在少数几个task上,而是分散到多个task进行join了。适用于两个数据量比较大的表进行join。

  • 4、如果在进行join操作时,RDD中有大量的key导致数据倾斜,那么进行分拆key也没什么意义,此时就只能使用这一种方案来解决问题了。将原先一样的key通过附加随机前缀变成不一样的key,然后就可以将这些处理后的“不同key”分散到多个task中去处理,而不是让一个task处理大量的相同key。

以上是关于面试题: 你在工作/学习过程中遇到过什么深刻问题吗?怎么克服?的主要内容,如果未能解决你的问题,请参考以下文章

你在工作中遇到过印象深刻的困难是什么,你怎么克服的?

面试官:你在平时的工作中遇到过哪些问题让你印象深刻?

你遇到的前端面试题都有啥?

面试题:给我说说你在HttpServlet中遇到的坑?

24 道Linux Shell 脚本面试题

精心汇总的 24 道 shell 脚本面试题