spark面经

算法

  • 反转链表
    • 考点:现场编程
  • 二分法
    • 考点:现场编程
  • 几个时间复杂度好的排序算法:桶排序,快速排序,二叉数排序,当然比较类排序(冒泡,选择,插入,归并e.g)也得复习复习
    • 考点:每种排序的最坏情况时间复杂度和平均复杂度;比较类排序的现场编程;桶排序,快速排序,二叉数排序的思路(毕竟代码多,现场编程浪费时间)
  • 算法编程题:去leetcode刷刷题吧,按顺序刷即可

spark

  • spark rdd、dataframe、dataset区别
  • shuffle时的文件数
    • 考点:shuffle的实现。几个排序类(SortShuffleWriter,BypassMergeSortShuffleWriter,UnsafeShuffleWriter)的原理和触发条件
  • 算子方面
    • combineByKey、reduceByKey、groupByKey、aggregateByKey、foldByKey的区别
      • 粗略讲解:reduceByKey、groupByKey、aggregateByKey、foldByKey都是在combineByKey基础上开发的,但是combiner不同,也就导致了数据merge的方式不一样。如:groupbykey会将相同key的数据会放到一个CompactBuffer中,即数据全部放到内存中;reduceByKey则会根据自定义函数将相同key的数据先分区内聚合然后再分区间聚合。
    • sortBy和groupBy
      • 粗略讲解:spark的sort排序用的是range partitioning的shuffle操作,先对数据分区shuffle write,此时分区之间就是有序的了。然后shuffle read时分区内排序即可。而orderBy则调用的是sort方法
  • 分区器
    • HashPartitioner分区
    • RangePartitioner分区(水塘抽样)
  • udf、累加器、广播的应用场景
  • join的几种方式(shuffle write和shuffle read的原理都要弄清楚)
    • broadcast Join
    • hash join
    • sort join
  • 内存管理
    • 静态管理和统一内存管理
  • 碰到哪些错误,并且怎么解决的
    • 常见的oom
      • 一般是exceutor oom,解决方案自行百度,很多
    • 常见的数据倾斜
      • 表现:绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个task却要一两个小时
      • 原因:在shuffle时,如果某个key对应的数据量特别大的话,那么在shuffle read阶段就会发生数据倾斜,导致部分task处理的数据量过大,从而导致整个job的运行
      • 解决:1.数据表过滤:用countByKey之类算子算出key与之对应的数据量,将key数量多的给过滤掉 2.使用一些高性能算子,如reduceByKey替换GroupByKey 3.提高shuffle并行度 4.用随机数打散key
  • 对于一个spark程序有哪些优化方案
    • 开发优化:使用高性能算子、广播大变量、优化数据结构等
    • 参数配置:shuffle调优参数配置(详细的自行百度)

应用场景

  • 对于磁盘上有1T数据,内存只有10g,怎么给这些数据排序
    • 外排
    • spark的sort原理
      • 先抽样确定数据分布,然后为每一个分区确定一个range,尽量保证每个range的数据量平均,然后可以保证分区间有序,最后分区内排序即可
    • 桶排序
  • 对于网站日志分析,统计某一天某个网站的pv和uv
  • 两个表,从右边表找出与左边表某一列对应的数据
    • 先排序,再查找
    • 将右边表放hash表查找(速度快,但是对内存要求高)
  • 多个有序数组怎么合并成一个有序的数组

kafka

  • kafka对比mq,redis的优点
  • kafka是怎么通过offset来查找对应的offset的
  • kafka的群组id有什么用
  • spark straming读取kafka的两种方式,分别有什么特点

java

  • jvm
    • gc怎么给对象标记回收,回收的算法有哪些,各有什么特点
    • jvm内存管理模型(程序计数器等)
  • 多线程
    • 线程安全:各种锁的区别
  • java数据结构
    • hashmap的原理(数组加链表或者红黑树),以及哈希冲突的几种解决方方式
    • concurrentHashMap的内部结构以及发展过程
    • linkedlist和arrayList
  • 写个死锁的例子
  • 单例模式饱汉和饿汉模式
  • 其他的java面试题去网上刷刷吧

你可能感兴趣的:(spark)