資料結構與演算法教學系列文 (2) - 陣列、鏈結串列、堆疊、佇列
HackMD 完整版請點我 資料結構(Data Structure)資料結構是一種設計、組織、儲存資料的方式,以實現最佳性能和效率。這些結構包含不同形式,像是陣列、鍊結列表、樹、圖等等。選擇適當的資料結構對於解決特定的問題至關重要,不同的資料結構可以用於不同的應用,並且可以極大地影響程序的運行時間和記憶體使用。 陣列(Array)可隨機存取的一串連續記憶體位址。 陣列 (Array) 簡介 補充:List Are Arrays in Python Leetcode 26. Remove Duplicates from Sorted Array 27. Remove Element 鏈結串列(Linked List)元素間彼此串聯在一起,形成一條鍊子的資料結構。也可以是上圖雙向連結的形式。 Linked List:Intro(簡介) Linked List:新增資料、刪除資料、反轉 Leetcode 21. Merge Two Sorted Lists 24. Swap Nodes in Pairs 206. Reverse Linked List 堆疊(Stack...
資料結構與演算法教學系列文 (1) - 概述、排序、搜尋、時間複雜度
哈囉!久違又來更新教學文系列了,這次的主題是在學完基礎程式設計後,一定也需要會的東西:資料結構與演算法。若你對程式設計還不太熟悉,或是想回去複習一下 Python 或 C++,可以參考我下面的系列文: Python 教學 C++ 教學 這個系列文應該會很長,因為 DSA(i.e. Data Structure and Algorithm)這個主題是在是涵蓋太多東西了,甚至我寫的內容也沒有到很完整。這次的來源一樣是拿來做家教講義,文字部分不會太詳盡,有需要更詳盡的內容歡迎聯絡我,如果我有空就可以幫你上課 XD。 最後就是轉載請記得標註來源,這裡面的內容都是作者本人收集的心血! HackMD 完整版請點我 入門介紹 Google Coding Style 甚麼是演算法? 甚麼是資料結構? 來複習一下學習地圖,以臺大資工系必修為例:以臺大資管系必修為例: 而在演算法與資料結構的世界裡面,大概又可以分為以下幾種類別。在我們之後的課程中,會逐漸的介紹每個名詞以及其對應概念: 相關連結: How to master DSA labuladong 的算法筆記 演算法與資料結構 競...
Make your shell great again! 來安裝 Oh My Zsh 吧!
身為一個資工人,總是少不了每天跟 Shell 打交道,自從大二上過 OS 以後,什麼 ls、cd、sudo rm -rf /*,根本就是跟喝水一樣每天都會碰到(絕對不要試最後一個,後果自負 XD)。大多 OS 預設的 Shell 功能通常都不多,僅僅只能算是堪用而已,因此常常會遇到一些麻煩的狀況,像是你要進到很深的資料夾就要一直瘋狂 cd,或是要一直 ls 看這邊到底有什麼檔案等等。某天偶然聽到別人介紹 Oh My Zsh,感覺非常好用,就乾脆自己來玩玩看。(延伸閱讀:什麼是 Shell?) 安裝方法我主要綜合以下三篇文章的教學: Oh my ZSH with plugins Ubuntu 安裝 Zsh + Oh My Zsh + Powerlevel10k 與各種插件 【分享】Oh My Zsh + powerlevel10k 快速打造好看好用的 command line 環境 首先,如果你的作業系統不是 Mac,那通常預設 Shell 會是 Bash。可以透過以下 command 安裝 Zsh 並設置預設 Shell: 12sudo apt install zshchsh...
突然想寫的生活近況更新
嗨,好久不見! 最近特別忙碌,好一陣子沒有來更新了。趁著前幾天在新電腦上重新架好 hexo 的環境,順便來隨意更新一下生活近況。(舊電腦實在太炸,已經用五六年了,鍵盤還一直壞,忍不住換了新筆電,M4 Pro 真香~) 繼上次更新在聊尋找實習後,這半年(2024/07~2025/03)發生了許多蠻值得記錄的事情,就且聽我娓娓道來吧。 關於工作我於七月加入 Appier 擔任 ML Scientist Intern,到目前為止都還在實習。每週工作三到四天,可以一半遠端的工作模式也讓我有較多彈性,細節也許我之後會再發一篇文單獨來談,總體而言我還是蠻滿意這個經歷的。 另外,我依然有在接家教,但現在學生數量降到一個,每週大概一到兩次,準備起來是蠻輕鬆的,除了學生很常請假,和會佔用一點時間以外,整體也是挺不錯的。 最後,我也陸陸續續準備面試了一些正職的面試(真的好累……),之後也會有一篇文章跟大家分享,總之目前是拿到了還算喜歡的 offer,但也會偶爾持續尋找面試看看其他機會。 關於學校碩二是研究最繁忙的時候,但不見棺材不掉淚的我,還是選了一堂可怕但實用的課:李允中教授的...
2024 年科技業暑期實習面試心得(Google, Gamania, Appier)
一年又過去啦~又到了要找暑期實習的時間了,如果還沒看過去年的暑期實習面試心得文可以 點我 觀看。今年我的策略一樣是只找大公司 & 有興趣的職位,因為順利的話畢業也許可以直接拿 Return Offer,就不用再找工作了。另外我主要是找暑期,以 SWE、AI & ML 相關的職缺為主。(雖然我最後去的是長期實習 XD) 面試紀錄 投遞履歷:18 家公司 面試邀請:3 家公司 Offer Get:1 家公司 最後去 Appier 做 Machine Learning Scientist Intern,我也只有拿到這個 Offer。 Google - SWE Intern第一關(1/29 & 1/30)- Online Coding Interview x 2一月初投的,中間兩三周都沒收到任何消息,還以為涼去,結果到快月底了才收到面試邀請,還好我一月都算有在加減刷題,話雖如此但面試前幾天還是緊張到靠北。題外話,我原本選一中一英,但莫名其妙變成二中,不知道該開心還是該難過,因為我也不知道到底語言會不會影響評分 @@。 以下因為 Google ...
C++ 教學系列文 (2) - 類別、延伸議題
HackMD 完整版請點我 類別(Class)作為物件導向的程式語言,C++ 的 class 相關語法可以說是非常重要與常用,在大型專案的開發一定少不了他的身影,且多樣又彈性的語法支援,可以說是將物件導向的概念發揮到了極致。此處我們簡述一些常見的相關語法與概念,過於高深或少見的語法我們會先略過。 基本語法 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566class Car { private: int wheels; string plateID; string driver; bool engine; int meters; public: Car(string plateID, string driver); ~Car(); void turnO...
C++ 教學系列文 (1) - 基本語法速覽、指標
哈囉!許久沒有更新了,因為碩班真的是好忙呀嗚嗚,等我寒假或是比較有空的時候,會再開始更新一些東西。這次來發 C++ 的教學文章,延續之前的 Python 教學系列文,在教完 Python 之後,學生說想學 C++,身為好老師的我就又做了一份講義給他,抱持著造福社會的精神,就順便分享到我的網站上。(題外話:這個學生上個月剛教滿一年,也是我目前接最久的家教,甚至打這篇文章的現在也在幫他上課哈哈。之後還有一些其他主題的教學文,整理完以後我再發上來。) 此系列文只有兩篇,建立在你已經會寫基本的 Python,或是看完我的 Python 教學系列文的基礎上撰寫,所以如果還沒看過的可以點 這邊 來看。那因為已經有一個程式語言的概念了,所以我會著重在 C++ 與 Python 不同的地方,那些差不多的語法(if-else, for, while…) 我會在最前面速速帶過,有不懂的話建議回去參照對應的 Python 教學文部分,或是我提供的參考連結。一樣要提的是,我原本是做講義用,文字部分不會太詳盡,有需要更詳盡的內容歡迎聯絡我,如果我有空就可以幫你上課 XD,最後就是轉載請記得標註來源! Ha...
極短篇:碩班第一個月之心得
距離開學大約經過一個月,昨天突然有感而發,於是就有了這篇簡短的心得文。 大學做專題的時候,盧老師曾經講過:「做研究要靠興趣支撐」,之前還沒多想,但這句話最近常常浮現在我腦海裡,直到最近大概可以略為體會那種感覺。 這一個月大概是我人生中學習動力特別高的一段時期。上次有這種感覺是大一初學程式時,那種接觸新領域,思考如何寫 code 叫電腦解決問題的快樂。近期的種種也讓我再次感受到,學習可以很有趣,還有以興趣為支持的重要性。(赫然發現能主修自己有興趣的學科,也是一件很難能可貴的事情,特別是在台灣。很感謝大一的我有做出困難的決定,繼續努力往資訊領域深耕!) 雖然目前還遠遠稱不上是在作研究,但是不論是看到最新的研究成果,或是在看以前的 paper,總是會發現一些酷酷的東西,而這些酷酷的東西總是讓我覺得很好玩,也很興奮,很期待未來 AI 的發展會走到何處。 不免俗的還是要說,真的很幸運可以進入資工所念研,每天想到這件事情都還是很快樂,也很感謝在這邊遇到的各位強者,偶爾也會有「不愧是台大,一堆怪物」的感覺在腦中浮現。雖然我現在還處在一團亂的狀態(還是不太會看 paper、不太知道該做啥、還在思...
在 TSMC 實習的日子 - 2023 夏,台南
繼上篇文章 2023 年科技業暑期實習面試心得 講述我尋找暑期實習的過程後,這篇文章要來講的是我這兩個月在 TSMC 實習的心得感想。我實習的地方在台南的南科台積十四 B 廠(F14P5),實習單位是廠務數位發展部(FACDD)底下的自動化課,對於土生土長的台北人來說,雖然遠到靠北,但也是個體驗台南生活的好機會,所以會順便分享一些在台南生活的所見所聞。 六月:行前準備、專案說明我大概五月底收到 Offer,考慮了幾天後就答應了,主要是也沒有其他選擇,加上除了台南很遠之外,對公司跟工作內容都算可以接受。接著六月陸陸續續有收到台積電的信,像是要先繳交資料、做體檢、或是未來的 buddy 有先來聯絡我,跟我說明專案情況等等。此時我大部分的時間都在享受最後自由的時光,再利用一些空閒時間稍微看一些關於 IR 影像處理的介紹,還有處理一些雜事,像是準備行李、前公司的專案、刷題、看課外書等等,畢竟之後七八月每天工作、九月後每天研究、畢業後又要繼續工作,能像現在這麼清閒的日子應該是不多了。 宿舍開箱:華園三期宿舍來台積實習的好處就是,公司有提供免費的宿舍與上下班接駁車,只能說大公司的福利真的很讚...
極短篇:The Oatmeal Problem 與 No Man's Sky
新的系列開始囉!這個系列我打算分享我打在 臉書 上的文章,可能就是一些極短篇,可以在 3 - 5 分鐘內讀完的那種。內容就不一定,但大多應該會是我覺得很酷的東西,應該比較偏向資工或 AI 方面的科普吧,主要就以分享或探討為主。 今天要分享的是在看 Paper 時偶然看到覺得很有趣的一個問題:The oatmeal problem。The oatmeal problem 指的是在 procedural generation 或任何 generative process 裡面會遇到的一個問題,當你大量生成看似不同但本質上沒有太大差異的 content 時,對於使用者來說其實是沒有甚麼意義的。舉個例子來說,若我今天生成 10000 碗燕麥粥,碗中的燕麥都以隨機的方式擺放,雖然數學上來說他們都是不同且獨一無二的,但對使用者來說他們就只是一堆燕麥粥,並沒有甚麼差異。因此在 creative generation 中,如何讓使用者不會感到單調無趣,是個需要考慮的問題。 有感觸的原因是這款遊戲我本人幾個月前才買,結果玩沒多久就覺得膩了便棄坑。當初看到 No man’s sky 打著「程式生成...