Buy Me a Coffee

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-elsefor迴圈、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. 列表內涵中可以有多個條件判斷嗎?可以,使用andor串聯條件即可,例如:
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面試中過關。祝您可以順利找到心儀的工作,也期望本文對您的求職之路有所助益。