作者bluebluelan (长得很像伊头鬼作)
看板studyabroad
标题Re: [问题]即将赴美念MSCS,非CS本科生该如何作准备
时间Thu Mar 30 08:56:02 2017
写一篇比较通用的好了 CS留学热潮也四五年过去 转专业的人不计其数
有写录取文的人少 有写求学心得的又更少 适应得好不好从板上无从得知
以下的心得出自於个人经验跟想法
不一定适用所有人 但有别的想法也欢迎提出
这边有一个命题 大家想想自己的答案
"转专业的人把作业系统/资料结构/计算机组织/演算法弄熟 就能驾驭CS硕班课程"
我的答案是It depends
如果你选了network programming却连TCP/IP都不知道是啥
那自然还得花时间念一下computer networks
但你也可以除了上课以外相关的知识什麽都不知道
写TCP socket不需要知道BGP/MPLS/IS-IS/OSPF 也能拿个A是没问题
但是你想丢的工作是Software Engnieer, network之类的 恐怕就不符合了
1.那如果你的目标是想学得扎实一点 需要什麽样的背景知识呢?
对於一个非CS/EE 或者离开学校很久的学生 要如何在CS program生存下来
我们从stanford MSCS的课程安排来看好了[1]
Stanford 觉得学生要有以下部分课程的知识才能够驾驭MSCS的课程
CS 103. Logic, Automata and Complexity
CS 109. Probability
CS 161. Algorithmic Analysis
CS 107. Computer Organ & Systems
CS 110. Principles of Computer Systems
CS 140. Operating Systems and Systems Programming
CS 143. Compilers
CS 144. Introduction to Computer Networking
CS 145. Introduction to Databases
CS 148. Introduction to Computer Graphics and Imaging
==================以上为大学部基础课程=================
CS 210B. Software Project Experience with Corporate Partners
CS 221. Artificial Intelligence: Principles and Techniques
CS 227B. General Game Playing
CS 243. Program Analysis and Optimizations
CS 248. Interactive Computer Graphics
CS 341. Project in Mining Massive Data Sets
CS 346. Database System Implementation
=====================以上为实作课=======================
对於一个大学是资工/电机的学生 在大学四年修完这些课的人应该也不在少数
所以台湾高等教育的课程设计概念 其实没有跟美国差太远
除了大家常常谈到的那四个以外
还有Databases/Computer Networking/Prob./Computer Graphics/Compiler
如果想在美国找到工作 前两个倒是值得花时间念一下应该会有帮助
有余力再念个compiler
不过software engineer在job description上头要求compiler知识的
大概就是FPGA/EDA/IC design公司
就业大宗的Full stack/front-end/back-end职缺上
会比较希望你摸过SQL/NoSQL/Javascript(node.js react.js)
举个stanford CSMS的track
Mobile and Internet Computing就规定必需修这两门课
CS140 Operating System, CS144 Computer Networking
有点像是RPG的转职一样 你要有这两门课的知识 才能去修一些更进阶的课
2. 要学什麽语言?
基本上"所有"的工作都会希望你是二刀流
一者是general purpose programming language 大太刀: Java/C++/Python/JavaScript
一者是scripting language 小太刀: Python/Perl/Shell scripting
(对於做前後端而言 JavaScript也能算是GPPL)
只要求你只会某一种语言的工作是极少数(但实际上工作用的又是另一个故事)
3. 如何刷题?
刷题是现在面试的主流 但是完全看你面试官的心情 不问刷题问课程知识的也是一堆
不如说这才是比较健康的面试过程 而不是考这个人多会做考古题
即使在大家都知道的Google/FB SDE不问刷题的也是有
各大公司招聘的流程跟方式日新月异 会不会有哪天又回到西雅图洗窗那种题目
两年之後 会不会有新的面试方式没人知道
如果说刷题涵盖的范围 如果说大学的课范围是100
刷题大概是70
演算法:时间/空间复杂度 Dynamic Programming
资料结构: 结构主要用stack/queue/hash table/priority queue/heap/linked list
/binary search tree/array/fenwick tree(binary indexed tree)/graph
方法 BFS/DFS/binary search/Quick Sort/heap Sort/Merge Sort/Count Sort/
Bucket Sort/backtracking
物件导向:会用this. private: public:就差不多了
资料结构会讲到的红黑树 AVL 剪枝之类的不会碰到 值得一提的就是fenwick tree
因为307. Range Sum Query - Mutable不用fenwick tree解的话 没什麽意义
要不就是add O(1), sum O(N) 或者颠倒过来 如果是用fenwick tree则可以达到
两者都是O(logN) 在这边就可以看得出一个资料结构选得好不好 差距是O(N)跟O(logN)
靠刷题来学资料结构跟演算法不够系统性 虽然你可以边写边念也能学个七七八八
还是推荐找本好书来带你入门学的也比较扎实就是
4. 2017Fall CS入学的学生有什麽事情现在能做的?
如果你想找到2018 summer intern 请现在开始修履历+念念书+刷刷题
然後打听一下各大公司FB/Google/Microsoft/Amazon什麽时候开始招募intern
一般来说是九月丢 不要晚过十月 当然你八月就要把东西准备好了
第一时间就丢下去 一般来说因为人数众多 所以即使安排面试 也要排上大把个月
如果在学卡到期中或者期末还要面试之类的 会相当痛苦
最理想当然是在期中前面一面 期末前拿到offer
补充:Amazon 2018 summer intern 2017/8开始招
[1] Stanford CS Graduate. (2017). Guide to the 16-17 Program Sheets. Retrieved
from
https://cs.stanford.edu/degrees/mscs/programsheets/psguide1617.pdf
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 24.5.244.173
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/studyabroad/M.1490835366.A.CBE.html
1F:推 ks950901: 推整理 03/30 09:35
2F:推 fishlinghu: 推喔 03/30 10:04
3F:推 jim790917: 推!转职跟集龙珠的感觉好像啊 03/30 10:11
4F:推 aznchat100: 推 其实你web(full stack)写得超好 然後不懂资工基础 03/30 10:15
5F:→ aznchat100: 础课程也是很好找工作 03/30 10:15
6F:推 urmfo: 推 03/30 10:20
7F:推 van2037: 推 03/30 11:00
8F:推 expiate: 感谢分享 03/30 11:13
9F:推 vallwesture: 推 03/30 11:20
10F:推 david850914: 目标四大巨头要很拚 强者第一年就先卡位了 03/30 11:47
11F:推 twbb: 推 03/30 11:50
12F:推 blockhead: 感谢分享! 03/30 12:06
13F:→ veru: 丢履历的时间比较难说 我找的researcch intern都是一二月 03/30 12:44
14F:→ veru: 才开出来, HP career的网站我看了好几次 以为今年没招 03/30 12:45
15F:→ veru: 结果二月中HP LABS 才放到网页上 03/30 12:46
嗯 这边没说 其实1~3月才是intern的主战场 上头举的是大家比较知道的FB/google等
三月中之後应该可以感受到intern的数量少了一截
VMware二月之後就没看过software intern缺
16F:推 whitehumor: 好文推!!! 很完整的资讯!!! 03/30 12:48
17F:→ veru: VMware我从12月丢到2月总共投了六七个,都是无声卡 03/30 14:07
18F:推 avd127: 推,我去年也是 2 月左右开始准备,最後在去年圣诞节前把 03/30 14:19
19F:→ avd127: offer收割完 03/30 14:19
20F:推 frank11118: push push!! 03/30 14:19
21F:→ ray3226: typo: hash table, linked list 03/30 14:51
22F:推 directional: 写的超好! 03/30 14:59
※ 编辑: bluebluelan (24.5.244.173), 03/30/2017 15:18:07
23F:推 s830304: 推 03/30 19:37
24F:推 sOuOr: FB的recruiter今年2月的时候就说招差不多了 03/30 21:27
25F:→ sOuOr: intern的部分 03/30 21:28
26F:推 hoo74586: 我面Uber的时候有考到红黑树... 03/30 22:40
27F:推 hotman: 谢谢bluebluelan大大的专业建议 我从中获益良多 :) 03/31 00:22
28F:推 fishlinghu: 考红黑树也太硬了 谁还记得啊XDDD 该复习惹 03/31 00:35
29F:→ MIKEmike07: 红黑树基本原理不难吧 重点是..如果叫你实作哈 03/31 00:58
30F:→ MIKEmike07: 但如果考概念而已 AVL vs RB 就相对简单很多 03/31 00:59
31F:推 sss81521: 推 03/31 01:02
32F:→ acgotaku: 我觉得EE/CS的课大学部常常比研究所的课 更硬更难修 03/31 06:30
33F:推 Zatarra: 蓝蓝大必推 03/31 11:25
34F:推 shiauji: 谢谢分享 推! 03/31 16:10
35F:推 ryanpig: 推一个! 03/31 16:24
36F:推 jerry771210: 推 以後被问可以请他们先看这篇了! 03/31 22:22
37F:推 UCDaLanJiao: 赞 03/31 22:42
38F:推 TsaiTao: 可惜去年此时没先看到这篇,相见恨晚推!!转专业必看啊 04/01 12:31
39F:推 codotsun: 推详细整理 先存最爱xdddd 04/03 02:25
※ 编辑: bluebluelan (24.5.244.173), 04/04/2017 14:50:22
40F:推 MAGICMCGRADY: 这篇是不是没讲到如果是ML/CV相关的准备方式? 04/05 02:47
41F:→ MAGICMCGRADY: 好像这方面工作刷题不用多 04/05 02:47