首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客877852691号
北京化工大学 数据分析师
发布于浙江
关注
已关注
取消关注
@三石大数据:
大数据面试大厂真题【附答案详细解析】
1.Java基础篇(阿里、蚂蚁、字节、携程、快手、杭州银行等)问题:HashMap的底层实现原理答案:在jdk1.8之前,hashmap由 数组-链表数据结构组成,在jdk1.8之后hashmap由 数组-链表-红黑树数据结构组成;当我们创建hashmap对象的时候,jdk1.8以前会创建一个长度为16的Entry数组,jdk1.8以后就不是初始化对象的时候创建数组了,而是在第一次put元素的时候,创建一个长度为16的Node数组;当我们向对象中插入数据的时候,首先调用hashcode方法计算出key的hash值,然后对数组长度取余((n-1)&hash(key)等价于hash值对数组取余)计算出向Node数组中存储数据的索引值;如果计算出的索引位置处没有数据,则直接将数据存储到数组中;如果计算出的索引位置处已经有数据了,此时会比较两个key的hash值是否相同,如果不相同,那么在此位置划出一个节点来存储该数据(拉链法);如果相同,此时发生hash碰撞,那么底层就会调用equals方法比较两个key的内容是否相同,如果相同,就将后添加的数据的value覆盖之前的value;如果不相同,就继续向下和其他数据的key进行比较,如果都不相等,就划出一个节点存储数据;如果链表长度大于阈值8(链表长度符合泊松分布,而长度为8个命中概率很小),并且数组长度大于64,则将链表变为红黑树,并且当长度小于等于6(不选择7是防止频繁的发生转换)的时候将红黑树退化为链表。2.并发编程篇(顺丰、大华、字节等)问题:Java实现多线程有几种方式答案:继承Thread类,只需要创建一个类继承Thread类然后重写run方法,在main方法中调用该类实例对象的start方法实现Runnable接口,只需要创建一个类实现Runnable接口然后重写run方法,在main方法中将该类的实例对象传给Thread类的构造方法,然后调用start方法实现Callable接口,只需要创建一个类实现Callable接口然后重写call方法(有返回值),在main方法中将该类的实例对象传给 Future接口的实现类FutureTask的构造方法,然后再将返回的对象传给Thread类的构造方法,最后调用start方法线程池,首先介绍它的好处,然后再说它可以通过ThreadPoolExecutor类的构造方法来进行创建。3.JVM篇(阿里、字节、蚂蚁等)问题:请简述JVM的类加载过程答案:加载:通过一个类的全限定名来获取此类的二进制字节流,然后在内存中生成一个代表这个类的Class对象验证:确保Class文件的字节流中包含的信息符合《java虚拟机规范》的全部约束要求,保证虚拟机的安全准备:为类变量(即静态变量,被staic修饰的变量)赋默认初始值,int为0,long为0L,boolean为false,引用类型为null;常量(被staic final修饰的变量)赋真实值解析:把符号引用翻译为直接引用初始化:执行类构造器<clinit>()方法,真正初始化类变量和其他资源使用:使用这个类卸载:一般情况下JVM很少会卸载类,如果卸载类需要满足以下三个条件该类所有的实例都已经被垃圾回收,也就是JVM中不存在该类的任何实例加载该类的类加载器已经被垃圾回收该类的Class对象没有在任何地方被引用4.Hadoop篇(阿里)问题:MapReduce 中排序发生在哪几个阶段?这些排序是否可以避免?答案:一个 MapReduce 作业由 Map 阶段和 Reduce 阶段两部分组成,这两阶段会对数据排序,从这个意义上说,MapReduce 框架本质就是一个 Distributed Sort。在 Map 阶段,Map Task 会在本地磁盘输出一个按照 key 排序(采用的是快速排序)的文件(中间可能产生多个文件,但最终会合并成一个),在 Reduce 阶段,每个 Reduce Task 会对收到的数据排序(采用的是归并排序),这样,数据便按照 Key 分成了若干组,之后以组为单位交给 reduce 处理。很多人的误解在 Map 阶段,如果不使用 Combiner 便不会排序,这是错误的,不管你用不用 Combiner,Map Task 均会对产生的数据排序(如果没有 Reduce Task,则不会排序,实际上 Map 阶段的排序就是为了减轻 Reduce端排序负载)。由于这些排序是 MapReduce 自动完成的,用户无法控制,因此,在hadoop 1.x 中无法避免,也不可以关闭,但 hadoop2.x 是可以关闭的。5.Spark篇(美团、字节等)问题:如何解决spark的小文件问题答案:通过spark的coalesce()方法和repartition()方法 降低spark并行度,即调节spark.sql.shuffle.partitions 新增一个并行度为1的任务,专门用来合并小文件6.Flink篇(拼多多、联通等)问题:Flink是如何支持流批一体的答案:Flink 使用一个引擎就支持了DataSet API 和 DataStream API。其中DataSet API用来处理有界流,DataStream API既可以处理有界流又可以处理无界流,这样就实现了计算上的流批一体(目前流批一体最大的问题在于存储的统一上)7.Kafka篇(京东、携程等)问题:kafka是如何保证精准一次性的答案:0.11版本之后,kafka提出了一个非常重要的特性,幂等性(默认是开启的),也就是说无论producer发送多少次重复的数据,kafka只会持久化一条数据,把这个特性和至少一次语义(ack级别设置为-1+副本数=2+ISR最小副本数=2)结合在一起,就可以实现精确一次性(既不丢失又不重复)。我大致介绍一下它的底层原理:在producer刚启动的时候会分配一个PID,然后发送到同一个分区的消息都会携带一个SequenceNum(单调自增的),broker会对<PID,partition,SeqNum>做缓存,也就是把它当做主键,如果有相同主键的消息提交时,broker只会持久化一条数据。但是这个机制只能保证单会话的精准一次性,如果想要保证跨会话的精准一次性,那么就需要事务的机制来进行保证(producer在使用事务功能之前,必须先自定义一个唯一的事务id,这样,即使客户端重启,也能继续处理未完成的事务;并且这个事务的信息会持久化到一个特殊的主题当中)8.资源调度篇(快手、vivo、字节等)问题:请简述yarn的工作流程答案:首先客户端提交任务到RM上,同时客户端会向RM申请一个application,然后RM会告诉客户端资源的提交路径(比如jar包,配置文件);然后客户端就会提交任务运行需要的资源到对应路径上,提交完毕后,就会向RM申请Appmaster。RM会将用户的请求初始化成一个task,放入调度队列中,接着就会有NM领取task任务并且创建container容器和启动Appmaster。然后Appmaster会向RM申请运行MapTask的资源,假设有两个切片,RM就会将运行maptask任务分配给两个nodemanager,这两个nodemanager分别领取任务并创建容器;Appmaster向这两个NM发送程序启动脚本,分别启动maptask;Appmaster等待所有maptask运行完毕后,再次向rm申请容器,运行reducetask程序运行完毕后,Appmaster会向RM申请注销自己9.数据质量篇(微众、美团等)问题:如何保障数据质量答案:完整性定义:完整性是指数据的记录和信息是否完整,是否存在缺失的情况。数据的缺失主要包括记录的缺失和记录中某个字段信息的缺失,两者都会造成统计结果不准确,所以说完整性是数据质量最基础的保障。案例:比如交易中每天支付订单数都在100万笔左右,如果某天支付订单数突然下降到1万笔,那么很可能就是记录缺失了。对于记录中某个字段信息的缺失,比如订单的商品ID、卖家ID都是必然存在的,这些字段的空值个数肯定是0,一旦大于0就必然违背了完整性约束。准确性定义:指数据中记录的信息和数据是否准确, 是否存在异常或者错误的信息。案例:比如一笔订单如果出现确认收货金额为负值,或者下单时间在公司成立之前,或者订单没有买家信息等,这些必然都是有问题的。一致性定义:一致性一般体现在跨度很大的数据仓库体系中,比如阿里巴巴数据仓库,内部有很多业务数据仓库分支,对于同一份数据,必须保证一致性案例:例如用户ID,从在线业务库加工到数据仓库,再到各个消费节点,必须是同一种类型,长度也需要保持一致及时性定义:在确保数据的完整性、准确性和一致性后,接下来就要保障数据能够及时产出,这样才能体现数据的价值。一般决策支持分析师都希望当天就能够看到前一天的数据,而不是等三五天才能看到某一个数据分析结果;否则就已经失去了数据及时性的价值,分析工作变得毫无意义。案例:现在对时间要求更高了,越来越多的应用都希望数据是小时级别或者实时级别的。比如阿里巴巴“双11” 的交易大屏数据,就做到了秒级10.大数据场景篇(腾讯、百度等)问题:1亿个整数中找出最大的10000个数答案:首先想到的就是全局排序,那么需要判断内存是否能够装的下?1*10^9*4B = 4GB,需要4G的内存,如果机器的内存小于4G,显然是不行的第二种方法就是分治法,将这1亿个数通过hash算法,分为1000份,每份100万个数据,找到每份数据中最大的10000个数,最后在100*10000中找出最大的10000个数,最大占用内存为 1000000*4B = 4MB。从100万个数中找到最大的10000个数的方法是快速排序的方法,但是我们没有必要将这100万个数排序,只用找到前10000个数,大致的思路是:将第一个数字设置为基准元素,然后将这100万个数分为两堆,如果大于基准的堆的个数大于10000个,那么继续对该堆进行一次快速排序,如果此时大的堆的个数n小于10000个,那么在小的堆中找到前10000-n的数字。第三种方法就是小顶堆,首先读入前10000个数来创建大小为10000的最小堆,建堆的时间复杂度是O(m),然后遍历后续的数字,并与堆顶元素(最小)进行比较,如果比堆顶元素小,则继续遍历后面的数字即可;如果比堆顶元素大,则替换堆顶元素并重新调整堆为最小堆。直至遍历完所有的数字,最后输出当前堆的所有数字就可以了。整体的时间复杂度是O(mn)
点赞 13
评论 2
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
07-30 17:25
内蒙古大学 模拟IC设计
小米,你是如此的冷酷无情😭
没有测评没有笔试没有感谢信,直接就是一个寄
投递小米集团等公司10个岗位
点赞
评论
收藏
分享
07-31 09:32
上海交通大学 嵌入式软件开发
不吹不黑,评价现在的硬件职业现状
一、单片机工程师单片机工程师负责设计、开发与维护基于单片机的电子系统,需具备扎实的电子技术基础及编程技能。他们负责设计、开发和维护基于单片机的电子系统,确保系统的稳定性、可靠性和性能。单片机工程师需要具备扎实的电子技术基础,熟悉各种单片机型号及其应用,同时还需要掌握相关的编程和调试技能。薪资待遇方面, 单片机工程师的薪资水平因地区和公司而异。一般来说,大型科技公司或知名高校提供的薪资水平相对较高。此外,随着经验的积累和技能的提升,单片机工程师的薪资也有望逐步增长。发展前景方面, 单片机工程师在嵌入式开发领域具有广阔的发展空间。随着物联网、智能制造等新兴领域的快速发展,单片机工程师的需求量也在不...
点赞
评论
收藏
分享
07-19 13:28
长沙学院 Java
普通一本,没有实习经历,秋招有机会进中厂吗?下面是简历
鸿哥鸿哥:
学院(一本),感觉在脱ku子放屁,学院结尾的除了那几家出名的,一律按二本处理
点赞
评论
收藏
分享
07-20 21:57
已编辑
门头沟学院 Java
二本学院真的不配就业吗 图二是重新排版,把一些有争议的地方改掉了
仁者伍敌:
专业技能好多,好强
点赞
评论
收藏
分享
07-27 20:23
滴滴_测试开发(准入职员工)
滴滴内推,滴滴内推码,免笔试!
滴滴提前批启动!不影响正式批投递内推码:DSBHuTXN内推码:DSBHuTXN内推码:DSBHuTXN上下班不打卡,包晚餐,9点后打车免费。有商保报销90%,过节有公司礼盒。有人情味,相较其他厂老人(3年以上司龄)相对更多些!一般情况下一天完成所有面试~不影响正式批投递,更早拿offer🚘岗位类别 工程类/算法类/数据类/安全技术类/产品类/商业分析类等🚘投递要求2025年9月~2026年8月之间毕业的海内外高校毕业生,每人可投递1个岗位🚘工作地点北京/杭州/上海等公司福利薪资在大厂中也算是比较有竞争力的,节假日各种礼包,桔厂周边,校招礼包,司庆礼盒少不了,速来来解锁,小零食,免费晚饭...
滴滴公司福利 1181人发布
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
百度提前批,三面被推迟一周,喜提秋招第一凉
1.1W
2
...
虾皮秋招一面
3573
3
...
他拿大厂SSP Offer打牌是什么概念啊?25届双非之光
3467
4
...
觉得研发高人一等的这辈子有了
2768
5
...
百度提前批 三面
2032
6
...
最强本科✌
1759
7
...
也是逆天了
1451
8
...
被猿辅导挂了简历,但我想说...
1405
9
...
虾皮一面凉经
1368
10
...
上班一周,工资还没拿,先欠公司两千
1338
创作者周榜
更多
正在热议
更多
#
找工作如何保持松弛感?
#
92340次浏览
1121人参与
#
Offer比较,你最看重什么?
#
194386次浏览
1324人参与
#
中兴秋招
#
207606次浏览
2306人参与
#
秋招被确诊为……
#
166982次浏览
798人参与
#
参加过提前批的机械人,你们还参加秋招么
#
86737次浏览
1417人参与
#
投格力的你,拿到offer了吗?
#
87835次浏览
586人参与
#
虾皮求职进展汇总
#
251090次浏览
1890人参与
#
你最希望上岸的公司是?
#
136248次浏览
709人参与
#
计算机专业还有必要去大厂卷吗
#
38787次浏览
184人参与
#
柠檬微趣工作体验
#
6979次浏览
40人参与
#
26届的你,投了哪些公司?
#
52025次浏览
529人参与
#
地平线求职进展汇总
#
52770次浏览
371人参与
#
通信硬件岗投递时间线
#
19012次浏览
69人参与
#
简历上的经历如何包装
#
32898次浏览
874人参与
#
我对___祛魅了
#
54194次浏览
470人参与
#
你跟室友的关系怎么样?
#
8535次浏览
125人参与
#
你遇到最难的面试题目是_
#
17838次浏览
210人参与
#
一人推荐一个值得去的通信/硬件公司
#
191786次浏览
1888人参与
#
我想象的实习vs现实的实习
#
290579次浏览
2246人参与
#
工作中哪个瞬间让你想离职
#
66294次浏览
583人参与
#
你的秋招第一面感觉怎么样
#
77860次浏览
595人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务