Python面試應徵問題大哉問
Python已成為科技界最熱門的程式語言之一,無論是資料科學、機器學習、Web開發或自動化等領域,Python的靈活性與豐富函式庫吸引了大量開發者的青睞。準備好迎接Python面試的挑戰了嗎?本文我們將盤點常見的Python面試問題,助您有備無患。
基本資料型別
問題 | 範例答案 |
---|---|
1. 哪些是Python的基本資料型別? | Python的基本資料型別包括:整數(Integer)、浮點數(Float)、字串(String)、布林值(Boolean)及列表(List)。 |
2. 如何將字串轉換為整數? | 使用int() 函式,例如:num_str = "10"; num_int = int(num_str) |
3. 如何檢查變數的資料型別? | 使用type() 函式,例如:num = 10; print(type(num)) #輸出<class 'int'> |
4. 列表與元組的差異為何? | 列表是可變的(mutable),元素可被修改;元組是不可變的(immutable),元素無法被修改。 |
5. 如何建立空字典? | 使用empty_dict = {} 或empty_dict = dict() |
物件導向概念
問題 | 範例答案 |
---|---|
1. 什麼是物件導向程式設計?Python如何實現? | 物件導向程式設計(OOP)是一種透過物件來表示真實世界實體的程式範式。在Python中,透過類別(Class)和物件(Object)實現OOP。類別是建構物件的藍圖,物件則是類別的實例。 |
2. 物件導向程式設計有哪四大原則? | 四大原則為:封裝(Encapsulation)、繼承(Inheritance)、多型(Polymorphism)及抽象化(Abstraction)。 |
3. Python支援函式多載(Method Overloading)嗎? | 預設情況下Python不支援函式多載。不過,我們可透過使用預設參數或可變長度參數達到類似效果。 |
4. 什麼是函式覆載(Method Overriding)? | 函式覆載指在子類別中定義與父類別同名且簽章相同的函式,子類別中的函式將覆蓋父類別中的實作。 |
5. 類別方法和實體方法的差異為何? | 類別方法使用@classmethod 裝飾器綁定至類別,只能存取類別層級的變數。實體方法則綁定至物件實例,可存取實體及類別層級變數。 |
字串處理
問題 | 範例答案 |
---|---|
1. 如何連接兩個字串? | 使用+ 運算子,例如:str1 = "Hello"; str2 = "World"; result = str1 + str2 |
2. 如何取得字串長度? | 使用len() 函式,例如:str1 = "Hello World"; length = len(str1) |
3. 如何將字串轉為大寫? | 使用upper() 方法,例如:str1 = "hello"; uppercase_str = str1.upper() |
4. 如何將字串拆分為子字串清單? | 使用split() 方法,並指定分隔符號,例如:str1 = "Hello,World"; substrings = str1.split(",") |
5. 如何檢查字串是否包含特定子字串? | 使用in 關鍵字,例如:str1 = "Hello World"; is_present = "World" in str1 |
流程控制、函式
問題 | 範例答案 |
---|---|
1. 什麼是流程控制陳述式? | 流程控制陳述式用於控制程式的執行流程,包括if-else 、for 迴圈、while 迴圈及break/continue 陳述式。 |
2. 如何撰寫if-else 陳述式? |
if condition:
# 若條件為真執行此區塊
else:
# 若條件為假執行此區塊
| 3. 如何定義函式? | 使用def
關鍵字,例如:
def greet():
print("Hello, world!")
| 4. 如何為函式傳入參數? | 在定義函式時,於括號中指定參數名稱,例如:
def greet(name):
print(f"Hello, {name}!")
| 5. 如何從函式回傳值? | 使用return
關鍵字,例如:
def add(a, b):
return a + b
特殊資料型別
問題 | 範例答案 |
---|---|
1. 什麼是Python集合(Set)? | Python集合是無序且唯一元素的集合,使用{} 或set() 建構,例如:my_set = {1, 2, 3} |
2. 什麼是Python字典(Dictionary)? | Python字典是無序的鍵值對集合,使用{} 或dict() 建構,例如:my_dict = {"name": "John", "age": 25} |
3. 如何存取字典中的值? | 透過對應的鍵值存取,例如:my_dict = {"name": "John", "age": 25}; print(my_dict["name"]) |
4. 什麼是Python元組(Tuple)? | Python元組是有序且不可變的元素集合,使用() 或tuple() 建構,例如:my_tuple = (1, 2, 3) |
5. 如何交換兩個變數的值? | 可使用臨時變數或同步指派,例如:a, b = b, a |
Lambda 函式、列表內涵
好的,讓我們繼續列表內涵及Lambda函式的範例。
問題 | 範例答案 |
---|---|
1. 什麼是Lambda函式? | Lambda函式是使用lambda 關鍵字定義的匿名函式,通常用於簡短的單行函式,例如:square = lambda x: x**2 |
2. 什麼是列表內涵? | 列表內涵提供一種簡潔的方式從現有列表或可疜資料建構新列表,結合了建立新列表、迴圈及條件判斷,例如:numbers = [1, 2, 3, 4, 5]; squared_numbers = [x**2 for x in numbers] |
3. 如何在列表內涵中過濾元素? | 在列表內涵中加入條件判斷即可過濾元素,例如過濾偶數: |
numbers = [1, 2, 3, 4, 5]; even_numbers = [x for x in numbers if x % 2 == 0] | |
4. 列表內涵中可以有多個條件判斷嗎? | 可以,使用and 或or 串聯條件即可,例如: |
numbers = [1, 2, 3, 4, 5]; filtered_numbers = [x for x in numbers if x % 2 == 0 and x > 2] | |
5. 如何使用列表內涵建構字典? | 在大括號{} 中指定鍵值對即可,例如: |
keys = ['a', 'b', 'c']; values = [1, 2, 3]; my_dict = {k: v for k, v in zip(keys, values)} |
資料科學函式庫
Pandas、NumPy
問題 | 範例答案 |
---|---|
1. 什麼是Pandas?在資料科學中如何使用? | Pandas是Python中強大的資料處理與分析函式庫,提供DataFrame和Series等資料結構,以及讀寫、操作資料的功能,在資料清理、轉換及探索等任務中廣為使用。 |
2. 什麼是NumPy?在資料科學中有何應用? | NumPy是Python中基礎的數值計算函式庫,提供多維陣列的高效能資料結構及豐富數學函式,在數值運算、線性代數及隨機數生成等任務中扮演重要角色。 |
Seaborn、Matplotlib
問題 | 範例答案 |
---|---|
3. 什麼是Seaborn?在資料科學中有何用途? | Seaborn是建構於Matplotlib之上的Python繪圖函式庫,提供高階函式介面建立具統計意義且美觀的視覺化圖表,如散佈圖、長條圖、盒鬚圖及熱圖等,常用於資料視覺化與探索。 |
4. 什麼是Matplotlib?在資料科學中有何應用? | Matplotlib是Python中廣為使用的繪圖函式庫,提供繪製各式圖表的彈性工具,如折線圖、散佈圖、直方圖及長條圖等,常用於資料視覺化與報告。 |
5. 如何使用Seaborn繪製散佈圖? | 使用scatterplot() 函式並指定x、y變數即可,例如: |
import seaborn as sns
import pandas as pd
df = pd.read_csv('data.csv')
sns.scatterplot(x='x_column', y='y_column', data=df)
常見視覺化圖表
問題 | 範例答案 |
---|---|
1. Seaborn與Matplotlib有哪些常見繪圖類型? | 常見的繪圖類型包括:折線圖、散佈圖、長條圖、直方圖、盒鬚圖、熱圖及小提琴圖等。 |
2. 如何使用Matplotlib繪製盒鬚圖? | 使用boxplot() 函式並提供資料,例如: |
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('data.csv')
plt.boxplot(df['column'])
| 3. 如何使用Seaborn繪製直方圖? | 使用distplot()
函式並指定變數,例如:
import seaborn as sns
import pandas as pd
df = pd.read_csv('data.csv')
sns.distplot(df['column'])
| 4. 如何使用Matplotlib繪製長條圖? | 使用bar()
或barh()
函式並提供資料,例如:
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('data.csv')
plt.bar(df['x_column'], df['y_column'])
| 5. 如何使用Seaborn繪製熱圖? | 使用heatmap()
函式並指定資料、行列變數及色階,例如:
import seaborn as sns
import pandas as pd
df = pd.read_csv('data.csv')
sns.heatmap(data=df, x='x_column', y='y_column', cmap='coolwarm')
機器學習函式庫 - Scikit-learn
問題 | 範例答案 |
---|---|
1. 什麼是Scikit-learn?在機器學習中有何應用? | Scikit-learn是Python中知名的機器學習函式庫,提供廣泛的演算法與工具,涵蓋分類、迴歸、clustering、降維及模型評估等任務,廣為用於建構機器學習模型及流程。 |
2. 如何使用Scikit-learn訓練機器學習模型? | 步驟包括:前處理資料→選擇演算法→分割訓練及測試資料→使用fit() 訓練模型→使用測試資料評估模型表現。 |
3. 如何在Scikit-learn中使用交叉驗證? | 使用cross_val_score() 函式,指定折數及評估指標,例如: |
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LinearRegression
model = LinearRegression()
scores = cross_val_score(model, X, y, cv=5, scoring='r2')
| 4. 如何使用已訓練的模型進行預測? | 使用predict()
方法,例如:
model = LinearRegression()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
| 5. 如何儲存及載入已訓練的模型? | 使用joblib
模組的dump()
及load()
函式,例如:
from sklearn.externals import joblib
# 儲存模型
joblib.dump(model, 'model.pkl')
# 載入模型
loaded_model = joblib.load('model.pkl')
|
以上是一些Python面試時常見的問題範疇,包含基本資料型別、物件導向概念、字串處理、流程控制、特殊資料型別、Lambda函式與列表內涵,以及資料科學與機器學習的相關函式庫使用等。
透過詳盡的問題範例及解答,相信您對Python程式設計的重點概念有了更扎實的掌握。當然,實際面試中問題的難易程度及廣度都可能因公司、職務及面試官而有所不同。不過,只要從本文盤點的基礎主題把關鍵概念牢牢掌握,定能為您闖關面試之路立下穩健的根基。
除了理論知識外,實作練習亦是成功應徵的重要一環。保持學習熱忱,從日常的專案或Leetcode題目中持續磨練,定能讓你在Python面試中過關。祝您可以順利找到心儀的工作,也期望本文對您的求職之路有所助益。