--- title: '20200618' disqus: hackmd --- 20200618 === ## 20200618 最基本 計算機概論(http://linux.vbird.org/linux_basic/0105computers.php#data_number) & 資料結構 (http://alrightchiu.github.io/SecondRound/mu-lu-yan-suan-fa-yu-zi-liao-jie-gou.html) (https://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84) | └系統層面 作業系統 & 系統程式 | └ OOP 理論 (https://en.wikipedia.org/wiki/Object-oriented_programming) / Design Patterns、 或是軟體工程的方法論 ( XP, TDD … 等 )。 想到資料結構,不外忽一堆排序 (SORT) 的演算法,或是各種 TREE / LIST 等怎麼 “放” 資料,及怎麼 “找” 資料的問題 ,如 LINKED LIST,HASH TABLE,BINARY TREE,HEAP,STACK 等等。再來就是什麼問題可以用什麼資料結構來處理? 像是走迷宮要靠 STACK,各種資料結構的特性為何? 它們的時間複雜度 (Time Complexity) 為何? 什麼時後該用那一種? 我舉幾個 .NET 內建的,卻又常讓人搞混的幾個 Collection。List / LinkedList 用的方式都一樣,那麼兩者到底有什麼不一樣? 只塞一百筆,找出一筆要 10 ms 的話,塞一萬筆找出一筆要花多少時間? 是 100 倍嗎? 還是 10 倍? 還是都一樣?? 是 Microsoft 工程師太無聊,故意寫來讓你傷惱筋的嗎? 丟一付洗過的撲客排給你 (不要多,黑桃1 ~ 13就好),你知道怎麼用 Bubble Sort / Quick Sort 的步驟把它排好嗎? 丟一個陣列,裡面隨便打幾個數字,你能寫程式把它由小到大排好印出來嗎? 假設記憶體夠大的話,你有辦法把一百萬筆通訊錄資料讀到記憶體內 (用什麼物件都隨你),然後還能用很快的速度找到你要的資料嗎? 不同的搜尋方式,你知道該用什麼樣的方式找才有效率嗎? 以台灣高速公路為題 (中山高、北二高、國道二號),你有辦法寫程式,讓使用者指定起點跟終點的交流道,然後替它找出建議的路線嗎? (把延路經過的交流到跟收費站列出來就好) Q1:你尊重專門技術嗎? 換句話說,你認為術業有專攻嗎? 當你接受外面的教育訓練課程時,你總是崇拜看起來什麼都懂的老師? 換句話說,你認為那些遇到課外問題就跟你說他不懂的講師是爛老師? Q2: 你覺得演算法和資料結構無三小路用,因為你從沒使用過? Q3: 你常常以科班或非科班自居? Q4:你是學計算機科學的,可是邏輯能力並沒有比較好,還常常受騙? Q4-1:你會被潮流所鼓動嗎? 你常常被別人的思考牽著走? 人家鼓吹 Linux 多好多好,你的腦袋連轉都沒轉過就發憤努力地考 Linux 認證 ? Q4-2:Sun 跟你說 Java 跨平台,你沒試過也跟人家說跨平台的優點? Q4-3:之前一窩峰人鼓吹 XML,結果你盲目追求流行,做出來的東西 tag 比 data 還多? Q4-4:微軟的廣告告訴你 Windows XP 和 IE 將不支援 Java,你都還沒試過就跟別人嚷嚷 Java 已死? Q4-5: Web service 當然是美好的前景,但是並非適用於每個角落,目前世界上並不存在完美的 solution。 人家說不能寫程式一輩子,寫程式的人生命週期很短,你也跟著別人開始往 SA/SD 前進 ? Q4-6:顧問告訴你要多用 RAD,不該重新造輪子,所以你努力的問 how 而不問 why ? Q4-7:一個系統在設計的時候有很多考量,有人以擴充性為主,有的以安全性為主,有人以效能為主。 如果沒有設計理念,大家程式裡頭的 function 全部改成 inline 就好了,管他編譯出來的執行檔有多大。 系統只以效能做考量,我們還需要 Design Pattern 做什麼? Q5:你尊重老前輩嗎? Q6:你騙過老闆嗎? Q6-1:你以為你的身價比較高,只因為你從事"軟體研發"的工作? 資料結構 + 問題分析 從 List 換成 SortedList, 搜尋速度差了 6000 倍 資料結構通常包含兩個層面,一個是怎麼 “描述” 你的資料? 另一個是怎麼去應用你的資料? 多資料庫上面效能的問題,也都跟資料結構有關。就跟上一篇該挑那一種 Collection 一樣, 資料庫也可以把它當成一個更巨大,功能更多的 Collection 來看待,因此能不能有效的利用它,資料結構也是很重要的觀念之一。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up