最近在准备秋招事宜,但是遗憾的是尚未斩获 offer,今天在某公司的秋招群里被 HR 批评了一番,趁着这次机会进行一次反思吧。
首先说一下经历吧
- 大一上学期对操作系统比较感兴趣,当初主看的《操作系统真相还原》,但是当时看起来比较吃力,而且树上的源码后面有些问题,所以制作操作系统这块是到进入 32 位模式并且显示颜色就停了。中间也看了不少资料,但是大部分忘记了
- 大一下学期一方面是想从命令行中解脱出来,另一方面是想强化一下 C++。所以选择了 Qt。期末的时候做出了一个比较简单的音乐播放器
- 大二上学期纠结于操作系统,在 Windows 和 Linux 之间摇摆不定,顺便学了前端的 HTML、CSS、React、Electron 相关内容,这地方因为排版不会,所以没能做出来一个完整的项目
- 大二下学期正好是疫情网课期间,这时候没做什么项目,只是把计算机网络学了
- 大三上学期是准备考研,把高数看了很少一部分,把操作系统和计算机组成原理看了一遍
- 大三下学期仍然是考研,但是因为考研自习室中间被撤销了,所以复习进度很不理想,还顺手做了一个看图的软件,中间主要是学了多线程部分和数据结构和算法
期间还学了一部分 Java,一部分 Python 和 爬虫,爬虫是做了相关的项目,Java 没有深入学。主要是学习了项目方面的内容,比如 CMake 等,因为学习资料比较分散,也花了很长时间。比如 Modern CMake、Moder C++ 等,C++ 从 11 学到了 20,从简单的 C with Class 学到了线程、协程
C++ 虽然我不清楚哪些特性是什么时候加的,但是使用没什么问题,除了模板元编程用的比较少外,其它我都认为可以写上精通
上个月(2021/8/20)我考研进度跟不上,所以准备秋招事宜。秋招时我才看到了我的错误
首先,C++ 只是一个工具,截止到目前位置,很少有公司只面试 C++ 的。C++ 简单可以说是分为下面几个方向:
- 嵌入式:系统编程 + 网络编程 + 实时操作系统
- 服务端:系统编程 + 网络编程 + 数据库
- 游戏客户端:UE4 + 网络编程
- 测试开发:网络编程 + ?
除此之外,还有音视频开发、图形、人工智能,但是这些需要硕士学位,本科没法凑热闹
可以很明显的看到,网络编程是重中之重,但是当时因为 C++ 原生不支持网络编程,而我对跨平台又有一些执念,所以一直没学。现在看起来简直愚蠢至极。C++ 网络开发只有 Linux 平台,而桌面开发基本是 Windows/MFC
网络编程什么也不会就导致秋招接连失误,面试的时候 C++ 本身只会提很少一部分,最多就是 const, static 以及虚函数这部分,gdb ?不问,STL?不问,模板编程?不问,线程?不问。也就是说我大学三年学的这些东西基本上都不问,面试被刷也不足为奇了。
接下来还有一次春招的机会,在不行就看看能不能先进个厂实习,到时候谋求一个转正机会吧。
目前我给我自己定下的方向就是嵌入式吧。所以主要是系统编程 + 网络编程了,数据库下半年也会背背。具体可以参考一下 http://www.itcast.cn/course/c.shtml 和 https://blog.csdn.net/wangshuaiwsws95/article/details/107830452
服务器方向很多是转 go 了,所以 C/C++ 的用途可能主要就是 UE4 和 嵌入式了
总结来看,就像 HR 批评的那样,我学的太杂了,当初总想着一个路子不行换另外一个路子。可是路子走的不深,一条路也走不通。