文章

後端工程師面試考什麼 — 從 Hashing 到 Consistent Hashing

分散式快取環境中,十分有可能會碰到需要找到對的 cache server 取得 cache 的情況,畢竟問錯 cache server 不僅拿不到 cache,還十分可能對後端資料庫造成壓力。

所以面試時如果有涉及快取系統架構的問題時,基本的 hashing 或者進階的 consistent hashing 也是必須了解的概念!

本文將介紹 Hashing 與 Consistent hashing 2 種技術,並以實際的 Python 程式碼揭開它們的神秘面紗!

Posted on  Jul 29, 2024  in  後端面試準備  by  Amo Chen  ‐ 7 min read

如何用 Python 組合指令工具(Command Line Tools)?

由於現代有著各式各樣方便的程式、指令工具可以使用,我們不見得需要從頭到尾自行開發,有時候藉由 Python 膠水語言的特性,我們可以輕鬆地整合各種程式、指令工具打造適合我們或者滿足我們需求的工具,不僅省時還省力!而且實務上,我們也很常利用 Python 撰寫整合各種指令工具的程式,以高效執行自動化或者系統管理等工作。

本文將介紹使用 Python 整合各種程式、指令工具的作法。

Posted on  Jul 26, 2024  in  Python 程式設計 - 中階  by  Amo Chen  ‐ 5 min read

後端工程師面試考什麼 — 限流機制 Rate Limiter

Rate limiter 是後端領域中常見的一項技術,用於限制特定時間內的請求數量,或者限制使用者特定時間內的請求數量。對於提供 API 服務的公司或服務來說,後端伺服器通常都會加上 rate limiter,以防止系統被過於頻繁地使用,從而提升系統的穩定性。

也因此,如果在面試有對外提供 API 服務的公司的後端工程師職缺時,有不小的機率會被問到如何保護 API 被過於頻繁的呼叫。

本文將介紹 4 種常見的 rate limiter 方法,並且實際以 Python 實作一遍,藉此加深我們對 rate limiter 的理解。

Posted on  Jul 22, 2024  in  後端面試準備  by  Amo Chen  ‐ 8 min read

後端工程師面試考什麼 — OAuth 2.0 與 PKCE

現代網路應用日趨複雜,不大可能一項服務包山包海,更常見的情況是應用程式透過整合的方式,存取使用者在其他服務的資源,以進行整合或者提供進階的功能。

所以後端工程師很常會碰到 OAuth 2.0 這項標準,例如常見的 Google Sign In, Facebook Login 都有使用 OAuth 2.0 這項標準。

可以說 OAuth 2.0 是後端工程師的必修課題之一。

Last updated on  Jul 20, 2024  in  後端面試準備  by  Amo Chen  ‐ 12 min read

你知道 asyncio 的 event loop 是怎麼 loop 的嗎?談 event loop 如何處理 I/O 工作

在「你知道 asyncio 的 event loop 是怎麼 loop 的嗎?談 event loop 的排程與執行」一文中,我們談了 asyncio 是如何進行工作排程與執行工作,不過沒有提到它如何處理 I/O 工作的細節(例如網路傳輸)。

本文將從知名 ASGI Web Server 開源專案 uvicorn 開始,搭配 Python asyncio 官方文件與簡單的範例,一步步介紹 event loop 是如何處理 I/O 工作。

Posted on  Jul 11, 2024  in  Python 程式設計 - 高階  by  Amo Chen  ‐ 8 min read

AI 協作軟體開發親身經驗分享

軟體開發進入 1 個只要有想法、有行動力就能實現的新時代。

藉著 LLM 的幫助,跟過程不斷試錯改進,讓就算不是前端工程師的我,也能夠跨越技能鴻溝,打造接近心中樣貌的番茄鐘!(其實也呼應我們之前提到的每個人會因為 AI 而守備範圍變廣)

Posted on  Jul 8, 2024  by  Amo Chen  ‐ 3 min read

從 Python 的 random.shuffle() 學 Fisher-Yates Shuffle / Knuth Shuffle 演算法

最近接觸了一些牌類遊戲的開發,發現如何洗牌也是 1 個學問,所以特別查了一個重要的演算法 Fisher-Yates Shuffle / Knuth Shuffle ,發現 Python 的 random.shuffle() 也使用相同的演算法實作,所以特別將 Fisher-Yates Shuffle / Knuth Shuffle 實作細節與視覺化做出來,希望可以讓不熟悉的人也能迅速上手。

Posted on  Jul 4, 2024  in  Python 程式設計 - 初階 , 演算法  by  Amo Chen  ‐ 3 min read