图片

本文来自一名南邮大三学生的学习经验总结贴,写在拿到米哈游实习offer之际。谁说学历一般就不能进大厂?谁说学历一般就不能连续拿3个实习offer?有志者事竟成,希望能够学弟学妹们带来一些收获、引发一些思考。

On The Way

比起过往,前方更值得期待。——致过去的二十年

很长时间没有更新博客了,甚至在 兄一面拷打我的时候,才想起来我曾经有个博客 :d:,也写了几篇自己的拙见,挂在上面,无人问津。其实很早之前就有写下此篇的想法,有时候在路上走着走着,脑海里也会蹦出几个词,几条句子,但是苦于自驱力常常掉线,一直没能写下来。直到夏天哥这次邀请,才仿佛下定决心一般,决定把这些写下来。

1. 一棵树上,没有两片相同的叶子

应该是小学,老师就讲过这句话,其实现在想想,或许它说的也不只是树叶。每个人的人生轨迹各不相同,付出的努力、遇到的时机、采取的策略都不一样,似乎也没有哪位成功人士的经验可以照搬,(倘若可以照搬,那必然就会内卷),所以我其实并不想总结那些学习的方法,推荐的赛道,奔跑的方向,可能此篇给不到读者实质上的帮助,我只想分享一些我过去的经历,我的一些拙见,只希冀能引起各位的小小共鸣,不求其他。

2. 一个小镇做题家的前18年

一个江苏南通小乡村的少年,从小就被教育,要努力,考上一所好大学,通过读书来改变命运。诚然,这句话可能听了不下千百遍,在踏入大学校门前,我甚至对此句深信不疑。直到大一的时候,接触到各种形形色色的竞赛,我还记得当初打的第一场,是在21年国庆期间,参加了学校举办的一个信息安全类的新生赛:。当时懵懵懂懂,听说面向零基础的新同学,就报名参加了。也就是在那次,在进校园前,接触到了 这个 linux 发行版。不过那次比赛,也是我诟病小镇做题家的开端,见识到了人与人之间的差距,长达一个月的比赛后,榜一大哥 winmt,得分是我的七倍,后来听说人家很早就开始接触二进制安全,高中时精通c、和汇编,大一打入信安国赛,大二给各大固件厂商挖洞赢奖金,大三考研……

哎,普通人无法理解王的世界。

现在我都不敢想,倘若一个人在大学前,若是有机会接触到除了学科教学之外的其他东西,那该有多幸福。不过在那三年,不停的学习,考试,复盘,混杂着青春的冲动和懵懂,交织着泪水和感动的高中生活,那些笔尖摩挲在纸面的日子,那些不经意的擦肩,那些感情的悸动应当是一个男孩子最好的割礼。

3. 迷茫的大学生活

昨夜西风凋碧树

还记得刚入大学的时候,总是喜欢在303门口阳台望出去,颇有一种“独上高楼,望尽天涯路“的感觉。

事情的转折发生在2023年暑假,大概六月份吧,当时参加华为的软件精英挑战赛侥幸进了复赛,在比赛结束后听南研所的大佬讲解产品线时,了解到了 Kmesh 这样的一个服务治理框架,当时听到里面用了 eBPF 去在用户态魔改内核(虽然那时候并不知道内核是啥)然后感觉好牛逼啊,在南研所听吴学长给我们一顿介绍这样的一个社区,以及它为欧拉操作系统做出的贡献,是如何如何在软件层面突破硬件的封锁,听得我热血澎湃,后来跟吴学长交流,如何入门 eBPF 这玩意,他建议我先去打好基础,把操作系统学好,看看陈莉君教授的书。

后来呢我就在网上查到了陈莉君教授,西邮的一位,大名鼎鼎的《深入分析Linux内核源代码》就是她组织编写的 ::,同时还查到了她的邮箱,初生牛犊不怕虎嘛,我就用学校邮箱给人家发邮件,我给他找出来了,贴在下面:

尊敬的陈教授,

您好,我是南邮的一名大二学生,机缘巧合下接触到了当下的 eBPF技术,对其十分感兴趣,但又苦于不知从何处入手。目前我只阅读了《Linux内核观测技术BPF》这本书,了解了BPF技术的基本原理,但对里面所列出的许多细碎的概念仍然不甚理解。请问我应该是先去学习Linux内核有关的内容吗?但是Linux内核源码就像一座大山一样令人望而生畏。

另外在语言方面,我比较熟悉Go语言,也为Go开源了eBPF的扩展,但是有不少人推荐使用Rust去编写eBPF模块,因为它进入了Linux主线,对不同的语言,又该如何进行取舍呢?

期待您的回信,感谢!

当时我觉得,这封邮件可能会被归到垃圾邮件里面吧,可能陈教授那么忙muduo,没时间仔细去看或者回复一些啥的,我觉得平白无故这样发出去就和投针入海一般,杳无音讯,但是我意外的是,第二天,回信就来了:::

Linux内核是基础,eBPF是基于Linux内核的。

Linux内核的学习路线比较长,我们这边大家的路线是,先打算法基础,至少刷300到以上的算法题,也就是,写代码有了感觉,然后,把操作系统真像还原这本书上的代码复现,一步一步搭建自己的操作系统,这些基础有了后,实现.4,对Linux内核就有了真切的认识了,至于eBPF,就觉得很简单了。如果仅仅学eBPF,也可以,但没有比较厚 的基础,内心会有一种空洞感,你现在是大二,打基础尤为重要,可以加老师微信.

咋讲呢,之前接触到的几乎全是应用层的东西,对下面的操作系统和它统领的硬件大军知之甚少,这封邮件,也是一个契机,打开了嵌入式的一扇小门。

4. 重新审视自己

同样是那个暑假前,我在准备中科院开源之夏(OSPP)的活动,那也是我真正意义上接触开源这个事业,虽然最后没有入选开源之夏,不过最后还是被沈浪邀请,作为一个实习生参与到了他的开源项目mogan里面。

于是呢,一整个暑假,白天线上上班忙开源,晚上跟着真象还原学操作系统。慢慢的,才开始有了一些写代码的感觉。

记得蛮清楚,学到中断的时候,当时陈教授问我”中断是什么?“,我支支吾吾不知如何作答,只知道”中断是沟通操作系统和外设的桥梁“,现在想想这个答案似乎宽泛的可笑,后来陈教授跟我说,硬件不难,这是学习内核的瓶颈,克服它才能更进一步。那时候我才开始思考,我是只能写一个简单的网页?还是一个app?好吧,可能是志不在此,后来学了一段时间的操作系统,也在白天的实习中对CI/CD有了点了解。

九月份,改完了简历,印象蛮深刻,当时简历上写的一套特别乱,什么C++、Go都混在一块,把自己做过的,听说过的都写上去了,然后一波投简历拿到了南京这边两家公司的offer,还有上海力扣的,哈哈。

当时想法很简单嘛,一般公司应该不太愿意招研发实习生,招进去看懂项目体系就估计要两个月,才能开始做需求,所以目标都放在了测试开发上,南京的两家分别是云豹科技和凯易迅,都是线下面试。

先去的是凯易迅,可能算是这辈子第一次正经找工作面试,两位面试官很和蔼,面评记录超级详细,我感觉都要比我自己简历上面写的多了,从linux基础命令问到操作系统,计网,甚至gcc编译参数,都问到了,印象中最离谱的一题是输出文件的第二行和第四行到控制台,哈哈,没答上来似乎也不影响,(感觉是活跃气氛出的题?),后来入职了才知道,两位面试官其中一位是北大毕业,在公司已经呆了十三年,元老级大神,另一位参与开发了公司的编译框架,包了一层gcc和git,看着就复杂。云豹那场印象不是很清楚了,去了calix,就不过多赘述了。

后来进了组才发现是开发组,好像还是蛮核心的,入职前给我预期分配的任务是做个组内的测试平台,后来到我离职也没有着手做这个,入职一周配好了环境,就交给了我一块新板子让我做一下uboot的移植,说实话,当时的我小白的连串口是什么都不知道,也不知道怎么配ip地址和子网,更不知道怎么烧写image到硬件上,头大,好在同事手把手教,(跪谢~)后来做了个uboot,顺道梳理了一波uboot启动流程,也对系统上电之后执行的玩意,有了更深的了解,后来过了两周,接了一个超大的活儿muduo,一直做到离职。

涉及到的技术难点对我来说还是蛮多的,课题大概是“通过ploam消息去重启onu”,做的是大的通信标准下面的一个很小很小的细节,大概有几个难点:

找到网卡驱动里面收发数据包的地方,在合适的位置拿到某个字段为特定值的数据包

在sys或proc文件系统创建entry保存这个数据包

在用户态起一个线程去处理这个数据包,根据后面不同的后缀做出不同的行为

大概就是这样,难在要让这一个标准支持全公司大概十几种型号的产品,二层设备的测试组蛮严格,对代码质量要求挺高。这个任务我一直干了三个月,一直到离职才差不多干完,这个活儿可能带给我的不只是驱动代码的调试,我感觉对实习生来说更重要的是项目开发的流程,从一开始的需求梳理到需求文档建立,代码编写和单元测试,再推给测试组进行功能测试同时跟进处理bug,保证自己功能没问题的同时又不影响其他原有功能,受益匪浅。可能这个例子也恰恰说明,比职位重要的是组,一个好的组,一位好能让一个实习生成长的飞快。至于一开始的测开 or 开发,这个时候都不太重要了。

三月中旬从 Calix 离职,本来是打算收心考研,但是接到了面试,就去试一试嘛,职位也是测试实习生,一面围绕实习问了许多,特别是驱动那一块,问了网络包从网卡读到然后解包的全过程,真的汗流浃背,了解到也是硬件组;二面没有拷打我,放了我一马,然后推进hr面拿offer就来了现在的米哈游,不过进来感觉自己也是个开发,帮我老板分摊活儿,上周末把整个hub上应用层代码都交给我做,又汗流浃背了,(问他我面的时候不是“测试实习生”么……结果人说做点开发,简历上不是更加好写吗?::)

今天摸了一天鱼,也突然好迷茫未来的发展方向,打开boss看了一眼驱动开发都感觉要求好高,嵌入式也感觉自己经验不足,如果要走cpp或者java貌似也没有十分对口的经验,难绷。可能人还是不能摸太多鱼。

走一步看一步了,《Linux 》正在慢慢啃,新买的《muduo C++多线程编程》也到了,走在路上,应该就不会迷茫,回望过去,起码我应该能讲清楚中断是个啥了哈哈:yum:。

5. 走在路上,才能遇到同频的人

也是自打我实习开始,才看得到外面的人有多厉害,从暑期一起参与开源的科大少年班的天才少年,北邮和北理工C++大师,总是不断在让我认识到自己的“菜”,“吾日三省吾身“我是做不到了,不过我认为,一个人的自驱力始终是有限,需要遇到更好的人,才能驱动我们奔向更好的自己。

河山大好,出去走走。焦虑未来毫无意义,经济下行是趋势,做好自己就够了,找不到工作就去睡桥洞(bushi,能有什么大不了::。做个开朗小孩,大家共勉~

如果觉得有用的话,点赞+在看+收藏,一键三连防止走丢哇~


限时特惠:
本站持续每日更新海量各大内部创业课程,一年会员仅需要98元,全站资源免费下载
点击查看详情

站长微信:Jiucxh

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注