《前后端面試題
》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。
文章目錄
- 一、本文面試題目錄
- 71. Python中打開文件的模式有哪些?(如`r`、`w`、`a`、`rb`、`wb`等)
- 72. 如何讀取文件內容?(`read()`、`readline()`、`readlines()`的區別)
- 73. 什么是上下文管理器(`with`語句)?它的優勢是什么?
- 74. 如何寫入文件內容?
- 75. 如何處理CSV文件?(使用`csv`模塊或`pandas`)
- 1. 使用`csv`模塊(標準庫)
- 2. 使用`pandas`庫(第三方庫)
- 76. 如何遍歷一個目錄下的所有文件和子目錄?(`os.walk()`)
- 77. 如何獲取文件的大小、創建時間、修改時間?
- 方法1:使用 `os` 模塊
- 方法2:使用 `pathlib` 模塊(面向對象風格)
- 78. 如何重命名或刪除文件/目錄?
- 1. 重命名文件/目錄
- 2. 刪除文件/目錄
- 79. 什么是二進制文件和文本文件?它們的操作有何區別?
- 定義
- 操作區別
- 示例
- 關鍵區別總結
- 80. 如何處理大文件(內存無法一次性加載)?
- 核心原則
- 常用方法
- 注意事項
- 二、150道Python面試題目錄列表
一、本文面試題目錄
71. Python中打開文件的模式有哪些?(如r
、w
、a
、rb
、wb
等)
在Python中,使用open()
函數打開文件時,需要指定文件模式,用于定義文件的操作方式(讀/寫)和數據類型(文本/二進制)。常見的文件模式如下:
模式 | 含義 | 說明 |
---|---|---|
r | 只讀(默認) | 打開已存在的文件,若文件不存在則報錯;指針位于文件開頭。 |
w | 只寫 | 打開文件用于寫入,若文件不存在則創建,若已存在則清空內容;指針位于文件開頭。 |
a | 追加 | 打開文件用于寫入,若文件不存在則創建,新內容追加到文件末尾;指針位于文件末尾。 |
r+ | 讀寫 | 打開文件用于讀寫,文件必須存在;指針位于文件開頭。 |
w+ | 讀寫 | 打開文件用于讀寫,若文件不存在則創建,若已存在則清空內容。 |
a+ | 讀寫 | 打開文件用于讀寫,若文件不存在則創建,寫入時追加到末尾,讀時需移動指針。 |
rb | 二進制只讀 | 以二進制模式打開文件只讀(用于非文本文件,如圖片、音頻)。 |
wb | 二進制只寫 | 以二進制模式打開文件只寫。 |
ab | 二進制追加 | 以二進制模式打開文件追加。 |
rb+ /wb+ /ab+ | 二進制讀寫 | 結合二進制和讀寫功能的模式。 |
示例:
# 只讀模式打開文本文件
with open("test.txt", "r", encoding="utf-8") as f:content = f.read()# 只寫模式打開文本文件(覆蓋原有內容)
with open("output.txt", "w", encoding="utf-8") as f:f.write("Hello, World!")# 追加模式打開文本文件
with open("log.txt", "a", encoding="utf-8") as f:f.write("New log entry\n")# 二進制模式讀取圖片
with open("image.png", "rb") as f:data = f.read()
注意:
- 文本模式(無
b
)需指定encoding
(如utf-8
),用于字符編碼轉換;二進制模式(有b
)直接操作字節,無需編碼。 - 寫入時若不指定
encoding
,默認使用系統編碼,可能導致跨平臺兼容性問題。
72. 如何讀取文件內容?(read()
、readline()
、readlines()
的區別)
Python文件對象提供了多種讀取內容的方法,核心區別在于讀取范圍和返回值格式:
方法 | 功能 | 返回值 | 適用場景 |
---|---|---|---|
read(size) | 讀取指定字節數(文本模式下為字符數),若未指定則讀取全部內容。 | 字符串(文本模式)或字節串(二進制模式)。 | 讀取小文件或需要一次性獲取全部內容時。 |
readline(size) | 讀取一行內容,包括換行符\n ;size 限制最大讀取長度。 | 單行字符串(或字節串),若到文件末尾返回空字符串。 | 逐行讀取大文件,節省內存。 |
readlines(hint) | 讀取所有行,hint 為可選參數,限制總字符數(約)。 | 包含所有行的列表,每行作為列表元素。 | 需要按行處理且文件不大時。 |
示例:
假設有test.txt
文件內容如下:
第一行內容
第二行內容
第三行內容
-
read()
示例:with open("test.txt", "r", encoding="utf-8") as f:# 讀取全部內容content = f.read()print(content)# 輸出:# 第一行內容# 第二行內容# 第三行內容# 讀取前5個字符f.seek(0) # 指針移回開頭part = f.read(5)print(part) # 第一行內
-
readline()
示例:with open("test.txt", "r", encoding="utf-8") as f:line1 = f.readline()line2 = f.readline()print(line1) # 第一行內容(包含換行符)print(line2) # 第二行內容
-
readlines()
示例:with open("test.txt", "r", encoding="utf-8") as f:lines = f.readlines()print(type(lines)) # <class 'list'>print(lines) # ['第一行內容\n', '第二行內容\n', '第三行內容']# 遍歷行列表for line in lines:print(line.strip()) # 去除換行符和空格
-
直接迭代文件對象(推薦逐行讀取):
文件對象本身是可迭代的,逐行讀取時內存效率最高:with open("test.txt", "r", encoding="utf-8") as f:for line in f: # 每次讀取一行,自動處理指針print(line.strip())
總結:
- 大文件優先使用
for line in f
或readline()
,避免占用過多內存。 - 小文件可使用
read()
或readlines()
一次性讀取。
73. 什么是上下文管理器(with
語句)?它的優勢是什么?
上下文管理器(Context Manager) 是一種用于管理資源(如文件、網絡連接、數據庫連接)的機制,通過with
語句實現,確保資源在使用后被正確釋放(即使發生異常)。
基本語法:
with 資源獲取表達式 as 變量:# 使用資源的代碼塊
文件操作示例:
# 使用with語句操作文件(自動關閉)
with open("test.txt", "r") as f:content = f.read()
# 代碼塊結束后,文件自動關閉,無需手動調用f.close()
上下文管理器的優勢:
-
自動釋放資源
無論代碼塊是否正常執行或發生異常,資源都會被自動釋放(如文件關閉、連接斷開),避免資源泄漏。# 不使用with的風險(可能忘記關閉文件) f = open("test.txt", "r") content = f.read() # f.close() # 若忘記調用,文件可能保持打開狀態
-
簡化代碼
無需顯式編寫try...finally
塊來確保資源釋放,代碼更簡潔。# 等價的try...finally寫法 f = open("test.txt", "r") try:content = f.read() finally:f.close() # 確保關閉
-
支持多個資源同時管理
可在一個with
語句中處理多個資源,按順序獲取并逆序釋放。with open("a.txt", "r") as f1, open("b.txt", "w") as f2:content = f1.read()f2.write(content)
自定義上下文管理器:
通過實現__enter__()
和__exit__()
方法可自定義上下文管理器:
class MyContext:def __enter__(self):print("進入上下文:獲取資源")return "資源對象" # 賦值給as后的變量def __exit__(self, exc_type, exc_val, exc_tb):print("退出上下文:釋放資源")# 處理異常(若返回True則抑制異常)return Falsewith MyContext() as res:print(f"使用{res}")
# 輸出:
# 進入上下文:獲取資源
# 使用資源對象
# 退出上下文:釋放資源
常見應用場景:
- 文件操作(最常用)
- 數據庫連接
- 網絡請求
- 線程鎖
with
語句是Python中處理資源的最佳實踐,既安全又簡潔。
74. 如何寫入文件內容?
在Python中,寫入文件需先以寫入模式(如w
、a
、r+
等)打開文件,再通過文件對象的寫入方法(write()
、writelines()
)寫入內容。
常用寫入方法:
write(string)
:寫入字符串(文本模式)或字節串(二進制模式),返回寫入的字符數(或字節數)。writelines(iterable)
:寫入可迭代對象(如列表)中的所有元素,元素需為字符串(或字節串),不自動添加換行符。
示例:
-
基本寫入(覆蓋模式
w
):# 以只寫模式打開,若文件存在則覆蓋內容 with open("output.txt", "w", encoding="utf-8") as f:# 寫入單行f.write("Hello, World!\n") # \n手動添加換行# 寫入多行f.write("這是第二行\n")f.write("這是第三行\n")
output.txt
內容:Hello, World! 這是第二行 這是第三行
-
追加寫入(
a
模式):# 以追加模式打開,新內容添加到文件末尾 with open("output.txt", "a", encoding="utf-8") as f:f.write("這是追加的一行\n")
output.txt
內容變為:Hello, World! 這是第二行 這是第三行 這是追加的一行
-
使用
writelines()
寫入列表:lines = ["第一行\n", "第二行\n", "第三行\n"] with open("lines.txt", "w", encoding="utf-8") as f:f.writelines(lines) # 寫入列表中的所有字符串
-
讀寫模式(
r+
)插入內容:# 打開已存在的文件,讀取并插入內容 with open("output.txt", "r+", encoding="utf-8") as f:content = f.read() # 先讀取全部內容f.seek(0) # 指針移回開頭f.write("在開頭插入的內容\n" + content) # 覆蓋寫入(插入到開頭)
-
二進制寫入:
# 寫入二進制文件(如圖片、音頻) data = b"Binary data: \x00\x01\x02" # 字節串 with open("binary.bin", "wb") as f:f.write(data)
注意:
- 文本模式下,
write()
接收字符串,需注意編碼(通過encoding
參數指定)。 - 二進制模式下,
write()
接收字節串(前綴b
的字符串),不涉及編碼。 - 寫入后內容可能緩存在內存中,可通過
f.flush()
強制刷新到磁盤,或關閉文件時自動刷新。
75. 如何處理CSV文件?(使用csv
模塊或pandas
)
CSV(Comma-Separated Values)是一種常用的表格數據格式,Python中可通過csv
標準庫或pandas
庫處理。
1. 使用csv
模塊(標準庫)
csv
模塊提供基礎的CSV讀寫功能,適合簡單場景。
讀取CSV文件:
import csv# 讀取CSV(默認逗號分隔)
with open("data.csv", "r", encoding="utf-8") as f:reader = csv.reader(f) # 創建reader對象header = next(reader) # 獲取表頭(第一行)print("表頭:", header)# 遍歷數據行for row in reader:print("數據行:", row)# 讀取為字典(表頭為鍵)
with open("data.csv", "r", encoding="utf-8") as f:reader = csv.DictReader(f) # DictReader按表頭映射為字典for row in reader:print(row["姓名"], row["年齡"]) # 通過表頭訪問
寫入CSV文件:
import csv# 寫入CSV
data = [["姓名", "年齡", "城市"],["Alice", 30, "北京"],["Bob", 25, "上海"]
]with open("output.csv", "w", encoding="utf-8", newline="") as f:writer = csv.writer(f) # 創建writer對象writer.writerows(data) # 寫入多行# 按字典寫入(指定表頭)
with open("dict_output.csv", "w", encoding="utf-8", newline="") as f:fieldnames = ["姓名", "年齡", "城市"]writer = csv.DictWriter(f, fieldnames=fieldnames)writer.writeheader() # 寫入表頭writer.writerow({"姓名": "Charlie", "年齡": 35, "城市": "廣州"})writer.writerows([{"姓名": "David", "年齡": 28, "城市": "深圳"},{"姓名": "Eve", "年齡": 22, "城市": "杭州"}])
2. 使用pandas
庫(第三方庫)
pandas
提供更強大的CSV處理功能,適合復雜數據分析場景,需先安裝:
pip install pandas
讀取CSV文件:
import pandas as pd# 讀取CSV為DataFrame(表格數據結構)
df = pd.read_csv("data.csv")# 查看數據
print("前5行:")
print(df.head()) # 前5行
print("\n表頭:", df.columns.tolist()) # 表頭列表
print("\n數據類型:")
print(df.dtypes) # 各列數據類型# 按條件篩選
adults = df[df["年齡"] >= 18]
print("\n成年人數據:")
print(adults)
寫入CSV文件:
import pandas as pd# 創建DataFrame
data = {"姓名": ["Alice", "Bob", "Charlie"],"年齡": [30, 25, 35],"城市": ["北京", "上海", "廣州"]
}
df = pd.DataFrame(data)# 寫入CSV
df.to_csv("pandas_output.csv", index=False, encoding="utf-8")
# index=False:不寫入行索引
對比:
工具 | 優勢 | 劣勢 | 適用場景 |
---|---|---|---|
csv 模塊 | 標準庫,無需安裝;輕量靈活。 | 功能簡單,需手動處理數據類型;不支持復雜查詢。 | 簡單讀寫、小文件、無第三方庫依賴時。 |
pandas | 功能強大,支持數據篩選、聚合、類型轉換;適合大文件。 | 需要安裝;學習成本較高。 | 數據分析、復雜處理、大文件。 |
注意:
- CSV文件可能使用非逗號分隔符(如制表符
\t
),csv
模塊可通過delimiter
參數指定,pandas
通過sep
參數指定。 - 處理中文時需指定正確編碼(如
utf-8
)。
76. 如何遍歷一個目錄下的所有文件和子目錄?(os.walk()
)
os.walk()
是Python os
模塊提供的用于遞歸遍歷目錄樹的函數,能夠便捷地訪問指定目錄下的所有文件和子目錄。
工作原理:
- 接收一個目錄路徑作為參數,返回一個生成器(generator)。
- 每次迭代生成一個元組
(root, dirs, files)
:root
:當前正在遍歷的目錄路徑。dirs
:當前目錄下的子目錄名稱列表(不包含路徑)。files
:當前目錄下的文件名稱列表(不包含路徑)。
示例:
假設有如下目錄結構:
data/report.txtlogs/log1.txtlog2.txtimages/photo.jpg
遍歷 data
目錄:
import os# 遍歷目錄及其子目錄
for root, dirs, files in os.walk("data"):print(f"當前目錄: {root}")print(f"子目錄: {dirs}")print(f"文件: {files}")print("---")
輸出:
當前目錄: data
子目錄: ['logs', 'images']
文件: ['report.txt']
---
當前目錄: data\logs
子目錄: []
文件: ['log1.txt', 'log2.txt']
---
當前目錄: data\images
子目錄: []
文件: ['photo.jpg']
---
實用場景:
-
查找特定類型文件:
# 收集所有.txt文件的完整路徑 txt_files = [] for root, dirs, files in os.walk("data"):for file in files:if file.endswith(".txt"):full_path = os.path.join(root, file) # 拼接完整路徑txt_files.append(full_path) print("所有TXT文件:", txt_files)
-
統計文件數量:
file_count = 0 for root, dirs, files in os.walk("data"):file_count += len(files) print(f"總文件數: {file_count}") # 輸出:4
注意:
os.walk()
會自動遞歸進入所有子目錄,無需手動處理嵌套。- 可通過修改
dirs
列表控制是否遍歷某些子目錄(如dirs[:] = [d for d in dirs if d != "temp"]
跳過temp
目錄)。
77. 如何獲取文件的大小、創建時間、修改時間?
在Python中,可通過 os
模塊和 pathlib
模塊(Python 3.4+)獲取文件的元數據,包括大小、創建時間和修改時間。
方法1:使用 os
模塊
import os
import timefile_path = "example.txt"# 1. 獲取文件大小(字節)
file_size = os.path.getsize(file_path)
print(f"文件大小: {file_size} 字節") # 如:1024 字節# 2. 獲取修改時間(時間戳)
modify_time_stamp = os.path.getmtime(file_path)
# 轉換為可讀時間
modify_time = time.ctime(modify_time_stamp)
print(f"修改時間: {modify_time}") # 如:Wed Jun 12 10:30:45 2024# 3. 獲取創建時間(Windows系統有效,Unix系統可能返回最后元數據修改時間)
create_time_stamp = os.path.getctime(file_path)
create_time = time.ctime(create_time_stamp)
print(f"創建時間: {create_time}")
方法2:使用 pathlib
模塊(面向對象風格)
from pathlib import Path
import timefile_path = Path("example.txt")# 1. 文件大小
file_size = file_path.stat().st_size
print(f"文件大小: {file_size} 字節")# 2. 修改時間
modify_time = time.ctime(file_path.stat().st_mtime)
print(f"修改時間: {modify_time}")# 3. 創建時間
create_time = time.ctime(file_path.stat().st_ctime)
print(f"創建時間: {create_time}")
關鍵屬性說明:
st_size
:文件大小(字節)。st_mtime
:最后修改時間(時間戳,自1970-01-01 00:00:00 UTC起的秒數)。st_ctime
:在Windows上為創建時間,在Unix上為最后元數據修改時間。st_atime
:最后訪問時間(部分系統可能禁用更新以提高性能)。
格式化時間為指定格式:
from datetime import datetimemodify_time = datetime.fromtimestamp(file_path.stat().st_mtime)
print(f"格式化修改時間: {modify_time.strftime('%Y-%m-%d %H:%M:%S')}")
# 輸出:2024-06-12 10:30:45
注意:
- 時間戳轉換需考慮時區,默認使用本地時區。
- 目錄也可通過相同方法獲取大小和時間(目錄大小為元數據大小,非包含文件總大小)。
78. 如何重命名或刪除文件/目錄?
Python的 os
模塊和 pathlib
模塊提供了重命名和刪除文件/目錄的功能,操作簡單但需謹慎(刪除操作不可逆)。
1. 重命名文件/目錄
使用 os
模塊:
import os# 重命名文件
old_file = "old_file.txt"
new_file = "new_file.txt"
os.rename(old_file, new_file) # 若new_file已存在,會被覆蓋(Windows)或報錯(Unix)# 重命名目錄
old_dir = "old_dir"
new_dir = "new_dir"
os.rename(old_dir, new_dir)
使用 pathlib
模塊:
from pathlib import Path# 重命名文件
old_file = Path("old_file.txt")
new_file = Path("new_file.txt")
old_file.rename(new_file)# 重命名目錄
old_dir = Path("old_dir")
new_dir = Path("new_dir")
old_dir.rename(new_dir)
2. 刪除文件/目錄
刪除文件:
import os
from pathlib import Path# 使用os模塊
os.remove("file_to_delete.txt") # 只能刪除文件,刪除目錄會報錯# 使用pathlib模塊
file = Path("file_to_delete.txt")
file.unlink() # 同os.remove()
刪除目錄:
os.rmdir()
/Path.rmdir()
:刪除空目錄。shutil.rmtree()
:刪除非空目錄(包含所有文件和子目錄)。
import os
import shutil
from pathlib import Path# 刪除空目錄
os.rmdir("empty_dir") # 若目錄非空,會報錯
Path("empty_dir").rmdir()# 刪除非空目錄(慎用!)
shutil.rmtree("non_empty_dir") # 遞歸刪除所有內容
示例:安全刪除前檢查
import os
import shutildef safe_delete(path):if not os.path.exists(path):print(f"{path} 不存在")returnif os.path.isfile(path):os.remove(path)print(f"文件 {path} 已刪除")elif os.path.isdir(path):# 檢查目錄是否為空if len(os.listdir(path)) == 0:os.rmdir(path)print(f"空目錄 {path} 已刪除")else:# 危險操作:刪除非空目錄confirm = input(f"確定刪除非空目錄 {path} 及其內容?(y/n)")if confirm.lower() == "y":shutil.rmtree(path)print(f"目錄 {path} 已刪除")safe_delete("test.txt")
safe_delete("empty_folder")
safe_delete("full_folder")
注意:
- 重命名時,若目標路徑已存在,可能覆蓋或報錯(取決于操作系統)。
- 刪除操作不可逆,尤其是
shutil.rmtree()
會徹底刪除目錄及內容,務必謹慎。 - 操作前建議檢查文件/目錄是否存在(
os.path.exists()
或Path.exists()
)。
79. 什么是二進制文件和文本文件?它們的操作有何區別?
文本文件和二進制文件是計算機中兩種基本文件類型,其存儲格式和操作方式有顯著區別:
定義
- 文本文件:以字符編碼(如UTF-8、GBK)存儲的文件,內容由可打印字符(文字、數字、符號)組成,可被文本編輯器直接閱讀(如
.txt
、.py
、.csv
)。 - 二進制文件:以字節(0-255的數值)直接存儲數據,內容是計算機可執行的指令或特定格式的二進制數據(如
.png
、.mp3
、.exe
、.zip
),需專用軟件解析。
操作區別
特性 | 文本文件 | 二進制文件 |
---|---|---|
打開模式 | 使用 r /w /a 等模式,需指定編碼(如 encoding="utf-8" ) | 使用 rb /wb /ab 等模式,無需編碼參數 |
數據單位 | 字符(由編碼映射的字節序列) | 字節(原始二進制數據) |
讀寫內容 | 字符串(str 類型) | 字節串(bytes 類型,前綴 b ) |
換行符處理 | 自動轉換(如Windows的 \r\n 與Unix的 \n ) | 不處理換行符,按原始字節存儲 |
適用場景 | 存儲文字信息(文檔、代碼、配置) | 存儲非文字數據(圖片、音頻、可執行文件) |
示例
- 文本文件操作:
# 寫入文本文件
with open("text.txt", "w", encoding="utf-8") as f:f.write("Hello, 世界!\n") # 寫入字符串# 讀取文本文件
with open("text.txt", "r", encoding="utf-8") as f:content = f.read() # 讀取為字符串print(content) # Hello, 世界!
- 二進制文件操作:
# 寫入二進制文件
data = b"\x89PNG\r\n\x1a\n..." # 假設是PNG圖片的二進制數據(字節串)
with open("image.png", "wb") as f:f.write(data) # 寫入字節串# 讀取二進制文件
with open("image.png", "rb") as f:binary_data = f.read() # 讀取為字節串print(type(binary_data)) # <class 'bytes'>print(binary_data[:10]) # 打印前10個字節
關鍵區別總結
- 文本文件本質是“字符的序列”,依賴編碼規則;二進制文件是“字節的序列”,不依賴編碼。
- 錯誤的模式操作會導致問題(如用文本模式讀圖片會亂碼,用二進制模式讀文本可能包含未解碼的字節)。
- 轉換關系:文本文件 → 字符串(
str
)→ 編碼(encode()
)→ 字節串(bytes
)→ 二進制文件。
80. 如何處理大文件(內存無法一次性加載)?
處理大文件(如GB級日志、CSV)時,若一次性加載到內存會導致內存溢出,需采用分批讀取或流式處理的方式。
核心原則
- 避免使用
read()
或readlines()
一次性讀取全部內容。 - 逐行或分塊讀取,處理后釋放內存。
常用方法
-
文本文件:逐行讀取
文件對象是可迭代的,每次迭代返回一行,內存效率高:# 處理大日志文件,統計包含"ERROR"的行數 error_count = 0 with open("large_log.txt", "r", encoding="utf-8") as f:for line in f: # 逐行讀取,內存中只保留一行if "ERROR" in line:error_count += 1 print(f"錯誤行數: {error_count}")
-
二進制文件:分塊讀取
按固定大小(如4KB、1MB)分塊讀取,適用于圖片、視頻等:# 復制大文件(分塊讀取寫入) chunk_size = 4096 # 4KB塊 with open("large_file.bin", "rb") as src, open("copy.bin", "wb") as dst:while True:chunk = src.read(chunk_size) # 讀取一塊if not chunk: # 讀取完畢(空字節串)breakdst.write(chunk) # 寫入一塊
-
CSV文件:分批處理
使用pandas
分塊讀取大型CSV:import pandas as pd# 每次讀取1000行 chunk_size = 1000 total = 0# 分塊讀取CSV for chunk in pd.read_csv("large_data.csv", chunksize=chunk_size):# 處理當前塊(如計算某列總和)total += chunk["value"].sum()print(f"總和: {total}")
-
生成器處理
使用生成器(yield
)封裝讀取邏輯,進一步控制內存:def read_large_file(file_path, chunk_size=4096):with open(file_path, "r", encoding="utf-8") as f:while True:chunk = f.read(chunk_size) # 按字符數分塊if not chunk:breakyield chunk # 生成器逐個返回塊# 使用生成器 for chunk in read_large_file("large_text.txt"):# 處理塊(如搜索關鍵詞)if "target" in chunk:print("找到目標內容")break
注意事項
- 分塊大小需平衡效率(太大占用內存,太小IO頻繁),通常設為4KB-1MB。
- 處理行數據時,若行長度超過分塊大小,需注意跨塊拼接(如日志文件中單行可能很長)。
- 二進制文件分塊時需保持塊大小一致,避免破壞文件結構。
通過上述方法,可在有限內存中高效處理遠超內存容量的大文件。
二、150道Python面試題目錄列表
文章序號 | Python面試題150道 |
---|---|
1 | Python面試題及詳細答案150道(01-15) |
2 | Python面試題及詳細答案150道(16-30) |
3 | Python面試題及詳細答案150道(31-40) |
4 | Python面試題及詳細答案150道(41-55) |
5 | Python面試題及詳細答案150道(56-70) |
6 | Python面試題及詳細答案150道(71-80) |
7 | Python面試題及詳細答案150道(81-90) |
8 | Python面試題及詳細答案150道(91-100) |
9 | Python面試題及詳細答案150道(101-115) |
10 | Python面試題及詳細答案150道(116-125) |
11 | Python面試題及詳細答案150道(126-135) |
12 | Python面試題及詳細答案150道(136-150) |