賴勇浩(http://laiyonghao.com)
今天在 simple-is-better.com 看到一篇《Python 面試題集合》(http://simple-is-better.com/news/596),裡面有一些很好的試題,如“Python是如何進行類型轉換的?”,也有一些讓人吐血的試題,如“Python如何?單例模式?其他23種設計模式python如何??”。在引我思考的同時,也讓我產生把自己之前招聘所用的 Python 試題跟大家分享、討論的想法,隨意整理了一下,試題如下,請多指教。
python 試題(基於 python 2.3 或更高版本)
==============
一、文化
----
1,聽過 the zen of python 嗎?儘可能地默寫它,中英文皆可,大意也可。如果沒有聽過,談談你對 pythonic 的看法,或者你認為什麼樣的 python 代碼才是好代碼。
二、資料結構與演算法
---------
2,現在有一個 dict 對象 adict,裡麵包含了一百萬個元素,尋找其中的某個元素的平均需要多少次比較?一千萬個元素呢?
3,現在有一個 list 對象 alist,裡面的所有元素都是字串,編寫一個函數對它實現一個大小寫無關的排序。
4,python 裡關於“堆”這種資料結構的模組是哪個?“堆”有什麼優點和缺點?舉一個遊戲開發中可能會用到堆的問題(不限是於 python 的堆,可以是其它語言的相關實現)。
5,set 是在哪個版本成為 build-in types 的?舉一個你在以往項目中用到這種資料結構的問題(不限是於 python 的 set ,可以是其它語言的相關實現),並說明為什麼當時選擇了 set 這種資料結構。
6,有一個排好序地 list 對象 alist,尋找其中是否有某元素 a(儘可能地使用標準庫函數)。
三、庫應用
-----
7,說說 dict 的 items() 方法與 iteritems() 方法的不同。
8,寫一段程式逐行讀入一個文字檔,並在螢幕上列印出來。
9,默寫儘可能多的 str 對象的方法。
10,打亂一個排好序的 list 對象 alist。
11,有二維的 list 對象(即它的每一個元素都是一個 list 對象)alist,假定其中的所有元素都具有相同的長度(把 alist 想象成一個表格),寫一段程式根據元素的第二個元素排序(即對錶格的第二欄欄位排序)。
四、設計
----
12,實現一個 stack。
13,編寫一個簡單的 ini 檔案解譯器。
14,現有 N 個純文字格式的英文檔案,實現一種檢索方案,即做一個小搜尋引擎。