內容大鋼
本書是一本講解Python程序員面試筆試的百科全書,在寫法上,除了講解如何解答Python程序員面試筆試問題以外,還引入了相關知識點輔以說明,讓讀者能夠更加容易理解。
本書將Python程序員面試筆試過程中各類知識點一網打盡,在廣度上,通過各種渠道,搜集了近3年幾乎所有IT企業針對Python崗位的筆試、面試涉及的知識點,包括但不限於Python基礎與高級知識點、資料庫、數據結構與演算法、Python與爬蟲、Python與數據分析和機器學習相關的知識點。所選擇知識點均為企業招聘考查的知識點。在講解的深度上,本書由淺入深地分析每一個知識點,並提煉歸納,同時,引入相關知識點,並對知識點進行深度剖析,讓讀者不僅能夠理解這個知識點,還能在遇到相似問題時也能游刃有餘地解決,而這些內容是其他同類書籍所沒有的。本書根據知識點進行歸納分類,結構合理,條理清晰,對於讀者進行學習與檢索意義重大。
本書是一本電腦相關專業畢業生面試、筆試的求職用書,同時也適合期望在電腦軟、硬體行業大顯身手的電腦愛好者閱讀。
目錄
前言
第1章 求職經驗分享
1.1 Python程序員有哪些可供選擇的職業發展道路?
1.2 當前市場對於Python程序員的需求如何?待遇如何?
1.3 當企業在招聘時,對Python程序員通常有何要求?
1.4 要想成為一名出色的Python程序員,需要掌握哪些必備的知識?
第2章 Python基礎
2.1 什麼是Python?使用Python有什麼好處?
2.2 Python中常用的保留字有哪些?
2.3 Python 2.x與3.x版本有哪些主要的區別?
2.4 Python中有哪些常見的運算符?
2.5 運算符is與= =有什麼區別?
2.6 數據類型
2.6.1 Python都有哪些自帶的數據類型?可變類型和不可變類型分別包括哪些?
2.6.2 列表、元組、集合、字典的區別有哪些?
2.6.3 列表和元組的區別有哪些?
2.6.4 Python有哪些常見的數據類型轉換函數?
2.6.5 列表、元組、集合及字典之間如何相互轉換?
2.6.6 如何刪除一個列表(list)中的重複元素?
2.6.7 如何求兩個列表(list)的交集、差集或並集?
2.6.8 如何反序地迭代一個序列?
2.6.9 列表的sort方法和sorted方法有何區別?
2.6.10 列表中常用的方法有哪些?
2.6.11 什麼是列表生成式?
2.6.12 字元串格式化%和.format的區別是什麼?
2.6.13 單引號、雙引號和三引號的區別有哪些?
2.6.14 Python中常用字元串函數有哪些?
2.6.15 如何判斷一個字元串是否全為數字?
2.6.16 Python字典有哪些內置函數?
2.6.17 字典的items()方法與iteritems()方法有什麼不同?
2.6.18 集合常見內置方法有哪些?
2.6.19 其他
2.7 Python中的日期和時間
2.7.1 編寫函數返回昨天的日期
2.7.2 計算每個月的天數
2.7.3 如何獲取某月的日曆?
2.8 流程式控制制語句
2.8.1 Python中pass語句的作用是什麼?
2.8.2 用程序實現斐波納契數列
2.8.3 Python編程中的except有哪些作用?
2.8.4 給出一個自定義異常的示例
2.8.5 range()函數的作用有哪些?
2.8.6 xrange和range的區別有哪些?
2.8.7 生成九九乘法表
2.8.8 列印三角形
2.8.9 簡單計算器
2.8.10 1,2,3,4,5能組成多少個互不相同的無重複的三位數?請用程序分別列出
2.8.11 判斷用戶輸入的年份是否為閏年
2.8.12 編寫一個函數判斷用戶輸入的數值是否為質數
2.9 collections模塊
2.9.1 如何獲取一個字元串中某個字元的個數?
2.9.2 deque的作用是什麼?
2.9.3 defaultdict的作用是什麼?
2.9.4 OrderedDict的作用是什麼?
2.10 itertools模塊有什麼作用?
2.11 淺談你對Python編碼規範的認識,並寫出你知道的編碼規範
2.12 與SHELL腳本相關的面試題
2.13 其他真題
第3章 Python進階
3.1 函數
3.1.1 Python如何定義一個函數?
3.1.2 什麼是lambda函數?
3.1.3 普通函數和lambda函數有什麼異同點?
3.1.4 單下劃線與雙下劃線的區別有哪些?
3.1.5 Python的函數參數傳遞方式是什麼?
3.1.6 什麼是閉包?
3.1.7 函數中*args和**kwargs的作用是什麼?
3.1.8 其他
3.2 模塊
3.2.1 什麼是模塊?它有什麼好處?
3.2.2 模塊有哪幾種導入方式?
3.2.3 os和sys模塊的區別有哪些?
3.2.4 「__name__」屬性的作用是什麼?
3.2.5 dir()函數的作用是什麼?
3.2.6 讀寫文件常用的方法有哪些?
3.2.7 pickle模塊的作用是什麼?
3.2.8 Python裡面如何生成隨機數?
3.2.9 pip是什麼?
3.2.10 其他
3.3 Python的裝飾器是什麼?
3.4 Python的構造器是什麼?
3.5 Python的生成器(Generator)是什麼?
3.6 Python的迭代器(Iterator)是什麼?
3.7 迭代器和生成器的區別有哪些?
3.8 isinstance()和type()的區別是什麼?
3.9 Python中的淺拷貝、深拷貝和賦值之間有什麼區別?
3.10 Python是如何進行內存管理的?
3.11 內置函數
3.11.1 map()函數的作用是什麼?
3.11.2 reduce()函數的作用是什麼?
3.11.3 filter()函數的作用是什麼?
3.11.4 enumerate()函數的作用是什麼?
3.11.5 zip()函數的作用是什麼?
3.11.6 hasattr()、getattr()和setattr()函數的作用有哪些?
3.12 面向對象
3.12.1 面向對象有哪三大特性?
3.12.2 什麼是繼承?
3.12.3 什麼是多態?
3.12.4 類屬性和實例屬性的區別
3.12.5 類變數需要注意什麼?
3.12.6 __init__方法的作用是什麼?
3.12.7 __new__和__init__的區別有哪些?
3.12.8 __repr__和__str__有什麼區別?
3.12.9 什麼是類方法、靜態方法和實例方法?
3.12.10 什麼是私有屬性和私有方法?
3.12.11 Python如何實現單例模式?
3.12.12 其他
3.13 正則表達式
3.13.1 正則表達式的一些語法
3.13.2 re模塊有哪些常用的函數?
3.13.3 用Python匹配HTML tag的時候,<.*>和<.*?>有什麼區別?
3.13.4 Python裡面search()和match()的區別
3.13.5 如何用Python來進行查詢和替換一個文本字元串?
3.13.6 其他
3.14 辦公自動化
3.14.1 Python如何操作Word?
3.14.2 Python如何操作Excel?
3.15 系統編程
3.15.1 什麼是任務、進程和線程?
3.15.2 thread模塊中的start_new_thread()函數的作用是什麼?
3.15.3 使用Threading模塊如何創建線程?
3.15.4 如何保證線程之間的同步?
3.15.5 Queue模塊的主要作用是什麼?
3.15.6 什麼是進程池?
3.15.7 其他
3.16 網路編程
3.16.1 Python網路編程有哪些常用模塊?
3.16.2 Socket對象內建方法有哪些?
3.16.3 如何用Python來發送郵件?
3.16.4 使用Python如何收取郵件?
3.16.5 如何用Python來發送簡訊?
3.17 其他真題
第4章 數據結構與演算法
4.1 排序
4.1.1 如何進行選擇排序?
4.1.2 如何進行插入排序?
4.1.3 如何進行冒泡排序?
4.1.4 如何進行歸併排序?
4.1.5 如何進行快速排序?
4.1.6 如何進行希爾排序?
4.1.7 如何進行堆排序?
4.1.8 如何進行基數排序?
4.2 大數據
4.2.1 如何從大量的url中找出相同的url?
4.2.2 如何從大量數據中找出高頻詞?
4.2.3 如何在大量的數據中找出不重複的整數?
4.2.4 如何在大量的數據中判斷一個數是否存在?
4.2.5 如何查詢最熱門的查詢串?
4.2.6 如何統計不同電話號碼的個數?
4.2.7 如何從5億個數中找出中位數?
4.2.8 如何找出排名前500的數?
第5章 資料庫相關
5.1 資料庫基礎理論
5.1.1 資料庫的常見分類有哪些?
5.1.2 事務的概念及其4個特性是什麼?
5.1.3 事務的4種隔離級別(Isolation Level)分別是什麼?
5.1.4 Oracle、MySQL和SQL Server中的事務隔離級別
5.1.5 什麼是範式?
5.1.6 什麼是第一、二、三、BC範式?
5.1.7 什麼是反範式?
5.1.8 索引的使用原則有哪些?
5.1.9 什麼是存儲過程?它有什麼優點?
5.1.10 存儲過程和函數的區別是什麼?
5.1.11 觸發器的作用、優缺點有哪些?
5.1.12 什麼是視圖?視圖的作用是什麼?
5.1.13 什麼是SQL注入?
5.1.14 什麼是MVCC?
5.1.15 鎖的作用有哪些?
5.1.16 更新丟失指的是什麼?
5.1.17 悲觀鎖和樂觀鎖
5.1.18 什麼是死鎖(DeadLock)?
5.2 Python操作資料庫
5.2.1 SQLite資料庫
5.2.2 MySQL資料庫
5.2.3 MongoDB資料庫
5.2.4 Redis資料庫
5.3 其他
第6章 爬蟲基礎知識
6.1 什麼是爬蟲?
6.2 爬蟲的基本流程有哪些?
6.3 Request中包含了哪些內容?
6.4 Response中包含了哪些內容?
6.5 HTTP請求中的POST、GET有什麼區別?
6.6 HTTP、HTTPS協議有什麼區別?
6.7 Cookie和Session有什麼區別?
6.8 域名和IP之間有什麼關係?如何查看某個域名對應的IP地址?
6.9 在HTTP協議頭中,keep-alive欄位有什麼作用?
6.10 HTTP常用的狀態碼(Status Code)有哪些?
6.11 常用的爬蟲框架或者模塊有哪些?談談它們的區別或者優缺點
6.12 Scrapy相關
6.12.1 什麼是Scrapy?它有哪些優缺點?
6.12.2 Scrapy框架中各組件的作用是什麼?
6.12.3 其他
6.13 應用實例
6.13.1 統計並存儲標籤中所有單詞及數目
6.13.2 使用Python爬蟲爬取小麥苗博客的鏈接地址並保存到本地Excel中
6.14 其他
第7章 數據分析基礎知識
7.1 Anaconda是什麼?
7.2 Jupyter Notebook介紹
7.2.1 Jupyter Notebook是什麼?
7.2.2 Jupyter的Cell是什麼?
7.2.3 Markdown模式常用命令包括哪些?
7.2.4 常用Magic魔法指令有哪些?
7.3 NumPy介紹
7.3.1 常用的Ndarray創建方法有哪些?
7.3.2 Ndarray的屬性有哪幾個?
7.3.3 常用Ndarray方法
7.3.4 Ndarray的基本操作
7.3.5 NumPy基本運算
7.4 Pandas介紹
7.4.1 Series
7.4.2 DataFrame
7.4.3 Series和DataFrame的運算
7.4.4 Pandas數據處理
7.4.5 總結
7.5 Matplotlib介紹
7.5.1 Matplotlib簡介及安裝
7.5.2 Matplotlib的配置文件包括哪些配置項?
7.5.3 Matplotlib用到的格式化字元包括哪些?
7.5.4 Matplotlib用到的顏色縮寫包括哪些?
7.5.5 Matplotlib的使用
7.6 數據可視化庫Seaborn
7.6.1 Seaborn簡介與安裝
7.6.2 Seaborn與Matplotlib的區別有哪些?
7.6.3 Seaborn繪製圖
第8章 機器學習基礎知識
8.1 機器學習背景
8.2 基本術語
8.3 機器學習演算法
8.3.1 KNN-最近鄰法
8.3.2 最小二乘法
8.3.3 梯度下降法
8.3.4 線性回歸演算法
8.3.5 邏輯回歸
8.3.6 K-Means聚類演算法
8.3.7 支持向量機演算法
8.3.8 模型評估與選擇
8.4 機器學習展望
第9章 筆試面試真題與答案
9.1 真題
9.2 真題
9.3 答案
9.3.1 真題1答案
9.3.2 真題2答案