滑动窗口中的最大值
前段时间,我和一个老朋友聊天,他说现在找工作真不容易,面试的时候只要有一点没答出来,就很难通过。后来,他突然问我有没有做过 LeetCode 上的第 239 题,题目叫滑动窗口中的最大值。这个题目是这样的:给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组最左侧移动到最右侧。你只能看到滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位,你需要返回每个时刻窗口中的最大值。

图片来自于:https://www.cnblogs.com/vipstone/p/13947873.html
我在研究生后期找工作的时候做过这道题,大概记得是用一个双端队列来维护当前窗口内的元素,每当窗口向右移动时,将队列中比新元素小的元素都弹出,然后将新元素加入队列。这样,队列的头部就是当前窗口的最大值。另外,每当窗口向右移动时,如果队列头部的元素已经不在窗口内了,就将它弹出。通过这种方式,我们可以在 O(n) 的时间复杂度内解决这个问题。这个题目并不复杂,如果采用上面的思路,几分钟之内就可以写出代码来。
我问朋友为什么提这个题,他说我们的职业生涯和这道题很相似。当你在找工作的时候,你需要比别人更优秀、更有竞争力,这样才能进入队列。但即便你再厉害,随着时间推移,也可能被淘汰。我们在 20 多岁的时候,会觉得自己是队列里的佼佼者,但未来当我们到了 35 岁以后,或者再过一两年,甚至就在这一两年,如果能力结构没有持续升级,也有可能从队列头部被淘汰。
我觉得这个比喻非常形象,很有启发意义。2025 年,本科和研究生毕业生一共 1500 多万人。而计算机相关专业的毕业生,工作一两年后往往就能承担不少基础研发工作。现在有了 AI 辅助编程,如果研发效率继续提升,年龄较大、技能较单一的软件工程师确实会面临更大压力。想要不被过早淘汰,就必须不断提升自己的技能,保持竞争力。但上升通道是狭窄的,竞争也非常激烈,所以很多人可能长期处在基层岗位,并与更年轻的人才同场竞争。这样的竞争并非一定会输,但如果不持续提升,胜算会越来越小。
最近这些年北京房价已经下跌了不少,但即便如此,我问了下身边的一些朋友:以目前收入来计算,再考虑潜在的收入增长,多久能够还清房贷?有些说需要 10 年,有些家里给了较多首付支持的朋友说需要 7 年。这意味着,在未来的 7 至 10 年里,他们需要持续工作,并保持竞争力,争取获得高于现在的收入。而这 7 到 10 年里,他们的大部分收入都要用于还房贷,可支配现金流会非常紧张。如果不提前还款,而是将部分收入用于股票投资,理论上在满足长期持有、收入稳定、能承受波动这几个前提下,确实有机会用更高的长期回报率去对冲房贷利息成本。但无论如何,他们在未来的 7 至 10 年里都需要保持竞争力,并持续工作。对于我这种没有家庭支持的打工人而言,我觉得这个风险还是太大了。
关于教育,我也和这位朋友聊了很久。现在很多家庭为了让孩子接受更好的教育,都希望落户在北京市,认为北京市的教育资源更好,未来高考更容易。你猜我这位朋友怎么说?他说自己本身就是清华毕业的,但最后不也只是普通打工人。因为他是清华毕业生,他有底气这么说,觉得“上了清华也未必就一定能怎样”。但大多数家庭还是希望尽全力让孩子接受更好的教育,即使自己背负更大压力。我觉得这件事需要量力而行,也不要过分依赖学校教育,不要觉得把孩子放在北京、放在海淀区,就一定能有更好的未来。我看到很多家长在外面辛苦工作挣钱,给孩子请家教,给孩子很大压力,让一个本该充满活力的少年变得暮气沉沉。对我而言,如果将来有了孩子,我希望自己能有更多时间和精力去陪伴他,在成长过程中给他更多引导。现在很多学校老师、培训班老师,不见得在所有方面都比家长更懂孩子,所以我更愿意自己多花时间参与孩子的成长。哎,有些家长和孩子关系很差,甚至会因为学习经常吵架,我只能希望自己别走到那一步。
和这位老朋友聊了很久之后,我们认为不能对未来太过乐观,要降低欲望,不要过度消费,尤其不要背负长期高额负债,需要尽早做好被淘汰的准备。从现在起,要控制开支,削减一切不必要的花销,并合理理财。在工作的同时,也要考虑扩展自己的技能和知识储备,让自由有更多路可走。目前我们严重依附于大型互联网公司,一旦离开本行业,或者离开这个领域,甚至不知道自己还能做什么。我们需要尽早让自己具备独立生存的能力,即使某一天不在公司里上班,依然有能力生存下来。
我和这位朋友的聊天内容可能有些过于悲观了,虽然未来充满不确定性,但今天的生活确定无疑地比过去更好,未来也极有可能比现在更好。但对我而言,我考虑的是生存与自由的问题。人生最重要的是三个 F:Family、Fitness 和 Freedom。令人吃惊的是很多人同时牺牲了这三者。为了兼顾这几点,我应该警惕消费主义的陷阱,不要过度追求物质上的满足,不要让自己背负长期高额负债。用节省下来的钱,去换一些自己可自由支配的时间,去陪伴家人,去锻炼身体,去学习新的技能、新的知识,让自己始终能适应这个快速变化的世界。