鉴于吧里还是学生的比较多,很多童鞋希望得到一些关于大学计算机学习的一些建议,这楼就聊聊这个话题。
首先俺本科,研究生都是读的EE,所有关于程序的东西基本都是自学来的,非科班出身,如果说得不好请大神指正 :)
很多童鞋问关于选C++还是Java,个人以为如果你没有任何程序基础,C不要跳过,即使你最终找的工作跟c没任何关系。
有了一些c的接触之后,C++, Java任选一个,到底是c++好还是java好,这个争论已经存在好多年了。个人认为没有好还之分,只有适合不适合你。看你以后想做的方向,比如你喜欢偏硬件一些,比如嵌入式,驱动开发,操作系统开发,或者大型游戏开发,人工智能,机器人之类的,那就C++. 如果你想做Android开发,大数据,云计算,Social media之类的大型网站开发那就Java.
语言只是工具,C++稍难比java复杂点因为灵活度高,Java的人转c++刚开始会有很多不习惯,c++转java稍微好一点。
从找工作上来说,十年前的是C++好一些,现在个人认为Java好一些。 这和IT的发展有很大的关系,十年前是硬件和操作系统的黄金时代(Intel和MS最辉煌的时候),但这几年以及下一个十年用户和数据是王道,
硬件和OS逐渐变成一个载体。便携硬件设备和智能家居也许这两年会火一点,但一样不过是为了取得用户群和数据。 MS收购诺基亚,微软收购摩托罗拉和现在的NEST是看中了能赚多少钱?当然不是。FB收购Whats App也不是因为利润,不过是为了灭掉一个对手以及获得更多的用户。
扯得有点远了。。。Python其实也不错,在校有精力的话也可以看看,语法和数据结构足够简单,而且功能也很强大。喜欢做网站的话,学学Django,可以让你对MVC有个深刻的理解。个人偏见,我不喜欢.net虽然也写过asp,学过c#。觉得它有点鸡肋(平台限制,太封闭,以及MS在走下坡路),前面我记得吧里有个在微软的朋友还抱怨没Java经验,不好跳槽。
CS核心课程,数据结构,算法,操作系统一定搞懂搞精。还有数据库,计算机结构,编译原理俺个人认为没有前三个来的重要,但也会对你职业有很大的帮助。
如果不是CS科班,或是培训出来,也请不管是学习的时候还是工作的时候把这几个核心的东西补上,网上的材料和视频很多,自己找找。如果英文好,MIT的开放课堂很好很强大。
学算法和数据结构的时候存在个刷不刷题的问题,我的个人意见是刷,你刷的多,总比你刷的少在算法上理解的更深刻,但千万别死记硬背。。。我记得很早以前看过一个帖子,有个童鞋问每天需要背多少代码。。。差点昏倒了。刷的时候多看看别人的讨论,无论国内国外的,cs没有国界。leetcode是俺比较喜欢的oj网站,讨论也比较多。 百度和google是你最好的助手,stackoverflow是最好的讨论区,基本你能想到的问题你都能找到别人的讨论和解答。
除了课程的那基本书,课余或快毕业了要面试的话有空看看CC150(Cracking the coding interview 150)也不错,我记得国内好像有翻译,但我不记得书名了也不知道哪有卖,可以网上找找电子版。这本书其实并不是较你有哪些面试题你可能会碰到,而是教你解决问题的方法,如何思考。
上面在说刷题,但请记住,刷题不是你的全部,除了面试之前或参加竞赛,请只花费很少的一部分时间。 因为并不是所有人努力了就能拿ACM的全国大奖,或是能得到国外的FLAG,国内的BAT面试。理想是理想,生活是生活,程序员这行和所有其他的行业一样,在金字塔顶端的只是很少一部分人。
多积累经验,有机会跟老师混项目是最好的,没钱拿打杂也可以。有志同道合的朋友可以一起搞个小工作室,无论尝试些手机APP开发啊就,接些网站的活都对你练习你学校学校的知识,接触社会,积累经验有作用。也能给你简历润色不少。楼主虽然本科EE,但当年大部分时间都花在了写程序,接项目,赚钱上。搞过工作室,开过小公司。 虽然创业失败,大四找工作的时候,简历拿出来真的很能唬人。有机会也参加点开源项目,俺一直认为好的程序员要懂得开源,共享,和协作。 多一点分享,少一点无脑乱喷。
培养自己的CS素养,也许有人说CS就码代码呗,要啥素养,不然,很多时候面试和相亲差不多,就是个看对眼部对眼的过程。技术过关了,你和面试官闲聊的时候,就会暴露你在这行的素养,有空多看看书,多关心关心这个行业的风向,重要事件之类的,面试的时候也会有很多谈资。 这个方面前面
@恋夜H诗 说得很好,推荐的书的很详细, 俺就不班门弄斧了。
积累人脉,很多程序员都是宅男宅女,往往忽略了人脉的重要性。 但这个往往是对你找工作,职业发展最重要的。 前面也说了,找工作的时候90%是死在了HR的简历筛选上,所以内推真的很重要,尤其如果你的学校不是那么出众,那么很多大公司你可能根本就没面试机会,HR那边就直接刷下来了。 而如果你多认识些师兄师姐呀,或是因为项目啊,甚至是bbs,论坛之类的认识人能帮你内推,至少你能拿到个笔试或者电话面试的机会。
先扒这么多吧,各位大神畅所欲言。本来还想继续侃侃现在热门的几个方向的,一看已经不早了,改天再说。
定好目标,坚持这个目标,大家一定都能成功!程序猿们和程序媛们,加油!