Python 爬蟲面試題 170 道:2019 版

2020-12-25 CSDN

引言

最近在刷面試題,所以需要看大量的 Python 相關的面試題,從大量的題目中總結了很多的知識,同時也對一些題目進行拓展了,但是在看了網上的大部分面試題不是很滿意。

一個是有些部分還是 Python2 的代碼,另一個就是回答的很簡單,有些關鍵的題目,也沒有點出為什麼,最重要的是還有一些複製粘貼根本就跑不通,這種相信大家深有體會吧,這樣就導致我們可能需要去找其他人發的類似的教程。

難受啊,所以我決定針對市面上大多的 Python 題目做一個分析,同時也希望大家儘可能的做到舉一反三,而不是局限於題目本身。大概就這樣吧,有你看過的題目也有你沒看到過的。

通過本場 Chat,你將獲得如下知識點

掌握 Python 的基礎語法語法常見的 Python 應用場景掌握 Python 閉包的使用以及裝飾器的使用生成器和迭代器的使用常見的設計模式的使用深淺拷貝的區別線程、進程、協程的使用了解 Python 中的元編程和反射常考的數據結構和算法爬蟲相關知識,網絡編程基本知識等

掃碼訂閱本場 Chat 收穫170 道面試題答案

所有題目

語言特性

1.談談對 Python 和其他語言的區別2.簡述解釋型和編譯型程式語言3.Python 的解釋器種類以及相關特點?4.說說你知道的Python3 和 Python2 之間的區別?5.Python3 和 Python2 中 int 和 long 區別?6.xrange 和 range 的區別?

編碼規範

7.什麼是 PEP8?8.了解 Python 之禪麼?9.了解 dosctring 麼?10.了解類型註解麼?11.例舉你知道 Python 對象的命名規範,例如方法或者類等12.Python 中的注釋有幾種?13.如何優雅的給一個函數加注釋?14.如何給變量加注釋?15.Python 代碼縮進中是否支持 Tab 鍵和空格混用。16.是否可以在一句 import 中導入多個庫?17.在給 Py 文件命名的時候需要注意什麼?18.例舉幾個規範 Python 代碼風格的工具

數據類型

字符串

19.列舉 Python 中的基本數據類型?20.如何區別可變數據類型和不可變數據類型21.將"hello world"轉換為首字母大寫"Hello World"22.如何檢測字符串中只含有數字?23.將字符串"ilovechina"進行反轉24.Python 中的字符串格式化方式你知道哪些?25.有一個字符串開頭和末尾都有空格,比如「 adabdw 」,要求寫一個函數把這個字符串的前後空格都去掉。26.獲取字符串」123456「最後的兩個字符。27.一個編碼為 GBK 的字符串 S,要將其轉成 UTF-8 編碼的字符串,應如何操作?28.s="info:xiaoZhang 33 shandong",用正則切分字符串輸出['info', 'xiaoZhang', '33', 'shandong']27.怎樣將字符串轉換為小寫?28.單引號、雙引號、三引號的區別?29.a = "你好 中國 ",去除多餘空格只留一個空格。

列表

30.已知 AList = [1,2,3,1,2],對 AList 列表元素去重,寫出具體過程。31.如何實現 "1,2,3" 變成 ["1","2","3"]32.給定兩個 list,A 和 B,找出相同元素和不同元素33.[[1,2],[3,4],[5,6]]一行代碼展開該列表,得出[1,2,3,4,5,6]34.合併列表[1,5,7,9]和[2,2,6,8]35.如何打亂一個列表的元素?

字典

36.字典操作中 del 和 pop 有什麼區別37.按照字典的內的年齡排序

d1 = [{'name':'alice', 'age':38}, {'name':'bob', 'age':18}, {'name':'Carl', 'age':28},]

38.請合併下面兩個字典 a = {"A":1,"B":2},b = {"C":3,"D":4}39.如何使用生成式的方式生成一個字典,寫一段功能代碼。40.如何把元組("a","b")和元組(1,2),變為字典{"a":1,"b":2}

綜合

41.Python 常用的數據結構的類型及其特性?

A:{1:0,2:0,3:0}B:{"a":0, "b":0, "c":0}C: {(1,2):0, (2,3):0}D: {[1,2]:0, [2,3]:0}

42.如何將元組("A","B")和元組(1,2),合併成字典{"A":1,"B":2}43.Python 裡面如何實現 tuple 和 list 的轉換?44.我們知道對於列表可以使用切片操作進行部分元素的選擇,那麼如何對生成器類型的對象實現相同的功能呢?45.請將[i for i in range(3)]改成生成器46.a="hello"和 b="你好"編碼成 bytes 類型47.下面的代碼輸出結果是什麼?

a = (1,2,3,[4,5,6,7],8)a[2] = 2

48.下面的代碼輸出的結果是什麼?

a = (1,2,3,[4,5,6,7],8)a[5] = 2

操作類題目

49.Python 交換兩個變量的值50.在讀文件操作的時候會使用 read、readline 或者 readlines,簡述它們各自的左右51.json 序列化時,可以處理的數據類型有哪些?如何定製支持 datetime 類型?52.json 序列化時,默認遇到中文會轉換成 unicode,如果想要保留中文怎麼辦?53.有兩個磁碟文件 A 和 B,各存放一行字母,要求把這兩個文件中的信息合併(按字母順序排列),輸出到一個新文件 C 中。54.如果當前的日期為 20190530,要求寫一個函數輸出 N 天后的日期,(比如 N 為 2,則輸出 20190601)。55.寫一個函數,接收整數參數 n,返回一個函數,函數的功能是把函數的參數和 n 相乘並把結果返回。56.下面代碼會存在什麼問題,如何改進?

def strappend(num):str='first' for i in range(num): str+=str(i) return str

57.一行代碼輸出 1-100 之間的所有偶數。58.with 語句的作用,寫一段代碼?59.python 字典和 json 字符串相互轉化方法60.請寫一個 Python 邏輯,計算一個文件中的大寫字母數量

高級特效

70.函數裝飾器有什麼作用?請列舉說明?71.Python 垃圾回收機制?72.魔法函數 __call__怎麼使用?73.如何判斷一個對象是函數還是方法?74.@classmethod 和@staticmethod 用法和區別75.Python 中的接口如何實現?76.Python 中的反射了解麼?77.metaclass 作用?以及應用場景?78.hasattr() getattr() setattr()的用法79.請列舉你知道的 Python 的魔法方法及用途。80.如何知道一個 Python 對象的類型?81.Python 的傳參是傳值還是傳址?82.Python 中的元類(metaclass)使用舉例83.簡述 any()和 all()方法84.filter 方法求出列表所有奇數並構造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]85.什麼是猴子補丁?86.在 Python 中是如何管理內存的?87.當退出 Python 時是否釋放所有內存分配?

正則表達式

88.使用正則表達式匹配出<html><h1>www.baidu.com</html>中的地址a="張明 98 分",用 re.sub,將 98 替換為 10089.正則表達式匹配中(.*)和(.*?)匹配區別?90.寫一段匹配郵箱的正則表達式

其他內容

91.解釋一下 python 中 pass 語句的作用?92.簡述你對 input()函數的理解93.python 中的 is 和==94.Python 中的作用域95.三元運算寫法和應用場景?96.了解 enumerate 麼?97.列舉 5 個 Python 中的標準模塊98.如何在函數中設置一個全局變量99.pathlib 的用法舉例100.Python 中的異常處理,寫一個簡單的應用場景101.Python 中遞歸的最大次數,那如何突破呢?102.什麼是面向對象的 mro103.isinstance 作用以及應用場景?104.什麼是斷言?應用場景?105.lambda 表達式格式以及應用場景?106.新式類和舊式類的區別107.dir()是幹什麼用的?108.一個包裡有三個模塊,demo1.py, demo2.py, demo3.py,但使用 from tools import *導入模塊時,如何保證只有 demo1、demo3 被導入了。109.列舉 5 個 Python 中的異常類型以及其含義110.copy 和 deepcopy 的區別是什麼?111.代碼中經常遇到的*args, **kwargs 含義及用法。112.Python 中會有函數或成員變量包含單下劃線前綴和結尾,和雙下劃線前綴結尾,區別是什麼?113.w、a+、wb 文件寫入模式的區別114.舉例 sort 和 sorted 的區別115.什麼是負索引?116.pprint 模塊是幹什麼的?117.解釋一下 Python 中的賦值運算符118.解釋一下 Python 中的邏輯運算符119.講講 Python 中的位運算符120.在 Python 中如何使用多進位數字?121.怎樣聲明多個變量並賦值?

算法和數據結構

122.已知:

AList = [1,2,3]BSet = {1,2,3}

(1) 從 AList 和 BSet 中 查找 4,最壞時間複雜度那個大?(2) 從 AList 和 BSet 中 插入 4,最壞時間複雜度那個大?123.用 Python 實現一個二分查找的函數124.python 單例模式的實現方法125.使用 Python 實現一個斐波那契數列126.找出列表中的重複數字127.找出列表中的單個數字128.寫一個冒泡排序129.寫一個快速排序130.寫一個拓撲排序131.python 實現一個二進位計算132.有一組「+」和「-」符號,要求將「+」排到左邊,「-」排到右邊,寫出具體的實現方法。133.單鍊表反轉134.交叉鍊表求交點135.用隊列實現棧136.找出數據流的中位數137.二叉搜索樹中第 K 小的元素

爬蟲相關

138.在 requests 模塊中,requests.content 和 requests.text 什麼區別139.簡要寫一下 lxml 模塊的使用方法框架140.說一說 scrapy 的工作流程141.scrapy 的去重原理142.scrapy 中間件有幾種類,你用過哪些中間件143.你寫爬蟲的時候都遇到過什麼?反爬蟲措施,你是怎麼解決的?144.為什麼會用到代理?145.代理失效了怎麼處理?146.列出你知道 header 的內容以及信息147.說一說打開瀏覽器訪問 www.baidu.com 獲取到結果,整個流程。148.爬取速度過快出現了驗證碼怎麼處理149.scrapy 和 scrapy-redis 有什麼區別?為什麼選擇 redis 資料庫?150.分布式爬蟲主要解決什麼問題151.寫爬蟲是用多進程好?還是多線程好?為什麼?152.解析網頁的解析器使用最多的是哪幾個153.需要登錄的網頁,如何解決同時限制 ip,cookie,session(其中有一些是動態生成的)在不使用動態爬取的情況下?154.驗證碼的解決(簡單的:對圖像做處理後可以得到的,困難的:驗證碼是點擊,拖動等動態進行的?)155.使用最多的資料庫(mysql,mongodb,redis 等),對他的理解?

網絡編程

156.TCP 和 UDP 的區別?157.簡要介紹三次握手和四次揮手158.什麼是粘包?socket 中造成粘包的原因是什麼?哪些情況會發生粘包現象?

並發

159.舉例說明 conccurent.future 的中線程池的用法160.說一說多線程,多進程和協程的區別。161.簡述 GIL162.進程之間如何通信163.IO 多路復用的作用?164.select、poll、epoll 模型的區別?165.什麼是並發和並行?167.解釋什麼是異步非阻塞?168.threading.local 的作用?

Git 面試題

169.說說你知道的 git 命令170.git 如何查看某次提交修改的內容x

相關焦點

  • Python新手都可以做的爬蟲,抓取網上 OJ 題庫信息
    最近有朋友在做 OJ 題庫,順手做個小爬蟲,導出一份題庫列表來看看!目標:浙江大學題庫工具:python3.6,requests 庫、lxml 庫、pycharm思路:先找到網頁中題庫所在的位置然後我們點擊第一頁和後面幾頁,看看 url 的變化發現規律了嗎?
  • Python爬蟲學到什麼程度就可以去找工作了?
    有朋友在群裡和大家討論,問的最多的問題就是,python 爬蟲學到什麼程度可以去找工作了,關於這點,和大家分享下我的理解。去招聘網上看看需求都有哪些,直接做個拉勾網爬蟲(有需要的私信)出結果了:仔細看看,我們可以得出以下幾點:1、 python 不是唯一可以做爬蟲的,很多語言都可以,
  • Python爬蟲從入門到精通只需要三個月
    為什麼要學習python爬蟲?隨著了解爬行動物學習的人越來越多,就業需求也越來越需要這一塊的工作人員。在一方面,網際網路可以得到越來越多的數據。在另一方面,就像Python程式語言提供了越來越多的優秀的工具,允許爬蟲簡單,使用方便。我們使用爬蟲可以得到很多數據值。
  • Python開發簡單爬蟲【學習資料總結】
    一、簡單爬蟲架構 開發爬蟲步驟 python語言基礎:(帶你熟悉python語言的特性,學會使用python開發環境,使用python開發一些簡單的案例)
  • python爬蟲系列教程,用python爬取全國範圍內的KFC店地址
    下面羽憶教程教你會python爬取全國範圍內的KFC店地址,這是一篇python爬蟲系列的教程,簡單又能讓人填飽肚子。python爬蟲介紹python發展至今,python爬蟲已經成為了一種職業,因為其可以幫助企業快速得到網絡上的最新信息,但是為什麼很多寫python爬蟲的程式設計師會面臨牢獄之災呢?
  • python 網絡爬蟲有哪些用途
    網絡爬蟲,就是一種自動獲取網頁內容的程序。也就是通過源碼解析來獲得想要的內容。下載的內容包括文字,圖片,多媒體文件等。python有多個庫可實現網絡爬蟲,Urllib是python內置的HTTP請求庫,urllib的功能就是利用程序去執行各種HTTP請求。如果要模擬瀏覽器,需要把請求偽裝成瀏覽器。
  • 聊聊學python轉行、具體學習方法、自學python用於辦公、寫爬蟲等...
    那今天就來說說學python這件事兒吧,從三個方面來說:第一,學了python之後轉行找工作的問題;第二,具體的學習方法;第三,講講學了python之後應用於辦公自動化和寫爬蟲。4600字。關於恰飯:不用猜了,這篇依舊沒有廣告。
  • 開課吧Python:Python爬蟲是什麼?爬蟲工程師薪資怎麼樣?
    Python爬蟲是什麼?Python爬蟲是什麼?Python爬蟲是由Python程序開發的網絡爬蟲(webspider,webrobot),是按照一定規則自動抓取全球資訊網信息的程序或腳本。其實一般是通過程序在網頁上獲取你想要的數據,也就是自動抓取數據。為什麼需要用爬蟲?
  • Python基礎進階之海量表情包多線程爬蟲功能的實現
    今天老師帶領大家使用python中的爬蟲去一鍵下載海量表情包資源二、知識點requests網絡庫bs4選擇器文件操作多線程三、所用到得庫# 隊列from queue import Queuefrom threading import Thread五、環境配置解釋器 python3.6
  • Python新手爬蟲,簡單製作抓取廖雪峰的教程的小爬蟲
    Python 數據處理 Python編程從入門到實踐 核心編程基礎教程 網絡爬蟲入門書籍 python視頻編程從入門到精通 程序設計教材人民郵電¥72.2領3元券話不多說,先來看看整個爬蟲過程吧!目標:廖雪峰官網&mdash;python教程工具:pycharm、python3.6、requests庫、time庫、lxml庫思路:85 抓取所有的目錄章節 url85 找到 url內教程主體所在的 div
  • Python網絡爬蟲
    Python網絡爬蟲第一篇(一):為什麼要學習網絡爬蟲?大數據成為當今時代的熱門話題之一,在數據量爆發增長的網際網路時代,網站與用戶溝通實質為數據的交換。如果大量的數據得以分析,我們能夠對事件的看法,解決方案做出更好的決策。
  • python爬蟲入門實戰!爬取博客文章標題和連結!
    最近有小夥伴和我留言想學python爬蟲,那麼就搞起來吧。準備階段爬蟲有什麼用呢?舉個最簡單的小例子,你需要《戰狼2》的所有豆瓣影評。最先想的做法可能是打開瀏覽器,進入該網站,找到評論,一個一個複製到文本中,保存,翻頁,接著複製,直到翻到最後一頁。
  • Python中爬蟲框架或模塊的區別
    Python中爬蟲框架或模塊的區別 (1)爬蟲框架或模塊 Python自帶爬蟲模塊:urllib、urllib2 ; 第三方爬蟲模塊:requests,aiohttp;
  • 重慶科技學院首屆「曙光瑞翼杯」Python爬蟲競賽
    但是在大數據浪潮中,最值錢的就是數據,企業為了獲得數據,處理數據,理解數據花費了巨大代價,網絡爬蟲則是獲取簡單數據的一種最有效的方式。近日,數據中國「百校工程」項目院校重慶科技學院數理與大數據學院MAI協會聯合曙光瑞翼教育舉辦了首屆以「Python爬蟲,數據輕來」為主題的「曙光瑞翼杯」Python爬蟲大賽,全校一共16支隊伍參賽。
  • python爬蟲之selenium抓取淘寶商品信息
    簡介本節採用python爬蟲相關技術獲取淘寶商品信息。採用的技術有selenium、pyquery及urllib.parse等。selenium可以模擬用戶執行的操作,是一個自動化測試工具,我們可以根據自己的需要預先設置selenium按照我們設置好的步驟進行操作,而在爬蟲中我們使用selenium可以解決javascript動態執行代碼的問題,不用費心去解析js如何運行,運行後產生的信息,直接使用selenium模擬實際登陸網頁的操作,獲取我們需要的信息進行分析,成功幫我們避開一系列複雜的通信過程,方便使用者。
  • 雲立方網科普:常用高效的Python爬蟲框架有哪些?
    Python是現在非常流行的程式語言,而爬蟲則是Python語言中最典型的應用,下面是總結的高效Python爬蟲框架,大家看看是否都用過呢。
  • 如何開始寫你的第一個python腳本——簡單爬蟲入門!
    好多朋友在入門python的時候都是以爬蟲入手,而網絡爬蟲是近幾年比較流行的概念,特別是在大數據分析熱門起來以後,學習網絡爬蟲的人越來越多,哦對,現在叫數據挖掘了!其實,一般的爬蟲具有2個功能:取數據和存數據!好像說了句廢話。。。
  • Python面試常見問題及答案匯總整理
    Python面試題—常見的HTTP狀態碼有哪些?403 Forbidden404 Not Found410 Gone500 Internal Server Error501 Not ImplementedPython面試題
  • python為什麼叫爬蟲?為啥那麼多人通過python兼職都能掙不少錢?
    Python能做什麼之前有很多文章介紹python能做什麼。今天介紹python爬蟲的學習。網絡爬蟲 網絡爬蟲,也叫網絡蜘蛛(Web Spider)。爬蟲是在某個URL頁面入手,抓取到這個頁面的內容,從當前的頁面中找到其他的連結地址,然後從這地址再次爬到下一個網站頁面,這樣一直不停的抓取到有用的信息,所以可以說網絡爬蟲是不停的抓取獲得頁面上想要的信息的程序。還不懂?
  • Python爬蟲,抓取淘寶商品評論內容
    今天給大家分享用python做個抓取淘寶商品評論的小爬蟲!思路我們就拿「德州扒雞」做為參考目標吧~!如果想抓其他商品的話,自行更換目標即可!作為一個爬蟲愛好者,必然要加深抓取的廣度的,試著將整個頁面的店鋪ID抓取出來!這次簡單,直接抓到json數據,然後用正則匹配,放回列表,因為時間有限,沒有研究出url翻頁的依據,就只抓取了一頁!然後開始寫主函數,保存到文檔!