大数据研发岗面经小结(涉及阿里,网易 云音乐以及商汤科技)
项目方面:项目闪光点、优化点、涉及到的关键技术这些基本都会问,事先最好准备一下、如果有开源项目经验就更好。
语言方面:
至少精通一门语言Java或C/C++等(以Java为例),java内存模型、gc回收算法、各种gc回收器的使用场景;
类加载机制以及涉及到的一系列问题;volatile特性、主内存与工作内存交互、happen before原则、内存栅栏;
类加载过程(class文件到jvm这个过程);
callable runnable 区别;
synchronized与lock区别;
进程线程区别;
hashMap和treeMap的区别,以及实现;
concurrenthashmap怎么实习同步?各个版本的实现方案?
PS:最好再掌握一门脚本语言。如Python或者Scala等。
大数据方面:
MapReduce过程;
spark排序实现流程,reduce端怎么实现的;
HashPartitioner与RangePartitioner的实现,以及水塘抽样;
spark有哪几种join,使用场景,以及实现原理;
dagschedule、taskschedule、schedulebankend实现原理;(网易 云音乐 )
宽依赖、窄依赖;(网易 云音乐 )
画一个yarn架构图,及其通信流程;
hdfs数据读取流程,实现原理;
HBase和传统数据库的区别;
HBase读数据过程;
HBase Master和Regionserver的交互;
HBase的HA,Zookeeper在其中的作用;
Master宕机的时候,哪些能正常工作,读写数据;
region分裂;
Spark数据倾斜,怎么定位、怎么解决(阿里);
Mysql的索引类型及其实现原理;同时哪些存储引擎支持B树索引,哪些支持Hash索引;
为什么mysql索引要用B+树而MongoDB用B树?
Mysql查询如何优化;
主键和唯一索引的区别;
事务的隔离机制,mysql默认是哪一级;
MyISAM和InnoDB存储引擎的区别;
Mysql查询优化,慢查询怎么去定位?
Mysql中的各种锁,乐观锁,悲观锁(排他锁,共享锁);行锁,表锁是怎么实现的?
MapReduce支持哪些join,map端?reduce端?semi join?semi join可以通过什么算法去优化?
MapReduce实现二次排序;
用MapReduce实现两表join;
用MapReduce实现一个存储kv数据的文件,对里面的v进行全量排序;
Zookeeper实现原理,zab协议以及原子广播协议;
paxos协议,multi-paxos,zab,raft各种分布式协议内容,使用场景;
Hadoop namenode的ha,主备切换实现原理,日志同步原理,QJM中用到的分布式一致性算法(就是paxos算法)
spark运行架构:
spark运行原理,从提交一个jar到最后返回结果,整个过程;
spark的stage划分是怎么实现的?拓扑排序?怎么实现?还有什么算法实现?
spark rpc,spark2.0为啥舍弃了akka,而用netty?
spark的各种shuffle,与mapreduce的对比;
spark的各种ha,master的ha,worker的ha,executor的ha,driver的ha,task的ha,在容错的时候对集群或是task有什么影响?
spark的内存管理机制,spark1.6前后对比分析
spark2.0做出了哪些优化?tungsten引擎?cpu与内存两个方面分别说明
spark rdd、dataframe、dataset区别.
算法数据结构方面:
图怎么存的、有哪些图算法;
红黑树怎么实现、如果树里面有两个值相等的节点,怎么识别?
问题:一排正整数,每次只能去两头的数,甲乙两个人轮流取,如果甲先取,问最后谁取得数相加和最大,最大和为多少?典型博弈论问题(可以看看海盗分金问题),大致两个动态规划方程。