双非电子专业,大二京东实习,大三上岸字节大数据开发实习岗,分享一波面经

程序源代码

共 6440字,需浏览 13分钟

 · 2022-04-11

点击上方 "大数据肌肉猿"关注, 星标一起成长

点击下方链接,进入高质量学习交流群

今日更新| 950个转型案例分享-大数据交流群


今天分享学习群同学的求职经历,他是双非电子专业,大一就加了我好友,大二开始学习大数据的内容,并在大二暑期进行了一波面试,拿了一些日常实习offer,最终去京东实习。今年过完年就开始面大厂的春季实习,如今已经拿了字节实习offer。


背景介绍

双非电子信息工程本科,有Java、计算机网络、操作系统、数据库、数据结构等基础(这里的基础可以理解为看过、学过,但很零散,可以说会但又好像不会,能够零零散散地说,但又不能成系统地描述,真面试起来就是不会的那种)

学习过程

二十多岁的时候大家都告诉你要多读书,但没有人告诉你读书其实是一件比较低效的学习方式。这是因为知识分为显性知识和隐性知识,书中所提供的大部分是显性知识,但是你在实际生活中遇到大部分问题其实是一种隐性的知识。

这些知识往往是需要去跟高手请教,还有自己多做实践才能获得的。你不可能因为看了两本讲人脉的书就变成一个很受欢迎的人,这个世界上也没有任何一个人通过看自行车手册就学会骑自行车。

爱看书当然是一件好事,但是很多人把看书学习当做躲避实践和向他人提问的一个借口,你请教对的人哪怕花了钱,但是他能让你少走十年的弯路都有可能。

以上是自己的一些小感悟吧,因为我确实是因为请教对了的人,才让自己如此突飞猛进,那就是峰哥。向峰哥请教了学习规划和路线以及面试经验,让我茅塞顿开,开启了自己的成功之路。


我是学习大数据的,可以大致分为三个部分去学习,基础、项目、面经:

基础

可以先从整体上过一遍Java、Hadoop、Hive、Spark等,明白整体是什么样的,可以不用太考虑细节方面的东西,先有一个感性的认识,做项目的时候可以慢慢深入。时间允许的话记得一定要动手敲代码,别只是看哦!

项目

当有了上面的基础就可以开始做项目了,一边做项目,一边补充知识点。项目做完后记得总结,比如项目难点在哪里,使用了什么技术解决了什么问题。项目上的亮点可以作为自我介绍的一个突破口,引导面试官去询问。

面经

有基础了、有项目了,接下来就该准备怎么去面试了。针对市面上的常见面试题进行总结学习,一定要自己总结,边看边理解,理解好了之后把它总结到自己的笔记上,顺便思考一下有哪些是可以往项目上靠的。

为什么要自己总结?因为自己总结的很熟悉,下次面试的时候,只需要看一下就能捡起来,效率更高。

对了,学习时间允许的话,算法题从开始学习那天起就要每天刷。每天刷一道,然后进行总结。先刷剑指offer,然后刷 Leetcode上的比较高频的算法题。再次啰嗦一遍,一定要总结,总结成自己的笔记。

面试过程

每次面试都要总结面试的不足,以及记录每次面试官的问题,把它总结到自己的面经上,查缺补漏。


我是从大二暑期开始面试的,所以面经包含大二的日常实习和最近的春季实习,我在面试大厂之前已经积累了一些中小公司的面试经验,这里重点介绍大厂的一些面经。

日常实习面试

1.货拉拉

一面

1、hashmap和hashtable的区别
2、多线程锁,产生死锁的条件、怎么预防死锁

3、单例模式的创建方式
4、Hadoop:HDFS的组件
5、三次握手四次挥手。状态
6、http协议
7、排序、二叉搜索树、二叉平衡树、红黑树
8、hashmap源码
9、多线程的实现方式、Callable和Runnable的区别

10、网络协议结构?物理层有什么作用

11、两道算法题

第一题是leetcode 第三题 无重复字符的最长子串

第二题是

输入: ["flower","flow","flight"]
输出: "fl"

输入: ["dog","racecar","car"]
输出: ""

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,则返回""


二面

1、linux的命令,怎么查找当前系统拥有文件数量最多的?

2、网络请求是连接的?就比如我们现在面对面视频,底层发生了什么?

3、数据库的索引?为什么使用B+树索引,而不使用二叉平衡树?

4、网络结构?每一层网络的作用?

5、做题

有一个日志文件,统计文件个数

file1 drxr—r— 张三
file2 drxr—r— 张三
...
海华
输入一个文件,内容如上
输出:
张三 4
李四 3
王五 2


2.TCL

1、项目做了什么,....

2、udf、udaf。实现一个功能需求,有三个字段,userid itemid data。筛选出userid、itemid最早的操作的时间。

主要聊项目相关的

3.腾讯

1、自我介绍

2、聊一下项目,主要是Spark SQL方面的。写了两个sql,现在 stuid,sex,score这三个字段,现在需要统计成绩前五的学生信息。一个是etl方面,银行卡信息,怎么进行脱敏,实现1234**************456这样的信息。

3、怎么进行行列转换。比如 userid 语文:79|数学:90,把它转换成 userid 语文:79 userid 数学:90

4、spark submit的一些参数设置,它是什么含义,比如executor-cores、diver-cores

5、谈谈你对RDD的理解

6、row_number、rank、dense_rank有什么区别

7、职业规划。是往数据平台方向还是数据应用方向

8、谈谈你对宽依赖和窄依赖的理解,它们是如何划分的?

10、spark的算子有哪些?map和flatMap的区别

面试通过了,但我不敢去,因为这是部门急招的,所以考的也比较简单。

4.脉脉

1、自我介绍

2、介绍项目

3、spark sql是如何实现各区域top3 热门商品

4、你能说说leftjoin、rightjoin、innerjoin的区别吗?如果A表有5条id=1的数据,B表有10条id=1的数据,他们们进行leftjoin有多少数据?答案是50条

5、你能说一下hadoop和Spark的shuffle过程吗?

6、spark有哪些性能优化的点?你使用过的调优有哪些?可以结合自己的项目

7、clickhouse了解吗?

8、你了解python,你用python做过什么?除了爬虫以外的

9、redis异步消息队是如何实现的?

5.万物心选

1、介绍下你的第一个项目?

2、spark sql实现各区域top3热门商品?谈谈你对窗口函数的理解?你使用了哪些窗口函数?

3、为什么要统计每天各城市的广告的点击次数?它的用处是什么?是PU还是PV?

PU(page view,浏览量):是指一个统计周期内,浏览页面的数之和

UV(unique visitor,访客数):是指在一个统计周期内,访问网站的人数之和

4、写了一道SQL题目。

tab1
id cls1 cls2
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5

tab2
id cls1_2 cols3_2
1 1 1
2 2 2
3 3 3

找出只在tab1出现,不在tab2出现的数据,如下
4 4 4
5 5 5

5、一道剑指offer算法题

一个整型数组 nums 里除1个数字之外,其他数字都出现了两次。请写程序找出这1个只出现一次的数字。
输入:nums = [4,1,4,6,6]
输出:[1]

6、你写sql时有碰到什么困难吗?

6.京东

一面

1、介绍下第一个项目

2、介绍一下用户行为大数据分析平台,spark sql是如何实现各区域top3热门商品

3、HDFS的读写流程

4、hive调优了解吗?flink了解吗?

5、大数据开发组件你了解有哪些?

6、写了一道剑指offer题目,合并两个有序链表

7、写了一道京东面试题SQL,京东店铺的

有50W个京东店铺,每个顾客访问过任何一个店铺的任何一个商品都会产生一条访问日志,访问日志表名为visit,用户id为user_id,店铺名称为shop

user_id shop
u1 a
u2 b
u1 b
...

1、统计店铺的UV(访客数)
2、每个店铺访问次数top3的访客信息。输出店铺名称、访客id、访问次数

二面

1、介绍一下项目以及项目的业务?

2、spark SQL如何实现各区域top3热门商品

3、你是如何理解指标的设计?

4、你能说一下mapreduce的过程吗?你能从leftjoin来说明一下过程是如何的吗?

5、你能说一下shuffle的调优的过程吗?

6、hive了解吗?内外部表了解吗?拉链表了解吗?

7、spark的job是如何划分stage的?宽依赖和窄依赖的区别?

8、spark的算子有哪些?

9、sql题

行列转换写hive实现?
表1:
A B C

表2:
A
B
C

10、hive实现:非北京市的学生中,每个班级 平均分最高的TO10用户及信息,结果格式为:class, uid, avg_score, scores,province

用户学分表Score:
字段名 中文名 字段类型 字段示例
uid 用户id bigint 23145
class 班级 string 2-1
scores 用户信息 array ['math_100','music_90',......]

用户信息表 stu
字段名 中文名 字段类型 字段示例
uid 用户id bigint 23145
province 省份 string 北京

7.快手

一面

1、介绍一下第一个项目?

2、数据量有多大?数据最终写到哪?集群是自己搭的的吗?

3、说一说各区域top3是如何实现的?

4、spark的shuffle过程

5、spark的job是如何划分stage的?

6、介绍一下垃圾回收机制?

7、如何保证kafka只消费一次?

8、CAP理论?Kafka符合哪两个理论?

9、你是如何消费消息队列的消息?是拉取吗?事件模型

10、数据库的事务了解吗?它的四个基本特性是什么?

11、spark的shuffle调优你了解吗?你项目里哪里使用到了调优?

12、写了一道算法题。合并两个有序数组。

13、TCP和UDP的区别

二面

没面了,因为去京东了


最终选择了去京东进行日常实习


春季实习面试

因为之前已经积累过面试经验了,所以这次直接投大厂,只面了两家,两家都拿到offer了。

字节跳动

一面

1.先做一个自我介绍

2.处理过百亿级别的数据,数据调优经验,说说你是怎么调优的?

3.MapReduce过程?Shuffle过程?Reduce端有几步操作

4.Spark宽依赖和窄依赖?Union是宽依赖还是窄依赖?如何划分宽窄依赖的?

5.Stage是什么,它是怎么划分的?

6.数据仓库分层?分区表和非分区表

7.两个道SQL(算法和SQL,选SQL)

第一道,有一个成绩表数据t1
uid class_name score
A Chinese 90
A English 89
A Math 88
B ... ...

求出总分并排序
uid chinese_score English_score Math_score total_score rank
A 90 89 88 267 1
B ...
两张表,第一张表是用户看某个视频的播放量,比如用户A看视频B看了10次
uid video_id play_cnt
A java 10
A python 5
B Java 20
...

第二张是视频维表video表
video_id video_name video_url video_author

最后求出视频播放量前500的视频信息
video_id video_name video_url total_play_cnt rank

二面

1.先做一个自我介绍

2.介绍京东项目,你都负责做了什么,如何调优

3.你在京东是如何学习的?业务上和技术上

4.说一个你最熟悉的Hive表,你自己做的表也可以。我介绍了自己开发的京东新用户指标表,详细介绍了其中的过程,是如何实现的

5.说说你最了解的大数据技术?我说了spark

6.那你说说你理解的RDD

7.那你说一下select count(*) 在spark是如何执行的?

8.你熟悉java,那你说一下垃圾回收机制吧,比如G1的过程

9.Spark源码之类的,太难了!

10.三次握手的过程

11.项目有使用过TCP之类的吗

12.hashmap的数据结构

13.哪些是稳定排序算法?哪些是非稳定排序算法?

14.你是如何理解动态规划的?

15.说一说join的方式,你说的那种mapjoin是怎样的

16.做题(算法和sql,选sql)

求11月份的新用户次日留存率(牛客网题目)

id login_time
1 2021-11-01 12:00:01
2 2021-11-01 12:00:01
3 2021-11-01 12:00:01
1 2021-11-02 12:00:01
2 2021-11-02 12:00:01
4 2021-11-02 12:00:01
...
比如这张表的新用户留存率为66.7%
11.1 有三个新用户 1 2 3
11.2 两个新用户留下来了 1 2
所以新用户留存率为 2/3=66.7%

17.这一面还考察了很多软素质方面的东西,问的挺多的。比如在京东你是如何学习的?怎么快手上手的?你在大学里的宿舍扮演了什么样的角色?你觉得你身上的亮点是什么?你在学校的成绩怎么样?

三面

hr面,这里很奇怪,我看网上说有三轮技术面+一轮hr面,而我只有两轮技术面+一轮hr面,是不是我前面两轮面的比较好,所以不需要第三轮技术面了,哈哈哈。

这一轮面试就是聊天,问问在京东的实习经历,项目,以及一些各方面的细节。


蔚来

一面

1.自我介绍

2.在京东主要负责什么?

3.你的任务是如何优化的?具体的优化流程

4.京东的数仓分层是怎样的?

5.flink是如何消费kafka的?你是如何解决数据缺失问题的?你是怎么保证数据同步的问题?

6.flink相关的东西吧,比如状态存储之类的

7.Spark shuffle之类的问题?你是如何通过 web UI进行监控的?结合shuffle read和shuffle write来说,如何判断是否数据倾斜?

8.为什么使用Redis作为消息队列?不使用kafka?

9.spark sql的执行过程是怎样的?

10.join分为哪几类?common join和map join

11.多线程的几个核心参数?它的工作流程?项目中的多线程应用场景

12.线程是如何保证同步的?wait?notify?这里主要回答了Synchronized和ReentranctLock,介绍他们的主要区别

13.ReentrantLock是如何保证可重入的?你理解的可重入是怎样的?

14.kafka了解吗?消费kafka连接参数是什么?有自己实现过连接kafka吗?

15.MySQL和Redis哪个更熟悉?主键索引和辅助索引的区别?MySQL的隔离级别(答的不太好)

16.总体来说,项目问的比较多!项目一定要好好准备

17.yarn-client和yarn-cluster的区别

面完之后10天后hr打电话跟我说,面试通过了,面试官给我的评价挺高的,不需要二面了。


总结


收到字节实习offer之后我就打算躺平了,休息几天就打算开始实习了,接下去全力备战秋招提前批。


可能光凭这篇文章会觉得我的学习之路很顺利,但刚开始学习的时候也经历了很大的折磨,刚开始面试的时候也一直被锤,但好在有峰哥辅助和答疑,没走过什么弯路也能及时调整好状态,这是至关重要的。


另外就是准备的比较早,让我可以处乱不惊。学历是我的劣势,我只能通过项目和实习经历来弥补,这个我也是参考了峰哥的经历:我,大二实习,996,月工资800


建议其他同学也没掐着时间点才开始学习和准备面试,一定要提前开始,早点度过缓冲期并投入状态。


--end--

扫描下方二维码
添加好友,备注【交流
可私聊交流,也可进资源丰富学习群




更文不易,点个“在看”支持一下👇

浏览 32
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报