Hello,大家好,我是10届的信电学长。现在研三,在电子科技大学就读。记得研一的时候在矿大贴吧发了篇对大学学习和考研经验的总结,得到不少学弟学妹积极的反馈。很开心自己的一些经验能过帮助各位,希望学弟学妹们能够快速成长。这是上一篇的文章http://tieba.baidu.com/p/4841194930,感兴趣的同学可以看一下。
一转眼研究生生涯又要告一段落了,想起来真是快啊!废话不多说,上干货吧。(程序员就是这么直)经过前段时间疯狂的找工作,本人收割了阿里巴巴,腾讯,滴滴,华为的offer。虽然没法和国外的FLAG相比,但是在国内也算是顶级offer了(都是20w+)。在这里和各位学弟学妹分享一下自己的心得和体会,也算是为自己的母校做点贡献吧。哦,对了,最后学长去了阿里,欢迎同在阿里的矿大校友联系我,咱们可以搞个矿大校友会嘛。
一.把握方向
相信矿大有很多同学在搞IT,可能是计算机学院的,也可能是信电学院的(以前我就是其中一个),也可能是机械学院的等。相信各位在选择IT方向的时候,或多或少会有过迷茫,不知道是做嵌入式呢,还是做web开发呢,还是做还是做纯粹的算法设计呢,等等。本人以前也是在迷茫中走过来的。我始终相信方向比努力更重要,选对了方向,就等于成功了一半。套用雷总的一句话:只要站在风口,猪也能飞起来。哈哈!开玩笑啦!总之选择方向非常重要。在方向问题上,我也走过不少弯路,本科时候搞了坑爹的机器人,参加了电子设计,做了数学建模,搞了ACM。在技术的道理上,开始玩C语言,后面搞单片机,后面又搞ARM,后面转战JAVA WEB,图像处理,机器学习等。现在本科的同学也在IT界混迹好几年了,本人在电科大也确实感受了一波互联网的浪潮。结合自己的经验,给学弟学妹在方向选择上提几点建议。
1. 可以去玩单片机,但是不要把它当做以后的工作方向。学习它可以帮助我们更好的理解计算机硬件结构,只能每条指令执行的流程,但千万不要想着从事这个行业,学长告诉你,它就是个坑。。。
2. 本科可以去玩ARM,不要听某些不懂装懂的人告诉你,ARM很难,都是研究生玩的,我呸!这句话害死了多少矿大天才,他们知道个屁。亲爱的学弟学妹们,喜欢嵌入式的话,就大胆的去搞ARM开发,去学习linux操作系统,学长百分百告诉你们,你们的能力是可以的,不要害怕!其实学嵌入式(不包括单片机)玩的就是操作系统,特别是linux,这对一个IT人提高自己的内功是非常重要的。如果你们特别特别着迷于嵌入式也可以钻研下去,并且把它定为自己的职业方向也可以。但是在这里学长很抱歉的说,我不推荐你们从事嵌入式方向,因为国内嵌入式行业多是以外包为主,基本没有巨头,你只能在华为,中兴(快不行了),大疆(还很小)里面跳,这还是嵌入式顶级公司了,也就这么多,你们懂的,职业选择面太窄,所以不推荐。当然如果你非常看好未来的IOT,那也可以。
3. 能选择互联网方向就一定要选择互联网方向。现在是互联网时代,行业内好比百花齐放,非常春天。有人说不是互联网资本寒冬了吗?说这话的我只能说too young too simple, sometimes naïve。如果心里还是不放心,欢迎亲爱的学弟学妹和我交流。
4. 互联网有哪些方向?答:前端分为:ios开发,安卓开发,web前端,后端分为:PHP,JAVA web,数据库DBA,WEB高性能优化等等(后端实在太多了,学弟学妹各大公司招聘网站上了解一下),算法:NLP,机器学习,图像处理,计算机视觉,深度学习等。在选择方向上你们千万不要又学历之分,就好像我研究生感觉学安卓好low啊,我本科生学算法是不是不行。具有所知,互联网公司招人还是以实力为主,对学历没那么看中,除非华为大变态。我见到不少本科生从事算法研究(当然你必须理论足够牛逼,实际上个人觉得本科生很难那么牛逼,当然也不排除怪兽),研究生搞安卓,web前端,web后台的。总之,喜欢什么就钻研下去,互联网招人多,薪资高,加班咯咯(不说了,现在哪行不累)。
5. 不知道看我帖子的是大几的,如果你是大一,大二的,那么我强烈建议你不要参加坑爹机器人了,那个是吃力不讨好,最多只能装点逼,什么舞蹈机器人,什么PID算法,什么AVR单片机(连AV都不能看的AVR),MP430,我只想说有空多看看练练C语言吧,看看操作系统,算法与数据结构。不要听校方各种忽悠,最牛逼的机器人就在你手机内,它的名字就小冰,Siri。又想到以前在机器人上面浪费的各种时间了。。。蓝瘦香菇,我应该去多泡点妹子的。
6. 对于电子设计比赛,我觉得含金量还是很高的,如果你们对嵌入式感兴趣,对电子热爱,还是希望你们去参加一下,嘿嘿,关键能学到很多东西,不止是IT知识啦,数电模电等懂很多,起码以后自己家里电风扇坏了,可以修修。哈哈,开玩笑的!关键是4天3夜的团队奋战,是我大学最难忘的一段回忆!现在我的队友们都混的不错(PS,我们是国三奖,欢迎各位超越)。
7. 数学建模可以尝试,也不错,锻炼数学思维,锻炼学霸精神。
8. ACM,ACM,ACM,重要的事情说三遍。如果想入IT,不管是嵌入式,互联网还是算法工程师,编程内功都是重中之重。为了ACM,你可以放弃其他一切比赛,即使你拿不了一个区域铁牌。进入ACM校队的那段培训经历,编程能力上可以让你秒杀国内80%的985研究生十条街。嘿嘿,我不说假话的,所以不要看ACM队员都是傻傻的,呆呆的,人家那是在修炼内功呢!有了很好的内功,去学其他的IT技能,可以达到事半功倍的效果。在这里,真心希望我们学校能冲进final,不知道亲爱的师弟师妹们能不能帮我实现愿望。有志者去联系计算机学院的杨文嘉老师(本人矿大最敬佩的老师)!
以上8点是我对想要入行IT的学弟学妹们的建议,有想不明白的,欢迎来讨论哦!
二.学习技能
做IT的,有5项基本功是一定要扎实的。操作系统,计算机网络,数据库,编程语言,算法与数据结构。从我的面试经验来看,大多数面试官也基本是考察这几项。下面我分别来说说,如果你有志想进入一线IT企业的话,你这几项基本功应该达到个什么样的程度吧!
1. 操作系统:光会玩linux操作系统远远不够,要熟知它的进程调度,内存管理,还有文件系统等。不需要你对内核源码有深入的理解,但是对其提供的系统API的实现要能很熟悉,能用C语言进行UNIX环境下的多线程编程,多进程编程!
下面推荐几本书:《鸟哥的私房菜》,《unix环境高级编程》卷1,卷2,《linux内核设计与实现》rebert.love写的
2. 计算机网络:主要是TCP/IP协议,搞互联网的,如果对它都不能了如指掌,那么玩个蛋啊!
推荐2本书:《计算机网络》谢希仁的(入门),《TCP/IP详解》卷1(进阶)
3. 数据库:这个是块难啃的骨头,数据库的知识范围很广,对它的深入认识,要建立在对操作系统的深入理解之上。要对sql和nosql性数据库有一定了解,特别是sql型数据库的代表mysql,一定要好好学习,不能光停留在只会增删改查的层面!
推荐书:《mysql必知必会》(入门),《高性能mysql》(高级篇)
4. 编程语言:工欲善其事必先利其器,写程序,语言很重要!C语言是必须要好好掌握的,在掌握了C以后,你需要掌握一门更高级的静态语言,这里推荐JAVA,不是不喜欢C++,而是C++坑实在太多了,说精通C++的人简历直接被刷,不是说C++不好,只是不太利于构建大型系统,你们看看linus大神喷的话就明白了!最后还需要学习一门动态语言,这个推荐python(人生苦短,我用python,你们懂的)。
C语言的话:强烈不推荐看老谭的那本烂书,多看看国外的《C陷阱》等等。
C++语言:先看点国内基础的书籍,各种《C++从入门到精通》。。。然后熟悉了基本语法以后,上《C++ primer》,《effective C++》,《STL源码剖析》然后本人也就修炼到这里。。。
Java语言:《java core》,《think in java》+ 视频(老毕的,张龙的都可以)
5.算法:只推荐一本《算法导论》,然后就是各种ACM啦!
除了上面的内功,就是外加一些简单的IT技能了,如web开发,前端开发等。好啦,写的是不是有点多啊,有点枯燥对吧!但是学长保证,都是实打实的干货,有不明白的欢迎亲爱的学弟学妹来咨询,学长只能帮你们到这里啦!