土木硕士转行互联网小结

前言

先简单自我介绍一下,本人是2018届某985土木硕士,2017年6~9月在今日头条算法工程师岗位实习,最终也成功签约了。转行过程中的迷茫与无助是转行最大的困难,因此我想给对互联网行业有兴趣,且有转行想法的学弟学妹提供一些帮助。

兴趣是关键

转行这个想法是我经过深思熟虑才决定的,因此各位想转行的学弟学妹们一定要慎重考虑,要考虑自己是否真的对编程(技术岗位)感兴趣!拿我自己来说,我虽然没有编程基础,但是我一直对数学很喜欢,也喜欢鼓捣计算机,因此在学习初期,完全不会觉得计算机知识的学习枯燥乏味,甚至有种打开新世界大门的感觉。因此,我觉得转行最重要的是兴趣,有了兴趣才会有产生强大的自我驱动能力给予你学习的动力。很多同学咨询过我转行的问题,但是真正坚持下来并且转行成功的同学无一不是对编程感兴趣的,工作之后也不会丧失学习的热情。因此,如果看到代码就打瞌睡的同学还是不要入这行了,当然也可以考虑互联网其他方向(运营,产品等),后文的建议和经验也仅对那些有兴趣的同学生效。

方向很重要

对编程感兴趣的话,实际上就已经成功了一半。但是,为了让自己学习效率最大化,还是有很多弯路和坑可以避免的。就拿我本人来说,转行花的时间大约在1年左右,从研一下学期4月份到研二下学期4月份找到暑期实习。实际上,如果我能少走一些弯路,我认为0基础大约6~8个月就能达到我的水平。我在转行的过程中遇到最大的一条弯路就是学习的方向。很多人都知道,计算机有很多方向,每个方向的技能要求都不一样,前端可能要求js,css,html等技能,后端可能要求java,php以及对应的框架等,算法可能就需要额外要求机器学习的知识。我在大量知乎,博客的转行经验中发现,很多人给的建议都没有结合个人的特点,比如觉得前端简单入门就学习前端,大数据很火就学习大数据。别人咨询我转行问题的时候,我一般都会根据此人的特点,兴趣等信息给他一些建议。比如,对于建筑学的同学想转行我可能会建议他了解一下UI设计等偏前端的职位,这些职位实际上和建筑学有异曲同工之处,也都需要有自己的作品集来证明自己的价值。而如果是土木硕士的学弟学妹,很多都是对数学等非常感兴趣的,对编程虽然没什么基础,但是绝对不会反感,因此转行做算法或是大数据相关相对来是不难的。因此,尽早确定转行的方向可以坚定转行的信念,并且节省很多犹犹豫豫,东学西学的时间。我在选方向时就浪费了很多时间,大约花了两到三个月学习Android开发和前端的一些技能,事实上这对于我找工作是完全没有帮助的,因此我前文才会说如果少走一些弯路可以在更短的时间做得更好。

学习之路

有了兴趣,找到了方向之后,我们可以就可以真正的开始学习了。就算暂时没找到方向其实也不用着急,一些基础的知识无论是什么方向都需要掌握,比如算法和数据结构,计算机系统等,可以先学习好这些知识再考虑方向的选择。就我个人而言,主要学习方法是通过coursera公开课和自学一些经典课程来学习计算机知识的。语言基础、算法、计算机系统、计算机网络是校招最重要的知识,我这一年的大部分时间也都花在上面了。下面就给出我的书目:

  • 算法相关:《算法》第四版,强烈推荐。图文并茂,通俗易懂,非常适合入门,还可以配合coursera公开课学习,事半功倍。唯一的缺点就是缺少动态规划的部分内容,可以通过《算法导论》动态规划相关部分弥补
  • 网络相关: 《TCP/IP协议详解 V1》这本书被奉为计算机网络神书,但是个人觉得内容很详实但是缺少实践。可以结合《计算机网络-自顶向下方法》中的一些实践,在实践中学习的效率要高很多。
  • 计算机系统: 《深入理解计算机系统》简称CSAPP,也是系统教学的神书之一,很多人觉得枯燥,原因也是没有结合实践,可惜coursera的配套公开课已经下架了,但是课程还是可以通过华盛顿大学的公开课查到。除此之外,《UNIX环境高级编程》(简称APUE)也是神书一本,UNIX环境下编程的各种问题基本都能找到解答,缺点就是整本书的风格偏于知识的堆积,并不是读者友好型的书籍,可以把它当做一本UNIX字典,遇到问题再去翻看即可。
  • 面试相关: 把《剑指offer》题目刷得倒背如流即可,手刷两遍加机刷两遍(牛客网),能做到全部一次AC的话,基本上面试的90%算法题都能搞定。有兴趣可以刷刷leetcode,我大概刷了2~300题leetcode,但是面试遇到的都是《剑指offer》中常规的题目。
  • C++:《C++ primer》也是非常经典的C++入门书,涵盖了C++的大部分知识点,作为补充《Effective C++》是C++进阶的必备书籍。除此之外,可以对STL有个更深入的研究,主要掌握STL中各种container的实现,包括vector,list,deque,unordered_map,map,set等。

面试感悟

我在暑期实习招聘中面了三家,分别是华为C++岗、阿里C++岗和头条算法岗位。主要感悟有两点,一是简历上的东西一定要真实并且非常熟悉,华为面试我就吃了这个亏,对简历上的项目(因为当时没什么项目,就瞎写了一个没做完的)问的很细,我就回答得很差,后续头条sp offer加面我也吃了这个亏。阿里和头条的面试则都比较顺利,问的问题都很基础,阿里是一道排序题,头条是倒转链表和求第k大元素,当时谈的项目就是我当时正在做的kaggle比赛,所以非常熟悉,回答得还不错。最终阿里C++和头条算法我还是选择了头条算法岗,主要原因是头条算法岗属于核心岗位,我也对算法相关的知识非常感兴趣。第二点就是,基础知识真的很重要!!其他很多新技术,新框架,比如hadoop,hive等等都可以在工作中学习,但是一些基础,比如smart-pointer,C++内存模型等等都是工作的基础,你不理解的话根本不知道哪里出错了,也就会导致工作效率差,leader对你的印象也就会打折。因此,在校期间真的要把各种计算机基础知识好好巩固,工作后很难有时间再来学习这些基础知识了。

小结

总的来说,这一年迷茫过、犹豫过,走过很多弯路也有不少遗憾,但是我一点都不后悔,因为我选择了一条我喜欢的路,之后会补充一些实习中应用到的知识的一些总结,比如thrift,luigi,kafka等。

猜你喜欢

转载自blog.csdn.net/wutao1530663/article/details/78022572