查看: 69525| 回复: 136
跳转到指定楼层
上一主题 下一主题
收起左侧

[转CS-吐槽] 响应w大号召,简单说一下我对CS入门(for转CS)的一些建议

   
全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
w大在这个帖子里面提到了一个问题:“
现在有越来越多的人想学CS,自然就有这样一个问题:
如何
打好CS的基础?如何入门学习?”
我自己本科是学EE的(信号处理方向),然后到这边读CS小硕,所以觉得自己还是很有发言权的。我大二的时候发现自己对于EE完全无爱之后就一直在自学CS方面的知识,积攒了一些经验和资料,在这里和大家分享下。

本文适合打算从非CS专业(最好是工科)转到CS读master然后毕业找工作的人群,不适合打算读CS phd的同学。



首先根据我对CS业界的观察以及实习经历,我觉得业界对于CS毕业生的需求倾向大概分为两种:

1、算法分析和设计的能力,要求熟练掌握常用算法和数据结构,能够快速针对一般性的问题给出optimal的解决方案,对于较复杂的问题能给出解决思路,要求手写代码的能力,而对project经历要求不高。

代表公司:facebook,amazon,google等以互联网为主要业务的公司

2、就是俗称的coding能力,要求熟练掌握常用算法和数据结构,并对某一种开发流派比较熟练,如web开发方向的javascript/PHP/Silverlight/HTML5,本地开发的Java/.Net,移动开发的ios/android/wp7,还有些更专精的方向,比如嵌入式开发的Linux+C,驱动开发等,对经验要求较高。

代表公司:Microsoft,IBM,Oracle等传统软件公司+各种小公司+各种startup公司

所以各位想转CS的同学,先想好你们以后打算往哪个方向发展,如果数学功底比较好、脑筋比较快的适合第一种(智力型),如果喜欢engineering的感觉、有一定coding经验的话适合第二种(敏捷型)。
..

第一种升级路线:
.--
首先要打好算法功底,本人推荐《Introduction to Algorithms 3rd》,算法学习的圣经,虽然厚但是非常细致,全书使用伪代码。把一些比较重要的章节学完之后做做课后习题,基本别的算法书就不用看了,之后做做面试题就行。

然后掌握一门语言,建议C/C++,因为这两门语言非常低层,甚至连string处理都要自己一个char一个char地写(先无视STL吧),非常考验编程功力和优化水平。
.--
对于C,大家知道有个C四库全书,其中K&R写的那本我觉得早就应该看完,然后剩下的《C和指针》、《C专家编程》和《C陷阱和缺陷》也要看一遍。看完这四本书基本就可以自称“精通C语言”了。

对于C++,因为过于博大精深,所以其实很难推荐,而且事实上没有一个人敢声称自己“精通C++”。但有一本书是学C++不可不看的,中文译名叫做《深度探索C++对象模型》,侯捷翻译的,质量不错。

对于编程语言的掌握水平,必须达到对于自己的代码、在大脑中能时刻勾画出代码的执行流程和数据在内存中的排布方式这种程度。

最后是OS和数据库,我觉得各选一门CS系研究生级别的课就足够了,只要明白基本概念、能使用unix的系统调用编程、能日常操作MySQL即可,不需要研究太深入。


第二种升级路线:

这一种对于算法的要求虽然没有第一种那么高,但是常用的算法和数据结构,比如快排、二分搜索、二叉排序树(即堆排序)、二叉搜索树、哈希表等还是要熟练掌握的,也推荐上面那本算法导论,没时间的话也可以用《数据结构与算法分析:C语言实现》来代替。

对于语言,建议除了以上提到的C/C++的基础,再另外掌握一门开发语言+一门脚本语言,如Java/C#+PHP/Perl/Python等,这个没什么教材好推荐,建议多做project,熟能生巧。

对于OS建议掌握更深一点,最好能阅读和学习Linux内核,推荐ULK第三版,即《Understand Linux Kernel 3rd》,讲2.6的内核,然后下载个Source Insight软件同步阅读内核源代码,不必全部看,重点关注进程管理、进程调度、内存管理、文件管理即可。还想深入、或者打算投身驱动开发的同学,LDD3(《Linux Device Drivers 3rd》)不可不看。

(关于OS再补充一句,我个人觉得面试如果问到OS,不会问你一般性的原理,比如“互斥锁是怎么实现的?”,而是会问你“Linux的互斥锁是怎么实现的?”。我记得以前在国内面试某T公司的时候,面试官看我简历上写了“Windows内核”就和我探讨了Windows内核对于物理内存的管理方式来着,然后我把AVL树说成红黑树了,囧啊。)

对于数据库,仍然建议掌握MySQL,能日常操作即可。

想走第二条升级路线的同学,project经历是重中之重(课上做的那种project不算),建议多参加一些实验室工程性质的项目、软件开发的比赛,或者干脆投身移动app开发,总之就是多积累作品,这样和面试官才有得聊。


我觉得对于转CS同学的指导思想就是在有限时间之内迅速掌握实用的知识和经验,其实CS虽然叫做Science,本质上还是个Technology为王的领域,不需要长年累月的积累,只要努力任何人都可以得其门而入。


以上皆为一家之言,欢迎各位指正和补充。

评分

参与人数 37大米 +810 收起 理由
阿童木 + 10 感谢分享!
king_lm + 3 感谢分享!
vera1103 + 2 很有用的信息!
Amy絮梦 + 3 感谢分享!
winlo + 3 感谢分享!

查看全部评分


上一篇:趁着最近人气高,Warald召集大家讨论CS学习问题,分享资源!
下一篇:如何积累项目经验

本帖被以下淘专辑推荐:

推荐
moophis 2012-2-25 20:41:38 | 只看该作者
全局:
感觉第二种更适合有EE背景的CSer,正在努力中。楼主好人
回复

使用道具 举报

推荐
zzzhouzhong 2017-10-11 15:13:26 | 只看该作者
全局:
感谢lz总结。求问目前数据挖掘、推荐系统、人工智能相关的属于哪类?
另外之前国内生物转行cs,目前做android开发两年,帝都二线互联网30w,感觉工作就是复制粘贴,没前途且很容易被替代,想做数据挖掘、推荐系统、人工智能这些热门行业。
目前想出去读cs master合适吗?
回复

使用道具 举报

推荐
darrenlau 2017-6-14 01:01:45 | 只看该作者
全局:
大三EE狗刚转CS,上学期刚上完数据结构,用的C++,请问有什么project可以推荐的吗?这个暑假打算做几个project然后Fall去找找CS的实习。感谢
回复

使用道具 举报

🔗
wwwyhx 2012-2-25 02:02:52 | 只看该作者
全局:
我觉得按这种趋势分3类更合适:.--
1. Facebook, Google
2. MS, Amazon
3. IBM, Intel, VMWare, Apple.....

Facebook 是最极端的重算法轻经验, IBM相反
回复

使用道具 举报

🔗
 楼主| bignews 2012-2-25 02:04:24 | 只看该作者
全局:
回复 2# wwwyhx

嗯,做过一次IBM找实习生笔试题,基本没有算法,全是Linux和C++……然后挂了
回复

使用道具 举报

🔗
paradox 2012-2-25 03:06:00 | 只看该作者
全局:
我觉得按这种趋势分3类更合适:
1. Facebook, Google
2. MS, Amazon
3. IBM, Intel, VMWare, Apple.....

Facebook 是最极端的重算法轻经验, IBM相反
wwwyhx 发表于 2012-2-25 02:02



    interviewed with Apple before, lots of language details on objective-C and C.......T_T.........gua le!
回复

使用道具 举报

🔗
mimighost007 2012-2-25 11:37:34 | 只看该作者
全局:
正在向第一路线努力,但实际上是处于第二路线的飘过~~~~
回复

使用道具 举报

🔗
will_ym 2012-2-25 11:48:45 | 只看该作者
全局:
哎,前一段时间四处找这方面资料,拜谢了!
回复

使用道具 举报

🔗
gterwilliam 2012-2-25 13:18:09 | 只看该作者
全局:
mark一下。。。。
回复

使用道具 举报

🔗
klose 2012-2-25 14:17:05 | 只看该作者
全局:
谢了,好文章。。。。。
回复

使用道具 举报

🔗
cyisatree 2012-2-25 15:49:24 | 只看该作者
全局:
好棒的文章 楼主总结得很细致!
回复

使用道具 举报

🔗
icework 2012-2-25 17:05:11 | 只看该作者
全局:
我现在是第一种的项目经验加第二种的算法能力!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表