看板 studyabroad 關於我們 聯絡資訊
寫一篇比較通用的好了 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