快手大数据开发工程师面经

一面(40min)

  • 自我介绍
  • Spark任务调度(源码)
  • Kafka基本原理说一下(生产消费模型,存储,Leader选举,ISR,反正想到啥就说啥了)
  • Consumer Group中Consumer和Partition的对应关系(Range和RoundRobin)
  • Kafka支持什么语义(三种语义),怎么实现Exactly Once
  • Spark Streaming和Flink的区别(说部门主要用Flink,奈何我没怎么用过)
  • Scala的模式匹配和Java有什么区别
  • 用Kafka的过程中有过什么问题,怎么解决
  • 实习做了什么
  • 撕代码:
有序链表合并
n*m的带有数字的矩阵,从左上角走到右下角,问最短的路径上经过的数字的和是多少?(dp)

二面(1h20min)

  • 自我介绍
  • Java多线程了解吗?写个生产者消费者模型吧(wtf?上来就搞这个)
  • 写完讲了讲
  • 线程池熟悉是吧?写个线程池(??还好我看过源码)
  • 写完问怎么改进让它支持切换到SHUTDOWN状态?因为我只是参考了源码实现了一个能提交任务的简单线程池,没考虑别的,要改进的话有点麻烦,就大概说了下思路,也不知道对不对。
  • Java线程同步啥的,不太记得了。
  • Flink了解吗,基本的概念说一下
  • 撕算法:给一个不带分隔符的IP字符串,要给出所有的可能的IP地址,返回一个List(懵逼,用回溯写了个大概)。

三面(40min)

  • 自我介绍
  • 实习做了什么
  • Kafka基本原理说一下,和其他的MQ相比的优势
  • Kafka 消费者怎么从Kafka取数据的
  • 消费者怎么保证ExactlyOnce(感觉跟前两面的问题的有点重复)
  • Kafka消费者怎么保证有序性
  • Kafka生产者怎么保证不丢不重复(幂等)
  • Kafka生产者写入怎么保证有序
  • 撕算法:两字符串最长公共子串(一开始是别的题,我没太搞懂他什么意思,就换这个了,反正dp做呗)