寄托天下
楼主: 蒙牛冠益乳
打印 上一主题 下一主题

[加国生活] 转CS经验贴 [复制链接]

Rank: 8Rank: 8

声望
174
寄托币
24426
注册时间
2014-12-24
精华
1
帖子
3174

2016 US-applicant 加拿大offer勋章

楼主
发表于 2017-3-24 00:49:45 |显示全部楼层
理论非常重要!
理论非常重要!
理论非常重要!

重要的事情说三遍。

没想清楚之前就开始写代码是会导致很多很多问题的,这是我切身经验之谈。

高手写代码是:写之前想很久,比如在纸上写伪码。开始写后键盘敲得很快,写完后基本没啥问题。
新手写代码是:上来就开敲键盘,敲敲停停,写完了后bug超多,花很多时间调试。

怎么能想清楚?靠理论啊。

===========================================================

至于算法题,结合到实际上会有很多门道的。

我举一个简单的例子:找出一个数组中第i小的那个数。比如 3,2,9,7,5 中第2小的那个数是3。
这个问题有线性时间复杂度的算法,但实际编程中少有人用这个算法。因为这个算法实现难度很高(就是很难编写对),而且也仅仅是理论上的线性时间复杂度。

比较经济实惠的办法是直接quick sort排序,然后直接找出来。很多时候评估算法的时间复杂度也要看实际上系统要处理的数据量。

再加一个小八卦,binary search算法 1950s就提出来了,可真正的完全无bug的第一个实现是1970s才有的。
编程珠玑这本书里还讲到了如何用归纳法来看你的实现对不对。

============================================================

为啥大公司拿算法题卡人?没办法的事嘛,应聘者太多,用这种“奥赛题”刷人最快了。

我认识的一个人,为了去google刷了一个多月的算法题(不是leetcode,leetcode里有很多问题是简单难度。他刷的算法题集各个都是leetcode里hard难度。)现在问他他说基本不记得解法了。

为了应试刷题库是完全可以的。但真的想提高自己,最起码算法导论翻一遍。里面关于算法的基本设计思路都说的很清楚。想提高的话可以看concrete math。里面的数学知识对于算法设计很有用。

使用道具 举报

Rank: 8Rank: 8

声望
174
寄托币
24426
注册时间
2014-12-24
精华
1
帖子
3174

2016 US-applicant 加拿大offer勋章

沙发
发表于 2017-4-7 04:43:26 |显示全部楼层
JUN97 发表于 2017-3-28 16:32
感谢前辈,受用了。
想问一下我本科科班出身的,C/C++的掌握程度只有学校考试要求的水平(分数:90+/100 ...

不用纠结于具体学哪个语言。先把编译原理看看,再看看各个语言的发展历史,比如:为什么要设计C;为什么又出来了C++;同为OOP,为啥又搞出了Java。编程语言的语法很好学的,关键是背后到底是为了解决什么问题才被弄出来。

使用道具 举报

Rank: 8Rank: 8

声望
174
寄托币
24426
注册时间
2014-12-24
精华
1
帖子
3174

2016 US-applicant 加拿大offer勋章

板凳
发表于 2017-4-7 05:34:59 |显示全部楼层
感觉应该有个CS科普帖,说说大概有哪些方向然后这些方向用的是什么技术,需要什么知识。

使用道具 举报

Rank: 8Rank: 8

声望
174
寄托币
24426
注册时间
2014-12-24
精华
1
帖子
3174

2016 US-applicant 加拿大offer勋章

地板
发表于 2017-4-7 06:04:48 |显示全部楼层
clinkz 发表于 2017-4-7 05:53
不懂c和计算机组成原理看啥编译原理,没可能看得懂的

倒不用全看懂,主要是为了理解怎么词法解析和解释一个编程语言就够了。

使用道具 举报

RE: 转CS经验贴 [修改]
您需要登录后才可以回帖 登录 | 立即注册

问答
Offer
投票
面经
最新
精华
转发
转发该帖子
转CS经验贴
https://bbs.gter.net/thread-2075174-1-1.html
复制链接
发送
报offer 祈福 爆照
回顶部