首先感谢各位能够在百忙之中点开这个帖子,逛了很多年各种论坛第一次发帖,还请多多包涵。
我是一个 2017 年从一个成都三本层次的网络工程专业毕业的学生,由于当时想找一个 C++方向的工作,所以在校期间也做了点准备吧:
编程语言
主要是以 C 和 C++为主,从大一开始把《 C Primer Plus 》、 《 C++ Primer 》、《 Effective C++》中的大部分内容都通读了一遍以上,并完成了大部分书上的练习题,也零零散散了读了很多 C++方向的技术博客。
其它编程语言,学的比较杂,诸如 Web 方向的 PHP,前端( HTML,CSS,JS)就学的比较浅了,只是过了道基础语法和教学项目。没有往 Web 方向发力,就暂且不提了。
数据结构
学的时候是把《大话数据结构》通读了大部分一遍以上,能够把线性结构(链表,栈,队列),各种排序,二分查找等比较简单的知识点随手用代码实现。
数据库
只能用 SQL 比较熟练的进行 CURD 来为业务服务,对关系型数据库的底层概念没有深入研究过。
计算机网络
由于本身就是网络专业,计算机网络的概念有过系统性的学习,但是 Socket 编程没有深入学,当时只学到了调用 Socket API 写局域网通信程序的地步。
操作系统
只能说为了考试和面试了解基本的概念吧(比如进程线程概念,一些 CPU 调度算法,生产者消费者问题等),没有对底层的实现进行深究。
算法
比较弱,只是简单的在 leetcode 上刷了几十道以数组,字符串,链表为主的中等及以下难度的算法题。
框架
在校简单的玩过 MFC,太复杂和古老抛弃了。Qt 的运用比较熟练,实习期间能够用 Qt 和公司内部的业务框架完成领导安排的业务代码。
项目
在校时网上查音视频理论知识,然后利用 ffmpeg 和 Qt 提供的模块做了点简陋的音视频播放器。
其它
英语过了四级。技术上学了其他很多很杂的东西,但是不够深入,比如说设计模式,Linux 环境下的开发,Git,Shell,Python,以及一些计算机底层的理论知识等等,都学的比较泛,没有进行过深度的思考和具体项目的反馈。买了《深入理解计算机系统》,《代码大全 2 》等知名书籍也只是泛泛的看了前几章,对这些砖头书没有足够的毅力坚持看完。
以上基本概括了我 17 年毕业时的技术能力吧。我是在 16 年 11 月的时候开始进行所谓的实习(实习的工资,社招的活),在成都发现 C++的工作真的难找( 11 月中旬校招基本结束了),很慌忙的就去了一家和学校合作的军工项目人力外包的小公司,通过了某个研究所的笔试面试之后就开始正式上班了。
期间做了一个项目,从头开始完全一个人负责,功能是在嵌入式系统的平板电脑上对飞机的各种设备进行数据检测,状态监视,语音实时通话,参数设置等功能。当然底层是依托于操作系统提供的 API,研究所里现有的业务框架,硬件商提供的 API 等实现的。通过这个项目熟悉了 Qt 框架的应用,Linux 上的常用命令,巩固了 C++语法,也加深了对计算机底层概念的理解。
但是由于我所在的那家小公司承诺的加班费分文不给,甚至拖了 20 天工资不发,再加上驻场在研究所里开发有一种外来人的感觉,我在拿到毕业证后立马离职,来到了现在工作的这家公司。
( PS:直到现在,拖欠的 20 天工资和半年的加班费依然没能要回来,由于当时没有签订任何实习的合同,所以也无法通过法律途径要回来了,这算是给刚踏上社会的我一个深刻的教育吧)
现在我所在的公司是成都一家以军工项目外包为主要业务的公司(非纯外包),我由于之前实习期的工作经历匹配度高很顺利的进入到了这家公司,从毕业开始加入到现在已经半年多了,工资到手还是刚进来时的 5000 元左右,没有其它任何金钱上的补贴和福利,除去房租和伙食,存不了几个钱。
在这半年间,我和几个同事共同完成了一个用于科研软件的项目,我还是负责的用 C++通过 Qt 框架写客户端,客户端大概有两三万行的代码。这个项目的核心功能是算法,但这些算法是外包给了几个大学的教授来实现的,我们公司只是负责调用他们提供的接口来实现客户要求的业务功能。而我负责写的客户端个人觉得并没有啥技术含量,都是些业务功能,界面美化,SQL 语句 CURD。但也不是完全没有收获的,除了更加熟练的应用 Qt,主要是我能应用一些面向对象的思维去把代码封装的更好看更好用,也能应用一些设计模式到项目上了。总而言之,相比于上一个项目,我在代码的质量上提升很大,但技术的广度提升很小。
公司的规模在成都算中等吧,和直属领导以及同事们的相出也很愉快,双休,几乎不加班,有自己的时间去生活,去学习。但是我所在的岗位所用的技术面太窄,市场太小,感觉这会限制我未来的发展。即使我也在工作之余自学其他编程语言,看计算机经典书籍提升内功,leetcode 刷算法题,但在当前公司做的项目经验与互联网公司的技术栈没有交集,这让我对未来的职业生涯产生了巨大的担忧,毕竟 C++ PC 客户端开发的市场实在是太小了。
这一次过年回老家和两个朋友聊了很多,给了我挺大的刺激吧。这篇帖子的出现也正是因为这次聊天,以下为交流得到的内容:
朋友 J:
16 年成都某三本通信工程毕业,在校期间参加了培训结构和他们学校合作的 Java 培训班,大四去了成都一家给政府做外包的公司写 Java 以及简单的前端页面,工资 6K * 13。毕业后觉得做外包对个人技术的提升有限,遂离职进入一家成都的家具互联网公司做开发,工资税前 4K !但是在这家互联网公司的工作经历和他自身的努力,让他熟练的掌握了 Java Web 开发的各种常用框架的应用,前端也能用 Angular 完成公司布置的任务,工作大半年后,因工资太低在 2017 年新年后离职。离职后独身前往上海,在面试 11 家公司之后进入了现今工作的公司,工作内容是给银行做项目,他也是前端后端都写,现如今已经具有了独立负责一个项目前后端的能力,还能够为公司招聘进行技术面试,工资也由最初的税后 8.5K 涨到了现在的税后 12K。
今年他在网上花了 7000 报了大数据网课班,公司的业务也会涉及到区块链技术,他准备通过一年多的努力向一线互联网公司跳槽,从此走上人生巅峰。
朋友 D:
和我同一届,17 年成都某普通二本水利工程毕业,在校时签订了 XXX 局的这种国企,因毕业后工资仅 3000 多,工作辛苦,觉得前途渺茫,工作一个月后遂离职。然后离开成都去了广州做代购维持基本生活,闲暇时间准备考研,经过几个月的努力,今年考研分数 365 通过了他报考的天津的一个一本大学的初试,年后进行复试。他希望通过考研进入更好的学校,将来能够进入更宽广的平台得到更好的发展。
我的这两位朋友都是毕业时处于较低的起点,通过自身的努力+正确选择,让自己的生活变得更好。而反思我自己,从实习到现在一年多的时间里似乎在原地踏步,一些大学完全没有计算机基础的同学利用大四通过参加培训班和自学 Java Web 或者前端几个月下来也找到了工作。
因此我很迷茫,我所掌握的技术短期内不能给我带来更好的生活,而且 C++学起来也不是那么容易。要是在校期间付出相同的努力去学 Web 可能不是今天的这种局面。可是没有如果,在现阶段我只能继续努力的学习和写项目,我计划了几个努力的方向,却很迷茫不知走哪条路,希望得到指点:
边工作边准备考研
似乎进入大公司最简单的方法就是校招,94 年的我今年 24 了,如果考研能顺利的话,最快毕业时已经 28 岁了,期间没有工作带来的收入了(我的家庭是四线城市的工薪阶层)。
转方向,去学 Java/前端 /Go/Python 进入互联网公司
工作之余通过看培训班视频入门,看书加深理解,学会相关的编程语言基础,框架的应用,期间做一些个人项目方法 GitHub 上,发博客进行知识反馈,然后转方向向互联网公司跳槽。
我把我的这个想法告诉朋友 J后,他告诉我他们公司招人首要还是看真正的商业项目经历与本公司业务的匹配度,计算机基础知识掌握得好只能算加分项,个人项目在面试时很可能不会被认可。
继续深入学习计算机基础原理,向 Linux 下 C++服务器开发转
这一条路,是我在这次和朋友 J,朋友 D 交谈之前自己正在选择走的路,按照牛客网上那些拿了 n 多 C++ offer 的人的面经来进行学习,深入的去阅读和理解计算机经典书籍,特别要掌握好操作系统,数据结构与算法,具体的技术上阅读《 APUE 》、《 Unix 网络编程》等。
还是继续加深当前 Qt 工作方向的学习
能让我有活路,但工资低,市场小。
1
huiyifyj 2018-02-17 14:07:39 +08:00 via Android
这么一大篇文字,不想读了。……
只看了最后的选项,觉得除了 4 其他可以自己选择。 |
2
xkeyideal 2018-02-17 14:42:40 +08:00 1
基本上算是读完了,继续考研就算了吧,读研就是个巨坑,当然可以用来修饰自己和缓冲几年; C++建议还是放弃吧,无论是服务端还是 Qt,互联网公司要求的 C++能力不是你目前的水平能驾驭了的;剩下也就 2 选项了,进互联网公司肯定是无比正确的,转方向也很对,已你现阶段的 C++快速的转个语言还是不成问题,问题是每个语言背后的生态系统,这不是短期内能够搞定的。
楼主从一开始就选择错了路,后面越走越窄,找准机会换个工作,重新开始规划吧,祝好运。 |
4
xkeyideal 2018-02-17 15:10:21 +08:00
@jx4hjy 别乱学,想你 3 中提到的 APUE,网络编程,操作系统都不需要学,学完了对现在的你找工作也没啥提升,这些在工作中带着学就行了,准确的说这些书应该是大学时期读的,工作中要求的是应用型知识。写前端要会 Vue,React 全家桶吧,写后端要会 nginx, redis,mysql,rpc,http 吧,有几个项目能要求你裸写 socket 编程的。
现在你需要的项目经验和一些能够吸引 HR 的应用层知识,这些很好找,随便找个职位的应聘要求就能看到。 算法和数据结构可以学学,不过一般一二线的互联网公司面试的时候会问算法,小公司也不会问,工作中基本也用不着,针对你当前的学历水平最多算加分项,不算基础要求项,所以也不用太上心学,会排序,查找即可。 成都还是有很多中小型互联网公司的,从这些小公司里面积累经验吧。建议转型 Java,需求量多,有机会可以接触 Go 或 Python 等其他的语言,前端也不错,小公司都要求全栈,学会个 Vue 或 react 全家桶也不错。 |
6
vyronlee 2018-02-17 15:40:19 +08:00 via iPhone
港真,你这课程以及知识面,跟我大都一致,很适合来游戏领域。不管是服务端还是客户端都有用武之地,尤其是腾讯系的公司。V 站有大量的前端,C++极有可能被劝退。
|
7
kingwl 2018-02-17 15:45:32 +08:00 via Android
crud 用啥不好 为什么用 cpp 呢
不要给自己设限 |
8
kingwl 2018-02-17 15:52:08 +08:00 via Android
PC 客户端的份额一直在萎缩这是事实 4 不是一个好选择
现在用 cpp 的大多数是因为某一个技术知识和用 cpp 来实现 不要为了学 cpp 而学 cpp 同样不要高估了自己对 cpp 的接受程度 综合看来写写 go 是个不错的选择 |
9
2lecl 2018-02-17 16:03:32 +08:00 via iPhone
个人感觉,上面所说如属实,社招进百度没有问题(逃
|
10
panpanpan 2018-02-17 16:13:57 +08:00 via iPhone
看起来是校友。
|
11
hengzhang 2018-02-17 17:06:15 +08:00 via iPhone
搬砖 XX 局工资才 3K 起?有点不太信,就我知道的中建,毕业生第一年没有转正都 5k 多了。考个水利的一建证,每年挂靠至少四五万。
|
12
zkd8907 2018-02-17 17:08:51 +08:00
看起来是校友+1
|
20
beiwarm5 195 天前
楼主现在在做什么啊,明天有个 C++客户端的面试,新人刷到这个帖子还挺感慨的
|