如果自己的家鄉有個地方可以滿足自己的理想並且能得到好的待遇,我相信大部份的人會選擇留在自己的家鄉工作.就像在花蓮台東長大的孩子,若是踏上了軟體開發一途,幾乎應該都會離開自己家鄉到北部或其他地方找工作,一來工作機會多,二來待遇也比較好.相同地,如果台灣的資訊業滿足不了你的理想或期望的待遇,你一定也希望找台灣以外的機會.但從台灣到國外並不像從花蓮到台北那樣地單純.所以,我寫這篇文章是用來留下一個記錄,讓年輕人參考有什麼方式可以進行.
再談論可行的方法之前,請先好好想一想你為什麼想出國工作.以下的原因可能是大部份人的答案:
為了理想: 希望到具有規模的軟體公司接受更多的考驗來充實自己的人生經驗.
為了更好的待遇: 台灣薪資普遍低落,想追求更好的薪水.
原因可能有上百種,但這兩種應該是符合大多數人的答案之一.水往低處流,人往高處爬,這是再自然不過的事情.因此,我先就這兩個原因說明.
第一,為了理想.以台灣的純軟體開發產業來說,真的不多,若你還想找個有軟體產品賣向全世界的公司,可能用手指頭就數完了.畢竟,台灣的整體...
#58 資料庫引擎對交易 (Transaction) 的執行情況

在上次文章裡介紹了基礎的交易 (Transaction) 性質與特點,讓你可以了解為何關聯式資料庫引擎需要它.在一般的情況下,一個資料庫引擎在同一個時間內服務的應用程式非常可能不只一個,而且同一個應用程式也可能在同一個時間發出兩個不同的交易來要求資料庫引擎執行.因此,我們都知道一個資料庫引擎在同一時間執行多個來自用戶端的交易是相當平常的事情.同時可以服務多個用戶端等於是增加了整個系統的處理效能,也因為要同時服務多個用戶端,資料庫引擎的效能對於磁碟存取就會變得相當敏感.因為磁碟存取速度快,整體效能才夠快.但只有磁碟效率快就夠了嗎? 在上次文章裡介紹了交易的特點之後,你就能明白光是快還不夠,還需要在多個交易執行讀取之間不造成衝突才行.因此,資料庫引擎的設計就會面臨兩個挑戰:
1....
#57 出神入化的用介面 第一集_什麼是介面 (Interface)
出神入化這詞用的誇張了,為何選用這詞呢? 在 2016 年底辦了一個 .Net公益課程,課後的問卷裡詢問未來若有機會,大家有興趣聽什麼主題的內容.結果有位朋友寫了 "出神入化的用介面".我想這應該是當天課程上曾提到跟 Interface 有關的事情.後來,我想了想,這主題要描述的清楚並不是件容易的事,也不是三兩句話可以交待的完.所以,用一個說故事的方式來說明這個主題.透過這個主題可以一直延伸到許多程式設計和軟體開發上的事情.
如果你在業界有多年的軟體開發經驗,相信你對 Interface 一定有某種程度以上的使用與了解.但如果你現在還是一個在學的學生或是剛進入職場沒多久的社會新鮮人,也許你對 Interface 的了解可能只限於課本上或是老師口授而來的知識.由於 Interface 這種東西並不是什麼學術研究的題材...
#56 Coding面試 LeetCode #230. Kth Smallest Element in a BST
原文的題目網址在這
有好長一段時間沒有到 LeetCode 網站上去看題目了,今天去的時候才發現 LeetCode 網站做了一些小改變並且增加了更多的題目.不僅演算法類的題目增加,也新增了其他種類.如 OO 設計,系統設計等.真的是稱的上軟體工程師面試題目的最佳網站了.我以前在 LeetCode 上寫了很多題目,這網站有一個優點就是它會把你之前寫過的程式碼保留下來,所以我還能看到我之前寫的答案.
這一題是考找出 BST 中第 K 個最小值.要解決這題,有兩個先決條件.第一,你得知道什麼是 BST (binary search tree),第二,你得知道第 K 個最小值是怎麼來的.基本上,如果遇到 TREE 這方面的題目都考 "特質".因此,得先把每個 TREE 的最重要特質記在心裡.BST...