我的研一 Q&A

Published
November 6, 2022
Updated
Last updated November 12, 2022
Description
关于研一学习生活的一些总结。
Progress
Author
Feng Kaiyu
💡
记录一下自己的研一生活(前前后后写了一个月)
🚧
V1.0.1
  • 增加了魏老师的著名语录
  • Elden Ring Cartoon
  • 增加《宏观笔记》链接

为什么没有大四的总结?

嗯,确实是忘写了。或者可以说:因为我一直在用 Roam Research 记录我的生活,那么把这些内容再次整理成一篇对外可见文章就显得不那么重要了。
大四的生活总体是这样的:
  • 9 月份开学:开始找实习(是的那个时候实习相对容易一些)。完成本科最后的几门实践课程。
  • 10 月直至次年 3 月开始:在字节跳动实习,担任后端研发工程师。
  • 3 月中旬开始至 6 月:受学校实验室的任务指派,到福建莆田开发项目。
  • 6 月到 7 月:完成毕设任务。
  • 7 月到 9 月:毕业放假回家。因为提前进实验室的缘故,假期的一部分时间就用来继续未完成项目,其余的学习时间在为研究生做准备。

研一的整体目标完成的如何了?

由于我在大四开始,已经在采用类似 OKR 的计划方式了;因此研一一年的整体目标主要是通过几个阶段的 OKR 来体现的。我喜欢将这些阶段称为 Roadmaps。(后续可能会写一篇博客来描述我的任务管理实践)
  1. 2021-09-14--2022-02-01 研究生一年级,在网络空间安全学院做隐私保护的联邦学习方向。研一需要尽量将专业课修完,因此比较忙碌。
  1. 2022-02-01--2022-03-01 研究生一年级的寒假,放弃了之前的联邦学习方向,转做区块链方向。假期的时候需要推进实验室的某项目,其余时间可以做自己的事情。
  1. 2022-03-01--2022-05-25 下半学期开学了。除了上课以外,其他情况和上个阶段基本相同。
  1. 2022-05-26--2022-09-01 因为北京疫情原因,不得不居家学习。一方面,实验室项目 B 接近尾声,可以开启小论文的准备;另一方面,很长一段时间全城健身房停业,我也无法保持低碳水的饮食。
Roadmaps
目标
完成情况
1
机器学习入门
很难评价
1 — 3
正常完成课内任务,学到知识
完成
1 — 4
推进实验项目开发
完成
1 — 4
正常安排健身
完成
1 — 4
拓展其他计算机方向兴趣,包括编译器和其他开源项目
编译器的东西其实学的很慢,找不到什么方向;其他的开源项目倒是做了一些
1 — 4
持续关注市场,学一些理财的东西
接触了一些方法论的东西,但是还是没有系统的学习
1 — 4
英语学习,包括背单词、听 podcast、学语法、学口语。
算是在断断续续地坚持着,但是语言这种事情、很难在短时间内看到明显进步
4
针对 Web3/分布式系统进行学习,接触到产业界和学术界最新的技术
主要看了一些 Substrate 的源码,其他的基本是看论文。感觉还不够多
Roam Research 中的 Roadmaps
Roam Research 中的 Roadmaps

研一的生活是怎样的?

上课

上半学期,尤其是课多的时候,那种奔波的感觉和本科的时候是有点类似的——需要时时刻刻惦记着时间,往返于各个教室。学习新的知识,准备作业和考试。但是,很多曾经的期待感已经没有那么强了。因为对于研究生的课程,所有人都会说“过了就行”;研究生们已经学会了“厚脸皮”、”迟到早退”和”应付应付完事“。而且由于学生们的学习基础和能力实际上相差非常大,很多课程内容已经不能满足部分学生的需要——有意思的课变少了。
但是我依然会尽量像本科时一样,坐在教室的前排表示对老师的尊重。
除了少数的硬核课程以外,大部分的课程其实已经失去其深度了;它们更多是告诉我这些领域都“有什么”。
好在,计算机专业有很多经典的公开课 😉。

健身

研一这段时间是我健身的第二个年头。大量的课内学业和课外的实验室工作,让我不得不挤出时间来去健身房。让我印象比较深的就是,我有几次硬生生挤出午休后的时间去健身房锻炼,以至于不得不穿着健身的衣服去教室。(我不喜欢在晚上去,因为人多、状态也不好)
总的来说进步没有第一年那么明显了。卧推卡在 1 倍体重上,深蹲在 1.3 倍体重。但是令人开心的是,我开始尝试练习举重了。在练习了半年后,可以高翻一倍体重。
对于我来说,健身是同时消耗精神和气力的,但是它可以使你暂时不用去想那些烦恼的事情。

组内项目与研究方向

上半学期我的主要方向其实是联邦学习——那个时候我还认为自己会在机器学习的道路上走下去。所以那时我一边看论文,一边在学机器学习的理论课程。当时一直在刷 【机器学习】【白板推导系列】【合集 1~33】_哔哩哔哩_bilibili ,感觉还是挺有收获的。
不过在研一期间我做的两个横向课题 A 和 B 都是区块链方向的,再加上我一直对分布式算法、工程方面更感兴趣一些,于是我在研一下的时候转为区块链共识算法的研究方向。

课外学习

嗯,这个名字怪怪的。其实就是指和计算机相关的,非课内或者组内任务的自学内容。
基本上是编译器、区块链和 LaTeX 。
编译器的学习实际上是希望把函数式编程、虚拟机、Rust 的这些技术串联起来。
区块链是我研究方向的应用场景之一;加之 2021 是区块链热读非常高的一年。
我在维护的北理工 LaTeX 毕设模板需要扩充模板、增加功能并对底层重写。这些我在
BIThesis 的目标和愿景,现状和展望
里有详细描述。

抽时间去找女朋友玩

🥰其实这件事情对我来说是最重要的。

和想象中的研究生生活有什么不一样?

可能比我想象的更加单调孤独一些。也是受到疫情的影响,学生的生活范围被约束在了一个很小的圈子里面。而像我这样鲜有社交活动的同学,就更有大把的独处时光。而在课堂中,同学们已经不像原来那样喜欢认识新朋友了,只是各自听着课。而实验室的工作让我们更多是处于一种”同事“的关系。
另一个感觉就是,三年的时光比我之前想象中的要紧张很多。研一主要在上课、做项目;研二开始深入研究并做论文;研三则已经要开始实习了。

课内都学到了什么?

emmm 说实话,感觉课程给我带来的新知识已经很少了。大部分知识还是依靠自己探索学习而来的。
 
不过在上班学期魏老师的《矩阵分析》仍可以称得上是一门好课。听课时同学们专注的神情,常常让我感觉回到了本科的课堂。
- 例子比定理更重要 - 出去之后千万别跟别人说自己会矩阵分析 ——魏老师
《矩阵分析》是本科阶段《线性代数》的后置课程;也是《近世代数》等(我估计毕生都用不到的)课程的前置课程。《矩阵分析》首先带领我们回顾了之前学习的矩阵性质以及特征值、特征向量和 Jordan 标准型。在有了描述矩阵性质的工具以后,我们则可以研究一些特殊的矩阵以及它们的相互组合和分解。然后,通过与代数工具结合,我们得到了矩阵序列、矩阵极限、矩阵函数以及函数矩阵。
这门课程配合上著名的 MIT 线性代数 公开课也是极好的。(如果我没记错的话,老爷子近年又录了一套新的视频)
为了备考《矩阵分析》而整理的笔记
为了备考《矩阵分析》而整理的笔记
 
张老师的《软件体系结构原理与方法》还是讲到了一些关于 Serverless 和微服务的东西。在大作业上,老师也没有过度限制使用的语言和框架。最后我们使用 go-macro 框架糊了一个微服务架构,作为弹幕系统的后端。其实这是个挺冒险的方式,尽管我会写 golang,但是其实组员对这方面并没有太多前置经验;且 go-macro 这个框架文档极少、(大)更新迅速。
 
徐老师的《安全协议原理》讲授的内容还是很新颖的,课程中提到的很多密码学技术都是目前该领域研究的热点。这个课程的小作业要求我们介绍一篇与协议相关的论文,我选择了 Wireguard 的论文《WireGuard: Next Generation Kernel Network Tunnel》。我用 Slidev 制作了一个演示文稿 ,并用 完成了论文解读。(是的,我就是不爱用 Office)
notion image
 
在彭老师的《系统科学原理与工程》上,我们被要求使用博弈论或者线性规划的模型解决一个实际问题。我最后选择了从博弈论角度建模并讨论了“尽管自私挖矿攻击存在,但是为什么很难发生”这一问题;并用 Beamer 做了演示文稿。
解释自私挖矿攻击时所作的图
解释自私挖矿攻击时所作的图

还有做了其他什么事情吗?

在网协已经第五年了。作为一名已经退休的成员。这学期的主要任务就是维护 BIThesis 这个项目。其余的时间我会捣鼓捣鼓 K3s,不过除了进行了一些尝试——比如
在 K3s 中配置 Traefik HTTPS 泛域名证书
在 Kubernetes 环境中快速配置 EFK
——之外,没有太多进展。
BIThesis 在这一年里更新了很多内容:
  • 增加了 Beamer 模板、本科生全英文专业模板、研究生学位论文模板的样式。
  • 使用 重写了所有代码,并扩充了手册。
寒假的时候和女朋友自驾去滑雪了,然后开始尝试单板。感觉还是非常有意思的。目前大概会”落叶飘“了。
今年暑假的时候,我换了新的电脑——联想 y9000p 2022(RTX3060)——所以有机会打游戏了。很开心能游玩《无主之地3》、《刺客信条:奥德赛》、《巫师3》和《艾尔登法环》。我非常喜欢后两个作品,如果有机会,我打算看一下《The Witcher》的英译版。
《巫师3》我主要是传统的狼套;然后走的 Yennefer 的感情线,选择让 Siri 成为一名猎魔人。两个 DLC《石之心》和《血与酒》也都按照顺序完成了。目前一周目只剩下陶森特公国有一些地方没有探索。
《艾尔登法环》前期走的是法术流,后来跑酷拿到了夜与火之剑开始转盾剑流。后期去火山官邸打败拉卡德拿到亵渎圣剑后,就转成信感流+亵渎圣剑推图了。最后达成的星星时代的结局。但是其他的支线,除了白面具(鲜血王朝)的部分,我都基本推到底了。
Video preview
之后有机会的话,打算玩一下《生化奇兵》系列。(估计得等到论文完稿之后了)

这一年有读什么书吗?

把 Sidney Sheldon 的《The Naked Face》读完了。
这是我头一次读全英文的小说。一开始看起来还是比较吃力的,尤其是对情节不熟悉的时候,常常把握不到各个人物的关系。然后,随着冲突和疑问的加深,剧情本身就开始吸引着我读下去。以至于到后来,我会恨不得能一口气将它读完。
剩下的就是专业相关的书和文章了:上半学年看过一部分西瓜书、《The Element of Statistical Learning》和《Pattern Recognition and Machine Learning》。下半学期基本都是看各种各样的论文,主要是共识算法、区块链等。

课外都做了什么,有什么收获?

LaTeX:为了维护 BIThesis 以及进行学术写作,我更深入地学习了 LaTeX 的开发。主要是 expl3、ctex、biblatex 以及其他常用包的使用,以及学术排版的一些「规范」。我花了很多时间研究学校的毕设模板格式要求,并通过 expl3 编程进行了相应实现。
Nexon:是我正在维护的一个博客框架项目,可以直接将 Notion 中的一个 database 映射为博客网站。主要是 Next.js + Tailwindcss,使用了 Vecel 的 托管服务。(这不是我原创的项目,只是一个已有项目的改进版)
Substrate:是一个致力于跨链交互的区块链系统和框架。我读了很多它的源码,也在其中实现了 PBFT 和 Tendermint 的共识算法。同时,我的 Rust、异步编程能力也得到了增长。
Kubernetes:对 K3s 的运维有了进一步了解(可惜 Cilium 没配置成功),尤其是持久化的部分。
Golang: 写了点微服务(作为课程大作业)。还用来做 6.824 的 Raft 作业。
Neovim+Lua:切换到了全 Lua 的配置,所以顺便学了学 Lua。
Crafting Interpreters:一个从头实现解释器的课程,其使用语言 Lox 的设计非常像 Lua。
Linux:变成了坚定的 pop-shell 用户,并开始使用 wayland。之后可能打算换到 Hyprland。
My Workflow:基本放弃了 Zettelkasten 和 Resonance Calendar 的笔记方式,以节约时间。

这学年的理财体验咋样?

很有趣,上学年的经济形式基本是一个盛极转衰的过程,寒假前后基本算是美联储加息周期开始的分水岭。
前半学期时,加息周期还没有开始,因此这时候我投资的美股和其他 QDII 都有比较可观的回报率。然后因为以前吃过这个教训,所以我在春节前就基本把钱放到债券里了。没想到节后美联储开始加息,投资市场的整体情绪都很低迷,这样看来我的操作也算歪打正着了。(尤其是一年前被炒成神话的消费板块和医疗板块)所以相比于大盘 30% 的回撤,我的损失在 3% 左右。
其实从去年就一直在关注新能源板块(特别是比亚迪),可惜直到现在涨起来了,也没真正做投资买入。另一个我没有意识到的地方是:随着乌俄战争进行,能源问题使得能源板块异军突起。
另一个收获就是:定投不再是我的最佳选择了。先不说这种行为趋近于描边,定投本身并没有说清楚最关键的问题:”什么时候卖出?“。实际上,我认为定投属于网格策略的一种简化行为,如果有条件的话,还是尽量采用网格策略比较好。
另外我目睹了一件加密货币市场发生的黑天鹅事件:LUNA 的死亡螺旋。拓展阅读:LUNA为什么会陷入死亡螺旋?|Anchor_新浪财经_新浪网。实际上我之前在研究算法稳定币的模型时,就预料到这个情况了。只是没想到,对于这个市值曾经一度跻身前十的加密货币来说,这一天来的如此之快。果真是黑暗森林啊!

一些时间节点?

(这一段内容好像没什么意义)
  • 这一年陪着女朋友去不同的地方玩。
  • 2021-11-12:可以高翻 50kg 了。过了两周,硬拉了 100 kg。
  • 2021-12-27:阴差阳错地抢到了学校的九价疫苗(后来当然是没打成)。
  • 2022-03-11:博客重构。
  • 2022-04-28:写了很长时间的共识算法终于可以编译了。
  • 2022-06-01:新的电脑(拯救者 y9000p 2022)到了!(当然,事后看,也带给我了很多「折磨」)
还有很多但是懒得写了XD

如何评价自己的研一生活?

尽管时长压力还是蛮大的,情绪也起起落落;但总体来说,我的研一度过的还是很充实和开心的。
这一年最大的收获就是学会照顾自己:照顾自己的情绪和生活
比如:
  • 每顿饭怎么搭配饮食才比较健康又能满足自己的喜好?
  • 今天压力大情绪低落,做什么能缓解以下?
  • 下次出学校去哪里玩?
  • 明天天气怎么样,要不要增减衣服、要不要带伞?
  • 今天要不要洗澡,要不要换衣服,要不要洗衣服?
诚然,我们可以在遇到问题的时候再想办法;但是往往就会付出代价——可能在降温季节中,一天没有注意天气就会换上感冒——进而影响接下来一周的学习生活安排。
 
其实研究生的生活很像是一个打工人——去实验室上班,给导师打工。因此学术压力和工作压力也非常相似。加之我又是一个非常多虑的人,因此以至于研一有一段时间掉头发特别厉害。
解决压力还是要从解决问题本身入手:实际上任何问题都可以通过“分解问题”和“降低预期”来解决。通过“分解问题”,我们可以找到下一步——比如下一个三十分钟——能着手进行的事情。而最开始的预期往往会因为我们对事物的探寻的深入而变得不再合理,这时候就可以考虑“降低预期”——是的,我认为这就是“We aim above the mark to hit the mark”的过程。

读不读博?

不读博。要回答这个问题,我需要先说明一下我为什么读研究生,为什么要读学硕。
首先从大四的我的视角来看:
  • 综合排名在专业第五,继续深造是必然。
  • 我本科做学术研究很少,因此我很想试一试。
  • 但是相对于读研来说,读博是必须要拿出成果的,这对于当时的我来说是毫无把握的。
因此,对于我来说最佳的选项是读学硕:进可攻、退可守
当然,我也没有料到在读研仅一年时间内,很多前提就改变了(虽然我一直明白有这种可能):
  • 就业形势严峻了很多
  • 专硕扩招(主要因为硕士研究生的地位逐渐变成了原来的大学生)
但即便如此,对于我来说,我很满意自己的这个选择。(当然我会好奇:如果我去别的学校读硕士,又会是怎样呢?)研一上完课、完成了实验室项目,我已经学了很多知识。而研二我有一整年时间来继续深入自己的兴趣所在——这就足够了。
相应的,目前不考虑读博——至少是不会考虑国内读博——的原因也很明确:
  • 我的研究方向主要还是由国外的工业界和学术界在引领。
  • 我很喜欢做工程、写代码,而留在校园则意味付出更多的机会成本。
  • 大三我选择保研本校的理由如今已经不再适用。
  • 不读博不代表放弃研究,更不代表放弃学习。更何况计算机本身就是个自学的学科。
  • 需要挣钱养老婆啦!花自己的钱才是最没有负担的。
所以,我目前不选择读博。如果有机会,可以考虑以后出国。

对未来有什么计划?

  • 完成毕业要求的小论文。
  • 继续学习英语,尤其是口语和写作。
  • 准备找工作。
 

以下问题收集自 pyq :

「对国内当前的经济形势和就业形势的看法?」

这个问题的背景应该是:美联储加息,全球经济衰退 。
经济形式方面不敢发表看法,只好摘录一段财经分析:
我国坚持“以我为主”的独立货币政策,美国加息,我们降息;又要让人民币汇率尽可能稳定,以稳定外资信心;这就势必要更严格的外汇管制,副作用是延缓了人民币国际化的进程,属于把眼前的问题往后推。
计算机方向的话,就业形式较几年前当然是严峻很多了。但是其实,这也就是把前几年的水挤出来了:不可能存在这样一种方向,门槛低、赚钱多并且工作稳定——这个不可能三角你至少要放弃一个。
当然,国内的计算机就业相较于发达国家的计算机就业,竞争更大、收入更低。所以不少人建议去国外找相关工作我认为还是有道理的。
这个同学的维护的知识库我非常推荐:

「按照现在的就业环境,读研的性价比(相比本科)还高吗?」

如果读完研找不到工作,那我觉得,本科就工作的我被公司裁掉的可能性也挺大的。
仅仅是从性价比的角度来说,读研也肯定是占优的。

「未来的职业规划?」

目前有几种规划:
一、非常理想的情况下,想在国外的头部区块链公司找一个相关的远程工作(不是外包!),满足 WLB 、开源工作和我的专业方向。
难点是:
  • 这种方法鲜有人尝试过,我目前没有找到能参考的经验。可能这种理想的 remote jobs 并不存在。
  • 而且这样会浪费应届生的名额,一旦此路不通再想尝试其他方式,就不能算作应届生了。风险很高。
二、找一个开源公司(中厂?),能写 Rust、能用上我的共识算法的专业知识。
虽然也大概率是 996 吧,但是好歹还有快乐。
三、大厂 996,滚回去写后端。
有钱也行。
另外,也要保持学习,为成为独立开发者或者创业者的机会做准备。