北京 快手 大数据研发技术面经
作者: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]
- HashMap的底层数据结构, 为什么JDK8要用红黑树. ConcurrentHashMap的底层数据结构, 如何保证线程安全
- synchronized关键字的本质, 作用是什么. volatile关键字的作用, 哪些情况下会用它
- Java线程的几大状态及转换. 线程可重入是什么概念, 可重入锁呢
- 如果要设计一个线程池, 需要考虑哪些要素. Executors工厂类能创建哪些线程池, 用过哪些
- 讲一讲熟悉的设计模式. 单例模式及工厂模式的实现方法. 装饰器模式是怎么一回事
- 讲一讲熟悉的JVM GC算法, 常用的垃圾收集器. CMS有什么优缺点
- 一个Java应用上线后, 关注哪些性能指标. 如果响应时间过长或者CPU占用过高, 如何排查, 用哪些工具或命令
[大数据组件]
- 是否自己搭建的集群, 集群节点数及配置
- Hadoop的XML配置文件有哪些, 改过哪些参数, 分别代表什么含义
- HDFS NameNode高可用如何实现, 需要哪些角色. YARN有哪些组件, 如何分配资源
- Spark RDD有哪些特点, 宽依赖和窄依赖. RDD的缓存级别
- DAGScheduler及stage如何划分. 给一个比较复杂的RDD lineage, 手动划分stage和task
- Spark Streaming以一定的时间窗口统计PV/UV, 如果窗口内数据量暴涨, 如何保证稳定性. 如果会延迟上报, 如何保证实时性
- Kafka与Spark Streaming集成, 如何保证exactly once语义
- Spark/Hive中大表join小表的优化方法. 数据倾斜和shuffle调优方法
- 调整过Hive的哪些参数, 用什么执行引擎. Hive UDF怎么写, 写过哪些. HiveQL是怎样解析成MR/Spark job的
- HBase的数据在HDFS上是怎样存储的, 写入数据的流程是怎样的. 为什么HBase适合写多读少业务
- HBase的一个region由哪些东西组成. RegionServer宕机之后如何感知, 如何迁移数据
- 为什么选用Kudu作为HBase和Hive的折中方案, 它有什么特点. 如果不用Kudu, HBase的二级索引能解决问题吗
- Impala的查询及执行与Hive有什么不同 [PS. 我之前的项目里用了Kudu+Impala]
[数据仓库设计]
- 之前业务中的数据仓库是如何分层的, 怎样建模, 主题如何划分
- 从ODS到DW层的ETL, 做了哪些工作
- 1~3NF的含义. 维度建模中星型模型和雪花模型的不同. *键是什么, 支架表是什么
- 如何处理缓慢变化维. 怎样建设拉链表, 如何在拉链表中恢复最新数据
[算法和应用题]
- 最长公共子序列(LCS)问题. 动态规划
- 找出二叉树中任意两个节点的最低公共根节点, 如果树是BST呢. 深度优先搜索+二分查找树性质
- 10亿条64B长的URL, 限定1G内存, 做计数, 如果要TopN的话呢. 哈希分桶+堆排序时间复杂度
- 用户行为日志有UID和时间戳, 设定一个session间隔. 离线及在线地计算用户的平均session长度
- 之前做过标签推荐系统, 详细讲一下架构和自己设计的算法. 算法流程是行为评分+指数衰减+线性归一化+余弦相似度/皮尔逊相关性+TF-IDF打压