作者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://www.ptt.cc/bbs/studyabroad/M.1490835366.A.CBE.html
推 ks950901: 推整理 03/30 09:35
推 fishlinghu: 推喔 03/30 10:04
推 jim790917: 推!轉職跟集龍珠的感覺好像啊 03/30 10:11
推 aznchat100: 推 其實你web(full stack)寫得超好 然後不懂資工基礎 03/30 10:15
→ aznchat100: 礎課程也是很好找工作 03/30 10:15
推 urmfo: 推 03/30 10:20
推 van2037: 推 03/30 11:00
推 expiate: 感謝分享 03/30 11:13
推 vallwesture: 推 03/30 11:20
推 david850914: 目標四大巨頭要很拚 強者第一年就先卡位了 03/30 11:47
推 twbb: 推 03/30 11:50
推 blockhead: 感謝分享! 03/30 12:06
→ veru: 丟履歷的時間比較難說 我找的researcch intern都是一二月 03/30 12:44
→ veru: 才開出來, HP career的網站我看了好幾次 以為今年沒招 03/30 12:45
→ veru: 結果二月中HP LABS 才放到網頁上 03/30 12:46
嗯 這邊沒說 其實1~3月才是intern的主戰場 上頭舉的是大家比較知道的FB/google等
三月中之後應該可以感受到intern的數量少了一截
VMware二月之後就沒看過software intern缺
推 whitehumor: 好文推!!! 很完整的資訊!!! 03/30 12:48
→ veru: VMware我從12月丟到2月總共投了六七個,都是無聲卡 03/30 14:07
推 avd127: 推,我去年也是 2 月左右開始準備,最後在去年聖誕節前把 03/30 14:19
→ avd127: offer收割完 03/30 14:19
推 frank11118: push push!! 03/30 14:19
→ ray3226: typo: hash table, linked list 03/30 14:51
推 directional: 寫的超好! 03/30 14:59
※ 編輯: bluebluelan (24.5.244.173), 03/30/2017 15:18:07
推 s830304: 推 03/30 19:37
推 sOuOr: FB的recruiter今年2月的時候就說招差不多了 03/30 21:27
→ sOuOr: intern的部分 03/30 21:28
推 hoo74586: 我面Uber的時候有考到紅黑樹... 03/30 22:40
推 hotman: 謝謝bluebluelan大大的專業建議 我從中獲益良多 :) 03/31 00:22
推 fishlinghu: 考紅黑樹也太硬了 誰還記得啊XDDD 該複習惹 03/31 00:35
→ MIKEmike07: 紅黑樹基本原理不難吧 重點是..如果叫你實作哈 03/31 00:58
→ MIKEmike07: 但如果考概念而已 AVL vs RB 就相對簡單很多 03/31 00:59
推 sss81521: 推 03/31 01:02
→ acgotaku: 我覺得EE/CS的課大學部常常比研究所的課 更硬更難修 03/31 06:30
推 Zatarra: 藍藍大必推 03/31 11:25
推 shiauji: 謝謝分享 推! 03/31 16:10
推 ryanpig: 推一個! 03/31 16:24
推 jerry771210: 推 以後被問可以請他們先看這篇了! 03/31 22:22
推 UCDaLanJiao: 讚 03/31 22:42
推 TsaiTao: 可惜去年此時沒先看到這篇,相見恨晚推!!轉專業必看啊 04/01 12:31
推 codotsun: 推詳細整理 先存最愛xdddd 04/03 02:25
※ 編輯: bluebluelan (24.5.244.173), 04/04/2017 14:50:22
推 MAGICMCGRADY: 這篇是不是沒講到如果是ML/CV相關的準備方式? 04/05 02:47
→ MAGICMCGRADY: 好像這方面工作刷題不用多 04/05 02:47