前言
Gap Year 期間持續在面試,這次面試的是一家做 Data Engineering 的新創公司 T 社。
一面是 Python 基礎能力測驗,用 Google Colab 進行,大概 1 小時。
結論:通過
一面: Python 基礎測驗
面試工具是 Google Colab,面試官給了 10 題 Python 題目,
涵蓋基礎語法、物件導向、函數式程式設計等概念。
原本的題目都是很制式的語法練習題,
但我刻意把它們轉換成「購物車」這個業務情境來解答。
為什麼要這樣做?
因為我想展現的不只是「我會寫 Python 語法」,
而是「我知道什麼時候該用什麼方法」。
題目 1: Bubble Sort
原始題目:
1 | # Problem 1 - Bubble sort |
經典排序演算法
測試: [5, 1, 3, 2, 4] → [1, 2, 3, 4, 5]
我的解答:
1 | def bubble_sort(sequence): |
題目 2: 找第二大值 (O(n) 複雜度)
原始題目:
1 | # Problem 2 - Find second largest |
要求線性時間
要處理重複值
測試: [3, 3, 2, 1] → 2
我的解答:
1 | def find_second_largest(sequence): |
題目 3: 繼承 (Inheritance)
原始題目:
1 | # Problem 3 - Inheritance |
實作商品類別Product 和 DiscountProduct
我用購物車的商品折扣來展現繼承和多型
我的解答:
1 | # 父類別:商品 |
題目 4: *args, **kwargs
原始題目:
1 | # Problem 4 - *args, **kwargs |
可變參數
我用購物車總價計算來展現(商品用 *args,運費用 **kwargs)
我的解答:
1 | # 計算購物車總價 |
題目 5: Lambda 函式
原始題目:
1 | # Problem 5 - lambda |
函數式程式設計
我用 map() + lambda 計算折扣總價
我的解答:
1 | # 以下使用 lambda 進行計算折扣後價格的加總 |
題目 6: List Comprehension
原始題目:
1 | # Problem 6 - comprehension |
Python 簡潔語法
我用篩選折扣後價格 > 500 的商品來展現
我的解答:
1 | # 計算特價商品折扣後的價格,只保留大於500的商品 |
題目 7: Decorator
原始題目:
1 | # Problem 7 - decorator |
裝飾器模式
我實作了「限制購物車總折扣不超過 200」的驗證邏輯
我的解答:
1 | # 檢查總折扣不能超過 200 decorator |
題目 8: Generator
原始題目:
1 | # Problem 8 - generator |
生成器
我用折扣價格計算來展現
好處是節省記憶體,適合大量資料
我的解答:
1 | products = [ |
題目 9: Context Manager
原始題目:
1 | # Problem 9 - context manager |
with 語句
用檔案處理展現資源管理
我的解答:
1 | with open("test.txt", "w") as f: |
題目 10: Magic Methods
原始題目:
1 | # Problem 10 - magic methods |
特殊方法 (__str__, __len__, __add__)
我實作購物車類別來展現
我的解答:
1 | class Cart: |
我的策略
原本題目都是純語法練習,
但我刻意想展現的是:
- 知道什麼時候該用什麼方法
- 將演算法概念應用到實際業務
- 不是只會背語法,而是理解背後的適用場景
(fin)