双非非科班本科上岸微信后台开发学习经历总结
从双非本科非科班到腾讯微信事业群后台开发,我想把我的故事说给你听
大家好,我叫小乾,是一名在西安读书的大四学生,在去年的秋招中收获了来自京东云后台开发、腾讯微信后台开发、快手音视频服务端开发offer,作为一名双非本科非科班的学生,在这样一个非常的时期收获这些offer也是非常满意,现在的自己也是非常感谢那个无数个夜晚在电脑前熬夜学习的自己。
最近也是有一些学弟学妹询问我如何学习以及秋招的一些经验,其实有时候自己上网看到一些同学在问,我是双非的,我很喜欢计算机但是不知道如何入门,看到他们的话,我也是想起了当时作为一个非科班的我入门计算机时候的心酸和满学校去蹭计算机院基础课时候不被人理解的经历,所以想总结自己从大一到大三学习的经历分享给大家,希望可以对大家有所帮助。
我的专业是集成电路设计与集成系统,当时其实我的第一第二志愿都是计算机的专业,第三个我觉得就报个跟我哥们一样的专业吧,他选的是西电的集成专业,其实说真的我没觉得自己会到第三个志愿录取,大二看了转专业政策才知道自己当年和网络工程只差了一分,我当时考了516,我们学校还有一个物联网专业也属于计算机院,当年的最低录取分数线是515,我们集成专业是514,因为差了一分所以我又不能转到物联网专业,最后留在了集成专业。
其实和大多数西北地区的同学一样,我在高中也没有接触过计算机编程,甚至我大一计算机基础这门校选课还不及格,所以那些跟我一样没有在高中甚至更早接触过计算机的同学千万不要放弃,这都没关系的,你们可能现在比别人差点,但谁知道未来会发生什么呢?这也是我当时大二去蹭课,宋老师对我说的,你看到有些同学人家会写那个括号匹配的编程题,那可能是他高中甚至初中就接触过编程,你不会很正常,没关系,让我们从单步调试开始吧。这些话说真的我会记一辈子,很幸运在最开始的时候遇到了一位很好的老师。
说回正题,其实我的第一本编程书应该是C语言之父的那本C语言程序设计,但是那本书当时学校发的是双语的,考虑到同学们的情况,其实大部分我们用的是西电的那本C语言和谭浩强老师的那本书,虽然谭老师的这本书很多人为之诟病,但确实是我的启蒙书,对于这本书我是真的很感激的,虽然当时看了知乎很多人诟病之后我也开始嘲讽这本书,但现在想起来确实是这本书让我敲出了第一个真正意义的程序,毕竟每个人的第一个程序都是Hello,World!哈哈哈。 然后我接触到了c primer plus,知乎上对这本书评价非常高,我当时也是如获至宝,一口气买了三本书,除了这一本还有c与指针,c专家编程。
这本书确实是一本很好的书,作为初学者如果可以用这本书入门,是非常好的,因为这本书介绍了C语言的基础知识之后还对数据结构有了一定的介绍,承上启下,对于大一知识的巩固,对于大二知识的预习都是非常好的。然后大一留校的那个暑假,我对着这本书一行一行敲,幻想着敲完这本书我就会打通任督二脉,成为编程高手,怀着对计算机的热爱在学校里面从早到晚的敲着这本书,其实我现在想告诉学弟学妹们的是,我这种方式其实效率很低,现在想想最好的方式应该是理解了之后自己不看书去敲一遍,然后做一下对应练习。然后把课后 在学习题做一下,这里我真的很推荐这本c primer plus,非常好的入门书,还有那本cC语言之父的c语言程序设计,如果学有余力可以看看c与指针,c专家编程,然后可以写一个学生管理系统锻炼一下。
接下来就是进入到了数据结构和算法分析的部分,这部分我推荐大家先看清华大学邓俊辉老师的课,对于我这种非科班的来说,数据结构确实有点难,我当同时一边蹭学校宋老师的课,一边看着邓俊辉老师的课,其实我觉得对于入门的人来说看书很快,对于我们这种零基础的人来说看视频其实更好,这一点建议大家酌情考虑,不要盲目的去看算法导论这种书,这种是很好的书,但可能不太适合一些同学,邓俊辉老师的课蛮好的,如果你要看书我推荐一本大话数据结构,也很好,学完这些课程之后,我的建议是开始刷leetcode,对于leetcode来说我觉得可以练习一些经典的题,可以买个会员,然后刷一些大厂的高频题,我觉得好点的刷题方法其实是第一遍3-5分钟没思路赶紧看题解然后多做几次,以量取胜,然后注重质,其实大家不要觉得这样有点急功近利,对于那些打acm的同学来说其实也是大量的刷题锻炼培养了自己的算法思维,像我有的同学打acm经常刷codeforce,如果你有这方面的需要也可以刷这个。
另外我建议大家在学习数据结构和算法同时学习C++或者Java 为以后的刷题打基础,因为你不可能用C 造轮子,而一些数据结构甚至算法比如容器和排序,这时候肯定得用stl或者Java的库,如果这两不想学习的话,可以学python或者go我个人推荐go,因为go现在很多公司都在要求使用这个,因为我是c++的,这个方向有几本书很好推荐给大家,c++ primer,c++语言程序设计,effective c++,如果你不想看书,侯捷先生的课也很好,b站可以看到,c++ 侯捷关键词就可以搜到很多,博览网的,进阶方向可以研究一下stl源码。有本书很好,stl源码分析,大家可以看看。
然后就到了大二下或者大三,大家需要开始进行操作系统和计算机网络的学习了,因为你前面有了Linux的操作基础,现在就可以理论结合实践了,纸上得来终觉浅,绝知此事要躬行。
网络理论部分推荐图解系列(图解tcp/ip,图解http)还有公众号小林coding的图解网络系列,进阶有tcp/ip详解卷一,操作系统方面推荐一本好书深入理解计算机系统,CMU的入门书,b站有CMU的课,机器翻译,还不错可以听,还有清华大学的操作系统课,陈渝向勇老师的,课程实验是带你做一个操作系统内核,还有一本程序员的自我修养也推荐大家看。有了理论基础之后,大家就要开始实践了,也就是系统编程和网络编程,这两个方面很多人入门就看Linux系统编程和网络编程这两本书,我承认这两本是绝对的经典是必看的,但可能不太适合一些入门同学,我觉得可以先看一本tcp/ip网络编程,然后看一下高性能服务器编程,这本书后面作者给的项目可以做一下,用基础的系统api写的,然后可以看看陈硕的那本关于muduo的书,然后看看源码,b站也有一个剖析源码的课,可以看看,接着学习数据库的知识,然后可以做一个项目来巩固自己的学习,这个也可以作为你的校招项目,我给大家几个方向哈,c++确实不像Java一样有很多项目可以写,大家可以写一个http服务器模仿nginx,或者把高性能服务器编程那本书的项目深入写一下,或者自己实现muduo。
以上基本上就是我的学习路线了,也是我走了很多弯路之后,重新回顾自己的大学学习,上面提到的书籍我接下来也会整理发出来,以上总结的一些我觉得还可以的路线,希望能对那些跟我一样是非科班的同学一些帮助,最后想跟大家说,非科班可能你觉得没有任何优势,但是只要你热爱计算机,非科班意味着我们有更多自主的学习安排,可以精简自己的学习计划,反而少了很多的选择,踏踏实实找好自己的路走下去就行,大家加油。
#C++工程师##学习路径#