Python 程序員面試筆試寶典
內容描述
《Python程序員面試筆試寶典》是一本講解Python程序員面試筆試的科全書,在寫法上,
除了講解如何解答Python程序員面試筆試問題以外,還引入了相關知識點輔以說明,讓讀者能夠更加容易理解。
《Python程序員面試筆試寶典》將Python程序員面試筆試過程中各類知識點一網打盡,在廣度上,通過各種渠道,
蒐集了近3年幾乎所有IT企業針對Python崗位的筆試、面試涉及的知識點,括但不限於Python基礎與不錯知識點、數據庫、
數據結構與算法、Python與爬蟲、Python與數據分析和機器學習相關的知識點。
所選擇知識點均為企業招聘考查的知識點。
在講解的深度上,本書由淺入深地分析每一個知識點,並提煉歸納,同時,引入相關知識點,
並對知識點進行深度剖析,讓讀者不僅能夠理解這個知識點,
還能在遇到相似問題時也能游刃有餘地解決,而這些內容是其他同類書籍所沒有的。
本書根據知識點進行歸納分類,結構合理,條理清晰,
對於讀者進行學習與檢索意義重大。
《Python程序員面試筆試寶典》是一本計算機相關專業畢業生面試、筆試的求職用書,
同時也適合期望在計算機軟、硬件行業大顯身手的計算機愛好者閱讀。
目錄大綱
前言
第1章 求職經驗分享1
1.1 Python程序員有哪些可供選擇的職業發展道路? 1
1.2 當前市場對於Python程序員的需求如何?待遇如何? 1
1.3 當企業在招聘時,對Python程序員通常有何要求? 3
1.4 要想成為一名出色的Python程序員,需要掌握哪些必備的知識? 4
第2章 Python基礎5
2.1 什麼是Python?使用Python有什麼好處? 5
2.2 Python中常用的保留字有哪些? 5
2.3 Python 2.x與3.x版本有哪些主要的區別? 6
2.4 Python中有哪些常見的運算符? 10
2.5 運算符is與= =有什麼區別? 13
2.6 數據類型14
2.6.1 Python都有哪些自帶的數據類型?可變類型和不可變類型分別包括哪些? 14
2.6.2 列表、元組、集合、字典的區別有哪些? 16
2.6.3 列表和元組的區別有哪些? 17
2.6.4 Python有哪些常見的數據類型轉換函數? 18
2.6.5 列表、元組、集合及字典之間如何相互轉換? 19
2.6.6 如何刪除一個列表(list)中的重複元素? 20
2.6.7 如何求兩個列表(list)的交集、差集或併集? 22
2.6.8 如何反序地迭代一個序列? 23
2.6.9 列表的sort方法和sorted方法有何區別? 25
2.6.10 列表中常用的方法有哪些? 27
2.6.11 什麼是列表生成式? 29
2.6.12 字符串格式化%和.format的區別是什麼? 30
2.6.13 單引號、雙引號和三引號的區別有哪些? 31
2.6.14 Python中常用字符串函數有哪些? 31
2.6.15 如何判斷一個字符串是否全為數字? 33
2.6.16 Python字典有哪些內置函數? 34
2.6.17 字典的items()方法與iteritems()方法有什麼不同? 35
2.6.18 集合常見內置方法有哪些? 36
2.6.19 其他37
2.7 Python中的日期和時間49
2.7.1 編寫函數返回昨天的日期52
2.7.2 計算每個月的天數52
2.7.3 如何獲取某月的日曆? 53
2.8 流程控制語句53
2.8.1 Python中pass語句的作用是什麼? 53
2.8.2 用程序實現斐波納契數列53
2.8.3 Python編程中的except有哪些作用? 54
2.8.4 給出一個自定義異常的示例55
2.8.5 range()函數的作用有哪些? 56
2.8.6 xrange和range的區別有哪些? 57
2.8.7 生成九九乘法表58
2.8.8 打印三角形59
2.8.9 簡單計算器60
2.8.10 1,2,3,4,5能組成多少個互不相同的無重複的三位數?請用程序分別列出61
2.8.11 判斷用戶輸入的年份是否為閏年62
2.8.12 編寫一個函數判斷用戶輸入的數值是否為質數62
2.9 collections模塊63
2.9.1 如何獲取一個字符串中某個字符的個數? 63
2.9.2 deque的作用是什麼? 64
2.9.3 defaultdict的作用是什麼? 64
2.9.4 OrderedDict的作用是什麼? 64
2.10 itertools模塊有什麼作用? 66
2.11 淺談你對Python編碼規範的認識,並寫出你知道的編碼規範66
2.12 與SHELL腳本相關的面試題67
2.13 其他真題77
第3章 Python進階89
3.1 函數89
3.1.1 Python如何定義一個函數? 89
3.1.2 什麼是lambda函數? 89
3.1.3 普通函數和lambda函數有什麼異同點? 91
3.1.4 單下劃線與雙下劃線的區別有哪些? 91
3.1.5 Python的函數參數傳遞方式是什麼? 96
3.1.6 什麼是閉包? 98
3.1.7 函數中args和**kwargs的作用是什麼? 99
3.1.8 其他100
3.2 模塊121
3.2.1 什麼是模塊?它有什麼好處? 121
3.2.2 模塊有哪幾種導入方式? 122
3.2.3 os和sys模塊的區別有哪些? 122
3.2.4 “name”屬性的作用是什麼? 126
3.2.5 dir()函數的作用是什麼? 127
3.2.6 讀寫文件常用的方法有哪些? 127
3.2.7 pickle模塊的作用是什麼? 130
3.2.8 Python裡面如何生成隨機數? 132
3.2.9 pip是什麼? 133
3.2.10 其他135
3.3 Python的裝飾器是什麼? 136
3.4 Python的構造器是什麼? 137
3.5 Python的生成器(Generator)是什麼? 138
3.6 Python的迭代器(Iterator)是什麼? 141
3.7 迭代器和生成器的區別有哪些? 142
3.8 isinstance()和type()的區別是什麼? 143
3.9 Python中的淺拷貝、深拷貝和賦值之間有什麼區別? 144
3.10 Python是如何進行內存管理的? 147
3.11 內置函數148
3.11.1 map()函數的作用是什麼? 148
3.11.2 reduce()函數的作用是什麼? 150
3.11.3 filter()函數的作用是什麼? 150
3.11.4 enumerate()函數的作用是什麼? 151
3.11.5 zip()函數的作用是什麼? 152
3.11.6 hasattr()、getattr()和setattr()函數的作用有哪些? 153
3.12 面向對象154
3.12.1 面向對像有哪三大特性? 154
3.12.2 什麼是繼承? 154
3.12.3 什麼是多態? 157
3.12.4 類屬性和實例屬性的區別158
3.12.5 類變量需要注意什麼? 159
3.12.6 init方法的作用是什麼? 159
3.12.7 new和init的區別有哪些? 160
3.12.8 repr和str有什麼區別? 161
3.12.9 什麼是類方法、靜態方法和實例方法? 162
3.12.10 什麼是私有屬性和私有方法? 163
3.12.11 Python如何實現單例模式? 163
3.12.12 其他165
3.13 正則表達式171
3.13.1 正則表達式的一些語法171
3.13.2 re模塊有哪些常用的函數? 174
3.13.3 用Python匹配HTML tag的時候,<.>和<.*?>有什麼區別? 177
3.13.4 Python裡面search()和match()的區別178
3.13.5 如何用Python來進行查詢和替換一個文本字符串? 178
3.13.6 其他179
3.14 辦公自動化181
3.14.1 Python如何操作Word? 181
3.14.2 Python如何操作Excel? 182
3.15 系統編程184
3.15.1 什麼是任務、進程和線程? 184
3.15.2 thread模塊中的start_new_thread()函數的作用是什麼? 185
3.15.3 使用Threading模塊如何創建線程? 185
3.15.4 如何保證線程之間的同步? 187
3.15.5 Queue模塊的主要作用是什麼? 188
3.15.6 什麼是進程池? 190
3.15.7 其他190
3.16 網絡編程192
3.16.1 Python網絡編程有哪些常用模塊? 194
3.16.2 Socket對象內建方法有哪些? 194
3.16.3 如何用Python來發送郵件? 195
3.16.4 使用Python如何收取郵件? 196
3.16.5 如何用Python來發送短信? 197
3.17 其他真題198
第4章 數據結構與算法204
4.1 排序204
4.1.1 如何進行選擇排序? 204
4.1.2 如何進行插入排序? 205
4.1.3 如何進行冒泡排序? 205
4.1.4 如何進行歸併排序? 206
4.1.5 如何進行快速排序? 207
4.1.6 如何進行希爾排序? 209
4.1.7 如何進行堆排序? 211
4.1.8 如何進行基數排序? 212
4.2 大數據213
4.2.1 如何從大量的url中找出相同的url? 214
4.2.2 如何從大量數據中找出高頻詞? 214
4.2.3 如何在大量的數據中找出不重複的整數? 215
4.2.4 如何在大量的數據中判斷一個數是否存在? 215
4.2.5 如何查詢最熱門的查詢串? 216
4.2.6 如何統計不同電話號碼的個數? 217
4.2.7 如何從5億個數中找出中位數? 217
4.2.8 如何找出排名前500的數? 218
第5章 數據庫相關220
5.1 數據庫基礎理論220
5.1.1 數據庫的常見分類有哪些? 220
5.1.2 事務的概念及其4個特性是什麼? 225
5.1.3 事務的4種隔離級別(Isolation Level)分別是什麼? 226
5.1.4 Oracle、MySQL和SQL Server中的事務隔離級別228
5.1.5 什麼是范式? 231
5.1.6 什麼是第一、二、三、BC範式? 231
5.1.7 什麼是反範式? 235
5.1.8 索引的使用原則有哪些? 236
5.1.9 什麼是存儲過程?它有什麼優點? 237
5.1.10 存儲過程和函數的區別是什麼? 238
5.1.11 觸發器的作用、優缺點有哪些? 238
5.1.12 什麼是視圖?視圖的作用是什麼? 239
5.1.13 什麼是SQL注入? 239
5.1.14 什麼是MVCC? 240
5.1.15 鎖的作用有哪些? 240
5.1.16 更新丟失指的是什麼? 240
5.1.17 悲觀鎖和樂觀鎖241
5.1.18 什麼是死鎖(DeadLock)? 242
5.2 Python操作數據庫243
5.2.1 SQLite數據庫243
5.2.2 MySQL數據庫244
5.2.3 MongoDB數據庫247
5.2.4 Redis數據庫248
5.3 其他250
第6章 爬蟲基礎知識254
6.1 什麼是爬蟲? 254
6.2 爬蟲的基本流程有哪些? 254
6.3 Request中包含了哪些內容? 254
6.4 Response中包含了哪些內容? 256
6.5 HTTP請求中的POST、GET有什麼區別? 258
6.6 HTTP、HTTPS協議有什麼區別? 258
6.7 Cookie和Session有什麼區別? 258
6.8 域名和IP之間有什麼關係?如何查看某個域名對應的IP地址? 259
6.9 在HTTP協議頭中,keep-alive字段有什麼作用? 259
6.10 HTTP常用的狀態碼(Status Code)有哪些? 259
6.11 常用的爬蟲框架或者模塊有哪些?談談它們的區別或者優缺點261
6.12 Scrapy相關261
6.12.1 什麼是Scrapy?它有哪些優缺點? 261
6.12.2 Scrapy框架中各組件的作用是什麼? 261
6.12.3 其他262
6.13 應用實例265
6.13.1 統計並存儲標籤中所有單詞及數目265
6.13.2 使用Python爬蟲爬取小麥苗博客的鏈接地址並保存到本地Excel中266
6.14 其他270
第7章 數據分析基礎知識275
7.1 Anaconda是什麼? 275
7.2 Jupyter Notebook介紹275
7.2.1 Jupyter Notebook是什麼? 275
7.2.2 Jupyter的Cell是什麼? 276
7.2.3 Markdown模式常用命令包括哪些? 277
7.2.4 常用Magic魔法指令有哪些? 277
7.3 NumPy介紹279
7.3.1 常用的Ndarray創建方法有哪些? 279
7.3.2 Ndarray的屬性有哪幾個? 281
7.3.3 常用Ndarray方法282
7.3.4 Ndarray的基本操作283
7.3.5 NumPy基本運算286
7.4 Pandas介紹287
7.4.1 Series288
7.4.2 DataFrame290
7.4.3 Series和DataFrame的運算293
7.4.4 Pandas數據處理294
7.4.5 總結297
7.5 Matplotlib介紹298
7.5.1 Matplotlib簡介及安裝298
7.5.2 Matplotlib的配置文件包括哪些配置項? 298
7.5.3 Matplotlib用到的格式化字符包括哪些? 299
7.5.4 Matplotlib用到的顏色縮寫包括哪些? 300
7.5.5 Matplotlib的使用301
7.6 數據可視化庫Seaborn304
7.6.1 Seaborn簡介與安裝304
7.6.2 Seaborn與Matplotlib的區別有哪些? 304
7.6.3 Seaborn繪製圖305
第8章 機器學習基礎知識312
8.1 機器學習背景312
8.2 基本術語312
8.3 機器學習算法315
8.3.1 KNN-最近鄰法315
8.3.2 最小二乘法318
8.3.3 梯度下降法320
8.3.4 線性回歸算法322
8.3.5 邏輯回歸323
8.3.6 K-Means聚類算法325
8.3.7 支持向量機算法325
8.3.8 模型評估與選擇326
8.4 機器學習展望331
第9章 筆試面試真題與答案332
9.1 真題1332
9.2 真題2336
9.3 答案341
9.3.1 真題1答案341
9.3.2 真題2答案345
作者介紹
辛曉婷
網名'小婷儿',甘肅武威人,西北農林科技大學理學碩士,長期從事Python數據分析與數據挖掘工作,
能在海量數據中尋找數據規律,發現數據異常,獲取深入的,有價值的信息,
保證數據分析結果的高質量和數據挖掘的高價值,並在機器學習領域有造詣,熱衷技術分享。