暑期实习求职过程以及面经分享,回馈牛友~

投递情况:

面经:

字节:

一面:

1.自我介绍

2.聊项目

(1) 项目需求是什么?数据库表怎么设计的?

(2) 点赞关系怎么存储的,有什么问题?(提到两种存储方式)

(3) 针对feed流考虑一个场景:用户上传视频很多,如何避免重复观看某个视频

3.介绍一下布隆过滤器

4.介绍一下线程池

5.介绍一下redis的集群模式

6.哨兵模式的选举过程了解吗?选举算法呢?(raft算法)

7.用过什么分布式锁,介绍一下原理

8.看你有用过雪花算法,能介绍一下原理吗,是否会出现id相同的情况

9.介绍一下责任链模式

10.算法:

(1) leetcode22 括号生成

(2) leetcode45 跳跃游戏II (紧张,没做出来,回来一看之前还做过,蚌埠住了...)

(3) leetcode69 x的平方根 (看我上题没做出来出道简单的,秒了)

11.反问表现,还有哪些值得改进的地方(回答可以多刷leetcode,蚌埠住了)

总结,hot100还得去复习一遍...

二面:

1.自我介绍

2.介绍一下虚拟内存

3.介绍一下ping原理、ping工作在哪一层、为什么没有使用传输层?(没答好,稀烂)

4.说一下数据是如何写入到磁盘的

5.对A, B建立联合索引,分析select * from xxx where A = 2 and B = 3存储引擎执行过程

6.系统设计:

实现一个评论功能:数据库模型->一个热点视频有很多评论怎么处理?

7.算法:类似leetcode76. 最小覆盖子串

8.反问

三面:

1.自我介绍

2.拷打项目

(1)点赞模块数据库怎么设计的?

(2)点赞数怎么存储的?为什么要用hash而不直接使用string?

(3)点赞数怎么更新?MQ重试期间用户查询不到点赞列表怎么办?

(4)削峰怎么做的?为什么要削峰?既然直接写入MQ并返回成功状态那用户怎么感知服务失败?

3.为什么要用RocketMQ?

4.redis的zset底层实现,为什么要有跳表?为什么要有hash表?

5.介绍一下ACID事务

6.写一道sql:就是扣减库存

7.介绍一下MySQL的隔离级别

8.算法:小明上课爱打瞌睡,给你n节课,小明上第i节课会获得ai的收益,再给你n个01序列表示小明是否会在第i节课睡觉,你要选一个时间提醒小明,这样小明会保证在之后的k节课保持清醒,请最大化小明的收益。(牛友们要注意代码的可读性,被面试官批评说太acm风格了)

9.智力题:10瓶药,有若干瓶被污染,被污染瓶的每粒药重1.1g,没被污染的每粒重1g,给你一个天枰,只允许称一次,请问如何求被污染的药瓶是哪些?(没做出来)

10.能实习多久?

11.自己的优缺点

12.go和Java使用起来的感受

13.为什么说go适合并发

14.协程和线程的区别?

15.反问

HR面:

1.实习地点和时长

2.未来的职业规划

3.成绩情况

4.介绍参加的竞赛

5.怎么学习后端的?

6.你在竞赛或项目中有没有遇到和组员意见不一致的情况?怎么解决?

7.近期遇到过最有压力的一件事是什么?怎么解决?

8.如果来实习你希望收获什么?

9.还面了哪些公司?会怎么选?

10.反问

腾讯:

PCG-腾讯视频 一面:(人生第一次面试上来就是腾讯,也是难绷,很紧张,答得不好)

1.介绍一下自己

2.websocket怎么实现的?底层基于什么

3.你的websocket如何支持成千上万的连接

4.介绍一下IO多路复用

5.介绍一下匹配算法和代码沙箱

6.你做这个项目给你的收获是什么

8.介绍一下视频上传,视频数据存在哪里

7.你的点赞系统如何应对频繁刷赞的情况

8.介绍一下redis的持久化过程

9.做题:给定一个序列,找第100大的数,不能使用任何库函数

10.反问

CSIG-腾讯云 一面:

1.介绍一下自己

2.算法:手写一个二叉搜索树,实现add和find操作

还问了:时间复杂度;Map相关,哈希冲突怎么解决?TreeMap这种和unordered_map这种有什么区别?什么时候用哪个?怎么评判哈希冲突是否严重?

3.问项目:

(1)你做这个项目的初衷是什么?

(2)OAuth2的流程,QQ一键登录的流程(授权码能否和访问令牌合并)

(3)介绍一下JWT,签名算法了解吗(实现原理)?

(4)无感登录怎么做的

(5)前后端即时通信怎么做的,怎么保证游戏的实时性和稳定性?

(6)WebSocket的消息组成了解吗?什么是消息帧?为什么要有消息帧?

(7)介绍一下匹配算法

(8)介绍一下MiniMax-Search和Alpha-Beta剪枝技术

4.简历写到:熟练掌握MySQL,深刻理解事务及其原理、索引、锁机制、MVCC、各种日志等,面试官问:"认真的吗?"(嘴角勾起一丝微笑,难崩)

(1)介绍一下MySQL的事务及其原理

(2)介绍一下MVCC

5.反问

(1)实习生会干些什么?

(2)部门语言:C++\Go

2024/4/10

PCG-腾讯视频 一面(2h 蚌埠住了)

1.互相自我介绍

2.算法

手写:

(1) 求和大于等于s的最小连续子序列长度

(2) 给定序列,每个元素是[1, n]的整数,求重复出现的数

(3) LRU

口述:

(1) 如何判断一个链表是否有环

(2) 100亿个数,每个数要么出现两次要么出现一次,求只出现一次的这个数

(3) 10亿个数,求第k大

3.介绍一下Java集合、介绍一下HashMap的原理

4.介绍一下MySQL的索引,为什么这么设计

5.介绍一下MySQL主从复制的原理 (面吐了,脑抽背到redis主从原理去了,背到一半刹车...尴尬)

6.介绍一下redis的持久化方式

7.介绍一下redis的数据结构。这些数据结构是怎么持久化的 (乱答)

8.redis的通信协议了解吗?

10.介绍一下TCP协议

11.time_wait了解吗

12.用过git吗,用过哪些命令?

13.用过哪些linux命令

14.如果我要获取一个目录下指定要求的文件,该用什么命令?

15.问项目

比较通用的:

(1) 介绍一下redis和MySQL一致性怎么保证的?

(2) 雪花算法原理

16.反问

阿里:

淘天

一面(电话面)

没有问项目,八股盛宴

1.介绍一下equals和hashcode

2.为什么重写equals要重写hashcode (答的不好)

3.hashmap的hash过程

4.hashmap的扩容过程

5.hashmap的底层实现

6.concurrenthashmap和hashmap的区别?concurrenthashmap底层的锁实现

7.ThreadLocal用过吗?什么场景下用?实现原理?会有什么问题?

8.ThreadLocalMap底层使用的HashMap吗?ThreadLocal底层为什么不维护一个Map以Thread为key,资源为Value?

9.什么是cas?

10.TCP三次握手和四次挥手

11.为什么握手要三次,挥手要四次?挥手什么时候变成三次?

12.MySQL的隔离级别,每种隔离级别下会有什么问题?

13.redis和MySQL的一致性怎么保证?

14.redis缓存击穿和缓存雪崩介绍一下,怎么解决?

15.分布式锁你是怎么用的?redisson实现分布式锁的原理?怎么加解锁?

16.redis的一致性算法了解吗?为什么要有这个?原理是怎么样的?

17.rocketmq满足cap的哪些?

18.算法:开根号,不能使用库函数,二分秒了

19.为什么想来实习?

20.反问

阿里国际

一面(电话面)

1.自我介绍

2.介绍一下参加青训营的收获

3.如何应对高并发请求,前端后端分别可以做什么?

4.项目架构

5.对于限流、实时流量和非实时流量限流怎么做?

6.dubbo组件有哪些?为什么消费端能够像调用本地方法一样去调用生产者?dubbo序列化方式有哪些?

7.rocketmq是如何保证可靠性的?

8.broker全挂了怎么办?

9.redis和mysql一致性怎么保证?

10.说一下一条sql的执行过程

11.innodb和myisam的区别

12.介绍一下乐观锁和悲观锁

13.介绍一下mysql的锁

14.mysql如何加锁

16.死锁的条件是什么?

17.并发事务使用for update加锁是否会出现死锁的现象?

18.50亿个数据去重怎么做?

19.50亿个数据排序怎么做?

20.反问

拼多多:

一面

1.自我介绍

2.有没有读研的打算

3.有没有参加学校什么实验室或者基地之类的?

4.有没有看过Java相关的书籍

5.平时有用过线程池吗?怎么使用的?

6.Java常见的线程池有哪些?

7.介绍一下常见的阻塞队列

8.接口和抽象类有什么区别?

9.多态怎么实现的?

10.对象是怎么生成的?常量存储在哪?

11.聊聊gc算法

12.介绍一下synchronized

13.聊项目

14.有没有看过设计模式相关的书籍

15.手写设计模式,策略,模板

16.有没有看过redis相关的书籍(我答没有,然后就没问redis了)

17.聊项目

18.算法:最长重复子串

19.反问

二面

1.自我介绍

2.问项目:

(1) 代码隔离怎么做的?docker为什么能实现代码隔离?

(2) 雪花算法原理?还了解哪些分布式id生成算法?

(3) 怎么建索引的?

(4) rocketmq如何保证消费顺序?

(5) rocketmq的消费模式有哪些?

3.mysql join如何使用?

4.一条select * from table where xx的执行流程?

5.语法树长什么样?(没听懂是不是问这个?唉应该问一下的)

6.redis是如何接收和处理命令的?主要问序列化方式、然后问用过哪些序列化方式(protobuf)以及优缺点、dubbo序列化方式

7.如何序列化一个map

8.为什么要有线程池?为什么要有内存池?

9.都说进程切换代价比线程切换代价大为什么?进程切换需要切换什么?

10.concurrenthashmap和hashmap的区别?

11.hashmap时间复杂度?什么时候链表会变成红黑树?

12.hashmap的hash过程?如果让你实现一个hash算法你会怎么做?

13.hash冲突不可避免我们应该怎么减少hash冲突?

14.为什么要有JVM?

15.算法:实现一个BigInteger类,它能完成大整数加法、大整数乘法、大整数赋值、大整数比较

16.反问:感觉面试官已经不耐烦了,匆匆回答结束。

三面

1.自我介绍

2.能实习多久?

3.有没有读研的打算?为什么不读研?

4.目前面了哪些公司?为什么选择pdd?

5.对pdd的工作强度了解吗?你认为pdd为什么是这个强度?

6.写一道算法:大浮点数相减

7.说一说大学期间最有挑战的一件事

8.讲一下大学期间最能体现你技术亮点的一件事

9.反问

HR面

1.自我介绍

2.能来实习多久?base地点有要求吗?

3.面了哪些公司?为什么选择pdd?

4.对pdd了解多少?

5.有没有读研的打算?为什么不读研?

6.有没有女朋友?

7.了解pdd工作强度吗?如何看待pdd这样的工作强度?

8.大学成绩

9.如何学习后端的?

10.介绍一下项目中最有挑战最能体现你团队协作的点

11.未来校招期望薪资是多少?

12.反问

美团:

基础研发平台-信息安全部-一面

1.介绍自己

2.介绍一下登录流程(从前端到后端)

3.详细说一下qq一键登录的流程,具体到交互了些什么参数?

4.jwt和session、cookie的区别

5.jwt的缺点

6.websocket连接的建立过程,websocket用的基于tomcat的还是netty的?tomcat底层

7.拷打项目(为什么要实现心跳检测,你的websocket服务在集群模式下是否会出问题等)

8.https项目中怎么配置的,具体到参数(晕)

9.介绍一下mysql的日志文件

10.如何保证redis的高可用

11.分片集群了解吗?介绍一下

12.分片集群的机器数配置???有点忘了当时问的是什么了,没太明白

13.redis数据类型,zset底层结构,zset能存多少数据

14.float、double浮点计算为什么不准确?应该用Java的什么类

15.介绍一下线程池的原理,项目中是怎么用的?参数怎么设置?

16.继续拷打项目

17.算法:最长上升子序列 (不知道为什么当时系统跑个测试样例都超时,事后去oj平台测试AC了)

18.反问

优选事业部-研发部-一面

1.自我介绍

2.介绍一下单点登录

3.WebSocket是怎么建立的?

5.介绍一下生产者消费者模式

6.索引创建的原则?索引什么时候失效?

7.介绍一下雪花算法,雪花算法有什么缺点?还了解哪些分布式ID生成的算法?

8.介绍一下限流逻辑,如果redis挂了怎么办?有考虑过熔断降级吗?

9.介绍一下你的视频上传逻辑

10.RocketMQ如何保证数据不丢失?

11.介绍一下你的点赞逻辑

12.你是如何使用RocketMQ去进行削峰的?

13.Java是如何解决并发安全问题的?

14.介绍一下悲观锁和乐观锁的区别,以及在Java中的应用

15.介绍一下Bean的生命周期

16.介绍一下策略模式

17.bfs变种,实现一个蛇形遍历,第一层从左到右输出,第二层从右到左输出,第三层第四层等以此类推。

18.平常怎么学习一个新技术的?

19.生活中有没有什么常用的优势的东西然后怎么固化它什么之类的,这个太抽象了没怎么听懂

20.反问:部门是做什么的?实习生来了会做什么?

#来聊聊你目前的求职进展##我的求职思考##我的失利项目复盘##我的成功项目解析##牛客在线求职答疑中心#
全部评论
211之光
1 回复 分享
发布于 05-14 10:08 海南
211之光啊杨哥!
点赞 回复 分享
发布于 09-10 15:09 江西

相关推荐

11-21 11:40
已编辑
电子科技大学 Java
【更新】一面过感觉要寄,发个面经攒攒人品。整体面试体验非常好,一点八股没问,全程面试官有引导回答,不过也可能因为我是Java,公司内部是go所以没问什么八股。先聊项目,先让讲讲项目里觉得最有意思的部分,然后面试官根据项目深挖,这里就不说了,跟项目强相关。问了个高并发怎么处理,问了个不同任务怎么隔离不相互影响。然后是Linux的使用,问了最常用的命令,然后出了个需求:一个文件夹大量文件,根据文件内容重命名文件,问这里应该怎么处理。我一开始想的用shell里面的管道一套流程处理。然后提到文件名可能不在第一行,那可能用shell就比较复杂,改为用Python脚本处理。然后说如何并行修改(如果文件非常非常多)?这里没答出来,然后说假设可以并行了,怎么保证同名文件要处理,不相互覆盖。这里我答的操作前备份+加锁处理。    上面并行的问题正确答案应该是shell并行用&符号,或者用parallel这类的工具。最后是一个算法,用均匀的rand7产生均匀的rand10,这里一开始没写出来,提醒之后实现了标准版本(leetcode 470),但是这样每次生成有9/49的概率生成失败重新循环,面试官希望进一步增加效率,理论上可以趋近100%的生成成功率应该怎么做。面试官提醒可以增大分母,生成失败的可能性的分子是固定的最大不超过9,那么我只要多次调用rand7,去生成一个很大的数,这样失败的概率就是9/∞。总之问题很有引导性也很有针对性,并且没问八股,真考思维,手撕题,感觉很舒服同时又很难。
查看9道真题和解析
点赞 评论 收藏
分享
29 129 评论
分享
牛客网
牛客企业服务