美团,滴滴,蘑菇街Java大数据面经分享
大概校招的时候面了几家互联网公司,主要方向是java后端和大数据开发,最近整理下发出来
美团
一面
- 聊你最熟悉的项目和技术。
- 项目中为什么要使用spark。
- spark怎么划分stage,宽窄依赖,聊源码
- spark提交一个作业的执行流程(单机模式)
- spark driver节点,worker以及master节点遇到故障如何解决。
- spark checkpoint原理
- 聊JVM内存划分与GC算法。
- JVM中为什么需要使用分代收集算法,有什么好处。
- 手撕代码:
输入一个链表和一个定值x,要求将值小于x的所有节点置换到x的左侧,值大于x的所有节点置换到x右侧,另外需要保持原有前后关系。比如:
输入: 1->4->3->2->5->2 and x = 3,
输出: 1->2->2->3->4->5.
其中:1/2/2小于3,4/5大于3,而且输入的前后顺序也是1/2/2,4/5
一面刚开始是分布式存储团队,主要技术栈是hadoop,hbase以及hive,后来感觉我对分布式计算感兴趣,面试官帮我转岗到实时计算组,接着二面。
二面
- 自我介绍
- 聊项目,项目中有哪些难点,解决了什么问题?
- spark streaming集群如何做容灾处理。
- spark checkpoint原理。
- 了解哪些海量数据去重的方法。
- flink和spark的区别?
- flink了解哪些,它的基本架构原理
- 如何设计一个多级缓存系统,需要考虑到哪些问题?
- redis和zookeeper做分布式锁的区别,还有其他方式做分布式锁吗?
- 一道算法:给定一个栈,使用O(1)的时间复杂度计算栈中的最小元素。
- 了解哪些机器学习算法?做过相关项目吗?
- 团队间协作需要注意哪些问题?
- 如何后面让你做同样的一个系统,你会从之前的项目中吸取怎么样的经验。
三面
- 自我介绍
- 深挖项目。
- 如何理解大数据,它解决了什么问题。
- 在一个很大的m*n的数组中,每一行有序,每一列无序,如何求其topk。
- 进程之间如何通信。
- 操作系统页的概念,每一页的大小是多少,为什么是这么多。
- 一台机器可以建立的连接是否是无限的,影响它的因素有哪些?
- TCP断开连接时的time_wait状态?
- 确定一个TCP连接的5元组。
- 还有什么向问我的嘛?
- 如何理解实时计算。
过了几天,问了下,说是没HC了,给我转分布式存储,不过需要重新面试,就没再继续面了。
滴滴(面试通过)
一面
- 自我介绍
- 介绍项目。
- 说说JVM gc算法,垃圾回收器。
- 聊下java并发包的一些常用工具类
- 聊spark源码。
- 有什么想问的。
二面
- redis的工作模型。
- redis如何处理过期数据。
- redis中hash类型求数据大小快还是将所有数据读出来快。
- 数据库与缓存读写一致性问题。
- 如果以上问题回答的不太完美,你会怎么办。
- spark的通信模型,集群发生故障是怎么办。
- spark的执行流程。
- java中有哪些锁。
- synchronized为什么是重量级锁。
- 如果工作中提出不合理的需求你会怎么办。
- 怎么看待加班。
- 实习时间。
过了几天面试官说面试通过,过几天老板会和我商量入职时间,然后过了几天。。。。HC被锁了。。
蘑菇街(offer)
一面
- 项目介绍,项目中的难点与亮点
- spark sql的UDF,UDAF函数的实现。
- Hive中如何实现UDF。
- hashmap源码中有哪些成员变量,什么时候适合增大负载因子,什么时候适合减小。
- java中float类型,类型转换。
- 字符串的匹配。
二面
- 自我介绍
- java中有哪些锁
- java CAS,看过native方法源码没有
- 什么是死锁,代码中出现了死锁怎么解决。
- 求一颗二叉树中topk大的元素。
- java volatile关键字。
- spark执行流程。
- 如何解决数据倾斜。
- 实习时间,倾向的岗位。
三面
- 你有哪些优势
- 大学期间对你影响最大的人
- 你有哪些优点和缺点。
- 对前面的面试自我感觉怎么样。
- 期望薪资
- 实习时间。
最终拿到offer。
总结: 菜是原罪!!!