双非本985硕菜鸡的2024届暑期实习总结

注:不允许直接转载。如要转载请私信我并表明转载意图和地址征得本人同意。

深夜睡不着,索性写一篇文章来总结一下今年找暑期实习的经历。

个人情况

本科就读于西南某双非,有一块ACM亚洲区域赛的铜奖,本科期间获得过国家奖学金等。

研究生就读于东部某985,期间主要从事云原生可观测性领域的工作(深度参与并与团队开源了一个开源项目,目前github star有300多)

最终结果

  1. 美团基础研发平台-操作系统组的offer(后台开发)
  2. 阿里某广告部门的offer call,等待意向中(C++开发)

背景

三月份刚好遇到项目组很忙,手头有一个比较重要的任务急需完成,因此完全没空准备刷题和八股。甚至一度忘记要找暑期实习这件事,直到看到群里和学校论坛的同学们纷纷开始找暑期实习,因此自己也利用空闲时间制作了简历,投了腾讯、美团、阿里、华为这几家公司(后来投的比较晚的百度和字节,一直连面试邀约都没收到过)。

面试经历

三月初在学校论坛遇到了前辈给内推了腾讯云,在毫无准备(没刷题没看八股)的情况下仓促展开面试……以下经历以公司为单位进行回忆。

腾讯云一面(3.10)

有两个前辈约了一个晚上的视频会议,主要就是简单聊了聊项目,然后问了一些网络问题(这个组好像是做网络的)

腾讯云二面(3.13)

很快约了二面,二面是组里的研发leader,主要针对项目细节做了一些提问。然后扔了两道算法题(目测两个mid),写完了面试官说“好的知道了”

然后第二天在内推学长那里得知挂了,二面面试官觉得方向并不够match。所幸的是因为是学长内推,很快催人释放了简历。

差不多释放完简历隔了两个小时左右,被腾讯的魔方工作室捞起来。

腾讯魔方工作室一面(3.15)

主要深挖了一些C++语法细节,比如空类占多少字节,还有一些犄角旮旯的C++操作。算法题是LRU。(由于完全没准备过刷题,写的还是有点生疏,不过最后写出来了,尴尬的是数据点通过了17/18)

腾讯魔方工作室二面(3.17)

问项目(20min)

算法题是给定一个整数n,求比n大的且相邻位不相等的最小整数(目测hard-?反正做出来了)

设计题1 实现share_ptr

设计题2 实现一个游戏全服排行榜,显示前1000名玩家,同时显示用户自己的排名,数据量在亿级。

讲讲内核定时器的实现

二面后面试官说我解决问题的能力蛮强的,但是过几天发现挂了。

腾讯云一面(3.22)

隔了几天又被腾讯云另外一个组捞起来了,面经记录如下:

描述浏览器访问百度的全过程,包括SNAT,DNAT
面试的时候网卡,问为什么会卡
输入域名如何知道端口的
TCP慢启动过程,如何做拥塞控制
TCP如何确定重传的数据包,比如发送1000个包,收到一部分ACK怎么办
客户端向服务端发起建立连接请求,如果服务端最大连接数满了,客户端会发生什么
如果curl一个服务端没有的端口,发生什么
如果一直发送数据包,用户进程不接收会发生什么,数据包会丢还是怎么样,缓冲区会溢出吗
了解tcpdump吗,tcpdump的原理是什么(从内核协议栈的角度讲)
对于netfilter IPTABLE过滤的数据包,tcpdump能否抓到,为什么(协议栈角度,答收包能,发包不能)
eBPF如何处理内核和用户态的通信
发现产生了大量的pagefault原因可能是什么
page cache什么时候会用到,具体过程
讲一讲进程线程
线程一般开销具体有多大
讲讲k8s的架构
k8s中deploy的实现原理,node挂掉会怎么办
namespace有哪些分类
k8s中为什么要有pod
ubuntu的镜像放到centos中跑为什么可以跑
两个容器进行通信,数据如何流转(从虚拟网卡聊到协议栈)
Golang中channel如果不初始化,往进写会发生什么
给了一段看不懂的Golang代码让我说啥意思
短时间内产生了大量的time wait可能是什么原因,该如何排查

感觉答得还可以吧,但是这一次泡池子泡了很久很久,一直没等到二面,差不多一两个星期流程结束的。


接下来是阿里的面试经历:三轮技术面+一轮笔试加面(因为笔试翻车只A了一道hh)+一轮HR面

一面

一个小时左右,项目差不多聊了半小时
自我介绍
介绍一下Linux内核的eBPF技术
项目为什么要用CGO,以及CGO中需要注意的细节
项目中遇到的问题(讲了多核CPU资源竞争问题、内核协议栈、容器网络场景问题等)
项目的性能优化怎么做的(从数据结构设计、指令流水线优化、减少内存拷贝方面和面试官讲了讲)
项目中的ring buffer如何解决数据的头尾跨越问题
内存页中断的时机(项目提到)
CPU线程中断的时机(讲了3种类型,主动和被动让出,顺便补充讲了Linux内核cfs调度算法)
各种C++相关知识点
写一个二分算法,4分钟写完搞定

二面

问项目(20min)
场景题

笔试加面

二面完的当天晚上进行了笔试加面,差不多就是对于C++语法的考察,然后还有算法题

三面交叉面

问项目(20min)(追问的细节也比较多,而且涉及一些极端场景怎么解决的问题)
红黑树实现
博客为啥很久没更新了
问笔试题现在做会做吗
项目做商业化时和竞争对手的优势在哪里,和各大云厂商的优势在哪里
还有一些记不清了

HR面

有些细节记不清了
做过最有成就感的事,具体说说
对导师的评价
遇到和同事的问题怎么解决
你认为自己有和别人不一样的特质吗,举例说说这种特质带给你了什么
你认为这种特质是怎么形成的
还投了哪些,选择offer时优先考虑什么
选择offer时女朋友的意见重要吗

阿里前后流程也有一个月多一点的样子,4.18晚上收到的offer call(因为4.18上午收到美团offer就去催了一下阿里)


接下来是美团,美团前前后后也经历了4场面试,第一场是3.30晚上

美团基础研发平台一面

自我介绍
围绕项目问(20min)
怎么避免内存泄漏,在生产环境中遇到了内存泄漏怎么排查
C++如何处理高并发网络场景
C++多线程怎么做
如何做压力测试,你们的项目的压力极限是多少,怎么做的
C++ emplace_back原理
map和unordered_map底层实现,区别
向vector中插入一个对象的过程
vector溢出时如何拷贝类对象
移动构造怎么写
你们的项目是如何帮助开发人员排查网络问题的
算法题:编辑距离,两个字符串,第一个字符串修改,替换,删除的代价为a,b,c,求变换到str2的最小代价

美团感觉回答的很好,算法题也做出来了,但是一直没有等到二面,一周后进入人才库了。然后进入人才库没多久,被数据库研发部分捞起来了。

数据库研发一面

一上来面试官就问“我看到你上次美团面试的评价很不错,怎么终止流程了?”,答曰:“我也不知道。”

整体聊的还不错,上来面试官让写个二叉树层序遍历,然后问了一些项目问题,内核的知识等等。最后反问环节我问面试官说感觉跟贵部门不是很match,为什么捞我。面试官回答说校招生主要看基础。不过这个面试官特别好,说我跟操作系统部门match,就把我简历推给操作系统组了。

操作系统组一面和二面

一面(4.11)(40min)
问项目(技术实现、业务场景、生产落地等)
TCP三次握手,四次挥手过程

二面(4.14)(40min)
自我介绍
问项目技术实现
项目落地遇到哪些问题
说说eBPF的缺点(堆栈、指令数限制,性能比内核模块差,可观测性相比传统APM的不足等等)
了解eBPF CO-RE吗,内核怎么做的,如果没有内核支持如何实现
了解namespace吗,有哪些namespace,分别展开讲讲
docker除了namespace和cgroup,还用了哪些技术
浏览器访问的网络行为过程
资源的同步问题怎么解决
互斥锁和自旋锁区别
毕设题目是啥,愿意跟着美团一起做毕设吗
手里有其他offer吗,选择的时候看重哪些

操作系统组果然很match,二面面试官表示我对内核eBPF技术的了解可能比他们一些同事还更深入(有点受宠若惊)。两轮面试基本100%都回答出来了,自我也感觉稳了。差不多等了两天,第二周周一的时候出现了乌龙,美团给我发感谢信了,把我吓一跳,然后去核实发现应该是海发的时候发错了。4.18上午接到美团HR电话,随后收到录用意向。



总结

总的来说,由于一直在项目组干活,全程没空准备刷题和八股,明显感觉有一些问题的细节还是生疏了(所以面试准备还是很重要),由于时间仓促被迫只能一边面试一边找感觉。其次是投的早很重要,我投的晚的字节和百度连面试官的脸都没有见到过。这里还得多多感谢经常给我答疑解惑的学长和一同找实习分享进度、经验和信息的实验室同组同学,如果没有他们我可能都意识不到要这么早开始找暑期实习。不过幸运的是结果也还算不错。写下这篇文章为自己的2023暑期实习面试画下一个句号。祝所有看到这篇文章的小伙伴也能收获自己满意的offer。#腾讯信息集散地##阿里巴巴信息集散地##美团信息集散地##你收到了团子的OC了吗##如果可以选,你最想去哪家公司#
全部评论
不建议大佬自称菜鸡
14 回复 分享
发布于 2023-04-21 04:20 天津
tql
2 回复 分享
发布于 2023-04-21 10:01 陕西
不愧是大佬校友
1 回复 分享
发布于 2023-04-20 10:59 浙江
佬,知乎刷到你了
1 回复 分享
发布于 2023-04-20 08:01 北京
老哥我也是搞云原生这块的,k8s,ebpf懂一点,能不能跟老哥交流一下啊
1 回复 分享
发布于 2023-04-19 11:58 四川
佬,美团是官网投的吗
点赞 回复 分享
发布于 2024-06-20 19:52 江苏
佬!
点赞 回复 分享
发布于 2023-09-06 10:44 北京
校友bd
点赞 回复 分享
发布于 2023-05-05 12:01 浙江
暑期实习一般要多久啊?
点赞 回复 分享
发布于 2023-05-04 10:54 陕西
阿里是阿里云吗?
点赞 回复 分享
发布于 2023-05-03 20:58 湖南
这面试题感觉好难😂
点赞 回复 分享
发布于 2023-04-21 20:56 黑龙江
同学你美团具体在哪个组呢?是弹性系统组吗?感觉我们好像是一个组诶,打算去吗?
点赞 回复 分享
发布于 2023-04-19 08:41 北京

相关推荐

05-10 00:10
中山大学 golang
发面经许愿过自我介绍进程和线程的区别?为什么线程会比线程快?进程中哪些资源是不共享的?共享的呢?线程中哪些资源是不共享的?共享的呢?为什么堆不共享,讲一下堆不共享的情况?协程知道吗?现在有100个进程,一个进程有10个线程,那么如果方法栈不共享的话是不是会有1000个方法栈,从协程的角度讲一下会有这种情况吗?讲一下为什么要三握手?http2.0和3.0的区别?http2.0和1.0的区别?讲一下Java目前版本的GC的一个过程?Redis和Mysql的区别?Redis是怎么更新的?Redis的数据如果删除失败了怎么解决?(从流程上解决)慢查询怎么找?讲一下之前实习的查询优化怎么实现的?讲一下具体怎么找到慢查询的?RESTFUL API的特点?(回答了域名是什么样的就写了什么)1t个整型数据怎么找中位数?(提示从快排的角度)算法题:LRU连续子数和答案:### **1. 进程和线程的区别?**进程是系统资源分配的最小单位,而线程是程序执行的最小单位。一个进程可以包含多个线程,线程之间共享进程的资源,比如内存空间、文件描述符等,而不同进程之间资源隔离,通信需要通过进程间通信机制。---### **2. 为什么线程会比进程快?**因为线程间切换的开销小,共享资源多,比如内存空间无需重新分配,而进程切换涉及到上下文切换、内存空间的重新加载等,代价更大。---### **3. 进程中哪些资源是不共享的?共享的呢?**不共享的有:内存地址空间、堆栈、全局变量等。共享的有:代码段、只读数据段、内核资源(如打开的文件、信号处理器)。---### **4. 线程中哪些资源是不共享的?共享的呢?**不共享的有:线程自己的栈空间、程序计数器、寄存器上下文。共享的有:进程的内存空间、文件描述符、全局变量、静态变量等。---### **5. 为什么堆不共享,讲一下堆不共享的情况?**其实堆在**线程间是共享的**,因为多个线程可以访问进程的堆区数据。但在**多进程中堆是不共享的**,每个进程有独立的虚拟地址空间,堆也各自分配,不会共享,除非通过共享内存机制显式实现。---### **6. 协程知道吗?**协程是一种用户态的轻量级线程,不依赖操作系统调度,由用户控制上下文切换。相比线程更轻,适用于大量并发但不需要多核并行的场景,比如高并发 IO 操作。---### **7. 有100个进程,每个进程10个线程,如果方法栈不共享,是不是有1000个方法栈?从协程角度讲有这种情况吗?**是的,如果线程不共享栈,那么确实会有1000个独立的栈。协程也是一样,每个协程也需要单独的栈空间,尽管更小,常见是几 KB,所以如果用协程实现相同数量,也会有近似数量的栈,只是代价更小。---### **8. 为什么要三次握手?**三次握手是为了确保双方都有收发能力:- 第一次客户端发起连接(SYN),- 第二次服务端确认并回应(SYN+ACK),- 第三次客户端再确认(ACK)。        如果没有第三次,服务端无法确认客户端是否能正常接收数据。    ---### **9. HTTP2.0和3.0的区别?**HTTP/2 使用 TCP,多路复用减少了 TCP 连接数,但仍受 TCP 队头阻塞影响;HTTP/3 基于 QUIC 协议,使用 UDP,解决了 TCP 队头阻塞问题,同时提升了连接恢复和握手效率。---### **10. HTTP2.0和1.0的区别?**HTTP/1.0 每次请求都要新建连接;HTTP/2 引入了多路复用、头部压缩、服务器推送等特性,提高了性能,且可以复用同一个 TCP 连接处理多个请求。---### **11. Java 当前版本的 GC 过程?**以 G1 GC 为例,它将堆划分为多个 Region,分代管理。先在年轻代进行 Minor GC,把对象晋升到老年代;当老年代空间不足时进行 Mixed GC,回收部分老年代;G1 的目标是低延迟,使用并发标记、并发清理等方式减少 STW 时间。---### **12. Redis 和 MySQL 的区别?**Redis 是内存数据库,读写速度快,适合缓存、排行榜等场景;MySQL 是磁盘数据库,支持复杂查询、事务等,适合数据存储场景。Redis 通常作为 MySQL 的补充,不是替代。---### **13. Redis 是怎么更新的?**通常使用 **写穿** 或 **写回** 策略。- 写穿是:写数据库后,主动更新或删除 Redis 缓存;- 写回是:先写 Redis,异步同步到数据库(一般需要消息队列保证最终一致性)。---### **14. Redis 的数据如果删除失败了怎么解决?(从流程上解决)**可以用 **延迟双删策略**:第一次删除 Redis 缓存 → 更新数据库 → 延迟一段时间后再次删除 Redis,防止并发请求中缓存被旧数据污染。同时可以通过消息队列或异步任务补偿失败的缓存删除。---### **15. 慢查询怎么找?**- 对 MySQL,可以开启 `slow_query_log`,设定阈值,日志中就能找到执行时间较长的 SQL。- 也可以用 `EXPLAIN` 或 `SHOW PROFILE` 分析执行计划,找出瓶颈。- 在 Redis 中可以使用慢查询日志 `slowlog` 命令查看。---### **16. 实习中查询优化怎么实现的?**我通过 SQL 优化 + 索引优化 + 缓存设计三方面入手:比如原来使用 `LIKE '%keyword%'` 模糊查询,改为分词索引提高命中;并对常用查询加入缓存,如 Redis + 本地缓存双层缓存机制。---### **17. 具体怎么找到慢查询的?**在 MySQL 中打开 `slow_query_log`,通过 `mysqldumpslow` 工具整理日志;配合监控工具(如阿里云 DMS、Prometheus + Grafana)定位慢 SQL,再用 `EXPLAIN` 看是否走索引,有没有全表扫描。---### **18. RESTful API 的特点?**- 使用统一的 URI 命名资源(如 `/users/123`);- 使用 HTTP 方法表达行为(GET、POST、PUT、DELETE);- 无状态性,服务端不存客户端状态;- 可缓存,提高性能;- 结构清晰,易于维护和扩展。---### **19. 1TB 整型数据怎么找中位数?(提示快排)**1TB 数据无法一次性放进内存。可以使用**外部排序算法**,或者基于**快速选择算法(QuickSelect)**的思想,通过分区,把比 pivot 小和大的数分别归类,类似快排的 partition 过程,只递归中位数所在的分区,直到找到目标位置。时间复杂度期望是 O(n)。
查看22道真题和解析
点赞 评论 收藏
分享
评论
42
151
分享

创作者周榜

更多
牛客网
牛客企业服务