天天看點

總結10大門類100道python面試題筆試題

很多人學完python在問面試筆試該怎麼準備,是以小編總結并精選了近200年的python面試和筆試題,總共分為十個門類100多道python面試題,願各位小夥伴在尋找工作的同時更加順利

**

關注公衆号【一行資料】回複【面試】可以收到所有題目的答案哦

一、python基礎知識

1.1 列出5個python标準庫

   os:提供了不少與作業系統相關聯的函數

   sys: 通常用于指令行參數

   re: 正則比對

   math: 數學運算

   datetime:處理日期時間

1.2 python2和python3的range(100)的差別

python2傳回清單,python3傳回疊代器,節約記憶體

1.3python2和python3差別?列舉5個

1、Python3 使用 print 必須要以小括号包裹列印内容,比如 print(‘hi’)

Python2 既可以使用帶小括号的方式,也可以使用一個空格來分隔列印内容,比如 print ‘hi’

2、python2 range(1,10)傳回清單,python3中傳回疊代器,節約記憶體

3、python2中使用ascii編碼,python3中使用utf-8編碼

4、python2中unicode表示字元串序列,str表示位元組序列python3中str表示字元串序列,byte表示位元組序列

5、python2中為正常顯示中文,引入coding聲明,python3中不需要

6、python2中是raw_input()函數,python3中是input()函數

1.4 請列出你會的任意一種統計圖(條形圖、折線圖等)繪制的開源庫,第三方也行

pychart、matplotlib

1.5 提高python運作效率的方法

1、使用生成器,因為可以節約大量記憶體

2、循環代碼優化,避免過多重複代碼的執行

3、核心子產品用Cython PyPy等,提高效率

4、多程序、多線程、協程

5、多個if elif條件判斷,可以把最有可能先發生的條件放到前面寫,這樣可以減少程式判斷的次數,提高效率

1.6 遇到bug如何處理

1、細節上的錯誤,通過print()列印,能執行到print()說明一般上面的代碼沒有問題,分段檢測程式是否有問題,如果是js的話可以alert或console.log

2、如果涉及一些第三方架構,會去查官方文檔或者一些技術部落格。

3、對于bug的管理與歸類總結,一般測試将測試出的bug用teambin等bug管理工具進行記錄,然後我們會一條一條進行修改,修改的過程也是了解業務邏輯和提高自己程式設計邏輯缜密性的方法,我也都會收藏做一些筆記記錄。

4、導包問題、城市定位多音字造成的顯示錯誤問題

1.7 簡述python引用計數機制

python垃圾回收主要以引用計數為主,标記-清除和分代清除為輔的機制,其中标記-清除和分代回收主要是為了處理循環引用的難題。

引用計數算法

當有1個變量儲存了對象的引用時,此對象的引用計數就會加1

當使用del删除變量指向的對象時,如果對象的引用計數不為1,比如3,那麼此時隻會讓這個引用計數減1,即變為2,當再次調用del時,變為1,如果再調用1次del,此時會真的把對象進行删除

1.8 列舉3條以上PEP8編碼規範

1、頂級定義之間空兩行,比如函數或者類定義。

2、方法定義、類定義與第一個方法之間,都應該空一行

3、三引号進行注釋

4、使用Pycharm、Eclipse一般使用4個空格來縮進代碼

二、python資料類型

2.1 python内建資料類型有哪些

2.2 a=(1,)b=(1),c=(“1”) 分别是什麼類型的資料?

2.3 python傳參數是傳值還是傳址?

2.4 列出python中可變資料類型和不可變資料類型,并簡述原理

2.5 python中交換兩個數值

2.6 生成0-100的随機數

2.7 一行代碼實作1–100之和

2.8 保留兩位小數

2.9 a=“張明 98分”,用re.sub,将98替換為100

2.10 單引号、雙引号、三引号用法

2.11 字元串轉化大小寫

2.12 用兩種方法去空格 str = " what the problem"

2.13 避免轉義給字元串加哪個字母表示原始字元串?

a="hello"和b="你好"編碼成bytes類型

2.14 清單[1,2,3,4,5],請使用map()函數輸出[1,4,9,16,25],并使用清單推導式提取出大于10的數,最終輸出[16,25]

2.15 [1,2,3]+[4,5,6]的結果是多少?

2.16 list=[2,3,5,4,9,6],從小到大排序,不許用sort,輸出[2,3,4,5,6,9]

2.17 python中生成随機整數、随機小數、0–1之間小數方法

2.18 s = “ajldjlajfdljfddd”,去重并從小到大排序輸出"adfjl"

2.19 x=“abc”,y=“def”,z=[“d”,“e”,“f”],分别求出x.join(y)和x.join(z)傳回的結果

2.20 a = " hehheh ",去除收尾空格

2.21 1. python實作清單去重的方法(多種方法)

2.22 舉例sort和sorted對清單排序,list=[0,-1,3,-10,5,9]

2.23 對list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],使用lambda函數從小到大排序

2.24 使用lambda函數對list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],輸出結果為[0,2,4,8,8,9,-2,-4,-4,-5,-20],正數從小到大,負數從大到小

2.25 清單推導式求清單所有奇數并構造新清單,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

2.26 兩個清單[1,5,7,9]和[2,2,6,8]合并為[1,2,2,3,6,7,8,9]

2.27 [[1,2],[3,4],[5,6]]一行代碼展開該清單,得出[1,2,3,4,5,6]

2.28 請将[i for i in range(3)]改成生成器

2.29 清單嵌套元組,分别按字母和數字排序foo = [(“zs”,19),(“ll”,54),(“wa”,17),(“df”,23)]

2.30 清單嵌套清單排序,年齡數字相同怎麼辦?foo = [(“zs”,19),(“ll”,54),(“wa”,17),(“df”,23),(“xf”,23)]

2.31根據字元串長度排序

2.32 字典如何删除鍵和合并兩個字典

2.33 字典根據鍵從小到大排序

2.34清單嵌套字典的排序,分别根據年齡和姓名排序foo = [{“name”:“zs”,“age”:19},{“name”:“ll”,“age”:54},{“name”:“wa”,“age”:17},{“name”:“df”,“age”:23}]

2.35 使用pop和del删除字典中的"name"字段,dic={“name”:“zs”,“age”:18}

2.36 python字典和json字元串互相轉化方法

2.37 求三個方法列印結果

2.38 python中什麼元素為假?

2.39 is和==有什麼差別?

三、python函數和方法

3.1 如何在一個函數内部修改全局變量

3.2 遞歸求和

3.3 舉例說明zip()函數用法

3.4 利用collections庫的Counter方法統計字元串每個單詞出現的次數"kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"

3.6 filter方法求出清單所有奇數并構造新清單,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

3.7 fun(*args,kwargs)中的 * args, kwargs什麼意思?

3.8 用lambda函數實作兩個數相乘

3.9 python中斷言方法舉例

3.10 寫一段自定義異常代碼

3.11 舉例說明異常子產品中try except else finally的相關意義

3.12 IOError、AttributeError、ImportError、IndentationError、IndexError、KeyError、SyntaxError、NameError分别代表什麼異常

3.13 python中copy和deepcopy差別

3.14 簡述any()和all()方法

四、python面向對象

4.1 一句話解釋什麼樣的語言能夠用裝飾器?

4.2 簡述面向對象中__new__和__init__差別

4.3 列出幾種魔法方法并簡要介紹用途

4.4 寫一個單例模式

五、python檔案操作

5.1 簡述with方法打開處理檔案幫我我們做了什麼?

5.2 用python删除檔案和用linux指令删除檔案方法

5.3 log日志中,我們需要用時間戳記錄error,warning等的發生時間,請用datetime子產品列印目前時間戳 “2018-04-01 11:38:54”

5.4 r、r+、rb、rb+檔案打開模式差別

六、python多任務

6.1 談下python的GIL

6.2 簡述多線程、多程序

6.3 簡述樂觀鎖和悲觀鎖

七、python網絡

7.1 列出常見的狀态碼和意義

7.2 分别從前端、後端、資料庫闡述web項目的性能優化

7.3 簡述同源政策

7.4 簡述cookie和session的差別

7.5 常見的網絡傳輸協定

7.6 HTTP請求中get和post差別

八、正規表達式

8.1

我要吃雞

,用正則比對出标簽裡面的内容(“我要吃雞”),其中class的類名是不确定的

8.2 正規表達式比對中,(.)和(.?)比對差別?

8.3 字元串a = “not 404 found 張三 99 深圳”,每個詞中間是空格,用正則過濾掉英文和數字,最終輸出"張三 深圳"

8.4 正則re.complie作用

8.5 正則比對,比對日期2018-03-20

8.6 s=“info:xiaoZhang 33 shandong”,用正則切分字元串輸出[‘info’, ‘xiaoZhang’, ‘33’, ‘shandong’]

8.7 正則比對以163.com結尾的郵箱

8.8 正則比對不是以4和7結尾的手機号

8.9 正規表達式比對第一個URL

8.10 正則比對中文

九、資料庫

9.1 資料表student有id,name,score,city字段,其中name中的名字可有重複,需要消除重複行,請寫sql語句

9.2 資料庫優化查詢方法

9.3 簡述Django的orm

9.4 列出常見MYSQL資料存儲引擎

9.5 MyISAM 與 InnoDB 差別:

9.6 寫5條常用sql語句

9.7 簡述mysql和redis差別

9.8 舉例說明SQL注入和解決辦法

9.9 正規表達式比對出網址

十、Linux知識

10.1 10個Linux常用指令

10.2 Linux指令重定向 > 和 >>

參考:

https://mp.weixin.qq.com/s/SyC_LLQL8AU3i6wYNlOdNQ https://github.com/kenwoodjw/python_interview_question