Python 面試題目與解答 -- 邁向高薪之路
內容描述
本書特色
這是國內第一本針對Python工程師考試的圖書。
展開程式設計師的就業廣告,幾乎都是以Python語言為主流,這本書則是收集國內外各大主流公司的熱門考試主題,Leetcode考題以及筆者認為學習Python應該了解的主流觀念,全部以極詳細、超清楚的程式實例解說,期待讀者可以錄取全球著名企業獲得高薪。
Python工程師面試第一個主題當然是測試面試者對於Python語言的瞭解與熟悉程度,內行的面試主管可以經由面試者對於下列Python重點與特色的理解程度,可以很輕易了解面試者Python功力如何?是不是具備真正Python工程師的資格?
認識Python特色
跳脫Java、C/C++邏輯,從Python觀念設計程式
串列(元組)切片(slicing)、打包(packing)、解包(unpacking)
認識何謂可迭代物件(iterator object)
認識生成式(generator)
認識字典、集合操作
類別與模組
正則表達式
面試時間通常不會太長,面試的另一個重點是考演算法,一個看似簡單的題目描述往往暗藏豐富的演算法知識,這時就是訓練讀者的邏輯與思考的能力,在這本書筆者也使用了極豐富與廣泛的演算法題目,詳細說明解題過程,至少在面試時讀者碰上類似考題可以輕鬆面對,在極短的面試時間完成解題,本書的演算法考題包含下列內容:
排序與搜尋
字串
陣列
鏈結串列
二元樹
堆疊與回溯
數學問題
深度、廣度優先搜尋
最短路徑演算法
貪婪演算法
動態規劃演算法
整本書除了內容豐富,適合Python面試工程師外,也可以增強讀者Python功力。
目錄大綱
目錄
第一篇 Python 語言面試題
第一章 面試通用問題
1-1 一份好的簡歷取得面試的機會
1-2 認識面試的公司
1-3 自我介紹
1-4 Python 工程師面試面臨的3大類問題
1-5 常見的面試通用問題
1-6 回問公司問題
1-7 Python 程式語言的國際認證
第二章 Python 語法觀念面試題
問答2-1:Python 是什麼?或是直接用英文問What is Python
問答2-2:Pythonista 是什麼
問答2-3:請簡述Python 優點
問答2-4:請簡述Python 的特色
問答2-5:PEP 8 是什麼
問答2-6:Pythonic 是什麼
問答2-7:請簡述靜態語言(static language) 和動態語言(dynamic language)
問答2-8:何謂文字碼語言(Scripting language)? Python 是不是屬於文字碼語言
問答2-9:請說明PYTHONPATH 環境變數功能
問答2-10:請說明PYTHONSTARTUP 環境變數功能
問答2-11:請說明PYTHONCASEOK 環境變數功能
問答2-12:請說明PYTHONHOME 環境變數功能
問答2-13:請說明.py 和.pyc 檔案的差異
問答2-14:在Python 的程式設計中,有哪些工具可以協助找尋錯誤(bug)
問答2-15:Python 如何管理記憶體空間
問答2-16:變數名稱有前單底線,例如:test,請說明適用時機
問答2-17:變數名稱有後單底線,例如:dict,請說明適用時機
問答2-18:變數名稱前後有雙底線,例如:test,請說明適用時機
問答2-19:變數名稱有前雙底線,例如:test,請說明適用時機
問答2-20:在IDLE 環境使用Python 時,單底線有何特別意義
問答2-21:請說明"//" 的用法
問答2-22:請說明Python 的註解使用方式
問答2-23:簡述串列(list) 與元組(tuple) 的區別
問答2-24:Python 提供哪些內建可變(mutable)和不可變(immutable)的資料結構
問答2-25:Python 提供哪些數值(number) 的資料
問答2-26:請列出Python 內建的容器資料型態
問答2-27:請列出Python 序列(sequence) 的資料類型
問答2-28:請列出Python 映射(mapping) 資料類型
問答2-29:Python 的名稱空間(namespace) 是指什麼
問答2-30:請說明如何獲得變數的位址。2-12
問答2-31:Python 是否會對大小寫敏感? 2-12
問答2-32:Python 的數據型態轉換是什麼?請列出所有的數據型態轉換函數
問答2-33:有一個數學運算的字串'5*9+4',應如何轉換成計算結果並列印
問答2-34:請說明Python 的help( ) 和dir( )
問答2-35:列出整數的方法
問答2-36:列出串列的方法
問答2-37:請說明int('5.5') 和int(5.5) 的執行結果
問答2-38:使用1 行指令,執行x, y 值對調
問答2-39:有一個字串s = 'abc is abc',請使用一行指令將字串s 改為'xyz is xyz'
問答2-40:請說明何謂逸出字元(Escape Character)
問答2-41:請說明字串前面加上r 與b 的功能
問答2-42:請說明編碼(encode) 與解碼(decode)
問答2-43:請說明find( ) 和rfind( ) 的差異
問答2-44:請說明index( ) 和rindex( ) 的差異
問答2-45:請說明迴圈的continue 和break 運作方式
問答2-46:有2 個數字x、y,不可以使用max( )函數,請使用1行指令,可以得到最大值
問答2-47:請說明串列(list) 正索引與負索引的用法
問答2-48:什麼是切片(slicing)
問答2-49:切片的應用
問答2-50:請說明串列(list) 中append( ) 和extend( ) 方法的區別
問答2-51:請說明淺拷貝copy( ) 和深度拷貝deepcopy( ) 應用在不可變資料
問答2-52:請說明淺拷貝copy( ) 和深度拷貝deepcopy( ) 應用在可變資料
問答2-53:如何設定字串的第1 個字母是大寫
問答2-54:如何將字串全部改成小寫
問答2-55:請問應該如何去掉字串頭尾空格
問答2-56:請說明split( ) 方法
問答2-57:請說明is 的用法
問答2-58:回答片段指令的輸出結果
問答2-59:請說明not 的用法
問答2-60:請說明in 的用法
問答2-61:什麼是串列打包(packing)
問答2-62:什麼是元組( 或串列) 解包(tuple unpacking)
問答2-63:什麼是可迭代物件iterators 或稱iterable object
問答2-64:請說明divmod(x, y) 的用法,他的傳回值資料型態為何
問答2-65:請問A 字典如何將B 字典元素合併到A 字典內
問答2-66:如何合併和刪除字典
問答2-67 請列出所有被列為邏輯值False 的情況
問答2-68:請說明any( ) 和all( ) 的區別
問答2-69:Python 的pass 是什麼
問答2-70:什麼是pickling 和unpickling
問答2-71:請簡述redis 和mysql 的差異
問答2-72:請說明AttributeError、⋯ 、ZeroDivisionError 的錯誤原因
面試實例ch2_1.py:逸出字元的應用
程式實例ch2_2.py:字串前加上r 的應用
面試實例ch2_3.py:unicode 字串與utf-8 格式bytes 資料的轉換
面試實例ch2_4.py:瞭解字串的資料型態與內容
面試實例ch2_5.py:find( ) 和rfind( ) 的說明
面試實例ch2_6.py:列出段落內某一個字串出現的次數
面試實例ch2_7.py:刪除字串內的空格方法1,使用replace( )
面試實例ch2_8.py:刪除字串內的空格方法2,使用split( ) 和join( )
面試實例ch2_9.py:請用說明陣列和串列的差異
面試實例ch2_10.py:索引實例解說
面試實例ch2_11.py:切片應用
面試實例ch2_12.py:說明append( ) 的用法
面試實例ch2_13.py:說明extend( ) 的用法
程式實例ch2_14.py:賦值(=) 運算取代extend( ) 的應用
程式實例ch2_15.py:淺拷貝、深拷貝與賦值(=) 記憶體位置的觀察
面試實例ch2_16.py:將2 種不同類型的字串轉成串列
面試實例ch2_17.py:請說明join( ) 方法
面試實例ch2_18.py:請說明sort( ) 和sorted( ) 方法的區別
面試實例ch2_19.py:串列打包,然後列印結果
面試實例ch2_20.py:enumerate( ) 打包的應用
面試實例ch2_21.py:使用zip( ) 將串列打包,然後使用for ⋯ in 解包
面試實例ch2_22.py:使用enumerate 將串列打包,然後使用for ⋯ in 解包
面試實例ch2_23.py:請用文字說明zip( ) 的用法,同時用程式解說
面試實例ch2_24.py:請用文字說明enumerate 物件,同時用程式解說
面試實例ch2_25.py:什麼是生成器(generators),請同時舉例說明
面試實例ch2_26.py:divmod( ) 的應用
面試實例ch2_27.py:取得此字典的鍵(key)
面試實例ch2_28.py:取得此字典的值(value)
面試實例ch2_29.py:取得此字典的鍵: 值(key:value) 的元組
面試實例ch2_30.py:將fruits2 字典元素整合到fruits1 字典內
程式實例ch2_31.py:使用del 分別刪除字典元素與字典的應用
面試實例ch2_32.py:刪除字典的元素
面試實例ch2_33.py:用不同數據呼叫函數3 次
面試實例ch2_34.py:串列轉成字典應用1
面試實例ch2_35.py:串列轉成字典應用2
面試實例ch2_36.py:元組轉成字典應用
面試實例ch2_37.py:客戶資料的整理
面試實例ch2_38.py:不使用集合的方法處理交集問題
面試實例ch2_39.py:any( ) 方法的應用
第三章 Python 函數、類別與模組
簡答3-1:使用Python 呼叫函數,在傳遞參數時,是傳值還是傳位址
簡答3-2:更改全域變數的內容
簡答3-3:設計一個含有多個回傳值的函數時,請問這些回傳值的資料型態為何
簡答3-4:請用一句話解釋什麼樣的程式語言可以使用裝飾器
簡答3-5:Python 模組(module) 是什麼
簡答3-6:Python 的init 是什麼
簡答3-7:Python 的類別內的關鍵字self 是什麼
簡答3-8:請說明封裝(encapsulation)
簡答3-9:請說明super( )
簡答3-10:請說明多型(polymorphism)
簡答3-11:Java 不支持多重繼承,Python 可否支持多重繼承
簡答3-12:請說明iter( ) 方法和next( )
面試實例ch3_1.py:random 模組的shuffle( ) 函數的應用
面試實例ch3_2.py:random 模組的sample( ) 函數的應用
面試實例ch3_3.py:random 模組的randint( ) 函數的應用
面試實例ch3_4.py:random 模組的choice( ) 函數的應用
面試實例ch3_5.py:random 模組的seed( ) 函數的應用
面試實例ch3_6.py:random 模組的random( ) 函數的應用
面試實例ch3_7.py:產生5 筆0( 含) – 10.0( 不含),之間的隨機數浮點數
面試實例ch3_8.py:Python 的docstring 是什麼?同時用程式說明
面試實例ch3_9.py:全域變數(global variable) 與區域變數(local variable) 的說明
面試實例ch310.py:lambda 是__什麼?請同時用程式實例解說
面試實例ch3_11.py:含2 個參數的匿名函數應用,可以傳回參數的積
面試實例ch3_12.py:使用sorted 配合lambda 將串列從小到大排序
面試實例ch3_13.py:使用sorted 配合lambda 將串列正值的元素從小到大排序,負值的元素從大到小
面試實例ch3_14.py:字典資料的姓名由小到大排序,年齡由大到小排序
面試實例ch3_15.py:元組資料的姓名由小到大排序,年齡由大到小排序
面試實例ch3_16.py:串列資料的姓名由小到大排序,年齡由大到小排序
面試實例ch3_17.py:將姓名由小到大排序,將年齡由小到大排序,當年齡相同時依照姓名由小到大排序
面試實例ch3_18.py:將字典轉成串列,最後將串列轉為字典,使用zip( )
面試實例ch3_19.py:將字典轉成串列,最後將串列轉為字典,不使用zip( )
面試實例ch3_20.py:為字串['a', 'b', 'c'],隨機建立1-10 之間的值,成為字典
面試實例ch3_21.py:在串列內依據字串長度為元素排序
面試實例ch3_22.py:說明map( ) 函數的用法
面試實例ch3_23.py:說明filter( ) 函數的用法
面試實例ch3_24.py:說明reduce( ) 函數的用法
面試實例ch3_25.py:何謂關鍵字參數?同時用程式解說
面試實例ch3_26.py:請說明如何設計可以傳遞任意數量參數的函數
面試實例ch3_27.py:請說明如何設計可以傳遞一般參數與任意數量參數的函數
面試實例ch3_28.py:請說明args 和**kwargs,同時舉程式實例說明
面試實例ch3_29.py:請說明函數是否可以是一般函數的參數
面試實例ch3_30.py:請說明嵌套(Nested function)
面試實例ch3_31.py:請說明函數是否可以是一個回傳值,請舉程式例說明
面試實例ch3_32.py:請說明何謂閉包(closure)? 請舉程式例說明
面試實例ch3_33.py:閉包closure 的另一個應用
面試實例ch3_34.py:請說明yield、next( ) 和send( ) 的用法?請舉程式例說明
面試實例ch3_35.py:重新設計ch3_34.py,增加使用send( ) 函數呼叫
面試實例ch3_36.py:設計自己的range( ) 函數,此函數名稱是myRange( )
面試實例ch3_37.py:請說明裝飾器(Decorator) 功能,請用實例解說
面試實例ch3_38.py:裝飾器函數的基本操作
面試實例ch3_39.py:請說明if name == 'main' 敘述的優點
面試實例ch3_40.py:import new_makefood,然後觀察執行結果
面試實例ch3_41.py: 如果有A、B、C 等3個變數要供 test1.py、test2.py 和 test3.py 使用,應該如何設計程式
面試實例ch3_42.py:請說明init 和new 的區別,請用文字和實例解說
面試實例ch3_43.py:請同時用文字和程式實例說明isinstance( )
面試實例ch3_44.py、ch3_45.py:請同時用文字和程式實例說明str( ) 方法
面試實例ch3_46.py:請同時用文字和程式實例說明repr( ) 方法
面試實例ch3_47.py:Fibonacci 數列實作
面試實例ch3_48.py:在不可以使用sort( ) 方法下,請設計執行將串列排序
第四章 檔案管理
簡答4-1:請說明檔案相關模組的功能,同時列舉3 個檔案管理的模組
簡答4-2:在檔案操作時請說明with 的用法,同時說明with 的語法
簡答4-3:請說明Python 的開啟文件處理模式(mode)
簡答4-4:說明如何刪除目前工作夾的檔案
簡答4-5:請說明什麼是檔案的相對路徑?絕對路徑
簡答4-6:請說明glob 模組的哪個方法可以列出特定工作目錄內容
簡答4-7:請說明os 模組的哪個方法可以遍歷整個目錄以及此目錄底下的子目錄
簡答4-8:在目錄管理規則中,'.' 和'..',各代表的意義為何
簡答4-9:是否有模組可以在檔案刪除後執行復原
簡答4-10:請說明logging 的等級
面試實例ch4_1.py:刪除檔案data1.txt,未來可以在資源回收筒找到此檔案
面試實例ch4_2.py:執行壓縮或是解壓縮文件或資料夾
面試實例ch4_3.py:將前一個實例所建的zip 檔案解析
面試實例ch4_4.py:解壓縮先前程式實例所建的壓縮檔案outin.zip
面試實例ch4_5.py:請說明如何遍歷目錄與其子目錄
面試實例ch4_6.py:請說明try ⋯ except 的用法
面試實例ch4_7.py:請說明FileNotFoundError,請同時使用程式實例解說
面試實例ch4_8.py:請說明如何使用一個except 捕捉多個異常
面試實例ch4_9.py:請說明處理異常時,使用Python 內建的異常錯誤訊息1
面試實例ch4_10.py:請說明如何捕捉所有異常,請同時使用程式實例解說
面試實例ch4_11.py:請說明如何使用raise Exception,請同時使用程式實例解說
面試實例ch4_12.py:保存異常的錯誤訊息,請同時使用程式實例解說
面試實例ch4_13.py:請說明assert 的功能,請同時使用程式實例解說
第五章 正則表達式
簡答5-1:請說明正則表達式的模組
簡答5-2:請先說明正則表達式,可以在串列內找尋符合下列格式的電話號碼
簡答5-3:簡化方式處理正則表達式
簡答5-4:有一個正則表達式使用括號分組,以及簡化
簡答5-5:在正則表達式中'\d',如果使用管道觀念|,應如何表達
簡答5-6:在正則表達式中,請說明\d、\D、\s、\S、\w、\W 字元的用法
面試實例ch5_1.py:使用正則表達式將電話號碼從一段文字抽離出來
面試實例ch5_2.py:正則表達式使用re.search( ) 時,請說明group( ) 方法
面試實例ch5_3.py:在re 模組中,請說明groups( ) 的功能
面試實例ch5_4.py:請參考面試實例ch5_3.py,將字串內的電話號碼資料取出
面試實例ch5_5.py:搜尋字串中的2 個不同的字串
面試實例ch5_6.py:正則表達式觀念搜尋Johnson、Johnnason、Johnnathan
面試實例ch5_7.py: 正則表達式觀念搜尋John、Johnson、Johnnason、Johnnathan
面試實例ch5_8.py:正則表達式觀念搜尋Johnson、Johnnason
面試實例ch5_9.py:正則表達式觀念搜尋Johnson、Johnnason、Johnnanason
面試實例ch5_10.py:正則表達式觀念搜尋Johnnason、Johnnanason
面試實例ch5_11.py:請說明Python 搜尋時{ } 的用法
面試實例ch5_12.py:請說明Python 的re 模組搜尋模式是貪婪或非貪婪模式
面試實例ch5_13.py:Python 的re 模組預設是貪婪模式,改為非貪婪模式
面試實例ch5_14.py:單字分離程式
面試實例ch5_15.py:正則表達式的應用,將下列標題項目從句子中分離
面試實例ch5_16.py:在正則表達式中,請說明中括號[ ] 的用途
面試實例ch5_17.py:在正則表達式中,請說明在中括號[ ] 內增加^ 字元的用途
面試實例ch5_18.py:在正則表達式中,請說明^ 放在字串前面的意義
面試實例ch5_19.py:在正則表達式中,請說明$ 字元的意義
面試實例ch5_20.py:在正則表達式中,請說明萬用字元'.' 的功能
面試實例ch5_21.py:在正則表達式中,請說明萬用字元'.' 的功能
面試實例ch5_22.py:在正則表達式中,請說明sub( ) 和subn( ) 的用法
面試實例ch5_23.py:這是字串取代的應用
面試實例ch5_24.py:在正則表示法中,請說明如何使用** 代替原本的姓名
面試實例ch5_25.py:請設計可以判別電子郵件地址的正則表達式
面試實例ch5_26.py:找出@ 前面是3-15 個字元,結尾是'@me.com' 的電子郵件地址
面試實例ch5_27.py:根據冒號:或是空格切割字串
面試實例ch5_28.py:列出不是台灣手機號碼
面試實例ch5_29.py:unicode 基本漢字的應用
面試實例ch5_30.py:設計可以篩選匹配
xxxx
的應用第六章 Python 語言綜合應用
面試實例ch6_1.py:用一行程式碼計算1 – 100 的和
面試實例ch6_2.py:使用者輸入3 位數數字,最後捨去個位數字輸出
面試實例ch6_3.py:高斯數學之等差數列運算
面試實例ch6_4.py:請刪除重複部分且重新排列大小和輸出
面試實例ch6_5.py:使用一個迴圈產生下列星形圖案,星形高度由螢幕輸入
面試實例ch6_6.py:輸入直角三角形高度,使用單層迴圈繪製直角三角形
面試實例ch6_7.py:使用單層迴圈繪製倒直角三角形
面試實例ch6_8.py:輸入大於或等於100,則輸出100,否則輸出所輸入的數值
面試實例ch6_9.py:請使用萊布尼茲公式計算圓週率
面試實例ch6_10.py:使用蒙地卡羅模擬計算圓週率
面試實例ch6_11.py:使用尼拉卡莎級數計算圓周率
面試實例ch6_12.py:請輸入任意3 個點的座標,計算此座標的三角形的面積
面試實例ch6_13.py:猜測一個人的生日日期
面試實例ch6_14.py:請輸入西元年19xx 或20xx,然後輸出相對應的生肖年
面試實例ch6_15.py:請列出FBI 出現的次數和將FBI 字串用XX 取代
面試實例ch6_16.py:輸入一個字串,這個程式可以判斷這是否是網址字串
面試實例ch6_17.py:螢幕輸入字串,程式可以列出這個字串在兒歌出現次數
面試實例ch6_18.py:將串列內的系列圖檔分類
面試實例ch6_19.py:列出所有身高是200( 含) 公分以上的球員資料
面試實例ch6_20.py:編寫數字1-5 中,2 個數字的各種組合
面試實例ch6_21.py:計算數學常數e 值
面試實例ch6_22.py:用串列生成式產生串列[0, 1, 2, 3, 4, 5]
面試實例ch6_23.py:建立一個整數平方的串列
面試實例ch6_24.py:使用攝氏溫度串列celsius 生成華氏溫度串列fahrenheit
面試實例ch6_25.py:生成0-19 間符合畢氏定理定義的a、b、c 串列值
面試實例ch6_26.py:串列的應用
面試實例ch6_27.py:用有條件式的串列生成程式,產生1-20 之間的偶數串列
面試實例ch6_28.py:map( ) 的應用
面試實例ch6_29.py:請將[1, 8, 22, 33] 和[3, 3, 9, 15] 合併,再排序輸出
面試實例ch6_30.py:串列展開
面試實例ch6_31.py:列出x.join(y) 和x.join[z] 的結果
面試實例ch6_32.py:在成績單填入總分、平均和名次,最後列出完整成績單
面試實例ch6_33.py:請輸入一個數字N,本程式可以計算前N 個質數
面試實例ch6_34.py:請使用zip( ) 將這2 個元組打包,然後轉成串列列印出來
面試實例ch6_35.py:請列出過去一週的最高溫、最低溫和平均溫度
面試實例ch6_36.py:使用串列生成式方式產生單字次數字典
面試實例ch6_37.py:使用字典生成式記錄任意單字,每個字母出現的次數
面試實例ch6_38.py:使用collections 的Counter 記錄字母出現的次數
面試實例ch6_39.py:字典依據鍵(key) 排序,輸出鍵值
面試實例ch6_40.py:字典依據值(value) 排序
面試實例ch6_41.py:請將文章處理成沒有標點符號和沒有重複字串的字串串列
面試實例ch6_42.py:求2 個串列的交集,聯集,差集與對稱差集
面試實例ch6_43.py:雞尾酒程式
面試實例ch6_44 .py:歐幾里德演算法
面試實例ch6_45 .py:使用遞迴式函數與輾轉相除法觀念,求最大公約數
面試實例ch6_46 .py:增加設計lcd( ) 最小公倍數函數
面試實例ch6_47.py:Fibonacci 數列
面試實例ch6_48.py:請計算子女單眼皮機率和雙眼皮機率
面試實例ch6_49.py:賭場遊戲騙局
面試實例ch6_50.py:設計增加除錯的檢查功能的裝飾器
面試實例ch6_51.py:設計可以列出特定目錄內的檔案資訊
面試實例ch6_52.py:計算國王的麥粒
面試實例ch6_53.py:請用正則表達式篩選文字
面試實例ch6_54.py:在發生DEBUG、INFO、WARNING 訊息時,增加時間戳
訊息
面試實例ch6_55.py:請說明'.' 和'.*?' 的區別
面試實例ch6_56.py:使用一行正則表達式re.sub( ) 將96 和98 分數改為100
第二篇 演算法面試題
第七章 排序與搜尋
面試實例ch7_1.py:說明與實作泡沫排序法(Bubble Sort)
面試實例ch7_2.py:雞尾酒排序(Cocktail Sort)
面試實例ch7_3.py:選擇排序(Selection Sort)
面試實例ch7_4.py:插入排序(Insertion Sort)
面試實例ch7_5.py:堆積樹排序(Heap Sort)
面試實例ch7_6.py:快速排序(Quick Sort)
面試實例ch7_7.py:合併排序(Merge Sort)
面試實例ch7_8.py:程式語言熱門度排序實作
面試實例ch7_9.py:旅館房價排序實作
面試實例ch7_10.py:順序搜尋實作
面試實例ch7_11.py:圖解二分搜尋法
第八章 字串
面試實例ch8_1.py:在字串中找出第一個不重複的字元firstUniqChar( )
面試實例ch8_2.py:將字串轉成整數myAtoi( )
面試實例ch8_3.py:設計正則表達式的匹配isMatch( )
面試實例ch8_4.py:請設計函數isAnagram( ) 可以判斷有效字母的異位詞
面試實例ch8_5.py:設計strStr( ) 找出substr 字串第一個出現位置的索引
面試實例ch8_6.py:設計lengthOfLongestSubstring( ) 傳回無重複字元最長子字串
面試實例ch8_7.py:設計isPalindrome( ) 函數判斷一段句子的字串是不是回文
面試實例ch8_8.py:設計反轉字串reverse( ) 函數
面試實例ch8_9.py:設計longestCommonPrefix( ) 函數找出最長的公共前綴詞
面試實例ch8_10.py:設計一個函數romanToInt( ) 將羅馬數字轉成整數
面試實例ch8_11.py:設計letterCombinations( ) 函數可以回應所有的字母組合
面試實例ch8_12.py:設計countSegments( ) 函數可以計算一句英文有多少個文字
面試實例ch8_13.py:設計isSubsequence( ) 判斷子字串
第九章 陣列
面試實例ch9_1.py:計算陣列元素的2 數和twoSum( )
面試實例ch9_2.py:將重複元素刪除removeDuplicates( )
面試實例ch9_3.py:刪除陣列內特定值元素removeElement( )
面試實例ch9_4.py:在陣列內找出3 個加總為0 的元素threeSum( )
面試實例ch9_5.py:設計一維陣列旋轉rotate( )
面試實例ch9_6.py:設計二維影像旋轉rotate( )
面試實例ch9_7.py:找出陣列元素位置或插入位置searchInsert( )
面試實例ch9_8.py:找出陣列是否有重複元素containsDuplicate( )
面試實例ch9_9.py:找出沒有重複出現的元素singleNumber( )
面試實例ch9_10.py:將正整數陣列加1,onePlus( )
面試實例ch9_11.py:計算串列的交集intersection( )
面試實例ch9_12.py:計算串列的交集,允許交集有重複元素intersection( )
面試實例ch9_13.py:將陣列元素0 移至右邊moveZeroes( )
面試實例ch9_14.py:計算最大子字串的和maxSubArray( )
面試實例ch9_15.py:設計Pascal 三角形generate( )
面試實例ch9_16.py:請設計maxProfit( ) 執行單次買賣可計算股票買賣最佳獲利
面試實例ch9_17.py:請設計maxProfit( ) 執行多次買賣可計算股票買賣最佳獲利
面試實例ch9_18.py:盛水最多的容器maxArea( )
第十章 鏈結串列
面試實例ch10_1.py:以最直接方式建立鏈結串列1, 2, 3, 4, 5
面試實例ch10_2.py:使用函數create_link_list( ) 建立鏈結串列
面試實例ch10_3.py:將鏈結串列資料反轉reverseList( )
面試實例ch10_4.py:刪除鏈結串列的節點removeElements( )
面試實例ch10_5.py:合併2 個排序好的鏈結串列mergeTwoLists( )
面試實例ch10_6.py:刪除重複的鏈結串列元素deleteDuplicates( )
面試實例ch10_7.py:將二進位的鏈結串列改成整數getDecimalValue( )
面試實例ch10_8.py:將10 進位的鏈結串列改成整數getDecimalValue( )
面試實例ch10_9.py:了解鏈結串列內容是不是回文isPalindrome( )
面試實例ch10_10.py:計算此2 個串列的和addTwoNumber( )
第十一章 二元樹
面試實例ch11_1.py:依照串列順序建立二元樹同時使用中序(inorder) 列印
面試實例ch11_2.py:設計insertList( ) 函數建立二元樹
面試實例ch11_3.py:請計算二元樹的最大深度maxDepth( )
面試實例ch11_4.py:測試2 個二元樹是否內容相同isSameTree( )
面試實例ch11_5.py:判斷二元樹是不是中心對稱或稱鏡像isSymmetric( )
面試實例ch11_6.py:將已排序陣列轉成二元搜尋樹sortedToBST( )
面試實例ch11_7.py:將未排序的陣列轉成二元搜尋樹arrayToBST( )
面試實例ch11_8.py:驗證是不是二元搜尋樹isValidBST( )
面試實例ch11_9.py:計算二元樹的最小深度minDepth( )
面試實例ch11_10.py:求某二元樹的路徑數值和等於特定值hasPathSum( )
面試實例ch11_11.py:計算所有左邊葉節點的總和sumOfLeaves( )
面試實例ch11_12.py:遍歷二元樹使用前序列印preorder( )
面試實例ch11_13.py:遍歷二元樹使用後序列印postorder( )
程式實例ch11_14.py:從最頂端開始,依層次列印節點levelOrder( )
第十二章 堆疊
面試實例ch12_1.py:判斷內含'('、')'、'['、']'、'{'、'}' 的字串是否合法isValid( )
面試實例ch12_2.py:設計MinStack 類別,可以執行push、pop、top、getMin
面試實例ch12_3.py:使用佇列(Queue) 完成堆疊的操作
面試實例ch12_4.py:找出下一個最大值nextGreaterElement( )
面試實例ch12_5.py:比較兩段字串內容是否相同backspaceCompare( )
面試實例ch12_6.py:刪除相鄰且相同的字元removeDuplicates( )
面試實例ch12_7.py:去除每一組最外層的括號( ) 符號removeOuterPatentheses( )
面試實例ch12_8.py:棒球比賽得分總計calPoints( )
第十三章 數學問題
面試實例ch13_1.py:仿照Excel 欄位的英文字母,將數字轉英文convertToTitle( )
面試實例ch13_2.py:給予32 位元正整數將數字反轉reverse( )
面試實例ch13_3.py:設計isPalindrome() 判斷是不是回文阿拉伯數字
面試實例ch13_4.py:設計isHappy( ) 函數判斷數字是不是快樂數字(Happy Number)
面試實例ch13_5.py:請設計isUgly( ) 函數判斷數字是不是醜陋數字(Ugly Number)
面試實例ch13_6.py:設計isPowerOfThree( ) 判斷參數是不是3 的整數冪
面試實例ch13_7.py:設計missingNumber( ) 檢查陣列內的遺失數字
面試實例ch13_8.py:設計isPerfectSquare( ) 判斷數字是不是一個完全平方數
面試實例ch13_9.py:設計arrangeCoins( ) 函數判斷n 個硬幣可以放置多少層
面試實例ch13_10.py:設計judgeSquareSum( ) 判斷數值是不是2 個數字的平方和
面試實例ch13_11.py:設計checkPerfectNumber( ) 判斷數字是不是完美數字
面試實例ch13_12.py:計算串列內任意3 個數字的最大乘績maximumProduct( )
面試實例ch13_13.py:設計largestTriangleArea( ) 求點可以組成的最大面積
面試實例ch13_14.py:設計isRectangleOverlap( ) 函數判斷2 個矩形是否相交
面試實例ch13_15.py:設計distributeCandies( ) 函數執行分糖果程式設計
第十四章 貪婪演算法
面試實例ch14_1.py:設計findContentChildren( ) 函數輸出餅乾可以滿足多少小孩
面試實例ch14_2.py:設計lemonadeChange( ) 處理賣檸檬汁問題
面試實例ch14_3.py:設計minSequence( ) 列出最少元素的和大於其他元素總和
面試實例ch14_4.py:設計carPooling( ) 判斷可否完成接送所有旅客
面試實例ch14_5.py:排課問題
面試實例ch14_6.py:背包問題
面試實例ch14_7.py:電台問題
面試實例ch14_8.py:列出業務員最適當的拜訪路線與最後旅行距離
第十五章 動態規劃程式
面試實例ch15_1.py:設計climbStairs( ) 處理爬樓梯問題
面試實例ch15_2.py:設計rob( ) 函數計算最多可以偷多少價值的物品
面試實例ch15_3.py:設計minCost( ) 函數處理使用最少經費粉刷房子
面試實例ch15_4.py:設計numWays( ) 計算粉刷籬笆有多少種刷法
面試實例ch15_5.py:設計divisorGame( ) 的遊戲
面試實例ch15_6.py:設計uniquePaths( ) 函數記錄機器人在地圖上有幾種走法
面試實例ch15_7.py:設計minimumTotal() 函數計算triangle 路徑和的最小值
面試實例ch15_8.py:小偷與背包問題,計算小偷最多可以偷多少水果
面試實例ch15_9.py:最高價值的旅遊景點程式設計
面試實例ch15_10.py:計算挖金礦的最高產值
第十六章 綜合應用
面試實例ch16_1.py:設計floodFill( ) 函數為圖像執行顏色更改
面試實例ch16_2.py:從臉書上找尋有經銷香蕉的商家
面試實例ch16_3.py:走迷宮程式設計
面試實例ch16_4.py:河內塔問題
面試實例ch16_5.py:設計從一點到所有其他點的最短距離
面試實例ch16_6.py:有一個圖形含負權重設計從一點到所有其他點的最短距離
面試實例ch16_7.py:八皇后問題
面試實例ch16_8.py:VLSI 超大型積體電路設計
面試實例ch16_9.py:科赫(Von Koch) 雪花設計
作者介紹
洪錦魁
一位誇越電腦作業系統與科技時代的電腦專家,著作等身的作家。
■ DOS 時代他的代表作品是 IBM PC 組合語言、C、C++、Pascal、資料結構。
■ Windows 時代他的代表作品是 Windows Programming 使用 C、Visual Basic。
■ Internet 時代他的代表作品是網頁設計使用 HTML。
■ 大數據時代他的代表作品是 R 語言邁向 Big Data 之路。
除了作品被翻譯為簡體中文、馬來西亞文外,2000 年作品更被翻譯為Mastering HTML 英文版行銷美國。
近年來作品則是在北京清華大學和台灣深智同步發行:
1:Java 入門邁向高手之路王者歸來
2:Python 最強入門邁向頂尖高手之路王者歸來
3:Python 最強入門邁向數據科學之路王者歸來
4:Python 網路爬蟲:大數據擷取、清洗、儲存與分析王者歸來
5:演算法最強彩色圖鑑 + Python 程式實作王者歸來
6:HTML5 + CSS3 王者歸來
7:R 語言邁向Big Data 之路
8:Excel 完整學習邁向最強職場應用王者歸來
他在2020/2021 年許多著作分別登上天瓏、博客來、Momo 電腦書
類暢銷排行榜第一名,他的著作最大的特色是不賣弄文字與炫耀知識,所有程式語法會依特性分類,同時以實用的程式範例做解說,讓複雜的知識變的淺顯易懂,讀者可以由他的著作事半功倍輕鬆掌握相關知識。