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

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

Rank: 9Rank: 9Rank: 9

声望
1529
寄托币
18978
注册时间
2013-4-2
精华
11
帖子
4688

Golden Apple 枫情万种 一帆枫顺   枫华绝代 寄托兑换店纪念章

16
发表于 2017-3-23 14:24:12 |只看该作者
只有一点不太同意。无论指针难不难,你最后都得明白这玩意儿是怎么回事,尤其对于初学者。不用精通,但是必须明白这是什么。尤其用Javascript这种动态弱类型语言入门的人,更加容易在后续中踩坑。Python可能还稍微好点..毕竟是强类型的。举个例子,如果对指针完全没概念,java的inheritance和polymorphism就只能懂个皮毛了,内存中怎么管理的完全一摸黑,甚至可能连为什么要new都不明白。

其实很多CS基础课,比如组成原理什么的,你上的时候根本感觉不到这东西到底有什么用而且还很难学,但是真工作了以后你会发现里面的内容对你学习一项技术的本质有不可替代的帮助。

使用道具 举报

Rank: 8Rank: 8

声望
593
寄托币
4309
注册时间
2011-10-25
精华
2
帖子
1912
17
发表于 2017-3-23 23:14:50 |只看该作者
蒙牛冠益乳 发表于 2017-3-23 03:15
愿闻其详
我的砖已抛 求大神的玉来砸

内存,指针,基础数据结构在内存里的实际存储这些是CS入门最基础的知识。以后学任何一门语言,包括python这种看起来没有指针的,都是必备知识。  只有入门的时候学C/C++之类的语言实际操作过指针才能对这些东西有意识。 不然后面学什么都难。
现在大量学校为了忽悠人来学CS低年级课分分转成了Java甚至Python, 然后学生欠得债迟早要还的。
没操作过指针和内存,怎么让一年级学生理解Array和List有什么区别, 为什么Array需要提前声明大小, 为什么用数据类型和item的数量就可以声明Array大小....这些基础知识都不知道后面的数据结构和计算机构成基础怎么学?
反正吧, 入门的时候主动或者被动的偷懒,只能导致后面更难学

使用道具 举报

Rank: 8Rank: 8

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

2016 US-applicant 加拿大offer勋章

18
发表于 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: 6Rank: 6

声望
240
寄托币
1805
注册时间
2014-7-5
精华
0
帖子
589
19
发表于 2017-3-24 01:23:18 |只看该作者
给力!

使用道具 举报

Rank: 2

声望
51
寄托币
96
注册时间
2017-2-11
精华
0
帖子
11
20
发表于 2017-3-24 07:08:02 |只看该作者
不错的分享
另外楼上太多装逼的人了,会C++懂指针操作系统编译原理就很牛逼? 无非就是看别人没读什么学位转行成功而自己苦逼读了很多年找工也不顺,内心不平衡而已

这边文章针对的是无背景转行,目的能转行就可以了,非提什么指针内存管理高级算法显示自己牛逼高人一等吗?

使用道具 举报

Rank: 5Rank: 5

声望
156
寄托币
1424
注册时间
2014-8-12
精华
0
帖子
379
21
发表于 2017-3-24 07:23:46 |只看该作者
赞,虽然不是CS,但是觉得后面的技术贴很中肯!

使用道具 举报

Rank: 4

声望
75
寄托币
277
注册时间
2017-3-11
精华
0
帖子
175
22
发表于 2017-3-24 08:18:49 |只看该作者
本帖最后由 zhanghaoxx 于 2017-4-2 17:37 编辑

看看专家怎么说的

使用道具 举报

Rank: 7Rank: 7Rank: 7

声望
126
寄托币
3772
注册时间
2013-6-17
精华
0
帖子
1262
23
发表于 2017-3-24 09:07:14 |只看该作者
mitbbs 发表于 2017-3-24 07:08
不错的分享
另外楼上太多装逼的人了,会C++懂指针操作系统编译原理就很牛逼? 无非就是看别人没读什么学位 ...

我就正在转专业。
其实多学点还是好事。不过现在疲于应付课程,而且有时间还得为未来找工作做准备,实在是时间不多。
不过至少找工作前,算法什么的还是得刷刷。

使用道具 举报

Rank: 4

声望
85
寄托币
508
注册时间
2016-12-25
精华
1
帖子
152
24
发表于 2017-3-24 13:46:38 |只看该作者
mitbbs 发表于 2017-3-24 07:08
不错的分享
另外楼上太多装逼的人了,会C++懂指针操作系统编译原理就很牛逼? 无非就是看别人没读什么学位 ...

虽然我是新新手,我不觉得楼上说指针说内存管理是在装逼。从我刷的那几道入门级“奥赛题”的经验来看,即使是无背景转行,不懂指针、OO和基本的编译原理,CF应该是刷不到几分的……

使用道具 举报

Rank: 9Rank: 9Rank: 9

声望
730
寄托币
8629
注册时间
2014-3-6
精华
0
帖子
4545

Economist 商学院

25
发表于 2017-3-25 19:52:02 |只看该作者
mitbbs 发表于 2017-3-24 07:08
不错的分享
另外楼上太多装逼的人了,会C++懂指针操作系统编译原理就很牛逼? 无非就是看别人没读什么学位 ...


不是每個人都像你這樣短視的.

其實有沒有打好基礎, 是科班出身與否的最大分別. 而科班出身對技術行業發展的重要性就不用多說了.

既然花了大時間去重練一個二學位(加拿大不相關學位讀不了CS master), 為甚麼不打好基礎呢??

使用道具 举报

Rank: 3Rank: 3

声望
53
寄托币
167
注册时间
2013-12-4
精华
1
帖子
32
26
发表于 2017-3-26 10:21:41 |只看该作者
打了好多字 结果有敏感词。。。!! 截了个图大家凑合看一下
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册
已有 1 人评分声望 收起 理由
JOJOAA + 1 不能更认同

总评分: 声望 + 1   查看全部投币

使用道具 举报

Rank: 3Rank: 3

声望
53
寄托币
167
注册时间
2013-12-4
精华
1
帖子
32
27
发表于 2017-3-26 10:23:37 |只看该作者
为啥图2在1上面。。。

使用道具 举报

Rank: 3Rank: 3

声望
53
寄托币
167
注册时间
2013-12-4
精华
1
帖子
32
28
发表于 2017-3-26 10:50:36 |只看该作者
入门的小白 个人推荐学java/c# 理由
1 不像C/C++很多地方理解的那么难 也不像python 那么简单
2 以下是招聘网站 indeed 的就业数据
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

使用道具 举报

Rank: 4

声望
50
寄托币
194
注册时间
2017-3-2
精华
0
帖子
116
29
发表于 2017-3-26 11:55:59 |只看该作者
本帖最后由 wonderhowwhy 于 2017-3-29 18:14 编辑

大神太多,不板门弄斧了。

使用道具 举报

Rank: 9Rank: 9Rank: 9

声望
1529
寄托币
18978
注册时间
2013-4-2
精华
11
帖子
4688

Golden Apple 枫情万种 一帆枫顺   枫华绝代 寄托兑换店纪念章

30
发表于 2017-3-26 14:32:28 |只看该作者
本帖最后由 clinkz 于 2017-3-26 00:42 编辑
蒙牛冠益乳 发表于 2017-3-25 20:21
打了好多字 结果有敏感词。。。!! 截了个图大家凑合看一下


想了想还是认真回答一下吧,虽然现在寄托总有一堆小号在狂吠,还是希望能帮助到一些理智的人。

你如果仔细翻翻我的帖子,我是从来没说过转专业来cs的人要看操作系统/编译原理的,这根本不可能看得懂。没有汇编的知识,OS和编译原理是不可能懂的,而且这些知识对你能找一个cs的入门工作并没有大用(比如ios/android开发入门职位,web前后端入门职位等等)。

但是内存模型这个东西不一样,本身就是cs本科学生一年级就要学的内容,如果这个不会基本可以说所有的知识都是空中楼阁,只是你硬背下来,照葫芦画瓢到六成熟而已。当你碰到一些莫名其妙的问题要debug的时候,不懂指针更是致命,甚至你可能都搞不清楚什么时候我写的这个function要return变化后的值,什么时候不需要。指针和内存管理粗糙点说其实根本就是一个东西,简单而言就是你如何给你的程序申请到"正正好"的资源,并且在使用完毕后如何告知操作系统我用完了你可以"回收"了,就是这么点事,好好看一下不用超过一个礼拜,磨刀不误砍柴工。事实上如何有效率的做这两件事,java/python/javascript/objective-c(osx mountain lion以后)...都已经全自动替你做了,你只需要知道这是怎么回事就可以了,并不需要把指针玩的出神入化。而最方便理解指针的语言恰好是c/c++,所以才有c/c++是cs入门语言这么一说。至于操作系统的内存管理(资源的虚拟化)那就是另外一个领域的内容了。本来还想举个例子说一下为什么简单的数据结构和算法也很重要,但是实在不想展开去说了,因为涉及很多专业内容,而且楼上@codercaspar已经说的很详细了,如果你真的有兴趣知道为什么的话,我个人建议就去看一下JavaScript的异步处理机制(这个可能新手更容易看懂)或者rpc(这个可能需要一定web REST api的背景知识才好理解)。

非科班出身想追上科班当然不容易,我自己在转到cs的时候也非常不理解为什么我这个大学的cs课除了c++完全不讲语言,也不理解为什么同样是学生,高我2年级的可以在一个礼拜掌握一门新语言并且直接开始贡献production code。其实cs真正的价值就在这些基础知识中,而不是培训班:

我自己在暑假的时候就逼着自己把cs二年级的课全上了,那是真的生不如死,4个月时间上完了数据结构/组成原理/面向对象/*nix和代码质量。人都是逼出来的,想安逸真不适合转专业来学cs。所以对于这点我对你的建议是正视差距,打好最基本的基础,写一些力所能及的个人项目。当时我找工作之前还是@ybbhfjhh给我出了个好点子,我自己用python写了个爬虫每天去爬学校食堂的菜单,碰到有sushi bar或者牛排就给所有的subscriber发邮件。我面试的时候说到这个所有的tech interviewer都挺感兴趣的,会跟我谈谈我当时的想法和一些实现部署的细节。你是转专业,我也是转专业(从医到cs二学位),你想想医学院的学生毕业要多久,我还有硕士,我都多大了。你有1-2年的时间呢,你怕什么?

最后说说找工作,其实找个入门的工作远比你想象的要简单,会写点html,js,css切切图也有工作。会container based virtualization,会熟练优化部署cloud CI这些不怎么需要大量写代码的也有工作。一切取决于你

PS. 最后想补一点,楼主你可能太看得起科班毕业的学生了……今年我司面试,反转字符串70%+的学生写不出来,真是愁人
附件: 你需要登录才可以下载或查看附件。没有帐号?立即注册

使用道具 举报

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

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