RTM的家里蹲流水账

08/15/2020    Trush

3月

中旬,从B站离职了,现在想来很后悔,非常非常后悔。
还梦想进米哈游呢,感觉这辈子都没机会。
准备专升本的毕业论文/项目/答辩,还有学位考的数据结构/操作系统/CET4。
还没推迟的考试时间是5月中旬,CET4是6月。
每天睡到自然醒,背操作系统的教材,写点数据结构的算法练习,看CET4的历年考卷。

4月

依然是每天睡到自然醒,背操作系统的教材,写点数据结构的算法练习,看CET4的历年考卷,然后就了解到了考试全部延迟。
开始留心招聘网站,开放了简历,但访问者寥寥无几,也没有投递邀约,有点焦虑。
开始每天都去外面散步,逛gai,可以放空大脑,逃避,不过还是会一边逛一边刷招聘网站。
逛gai的时间太长,学习效率堪忧。
终于收到通知,远程答辩的时间确定了。

5月

因为有个目标了,焦虑减轻了一点,review了毕设项目,做PPT之类,顺带学习。
终于熬到中旬,远程答辩,只给5分钟的时间,草草的演示项目了事,心态马上崩了。
疯狂刷招聘网站,同时询问B站的同事有没有机会回去,那时已经了解到,很多游戏公司那时只招全日制本科,一些猎头也是知道了专升本的事实后就兴趣缺缺,何况我没有正式毕业,没有文件证明,小小带专狗,可笑可笑。
依然每天逛gai。

6月

心态崩了但日子还是得过,每天睡到自然醒,操作系统的考点背的很熟了,精力放在了CET4的历年考卷,一眼看上去都是不认识的单词,一套卷子就要记录好几页的生词。
招聘网站依然在刷,也认识到专升本在找工作上没什么卵用的现实,却不是非常后悔两年半的时间,毕竟还是学到了点东西,也可以和不明真相的人装逼,阿拉是上海交大毕业的。
答辩结果良,算是一桩事情结束了,心态在崩的基础上稍微好受了一点点。
开始准备面试相关,刷点面试题,并开始做leetcode。
终于有面试的机会了,某族的java,和游某的golang,golang我也只是稍微用过,没啥底气。
依然每天逛gai。

7月

基本确定了回B站无望,原因依然是非全日制本科,其他奇奇怪怪的原因像不太喜欢回流啦,要看前领导评价啦,做宅男码农久了,这方面单纯。
急的开了Linkedin,起初有猎头加我,但得知专升本后就枪毙了,心态崩了。
于是特地简介中加了专升本选手,果然加我的猎头就少了,偶尔也有加我的,我就说专升本选手,抱歉
真的很抱歉。

某族

某族算是个游戏大厂了,漕河泾有一栋楼的,但业内名声不怎么样。
先笔试后面试,笔试题都是些基础,感觉人家都不看的。
用kotlin + AKKA。

一面

面试八股文,hashmap那一套,既然说到hashmap了,红黑树和一般平衡树的区别是什么? 说用过golang,golang用起来感受如何,和java比起来怎样,经常用到goroutine吧,mpg模型了解吗?
netty用的是几版本,之前的版本用过吗,区别是什么? 回家等消息吧。

二面

还能有二面我是想不到的,可能是真的缺工具人,问的问题都有点…
几种gc算法。 怎么判断碰撞?数学好吗,线性代数了解吗? 有哪些因素影响mysql查询速度? varchar原理,假如存个json,你会设多大? 爱玩游戏吗?
摇人。
之后就是废废话话的三面四面了,愿意加班吗?

某族好像确实有点恐怖,所以给了offer但没去,继续焦虑。

游某

去了一看挂的牌子和jd描述的公司名都不一样…当时就兴趣缺缺,他们是做微信小游戏的。
不过golang水平确实也不怎么样,感觉面试无望…
数据结构堆。
golang的sort。
chan的用法。
算法题,上台阶的方法有两种,一次上一阶或一次上两阶,N阶有多少种上法。
有一点好,就是不怎么加班,说一周最多加三次。
也很神奇的给offer了,当时以没准备好上班拒绝了,毕竟心态崩了,确实没准备好,其实心里还想着回B站呢。

某龙

我其实挺中意这个小公司的…
也用AKKA。

电话面试

面试八股文之hashmap。
java类加载顺序。
cms gc步骤。
mysql索引B+树。
粘包拆包问题。
谜之mysql回表。
谜之netty拥塞控制。
懂前端吗,vue。
来我们这面谈吧。

现场面试

谈谈你之前项目的服务器架构(骗方案么)。
手撸算法题

       1
     /   \
    2     3
   / \   / \
  4   5 6   7
 /    
8
如何输出87654321

写了个层序遍历但左右顺序颠倒,存在栈中,输出就是结果了。
给我当场验算,有点恐怖。
会vue吗。
回家等消息吧。

这是我第一次在面试中做出来算法题,很遗憾这家后面没消息了,他们好像急需个会vue的写GM平台。

骏某

这家在面试中没学到啥。
他们急需个资深做技能经验的,已经没有时间去带新人,大家心里都懂,就草草了事了。
唯一有用的信息是他们尝试了ZGC。

回老家

于是回老家露了个脸,美名其曰放松心情,谁知道是放松还是更焦虑了呢,精神文明建设匮乏,觉得没啥区别。
峰回路转,网友联系了我,问我有没有兴趣去他们公司,虽然不是游戏行业,但离住的地方近啊,就同意了。
我当年去上海闯荡,就借住的这个网友家,现在想来,真是贵人。
其实这家公司的位置也算是个CBD,逛gai的时候,看到这些CBD和朝九晚五不加班的精英们,都要念《浮夸》中的歌词:那时候我含泪发誓,各位必须看到我。
做这行哪有朝九晚五呢,这家是朝十晚九的。

某某

golang,小公司,微信小游戏,本来打算权当增加面试经验的,没想到深深的打击了我。

一个websocket接口无响应,cpu内存都正常,怎么排查问题。
问一段代码的结果

arr := make([]int, 0)
func add(slice []int) {
   arr = append(slice, 1)
}

print(len(arr))

不确定还扯了一堆有的没的,心态当场爆炸…
实现个责任链模式。
netty select模型(也可能是reactor模型,没听清)。
redis分页。
linux查询某端口连接数。
redis pipeline与事务区别。
任务与成就系统的数据结构设计。
订单表orders有uid/oid/date/money,限定用一句sql查出用户今天充了多少昨天充了多少总共充了多少。
“多久没写sql啦?”
“你在B站做的项目是什么,制作人是谁?”
心态崩了,感觉以后不会再投golang服务器的岗位了。
但就这样还给offer了,就离谱,感觉不能胜任,拒了。

现在的公司

不是做游戏的了,从此变成微服务curd仔,不过确实各种都不熟悉,但进来了才知道,用的也不是流行的微服务框架,都要现学,所以面试时也没多问这方面的。

现场面试

第二个面试的人是大佬,慌得要死,于是介绍自己说很多很多,挤压他提问的时间。
提到自己做过分库分表,说了下分库分表方案。
面试八股文之hashmap。
cms gc步骤。
提到其实很多问题,只要用了最新的接口,换最新的垃圾收集器就能解决。
算法题,一个单链表,怎么判断是否有环。
最看重代码的什么,当时想了想最重要的还是可读性,进来之后看到项目了,感觉这个问题很有深意…
表现的很诚恳,就过了

电话面试

依然沿用介绍自己说很多很多,挤压大佬提问的时间的策略。
现在能记得的就算法题了,假设有个数组,前半段单调递增,后半段单调递减,问怎么得到这个数组的最大值。
说类似二分查找,使用双指针从数组中间找起,一个指向中间,另一个指向前面或后面,比较大小,这一步可以确定当前是递增区间还是递减区间,就比较容易找到最大值了,追问时间复杂度,脑抽回答$O(n)$,被纠正成$O(logn)$。

总而言之这家稳的,不过还有个非游戏的golang面试,一个盯着我的猎头也给我推去了某七互娱,当时心情还不错觉得面试也没啥损失,就去了。

某书神器

搞了两个人来面我,慌的一批,立即表示我golang只是写过一点点,你们hr让我来的,言下之意不是我不自量力云云。
尴尬的面试开始了。
golang有哪些类型。
提到interface,interface有几种,不是很get到点,于是答了看过的空interface和可以表示任何类型的interface的区别。
interface默认值,学到了,是nil。
map为什么,怎样实现无序遍历。
map扩容和rehash细节。
chan实现,没背到啊。
context接口方法。
string与stringbuilder。
mpg调度,提到了抢占式调度,年轻面试官竟然没反应过来,看来用的golang版本够古老,看上去就是大佬的面试官追问怎么抢,抢多少。
gc,没背到,提到了三色收集,并解释大多数语言gc都差不多,标记清除,多轮并发标记追赶并发的任务,再stw回收,听起来像cms那一套,其实再多说点golang内存分配方法装逼也可以,无所谓了。
redis持久化方式,恢复过程,没实际做过,但解释到原理无外乎直接保存数据文件或保存操作日志,努力表现“我虽然不知道RDB和AOF的名词但基础不错了解原理”这一假象。
redis zset跳表,步长多少,回溯方式,使用场景。
redis hash/string结构,当然不知道啦,只当工具用而已。
设计个秒杀,没做过啊,shit,说了仅有的微服务那点知识,说到漏桶令牌桶,马上又被问了。
怎么判断一个数是2的幂,击沉,其实还挺有意思,n & (n - 1) == 0
串联中间件的顺序,洋葱模型,那是啥,一层一层的剥开你的心,难受。

感受下来,很有传说中golang面试的范儿,如果我没有表现出自己是个golang新手,可能会被问到汇编,被虐的妈都不认识。
据说还有被问某段代码在项目源码那个文件哪一行的….

某七互娱

很诚恳的和猎头表示就算通过了面试也不一定回去,而且不自信的表示不一定能通过面试。
笔试,都是简答题,基础中比较高级的部分,有一定难度。
最后一个逻辑题,问三个金蛋,其中一个有奖,你拿了一个他拿了一个,他打开了没有,此时你中奖概率是多少,还剩一个蛋中间概率是多少,答案不是$1/2$而是$1/3$和$2/3$。
面试的沟通不是很顺畅,问题中印象比较深刻的是线程池的参数,不同八股文的说法:IO密集用核心数乘2计算密集用core数,而是从美团的一篇文章出发,说了下动态配置线程池参数。但又犯了想当然的毛病,问起让我来设置时,又使用八股文的配置,当场被反驳,写日志和网络操作也算IO,不是简单的核心数就OK的。
结束后猎头转了面试评价,基础不错但沟通能力略欠缺,结果观望。不一定能通过面试一语成箴。但我觉得沟通是双向的,你觉得我沟通能力欠缺,我也一样觉得你沟通能力欠缺。

7月都是在准备面试(背面试题)和逛gai,很欣慰的完成了七月每日一题打卡,毕竟有玩游戏的打卡病,学位考的准备还是落下了。

8月

家里蹲生活结束了,开始早十晚九上班还有点不适应,家里蹲确实能让人变成咸鱼。
新公司的技术栈应该算冷门的,代码也一言难尽,充满了刚写下时的炫技味和加功能后的补丁味。业务也不太容易理解。互联网公司总是能整出一堆业务上的名词,敏捷、站会、OKR等管理方法也没落下,很多的第一次,第一次用微服务,第一次用mac,第一次用传说中的钉钉,感受phabricator/kibana/jupyterhub/galaxy/apollo/consul/jaeger等,第一次用merge request方式管理提交,别人codereview了@bot合并,第一次过sonar自动化代码审查,这样列举下来第一次真是多啊。
业务不理解也是挺焦虑的,问起同事,同事也表达对业务一头雾水,但你们站会汇报工作说的怎么都那么专业呢,心态崩了。
最近看了天杀的ntr本子Ane wa Oyaji ni Dakareteru 2,莫名剑法之悲痛莫名啊,莫名联想到各种条件都不如别人的自己和注定平凡甚至没啥希望的人生,心态崩了。
看到Linkedin上米哈游的hr发来JD,还是回复了那句“专升本选手,抱歉。”


今后

心态崩了日子还是得过,虽说是懒狗但还是要逼自己把学位课和CET4拾起来,拿到学位证算是给这几年一个交代,虽然没什么卵用。
打卡病促使我一直做leetcode每日一题,9点下班,复制粘贴完每日一题都12点了,怎么拾起学位课和CET4呢。
逛gai成习惯了,很好的逃避方式,但太浪费时间。


一些资料

为什么这么设计系列文章
Go 语言设计与实现
深入浅出 Java 虚拟机
Java线程池实现原理及其在美团业务中的实践
ntr本子就算了