不过可能和你们想的C++还不太一样,我一开始学的是Windows平台上的开发,玩的是Visual C++、MFC、WFC···微软那一套玩意儿,手捧的是《Windows核心编程》、《深入VC++详解》等等书籍,琢磨的是窗口消息、界面绘制、完成端口这些技术。

那时候也不知道啥叫客户端开发,啥叫服务端开发,更不知道Windows开发和Linux开发的区别,没这个概念,也没人告诉过我。

在学校里面还好,待在实验室做做项目开发,待在自己的舒适区,勉强还能应付遇到的问题。

但临近毕业,开始发现:怎么招C/C++开发的比Java少那么多?而且还大部分还是Linux上的C/C++开发?

Java?我不懂啊!

Linux?我也不懂啊!

这是对我的技术栈第一次产生质疑。

不过运气好,得益于大学几年对Windows内核琢磨的比较多,校招顺利去了某度做安全软件底层驱动开发,没怎么为找工作发愁。

开始工作后,接触到的技术深度和广度一下就开阔了,尤其是工作中开始接触到其他技术栈的同事,前端的、Java的、Linux C++的、PHP的各种都有。

我对自己的技术栈第二次产生质疑是进入某度的第二年。在那年秋季的晋升期间,一位长我几岁的技术大牛前辈晋升失败了,一起吃饭的时候,另一位同事劝他说:看开点,在某度,T7基本上是做端上技术的天花板,那些技术委员会的评委是看不起咱们这些做端上开发的···

他们口中说的端指的是客户端,包括Windows、Android、iOS乃至前端。

技术委员会的人要么是来自搜索系的算法大牛,要么是Linux服务器开发高级架构师,在他们眼中,玩端上开发的确实要low一些吧。

当然,上面都是当时的我们几个人自我揣测,并不代表某度是实际情况哈。

但当时刚入职场,对我的冲击还是挺大的,强如前辈这样的大牛都这样,我就更···所以,彼时,我就告诉自己:一定找机会完成技术转型,毕竟Windows开发已经是夕阳产业了(仅代表个人观点)

后来从北京去了上海,同一个部门transfer过去的,趁此机会,我开始调整了我的技术方向,在新的岗位上,开始拓展自己的技术领域,接触了更多Linux、Java等等。

再后来回到成都,我要重新找工作,跟我毕业那会儿情况差不多,还是Java、PHP的天下,有C++的也基本上是Linux。

后来面了一圈儿,拿到了3个Offer,2个是Windows上的开发,这个我最熟,经验最丰富,工资和我在上海相差无几,差不多算平薪回来。

但我了解到这两家公司能够接触到的技术面对我日后的发展并无太大帮助。而第三家,不仅是Linux C++,还涉及到海量数据分析、存储、架构设计等等,这些都是我能学到的新东西。但第三家公司依据我当时的能力,在Linux平台开发经验尚浅,开出的工资差不多只有原来在上海的一半。

纠结再三,我还是选择了第三家,加上女朋友也鼓励我,我也就没有后顾之忧了。我相信自己的学习能力,一时工资的损失,换取更长远的发展。

后来的经历证明,我的选择是正确的。得益于对Windows操作系统的学习经历,很快就对Linux操作系统有了比较系统深入的学习和理解,后来发现,没我想象那么神秘,编程讲究的是算法、设计和思想,操作系统只是一个落地的平台,切换起来很快的。

操作系统核心就那些东西:

  • 进程线程模型

  • 内存管理

  • 系统调用

  • 中断与异常

  • 同步与异步

  • I/O模型

  • 网络协议栈

  • 文件系统

  • 驱动设备

这些东西,换了平台,思想都是相通的。

从大厂一下进入小厂,多少心里是有一些落差的。

不过随着技术能力的见长,工资回报也相应的得到了体现,一年多以后,工资赶上甚至超过了之前在上海的水平,我又成功从小厂去了大厂。

再后来,编程语言也从C++切到了Java和Python,有了开发平台切换的经历,语言的切换就更加轻松一些。

掌握一门编程语言,第一步是学语法,无外乎就是这些:

  • 数据类型

  • 输入输出

  • 循环处理

  • 分支处理

  • 函数

最后

2020年在匆匆忙忙慌慌乱乱中就这么度过了,我们迎来了新一年,互联网的发展如此之快,技术日新月异,更新迭代成为了这个时代的代名词,坚持下来的技术体系会越来越健壮,JVM作为如今是跳槽大厂必备的技能,如果你还没掌握,更别提之后更新的新技术了。

工作几年,MySQL高可用之主备同步

更多JVM面试整理:

工作几年,MySQL高可用之主备同步

点击这里免费下载“百万级”「JVM笔记」