北京 快手 大数据研发技术面经

    作者:LMagic
    链接:https://www.nowcoder.com/discuss/148752?source_id=discuss_experience_nctrack&channel=-1
    来源:牛客网

    昨天面的, 下午2点到6点多, 全程见了2位HR和4位研发, 其中2位研发是比较高级的leader. 目前等HR回复中
    自己之前在小公司做了2年大数据, 人手少, 哪里需要哪里搬, 所以这次被考察的面也有点广
    题目做了一下简单记录, 会有遗漏, 并且没有按顺序哈. 个人觉得大概回答下来80%多吧

    [Java]

    1. HashMap的底层数据结构, 为什么JDK8要用红黑树. ConcurrentHashMap的底层数据结构, 如何保证线程安全
    2. synchronized关键字的本质, 作用是什么. volatile关键字的作用, 哪些情况下会用它
    3. Java线程的几大状态及转换. 线程可重入是什么概念, 可重入锁呢
    4. 如果要设计一个线程池, 需要考虑哪些要素. Executors工厂类能创建哪些线程池, 用过哪些
    5. 讲一讲熟悉的设计模式. 单例模式及工厂模式的实现方法. 装饰器模式是怎么一回事
    6. 讲一讲熟悉的JVM GC算法, 常用的垃圾收集器. CMS有什么优缺点
    7. 一个Java应用上线后, 关注哪些性能指标. 如果响应时间过长或者CPU占用过高, 如何排查, 用哪些工具或命令

    [大数据组件]

    1. 是否自己搭建的集群, 集群节点数及配置
    2. Hadoop的XML配置文件有哪些, 改过哪些参数, 分别代表什么含义
    3. HDFS NameNode高可用如何实现, 需要哪些角色. YARN有哪些组件, 如何分配资源
    4. Spark RDD有哪些特点, 宽依赖和窄依赖. RDD的缓存级别
    5. DAGScheduler及stage如何划分. 给一个比较复杂的RDD lineage, 手动划分stage和task
    6. Spark Streaming以一定的时间窗口统计PV/UV, 如果窗口内数据量暴涨, 如何保证稳定性. 如果会延迟上报, 如何保证实时性
    7. Kafka与Spark Streaming集成, 如何保证exactly once语义
    8. Spark/Hive中大表join小表的优化方法. 数据倾斜和shuffle调优方法
    9. 调整过Hive的哪些参数, 用什么执行引擎. Hive UDF怎么写, 写过哪些. HiveQL是怎样解析成MR/Spark job的
    10. HBase的数据在HDFS上是怎样存储的, 写入数据的流程是怎样的. 为什么HBase适合写多读少业务
    11. HBase的一个region由哪些东西组成. RegionServer宕机之后如何感知, 如何迁移数据
    12. 为什么选用Kudu作为HBase和Hive的折中方案, 它有什么特点. 如果不用Kudu, HBase的二级索引能解决问题吗
    13. Impala的查询及执行与Hive有什么不同 [PS. 我之前的项目里用了Kudu+Impala]

    [数据仓库设计]

    1. 之前业务中的数据仓库是如何分层的, 怎样建模, 主题如何划分
    2. 从ODS到DW层的ETL, 做了哪些工作
    3. 1~3NF的含义. 维度建模中星型模型和雪花模型的不同. *键是什么, 支架表是什么
    4. 如何处理缓慢变化维. 怎样建设拉链表, 如何在拉链表中恢复最新数据

    [算法和应用题]

    1. 最长公共子序列(LCS)问题. 动态规划
    2. 找出二叉树中任意两个节点的最低公共根节点, 如果树是BST呢. 深度优先搜索+二分查找树性质
    3. 10亿条64B长的URL, 限定1G内存, 做计数, 如果要TopN的话呢. 哈希分桶+堆排序时间复杂度
    4. 用户行为日志有UID和时间戳, 设定一个session间隔. 离线及在线地计算用户的平均session长度
    5. 之前做过标签推荐系统, 详细讲一下架构和自己设计的算法. 算法流程是行为评分+指数衰减+线性归一化+余弦相似度/皮尔逊相关性+TF-IDF打压