项目方面:项目闪光点、优化点、涉及到的关键技术这些基本都会问,事先最好准备一下、如果有开源项目经验就更好。
语言方面:
至少精通一门语言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区别.
算法数据结构方面:
图怎么存的、有哪些图算法; 红黑树怎么实现、如果树里面有两个值相等的节点,怎么识别?
问题:一排正整数,每次只能去两头的数,甲乙两个人轮流取,如果甲先取,问最后谁取得数相加和最大,最大和为多少?典型博弈论问题(可以看看海盗分金问题),大致两个动态规划方程。