你好,游客 登录
背景:
阅读新闻

Spark应届生面试经验

[日期:2017-09-13] 来源:sina  作者: [字体: ]

2016-4-20  下午,杭州某公司面试

面试内容概要:
由于没有c#的试题,所以直接跳过考试部分,直接开始负责人面试。

第一类问题:关于数据的爱好性问题

1.​你是从什么时候开始接触数据挖掘之类的技术?

回答:2年前​

2.简要介绍一下你学习数据挖掘技术的大致历程

回答:2年前接触数据挖掘,从R语言的相关学习,到后面的参加Spark相关培训(问:如何接触和准备学习Spark)​

3.为何会想找大数据之类的工作?

回答:大数据的现状和未来前景;程序猿的优劣;当前社会招聘的供需。​

第二类问题:关于Spark技术相关问题​

1.关于你简介中的通读Spark源码,它源码大概有多少行,通读又是阅读了什么内容?

​回答:Spark最新的1.6.x版本源码有50万行,通读了Spark资源调度层面,Spark计算流程相关的代码(例如 DAGScheduler,TaskSchedulerImpl,RDD等与Spark计算相关性较大的源码块,但是关于 WebUI,listenerBus监听器等部分内容由于在计算框架中使用不多,还没有去阅读)

2.对于Spark进行数据挖掘计算,你有什么看法?

回答:Spark在1.3.0以后出现的DataFrame可以对结构化的数据进行类SQL语句的​数据挖掘(问:那么Spark如何处理非结构化数据?(回答:通过Scala的函数式编程进行基于RDD的非结构化数据处理))

​3.Spark性能优化主要有哪些手段?

回答:​

将默认调用的java序列化器改为kyro序列化器(减少序列化数据80%的空间占用(问:为何序列化可以减少存储空间占用(回答:对同类型的数据对象的头进行压缩合并:我感觉这个我回答错误了)));

由于Spark1.6.0的统一内存管理模型,若算法的数据量大,而计算逻辑较为简单,可以增大内存管理中cache块的比例(默认70%(我也一下子想不起来,感觉这个附近)),如果是数据量小而算法逻辑复杂,可以适当减少cache快的比例;

​如果因对是集群CPU资源过分盈余,可以采用增加core的数目,但是core的数目增加到一定程度后,依旧无法完全利用CPU的计算资源,可以选择增 加Executor的数目,通常环境下,一个Executor推荐设置5个Core的个数,超过5个推荐增加Executor的个数

​面试官没有询问关于OOM情况的优化(后面了解,他们目前还是处于测试环境,集群性能相对优越,这方面应该还没有碰到情况)

4.​简要描述Spark分布式集群搭建的步骤

回答:创建相关用户,获得文件权限,建立SSH免密码通信,下载各软件包,解压缩后配置环境变量,之后配置Hadoop配置文件(hdfs-site.xml,yarn资源管理器相关内容),Spark配置文件(集群的MasterIP,各节点的内存值)

第三类问题:​算法方向使用经验和设计经验

​1.简要描述你了解的一些数据挖掘算法与内容

回答:讲解了关于朴素贝叶斯和关联规则这两个基本算法的原理,并举了一个案例(提问关于案例的使用时网上的案例还是你实际情况使用的案例,我说的是老师给我的一个案例,就不是网上的案例)​

​​2.描述你使用数据挖掘算法的一些实例场景

回答:关于基于文本数据的文本情感分析。。。。

​3.是否尝试过基于现实中的某种问题设计一个算法

回答:尝试过关于一个球队建模,不过算法非常简单,然后被面试官说这个内容需要长时间积累。

第四类问题:杂七杂八

脑子不够用了,实在是想不起来了​

 

大家看到之后要是也有自己的相关面试经验,请在下面积极评论哈,我会定时将评论内的经验再次更新到本文后面的~~~~~~(●'◡'●)​

 

补充:

面试官提问来数据结构与算法的课程的相关内容,有必要稍微学习一下。​

收藏 推荐 打印 | 阅读:
相关新闻       spark面试题