---
# System prepended metadata

title: '20200618'

---

---
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 來看待，因此能不能有效的利用它，資料結構也是很重要的觀念之一。