原创 | 2020年阿里、头条、百度、美团、新浪、旷世、VIVO的Java大数据面经

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 原创 | 2020年阿里、头条、百度、美团、新浪、旷世、VIVO的Java大数据面经

这份面试题是交流群里的一位在国企5年的非全研究生整理的,他国企车间流水线工作5年,后面读了个非全研究生,最后收割了腾讯百度等大厂offer。今天先分享他的面试题,下一篇会讲讲他的转型之路。



旷世


1 tcp滑动窗口 发送端接收端的处理细节,窗口为0时怎么处理谁主导谁

2 进程通信的方式,共享内存的实现机制

3 Linux文件系统和目录系统的权限区别

4 算法题 a,b两个有序数组,找出第k小的数,logk,二分查找,1个小于怎么办?

5 日志统计用shell实现

6 mr的执行过程,hive的执行过程

7 mysql事务的概念,可重复读是怎么实现的

8 spring的aop是怎么实现的,jdk动态代理是什么

9 RMI有了解吗

10 java中锁的实现方式都有哪些,有什么区别

11 项目的架构图画一下,数据之间是怎么传递和交互的

12 rpc和http的区别

13 多线程下,1个线程崩溃了,主线程会不会崩?

14 项目的配置容量是怎样的,性能要求,设计目的预期达到哪些标准?

15 solr和es的区别是什么

16 tcp的三次握手和四次挥手,为什么

17 zk怎么保证数据一致性

18 rabbitmq的queue和exchange怎么设计的,fanout模式是什么

19 缓存,l1 l2 page,redis

心得:

1 简历就是考察范围,要对简历上的东西知根知底

2 注意一下底层实现的原理和细节,多问几个为什么要这样做



美团


项目qps是多少

Redis数据库里缓存的是什么

数据来源,怎么导入的

做过并发量的测试吗

涉及到事务机制吗?哪些业务涉及了,怎么处理的时候分布式事务怎么处理,自己本地的系统怎么处理的事务?

Spring怎么实现的事务



阿里电话面试


项目难点

MR流程(会,文档中有写)

MR优化选项配置(会,文档中有写)

数据倾斜处理,大表join小表(不太会,当时没细看)

hive的hql逻辑是怎么修改的,从而解决了大表join小表的数据倾斜问题(不会)

MR选项优化后,以及hive解决数据倾斜后性能提高了多少?(不会,说是测试负责的性能指标,我这里不太清楚)

系统的架构设计是谁负责的?你们讨论系统的设计过程中,你对架构设计方面有没有不同的意见和想法?

沟通过程中有没有意见不一致的情况?

团队规模(10个人,5后端2前端2测试1架构)



vivo


Dubbo熔断和限流 机制有了解过吗?原理是什么?限流是怎么处理的?

(我说了下服务降级,熔断和限不太了解)


Linux 读取一个以制表符分割的文件,取出每行第3个位置的数字,并排序,写出来

(我说用awk sort指令,具体的不会)


Linux如何查看io情况,如何查看内存情况

(io不会看,内存我说可以用top指令去看)


Redis用的什么模式,读写分离怎么做的

(这里我说的用主从架构,读写分离我不知道细节应该怎么说,就说的主负责处理写请求,并同步到从服务器上。从服务器处理读请求)


如何设计一个分布式系统的全局唯一id生成器,不能用数据库,也不能用缓存数据库

(我说先提取业务中的一些信息,比如时间等,作为id中的固定信息,以后尾部添加一个序号,从小到大排,同时内存中维护一个set,来检验是否有重复;面试官说那你应用宕机怎么办?我补充了下可以考虑进行持久化,面试官没再说什么)


RabbitMQ有哪些组件,怎么传递的,消费者连接的哪里,生产者连接的哪里(我说有生产者,消息中间件,消费者,再具体些说有消息message,路由器exchange,队列queue,先是生产者生产消息,发送给exchange,然后exchange根据消息的属性和分发规则发送给相应的对接queue,消费者从自己绑定的queue中取出消息进行消费,面试官说让我回去再好好看看,说的不对。。)


zk如何避免脑裂 脑裂产生的原因 3.46版本后解决了脑裂问题,对这个算法有了解吗?

(只会脑裂的定义。。)


排查过java错误吗?比如线程卡死,可能有哪些原因,怎么分析原因,怎么定位错误?(用jstack死锁,怎么查到死锁的线程?死锁关键字有哪些。还可能有哪些原因?)


垃圾回收新生代和老年代用的什么算法,为什么

Spring用过的注解



头条


订单超时怎么处理

上传文件,后台计算耗时怎么办

最小栈

0-100,99个数少1个,怎么找出来

项目怎么设计的,怎么交互的,数据怎么流动的



新浪


1.如何把hive表快速导入到redis中

2.一张表记录了用户uid和博文id,另一张表存了所有的博文id和对应的tag(多个),统计每个用户感兴趣的所有tag和tag次数(后来提示说考察窗口函数)

2.拓展  排序问题,一个集团有许多子公司,希望按照省份和分数进行排序

3.一张表存了今天之前的所有用户(6亿),一张表存了今天登录的用户(1亿),问怎么快速找出新增用户

技术栈:hive 德鲁伊 cleanhouse,建议刷一刷leetcode sql



度小满


1.HashMap相关问题(为什么长度是2的幂次方?多线程下可能出现死锁的原因?树化阈值多少,为什么?)

2.类加载机制,双亲委派模型,哪些情况需要破坏双拼微派模型,原理是什么?SPI了解吗?

3.GC相关,GC roots都含有哪些

4.线程池相关,各个参数都代表什么

5. ThreadLocal用过吗?使用场景都有哪些?

6.Dubbo中用zk作注册中心,zk会有哪些问题和隐患(我回答脑裂,面试官跟我讨论了一会,最后得出结论脑裂并不是很大的问题,因为Dubbo本身注册中心即使挂掉,消费者也能通过本地缓存调用生产者的服务)

7.分布式CAP了解吗?zk主要实现的哪2个?

8.Dubbo的拒绝策略有哪些,怎么实现负载均衡

9.MQ在项目中的应用,都有哪些数据

10.Redis的应用场景,存了哪些内容



某知名外企


先现场做了套笔试卷子,以选择填空为主,大部分类似于一个字符串,各种拼接,作为参数传入方法各种修改,最后问输出的内容是什么。有3道编程题,都很基础,一个是查找文件,一个是用循环的方式实现斐波那契,一个是个业务场景题,给一张数据表和一个业务场景,让实现增删改查的操作


针对项目的发散性提问,比如根据你的项目假设一种可能出现的应用场景,让你想想怎么设计解决方案会更好。

问了些Java相关的基础(对象放HashMap需重写哪些方法,ThreadLocal,其他的想不起来了)

zk相关基础(Zab协议,其他的分布式一致性算法)

用英语解释一下什么是并发编程,什么是死锁


--end--




推荐阅读:八家国企大数据面经

专科生作业帮大数据面经专科生阿里大数据一面面经2019有赞面经,已拿offer北美零基础转行开发求职面经双非硕士阿里大数据开发面经

从简历被拒到收割今日头条offer,我花了一年时间阿里技术面全A,终面却被产品经理拉下马,我不服上海小公司大数据面试题汇总外企面试,哪有你想象的那么难!

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
1月前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
2月前
|
缓存 NoSQL Java
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
75 3
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
|
2月前
|
分布式计算 大数据 Java
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
42 1
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
|
2月前
|
消息中间件 分布式计算 Java
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
39 2
|
2月前
|
消息中间件 存储 Java
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
60 3
|
2月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
93 4
|
2月前
|
分布式计算 Java 大数据
大数据-147 Apache Kudu 常用 Java API 增删改查
大数据-147 Apache Kudu 常用 Java API 增删改查
39 1
|
2月前
|
消息中间件 Java 大数据
大数据-56 Kafka SpringBoot与Kafka 基础简单配置和使用 Java代码 POM文件
大数据-56 Kafka SpringBoot与Kafka 基础简单配置和使用 Java代码 POM文件
79 2
|
2月前
|
分布式计算 Java 大数据
大数据-122 - Flink Time Watermark Java代码测试实现Tumbling Window
大数据-122 - Flink Time Watermark Java代码测试实现Tumbling Window
45 0
|
3月前
|
存储 SQL 分布式计算
Java连接阿里云MaxCompute例
要使用Java连接阿里云MaxCompute数据库,首先需在项目中添加MaxCompute JDBC驱动依赖,推荐通过Maven管理。避免在代码中直接写入AccessKey,应使用环境变量或配置文件安全存储。示例代码展示了如何注册驱动、建立连接及执行SQL查询。建议使用RAM用户提升安全性,并根据需要配置时区和公网访问权限。具体步骤和注意事项请参考阿里云官方文档。
406 10