求职刷题神器

funit.cn

讨论区 > 求职面经 > 阿里、头条、美团、快手大数据开发岗面试总结

阿里、头条、美团、快手大数据开发岗面试总结

李天弘
发布于2021-01-29 15:30:09 151浏览


面试背景:

从去年10月份开始,陆续面了阿里,头条,美团,快手四家公司的大数据开发岗位,近20场面试面下来挺耗费脑力的,不过结果还行,除了头条外,目前拿到了其他三家的offer,今天把还能记住的题目做个整理,整理是按技术分类的,因为确实记不太清哪一场问了哪些题了。


面试感受:头条和快手风格相似,每一面基本都有算法或实现题,算法主要是leetcode easy, middle难度的题,这跟你面试情况有关,可能项目上没有亮点的算法题会出的难一点。笔者刷题不多,也就100多道吧,还好没有遇到太难的算法,不过刷题还是平时没事可以在趣IT多刷刷的好,毕竟每次面试才突击刷有点累,刷题也有助于开阔思维。实现题主要是让你实现下HashMap,LRU,生产消费者模型,单例模式等,面试官通过这些可以看出你对数据结构的理解和代码实现能力。阿里和美团的话,算法题不是很多,但会比较注重问项目里的亮点,我理解的亮点包括你开发或优化过比较有价值的功能,解决过复杂或有难度的问题等,这个需要自己根据做过的项目总结好。数仓的话SQL,建模理论问的比较多。


面试题汇总:


1、Java基础

(1)说说Java里的多态什么意思

(2)Java 里的final关键用过吗

(3)讲讲volatile关键字的作用,与synchronized关键字的不同

(4)了解HashMap的内部结构吗?自己实现一个HashMap

(5)HashMap、Hashtable、ConcurrentHashMap的原理与区别

(6)用Java实现一个生产者消费者模型,可以用BlockingQueue阻塞队列

(7)了解哪些设计模式,实现一个单例模式

PS:做大数据开发,java基础是必须的,一般一面,二面都会问到,java基础答的不好,一般都不会给过。


2、数据结构与算法

算法:

·搜索旋转排序数组,leetcode 33,中等难度

·实现一个LRU缓存,leetcode 146 ,中等难度

·用两个栈实现一个队列,leetcode 232 , 简单难度

·给定一个非空的整数数组,返回其中出现频率前 k 高的元素。Leetcode 347 , 中等难度

·二叉树的最近公共祖先, Leetcode 236 , 中等难度

PS:就记住了这几个,大家也能看出来,基本都是leetcode上的题,刷题还是很有必要的。刷题时建议先按分类刷,像二分查找,动态规划都有一些固定的模式的。

数据结构:

·布隆过滤器

·Bitmap

·B+树

·LSM Tree

·跳表

·Hyperloglog


3、Hive

做大数据,Hive SQL也是必问的,大厂的ETL任务很多都是Hive SQL,主要问题如下:

·Hive row_number,rank两个函数的区别

·Hive窗口函数怎么设置窗口大小

·Hive order by,sort by,distribute by,cluster by 区别

·Hive map,reduce数怎么设置

·Hive SQL数据倾斜有哪些原因?怎么优化

·parquet数据格式内部结构了解吗

·Hive数据选择的什么压缩格式

·Hive SQL 如何转化成MR任务的

·Hive 分桶了解吗

·Hive的udf、udaf和udtf了解过吗?自己有没有写过udf

·怎么验证Hive SQL 的正确性

·lateral view explode关键字来拆分数组

·join操作底层的MapReduce是怎么去执行的

SQL应用题:

(1)一个login_in表,userid、login_time、ip,数据量很大,一个人可能有多条登录数据,取出最近10个登录的用户。

(2)还是login_in表,统计登录的总条数( PV )和登录的总人数 (UV)。

(3)一个用户好友表 userid , follow_list (该用户的好友id数组)

A [B, C, D]

B [A, C]

C [D]

统计这个表有多少对好友

PS:这个主要考察你平时写SQL多不多,数仓开发岗会比较在意SQL能力


4、MapReduce&Spark

(1)MapReduce的作业流程,涉及到几次排序

(2)Spark任务执行过程

(3)MapReduce Shuffle 和 Spark Shuffle的区别

(4)Spark的内存管理模型

(5)讲讲Spark Shuffle

(6)Spark Shuffle bypass模型了解吗

(7)Spark使用中遇到什么问题,怎么解决的

PS:MapReduce&Spark是主要的离线计算引擎,需要对任务调度流程和可能出现性能瓶颈的点熟悉,懂得组件原理和调优,如果工作中遇到并解决过大数据工程性能问题会有加分。


5、Spark Streaming&Flink

(1)Spark Streaming 与Flink的对比

(2)Flink怎么做到Exactly Once

(3)Spark Streaming能做到Exactly Once语义吗

(4)Flink的StateStore有哪些,工作中用过哪些

(5)做过Flink内存调优吗

(6)遇到过OOM的情况吗,怎么处理的

(7)讲讲Spark Streaming 与Flink的反压机制

(8)Flink的窗口函数,时间机制,CheckPoint机制,两阶段提交

(9)Flink 双流Join

(10)Flink State TTL怎么设置

(11)Flink 维表关联有哪些方式,数据量大时怎么处理

其他一些应用题:

(1)实时PV,UV统计

(2)实时TOP N 统计

(3)广告曝光流和点击流实时join

PS:不仅要对组件的原理清楚,还要实际做过实时相关的业务开发,面试官也会出一些他们场景的业务让你说下你会怎么设计,所以需要多关注些实时业务场景的应用实现。


6、数据仓库

(1)你们公司数仓是怎么构建的,怎么做的分层

(2)说说范式建模和维度建模的区别

(3)说说星型模型和雪花模型的区别

(4)设计一个统计各渠道用户留存的模型

(5)缓慢变化维怎么处理

(6)你们数据怎么同步到数仓的,怎么保证数据不丢失

(7)数据质量怎么控制

(8)数据规范怎么定义的

(9)如果进行元数据管理

PS:数仓方法论的东西需要了解,数仓整体的构建理念要对,给一个业务需求,能够给出合理的数仓构建模型。


7、Kafka

(1)说说对kafka的了解

(2)Kafka基本原理说一下,和其他的MQ相比的优势

(3)讲讲Kafka的高阶,低阶消费者API的区别

(4)Kafka的ack有哪几种

(5)Kafka 消费者怎么从Kafka取数据的

(6)Kafka生产消费怎么保证Exactly Once

(7)Kafka怎么保证有序性的

(8)Kafka Controller是做什么用的

(9)Kafka 多副本leader如何选举

(10)Kafka 消费者组重平衡流程是怎样的

(11)新版和老版Kafka offset的管理有什么不同

(12)如何查看消费者的消费进度


8、HBase

(1)HBase rowkey如何设计的

(2)谈谈热点问题以及如何解决

(3)说下HBase的读写流程

(4)HBase使用过程中做过哪些优化

(5)HBase的Compaction机制作用


9、Redis

(1)Redis 包含哪些数据结构

(2)Redis 有序集合的底层实现

(3)Redis 有哪几种数据持久化方式及各自优缺点

(4)一致性哈希了解吗


本文首次发布于趣IT ,转载请注明出处,谢谢合作

阿里、头条、美团、快手大数据开发岗面试总结

全部评论0

成为第一个评论的人

还可以上传7

表情
  • 快速扫码进群
    加入职友圈
下一步
知道了