C++自学之路——从一个客服到服务器后端

c++ 专栏收录该内容
1 篇文章 0 订阅

0,废话一下        

    距离上次写博客到现在已经快两年的时间了,写上两篇时,我还是做着前端的,现在已转服务器后端了。从毕业到现在3年多的时间了,一路自学走到现在,逛贴吧时,看到很多新手,感觉就像以前的自己,那么的迷茫,无助,所以现在就想分享一下自己的自学之路。

 

1,自我介绍一下下

    我是11年上的大学,专B学校,外省可能不知道啥叫专B学校,在广东,大学分成重本,本A,本B,专A,专B,就是最差的学校,相当于考不上,出高价读的,大学专业是动漫专业,就是美工,和编程没任何关系的一个专业,上大学就是天天玩,打DNF,打魔兽,偶尔学学PS,3DMAX,MAYA这些美工软件,后来大二后半年,玩DNF强化送了凯丽很多钱,怪又打不过,玩过的人都知道凯丽有多么的可恨,那时还去找过屏蔽凯丽的补丁,没找着,后来就想着要是有外挂就好了,突然脑抽的就想外挂是怎么做的呢,于是就开始了外挂之路,逛各种外挂论坛,还买过VIP教程,自己去学,学的时候才发现那些论坛全是封装好的模块,自己去调用那些函数,游戏一更新,那些模块就失效,完全就是骗钱。只怪自己太傻,这就被骗了钱,不过也就这样接触到了一门神奇的编程语言,易语言,于是自学编程之路就这样开始了。

 

2,学编程前期所走的弯路

    逛了比较多的外挂论坛,都是用到易语言,于是学了一个星期左右易语言吧,想着这东西这么多人用,能不能以后从事这个工作呢,就去了解一下,上招聘网站去看,发现压根就没人用,从百度知道贴吧这些地方了解到,编程都不用易语言的,而是java呀,c呀,这些很多很多种语言,后来想想就放弃易语言了,心想反正都能做外挂,为什么不选择一个可以找工作的语言呢,之后就跑学校图书馆去借书,当时手机还是诺基亚,不知道有电子书这东西,到图书馆啥也不懂的,找了很久没看到java呀这些书,就随便拿了一本flash as3的书,完全看不懂呀,后来找视频看,学了一段时间感觉这语言在操作一些控件的,不对劲,后来才了解到这是做flash游戏动画用的,尴尬了,后来又去逛论坛,大家都推荐学java,可是图书馆又没看到有这书,于是就去找视频,下了很多视频,对比了很多,后来看来看去,还是觉得传智播客讲的好,就学传智的了,学了一个月吧,想着基础也差不多了,搞搞外挂吧,就去找教程,后来发现java不能做外挂,不能做外挂,不能做外挂,有人说不是不能,是很麻烦,于是又学错一门语言,后来了解到外挂就是改电脑上物理地址的数据,然后涉及到寻址,寄存器,然后又去学了汇编,把王爽的那本汇编看完了。然后又学了CE,OD这些调试工具,虽然这些工具可以直接修改数据,但是和别人的不一样,别人是一个程序,可以发给其他人用的,于是就开始学C语言,记得当初第一个问题是在C语言贴吧问的,就是变量我用的时候才声明,一直报错,实在搞不懂,就去提问了,后来才知道C语言变量必须声明在最前面才能使用,这是我问的第一个问题也是最后一个问题。当时把C语言的一本入门书看到了第17章了,就快完了。当时我已经是大三实习了,实习是学校安排的,没有底薪的,很坑,做排版,用PS修图什么的,就是一美工。就这样大学过了。

 

3,开始C++

    毕业之后,想着自己快学完了C语言了,能找工作了,那会刚出社会,很天真,想象得很美好。一边继续学C语言,一边找工作,过了一个星期吧,一直找不到工作,家里人又催,看我天天在家学,不找工作,就说我都不知道学些什么,读书时不认真,现在学有什么用,整天游手好闲的,不找工作,自己又不是这块料,老老实实进厂找份工作做着就好了。当时听到气得我,不想说话了,迫于无奈,为了赶紧搬出去,就随便在智联上投简历,那会很天真,看到有一份工作写着招应届生,工作表现好可以内部转岗,我就想着,我进去了是不是可以转技术岗了。然后就投了,很快接到面试电话,就跑去面试了,到了之后要填表的,应聘什么职位,当初很傻,就写个应届生,我自己也不知道干嘛的,后来面试了才知道,这是做客服的。然后我还很天真的说,我是看到可以转岗的,我以后想转技术岗位做开发,那时那个主管也没说什么,说是可以转岗的,但要看自己的能力,我很开心想着肯定没问题,能转的,于是接受了他开出的条件,三班倒,不包吃,2300工资。在广州天河区,2300工资,租个房子600块,现在想想真是太傻了。当时组长和我说叫我和公司那个谁谁谁 聊一下天,看看要什么要求可以转的,我还真相信了,去了解了下,那个是运维,为此我还特意去学了linux运维方向,每天下班就学,工作了段时间才了解到,内部转岗根本不可能,一般转的都是说客服转运营的,像我这样转技术的,完全没希望,后来辞职了,身上也基本上没钱,学的运维也停了,又不敢回家,就跑同学那住了,那段时间就上网把这些运维呀,语言呀,系统呀,都干什么用的,了解了一遍,当初最喜欢的还是C语言,简洁,过程式编程,想到什么就写什么,后来发现找工作不好找呀,就锁定java和C#和C++,java不能做游戏和外挂,不考虑,C#别人说性能差,不能跨平台,好,就决定C++了,于是开始找资料,去了C++贴吧,看别人看什么书,大家都推荐那个C++ Primer Plus,我也去买了本盗版书,10多块钱还是多少的,忘记了,看了很久,感觉这不是C语言的东西吗?没什么区别呀。然后看到差不多的就没看了,到后来才知道看错书了,应该看C++ Primer的,之后就看视频,同时下载了传智C++第5期还是第4期的,忘记了,还有那个达内,两个对比了一下,达内就是一个人在上面读书,我不是打广告,这两个真的没得比的,后来看传智的,看完了C++部分时已经快15年了,由于身上没钱,总不能一直在同学这住,我就开始去投简历找工作,发现根本没人理的,看了很多招聘条件,只要是C++的都看了,跟着招聘条件上写的,前前后后学过windows程序设计,direcx龙书,MFC深入浅出,VC++,windows网络编程,编译原理,opengl图形库,还有很多乱七八糟的书,记不清了,但是我犯了一个大忌,也是很多新手会犯的,就是只看不练,书基本上都看了,但写的代码却很少,反正走了很多弯路,投的简历没人回过,后来实在是没钱了,又去做客服了,这次比上次多了200块工资,2500一个月,之后在公司办了信用卡,工资有剩下点钱,又辞职了,断断续续加起来借了银行一万块,继续自学编程,继续学传智的视频,后来了解到Qt,cocos2dx这些,然后又学了半年吧,一边学,一边做些小游戏,坦克大战呀,超级玛丽呀,跟着视频做。但都是只做了一点点就没做了,后来又是因为没钱了,又去找工作了,这次有目标,专门找cocos2dx的,找了大概一个月吧,没一个回复的。打算又去做客服的了,突然间打开智联看到有一个面试邀请。我的天呀,终于有回复了,现在回想起来,要是我当初没去看智联,我现在是不是就不在IT行业了,那个公司也没打电话给我,就发了一个邀请。那时激动得我,整晚没睡,通宵复习C++和cocos2dx的内容。

 

4,前端生涯

    复习了一晚上的C和C++还有cocos2dx,一大早就坐车去面试,困得不行。到了公司,其实也不算公司吧,在住宅区,就是租了别人三层楼,一楼放杂物的,二楼办公的,三楼老板家自己住的,就是一个小团队。没笔试也没问什么技术问题,就了解了下以前的工作,然后看到我简历上写着做过坦克小游戏这些,就拿了个视频给我看,问我会不会做,能不能做出来,视频就是那种老虎机那种赌博游戏,我自己也不确定能不能做,就回答说可以吧,于是就谈工资想要多少呀。当初我只求找到工作,我就说工资没要求,后来就给我2700工资,包吃包住,单休,虽然工资不高,但我真的很开心开心,终于付出的有回报了。2700的工资,我还欠着银行的钱,每个月发的工资还完,有时还要继续透支银行的钱来生活,那会我的C++还很烂,我还搞不清楚别人写代码为什么要先写个函数在那,为什么要先定一个类,你怎么知道这个函数是怎么样的,你怎么知道执行顺序是如何的。反正很烂,还会写一大堆重复的代码。进入公司第一天,就是定那个游戏框架,老板看着我写的,紧张死了,完全不会,不知道怎么开始写,后来老板就和我说先定好函数名,再一个个函数实现。我完全不会。好怕被辞退。好紧张。后来利用午休的时间,我写出了一大堆没用的垃圾代码,老板看到了把我骂了一顿,说我写的是什么东西,浪费这么多时间写出这样的东西。后来就一直被骂,慢慢慢慢的把垃圾代码改正,写得多了,慢慢的熟练了,以前学习中遇到很多的问题都解决了。可能之前都是只看书,不怎么敲代码的原因。所以说学编程一定要多敲。以前学的时候懒,就是只看书不敲代码。后来工作段时间,基本上不会被老板骂了,也发现老板不怎么懂C++的,而且公司就我一个是做游戏的,其它人是做硬件的,嵌入开发之类的,公司之前有老项目是用HGE引擎开发的,一个C++的老古董了,没人带我,全是自己学,维护起了老项目,学了HGE引擎,之后工作需要又学了lua,socket,qt,mysql这些,由于公司没美工,而我又是动漫专业的,所以有时我会兼职美工,还有做游戏视频我会pr这些视频软件,装系统,改系统改注册表,什么乱七八糟的都做。之后工资也从2700涨到3000,4000,5000,后来发现做前端很无聊,特别是调那些UI的位置,烦得要死。不想再做前端了,就开始学linux,apue  tcpip 了解多线程多进程,还去9秒社区下载别人的服务器源代码来看,后来公司又要做网站,也是我做的,学了html css js和php,搭建了一个网站出来,然后做了一个小型的服务器,用于更新客户端资源和脚本, 由于一个人做服务器网站客户端忙不来,后来招了两个新人进来接手C++,而我却负责了网站,实在不想做,就辞职了,在这公司做了接近两年,一分钱没存到,终于把欠银行的钱给还完了。

 

5,开始服务器

    辞职后知道自己服务器没经验,又不想做前端,就继续自学了段时间的服务器开发,其实说是自学,还是一边打游戏一边学的。后来没钱了,就开始投简历找工作,发现有两年的C++经验,我完全不用投简历,很多人主动找上门来,有客户端的,但我直接拒绝了,也有找服务器的,我都接受了,前前后后面试了6份吧,服务器的。第一份是一个300多人的游戏公司,说实话,这是我第一次面试技术岗,去到公司,先是做了份笔试题,花了40分钟,第一次做题,好多都答不出来,特别是遇到算法题和数据结构,之前都是直接用标准库的,没想过自己实现,笔试做完了就面试,第一面应该是主程吧,就按笔试题上面的问,看我笔试答得很少,很多题空的,就问了一两个笔试题上的,然后扩展问,了解了下我以前做的工作,就这样一面过了,然后等了半个小时吧,二面开始,这个应该是技术总监吧,也是问笔试题,他给我提示,让我回答我没做的笔试题,我答的不对,他也不说,给我的感觉就是我答对了,继续给我下套问下去,可想而知,结果就是回去等通知的。然后第二份面试,一个小公司,只有10个人不到的,我想着小公司应该要求比较低,可能会成功,结果去到,没有笔试题,直接面试,一上来就问为什么你要转专业到编程,为什么之前的专业不做,为什么毕业后才想到转行,一大堆无关的问题,后来就问cocos2dx引擎的东西,我的天,这前端的,我早就不想做了,也没去研究了,我现在面试的是后端呀。然后这个问题就黄了,之后又问多进程和多线程的区别,堆栈呀,网络编程呀,问了很多很多,明显比那个300多人的公司要求高多了,我都只是答的比较浅的,结果也是等通知的啦。第3家公司就气死人了,那个公司自己要招什么人都不知道的,由于是他打电话给我的,我也没去问什么,就去面试了,到了公司才发现,他不知道自己要招什么人,拿了三份代码给我看,一个ios的,一个安卓的,一个c#的,前端的代码,问我能看懂吗?会不会做,我说我面试后端的呀,做服务器的呀,他还问我服务器不就是这些程序吗?我的天,然后我给他解释了什么叫客户端什么叫服务器,它们之间是怎么工作的,是用什么语言写的。浪费我时间。第4家公司就是一家500人左右的公司吧,笔试题10分,我看了一下我的评分是6分,一面应该是主程,问了一些游戏设计的问题,了解了下我以前的工作,就过了,然后叫我等一下,说进行二面,等了10分钟吧,他过来告诉我技术总监不在,约我下次二面,然后就没然后了。之后有间公司笔试题做了45分钟,结果面试一看我没服务器经验,打发走了,太坑了,不搞清楚就约我过来。最后一份就是我现在做着的了,笔试+面试搞了两个多小时,顺利通过,成功进入服务器开发。

 

6,总结一下

    1,切记不要只看不练,我当初就是这样,看懂和会写完全是两码事

    2,不要东看西看,这学一点那学一点,重点把C++基础打好,还有数据结构和算法,我每次笔试都会遇到

          排序算法,查找算法,还有就是用C或C++实现栈,链表这些基本的数据结构。还有就是指针,

         一般就是用C 实现字符串操作的,基本上这些学好了,别人都愿意带你的,

         像我之前学一大堆乱七八糟的,什么mfc,qt,图形库,面试的时候完全用不上,也不会加分。

    3,网络编程不要纠结学windows,还是linux,不知道别人会不会纠结,反正我初学的时候很纠结,我到底要   

         哪个系统的呢,后来自己学了才知道,两个区别不大,就个别函数不一样,推荐看unix网络编程

先这样,后续看看有什么补充的,语言组织能力不是很好,废话比较多一点

 

7,后续---2020年5.1

     这篇文章是2018年时写的,时隔两年,现已辞职了。之前工作太忙,也没时间上CSDN,太累了,一时冲动就裸辞了。上CSDN看到挺多人私信我想知道我现在待遇如何,现状怎样,不过都是好久之前的消息了,抱歉呀,之前太忙,就没上过了,所以也都没回复,趁现在辞职了,所以就想写写现在的一些感想吧,辞职之前我是13K,加上项目奖金一年到手有23万左右吧。这个待遇对于我来说,我是挺满意的了,毕竟我刚毕业那会才2000,至于为什么还满意却选择辞职嘛,真的太累了。累到我甚至有点后悔当初挤破头的跑来这行。这和我想象中的不一样呀,我一直以为别人说的程序员常加班是指做到晚上11,12点,我觉得那还OK呀,反正我也没那么早睡,等我入了这行才发现,通宵才是加班,996都是非常非常非常幸福的了,真的。基本上每周必通一次。这是最少的情况。多的时候连续通宵几天都出现过,特别是遇到那些节假日,发行公司都是临时给你提需求,上活动,领导每次都是说熬过了这段时间大家就可以轻松点了。信了你个鬼,永远都不会有轻松的。开发时盼上线,上线后又想着快速回本,拼命加功能加需求加活动,等这款游戏没什么人了,OK,新开一个项目,又一个循环,永远都不会轻松。这玩意就像赌博。无限换皮开发,赌中一款就爆富,又有资金继续赌博,当然也有加班没那么严重的公司的,不过那种公司基本上是只有底薪,没有奖金的。看你选择了。不过发版本这个熬夜是肯定的,每周一次,就算不通宵,也要搞到凌晨2,3点吧。没入行的要想清楚呀,这游戏和你想象中的游戏是不一样的。手游基本上就是抄的,目的就是钱,并不会在意你游戏什么玩法,只要能圈钱就行。如果时间可以后退,我不会选择游戏这行,当然我是喜欢写代码的,所以我目前是有想转行的想法,当然还是写代码,只是不想从事游戏行业了。年纪大了,通宵加班,真有点吃不消。目前考虑向其它传统行业的开发找。不过好像发现并不好找呢,所以刚毕业想要进游戏这行的,要三思呀,主要是想找个加班没那么多的,想提升一下自己,在游戏公司,很难提升。你很难有自己的时间去学习,天天就是加班加班,有时候一个月只有1天休息。每天下班回宿舍洗个澡就12点多快1点了,想看书根本没时间。提升自己是很重要的,随着年纪越来越大,在游戏公司要么你就继续透支自己的身体去通宵熬夜,要么就等着辞退吧。人不能安于现状,要时刻保持危机感。当然,要是想当一条咸鱼的,那无所谓。曾经的我也想放弃,也想当条咸鱼,但骨子里就是比较贱吧,不折腾就不舒服,总感觉缺少些什么。有时候打一下游戏,就很自责,感觉很有罪恶感,但游戏太好玩了,经常忍不住,所以也经常迷茫,感觉累,好像有点扯远了。说说面试这些事吧,也有不少人问我的。虽然我不是做到主程的位置哈,但有时候老大不在,我也去应付一下面试过别人。我主要就是看这人算法和数据结构这些。虽然我自己也很不喜欢去折腾这些东西,但这玩意真有用的。不过我之前和我同事一起去面试别人的时候,他比较喜欢考别人语言方面的。这个看面试的人心情吧,哈哈,找工作运气也是很重要的。我自己觉得吧,公司招人,肯定是想招一个有潜力的人,肯定是想以后能在公司担任更高职位的人,当然也看公司哈,不排除那种只想用低价招一个进来简单的维护一下快凉的老项目的。至少如果我是刚毕业的,没经验的,我就会去,明知是坑也会跳,没办法,无奈,为了经验。没学历没背景又是野生的。为了生活嘛。首先说说算法吧,排序算法笔试是非常常见的,10大排序算法不说非常熟悉吧,起码最基本的写法你要知道。再深入一点的知道它的时间复杂度,空间复杂度,稳定性,优化等。这些东西你刚开始可能觉得没用吧,但你工作后就发现,经常会遇到的,如果你刚入行,可能并不需要你去写这些。但你想以后当个主程什么的,就算不当主程吧,在公司当一个老手吧,这些肯定要会的,一般我们去游戏公司都很少从0开始的,所以很多东西都是现成的,拿来就用,但你有没有想过,要是哪天新开一个项目,从0开始呢?有些东西主程并没有写好的,你又没得用,那这个时候你不可能等别人写好再做你的功能吧?那等着挨骂吧,但要你自己来写这些东西你是否能写出来?就说一个游戏中常见的排行榜问题吧,如果让你从简单的10多个人或者上百人的排行中找出战力最高那个人,你用for一个个比较很快就可以做出来,但如果这个量上万甚至上亿呢?你不可能用for了吧?这个时候可以看看堆排序。游戏中排序是非常常见的,很多功能用得到,如果一些量不是很大的,就不用堆排序这些复杂的东西,简单的快速排序就可以。虽然我们游戏开发,做逻辑开发比较多,一些简单的逻辑这种东西基本上做得多就会的了。公司给你安排工作也是先从简单开始的,你简单的会了,就会安排难一点的给你,如果安排难一点的东西给你,你连一个简单的排序都做不好,那么下次难一点的工作,肯定就不会给你了。那你想往上走就更难了。不往上走,你就很难接触到更进一步的开发,比如通讯那块,所以再次强调,基础很重要,你只有基础好,给你新东西你才能做得好,才能一步步往上走。然后再说说数据结构吧,这玩意也很有用的,做后端基本上就是做数据的处理,那数据总要存放的,那你怎么存呢?打个比方,游戏中聊天功能吧,让你做一个只记录10条聊天记录,超过10条的就不要了。那我们是不是删除的时候要删除最早的那条,而不是最晚的那条,这个对应的结构就是队列了,先进先出。再说上面的堆排序排行,你也要存储的,对应的就是二叉树的结构。让你做能写出来吗?我刚学那会也很纳闷,这玩意有个屁用哦,我TM要做游戏,要知道怎么控制那些小人怎么打起来,年轻人嘛,总会浮躁,上来就是干,不想扯其它,工作后才发现,其实那些玩意也是这些基础的东西拼接起来的。另外说说网络这块,这个笔试其实很少有的,基本上见过的也就3次握手这些,因为这些怎么说呢,公司招人,新人嘛,不会让你碰这些的,所以说这些东西你刚开始的时候你了解就行了,知道有这么一回事。但你后面也肯定要学的,如果你以后要当个主程什么的,那别人也不会问你什么3次握手这些东西的了,而是更加深入实践的东西了。一问就知道你有没有做过的了。还有多线程多进程这些也是。所以说如果你是刚刚毕业,想入行的,相信我,数据结构和算法最重要。当然C++也跑不了的哈,不过都很简单的一些语法概念等问题。另外字符串的一些操作也多了解些,这玩意也很爱考。再说说要求有经验这个问题吧,很多人说没经验,这个怎么说呢,基本上就两种做法吧,傻不拉叽如实写,要不就简历上造假,我当年没有选择这条路,傻不拉叽的如实写,结果呢,找工作找到我一度想放弃,当然,你要是背景好学历高,另外说哈,像我这种学历低,又不是这专业的,没办法。至于作假嘛,看人吧,我也不建议,也不反对。为了生活嘛。如果要作假,我个人建议哈,你还是去下载一些游戏源码来看看,起码你知道后端是怎样框架的,具体有哪些服,都干嘛的,然后自己试试把里面的一些简单的功能模块看看能不能实现出来。起码别人问你的时候你能答得出来,至于游戏源码,这种东西上网搜索,很多的,基本上包括客户端服务器一整套代码都有的。就这些吧,暂时想说的。最后提醒一下,入行要三思呀,至少目前我是有想转行的想法的,理想的是找一份不用熬夜的开发,所以可能会离开游戏行业了,但我很喜欢游戏,并不会放弃游戏,目前我自己也在做游戏,在研究虚幻引擎,所以如果有时间,我也想写一些技术类的文章,像虚幻引擎这些的,把自己游戏开发的经历写写。

最后推荐一本书,指剑offer,强烈建议刷刷这书。好了,我去打下DNF先,M的100级版本更新后我都没怎么玩过,天天加班,去TM的加班,辞职了,吸一下毒奶粉先。

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

习惯是最好的

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值