Python常見面試題

Python常見面試題

1.MySQL 數據庫總結

MySQL 可以建多少個數據庫,理論上是沒有限制的,每一個數據庫可以有上億的對象,但是一般基於硬件要求、效率問題一般不超過64個,

超過64個會對數據處理速度造成影響,每一張表建議不超過過1億條數據。

2.Python 話題

1.最受歡迎的Python開源框架 1:Django 2:Twisted 3:Tornado 除了以上三種常用的開源框架外 還有 :

Diesel、Flask、Cubes、Kartograph、Pulsar、Web2py、Falcon、DPark、Buildbot、Zerorpc、Bottle、webpy、Scrapy

3.python常用的web框架

1:Django 2:Tornado 3:Bottle 4:web.py 5:web2py 6:Quixote(豆瓣網就是基於該框架開發的)

4.python幾種流行框架的比較

https://zhidao.baidu.com/question/1047367767941211939.html

國內著名網基於Python開發的 豆瓣、知乎、美團、咕咚網、快玩遊戲。

5.Python常用的內置模塊

multiprocessing (多進程模塊) Queue(多線程編程) os (用於獲取環境變量、路徑,判斷文件等) functools(包含一些常用的函數)

collection(集合、常用數據結構算法) re(正則匹配,字符的查詢替換等操作)

6.python中re模塊的match()和search()函數的區別

re模塊中match(pattern,string,[flags]),檢查string的開頭是否與patter匹配

re模塊中search(pattern,string,[flags]),在string搜索pattern的第一個配置值

7.python2和python3的區別

Python2中使用 ASCII 碼作為默認編碼方式導致string有兩種類型str和unicode,Python3只支持unicode的string

Python2中採用相對路徑的import Python3採用的是絕對路徑的方式進行import

python3的縮進更加的嚴格 python3採用的是print函數 exec函數 python2採用的是 print語句和exec語句

python2不相等操作符"<>"被Python3廢棄,統一使用"!=" long整數類型被Python3廢棄,統一使用int

Python3中這些方法再不再返回list對象:dictionary關聯的keys()、values()、items(),zip(),map(),filter(),但是可以通過list強行轉換

8.什麼是HTTP協議

http:超文本傳輸協議,使用的是可靠的數據傳輸協議,在傳輸過程中不會被損壞或產生混亂,http可以將服務器各種信息快速可靠的傳輸到桌面上的瀏覽器上去

9.什麼是web客戶端

用於接收web服務器傳輸信息的終端叫web客戶端,比如 IE瀏覽器 火狐Firefox 谷歌chrome

10.什麼是URL

URL:統一資源定位符,URL描述了一臺特定服務器上某資源的特定位置

URL第一部分 說明了訪問資源所使用的協議類型,第二部分表示服務器的inter網址第三部分指定了web服務器上的某個資源

11.web服務請求中常見狀態碼含義

200 :請求成功,請求的所有數據都在響應主題中

304 客戶端發起一個get請求,而資源最近未被修改,則用304說明資源未被修改,帶有這個狀態碼的響應不應該包含實體的主體部分。

305 說明必須通過一個代理來訪問資源;代理的位置由location首部給出

403 該請求被服務器拒絕了

404 無法找到所請求的URL

500 服務器遇到了一個阻礙它為請求提供服務的錯誤

503 服務器此時無法為請求提供服務/

12.HTTP 協議棧

HTTP 應用層協議,它把網關的細節都交給了通用的可靠的因特網傳輸協議TCP/IP協議

TCP 傳輸控制協議 無差錯的數據傳輸 按序傳輸

13.什麼是DNS

域名解析服務。將主機名轉換為IP地址

在瀏覽器地址欄輸入一個HTTP的URL地址,瀏覽器怎麼通過HTTP顯示位於服務器上的一個HTML資源

(1)瀏覽器首先從URL中解析出服務器的主機名並轉換成服務器的IP地址

(2)瀏覽器將端口號從URL中解析出來,建立一條與web服務器的TCP鏈接

(3)瀏覽器向服務器發送一條HTTP請求報文,服務器向瀏覽器回送一條HTTP響應報文

(4)關閉連接,瀏覽器顯示文檔

14.常用的加密算法有對稱加密和非對稱加密

對稱加密:發送方使用密鑰將明文加密成密文,接收方則使用相同的密鑰將密文還原成明文。常用的對稱加密算法有:RSA RC4 DES

非對稱加密:發送方使用公鑰對數據加密,接收方使用私鑰進行解密。常用非對稱算法:MD5 HASH

15.Python常用的數據結構和算法模塊有:collection heapq operator itertools

collection 用法介紹

https://www.cnblogs.com/George1994/p/7204880.html

示例網址 https://blog.csdn.net/guzhenping/article/details/54987308

16.Python之pandas簡單介紹及使用(一)

Pandas 簡單介紹 https://www.cnblogs.com/misswangxing/p/7903595.html

pandas該工具是為了解決數據分析任務而創建的,pandas納入了大量庫和一些標準的數據模型,提供了高效的操作大型數據庫所需的工具,pandas提供了大量使我們便捷地處理

數據的函數和方法,它使Python成為強大而高效的數據分析環境的重要因素之一,屬於python的一個數據分析包。

17.Python如何進行內存管理機制

1.對象的引用計數機制 2.垃圾回收機制 3.內存池機制

18.如何在一個function裡面設置一個全局的變量

在function的開始插入一個global聲明:

19.python 函數中 *args 和 **kwargs 參數的應用

1.當你不確定函數里要傳遞多少個參數時可以使用 *args (可以傳遞任意數量的參數)

2.**kwargs 允許你使用事先沒有定義的參數名

20.Python中的作用域

python中當遇到一個變量的話它會按照這樣的順序進行搜索

本地作用域(Local)→當前作用域被嵌入的本地作用域(Enclosing locals)→全局/模塊作用域(Global)→內置作用域(Built-in)

21.Python中read,readline,readlines 的作用。

read 讀取整個文件 readline 讀取下一行,使用生成器的方法 readlines 讀取整個文件到一個迭代器以供我們遍歷

22.Django中的請求生命週期

django的請求生命週期是指當用戶在瀏覽器輸入url到用戶看到網頁的這個時間段內。大致發生的過程如下:

1.當用戶在瀏覽器中輸入url時,瀏覽器生成請求頭和請求體發給服務端(請求頭和請求體中會包含瀏覽器的動作,這個動作通常為get或者post,體現在url中)

2.url進過django中的wsgi,再經過django的中間件,最後url到路由映射表,在路由中一條一條進行匹配,一旦其中一條匹配成功就執行相對應的視圖函數。

3.視圖函數根據客戶端的請求查詢相應的數據,返回給django,然後django把客戶端想要的數據作為一個字符串返回給客戶端。

4.客戶端瀏覽器收到返回的數據,進過渲染後顯示給用戶。

23.FBV模式和CBV模式

一個url對應一個視圖函數,這個模式叫做FBV(Function Base Views)

FBV請求過程:

用戶發送url請求,django會依次遍歷路由映射表中的所有記錄,一旦路由映射表其中一條匹配成功,就執行視圖函數中對應的函數名。

一個url對應一個類,這個模式叫CBV(Class Base Views)

CBV請求過程:

當服務端使用cbv模式的時候,用戶發給服務端的請求包含url和method,這兩個信息都是字符串類型,服務端通過路由映射表匹配成功後

會自動去找dispatch方法,然後django會通過dispatch反射的方式找到類中對應的方法並執行類中的方法執行完畢之後,會把客戶端想要的

數據返回給dispatch方法,由dispatch方法把數據返回給客戶端。

24.mongodb Redis mysql

mongodb是一個內存數據庫,數據都放在內存裡面的,對於數據的操作大部分都在內存中,但mongodb並不是單純的內存數據庫

持久化方式:

mongodb的所有數據實際上是存放在硬盤的,所有要操作的數據通過mmap的方式映射到某個區域內,然後mongodb就在這塊區域裡進行數據修改。

Redis

Redis是一個內存數據庫

Redis中所有數據都放在內存中,持久化使用RDB方式或者aof方式

mysql

無論數據還是索引都存放在硬盤中,到要是用的時候才交換到內存中,能夠處理遠超內存總量的數據。

當物理內存夠用的時候, Redis性能優於mongodb,mongodb優於mysql

當物理內存不夠用的時候,Redis和mongodb都會使用虛擬內存

mysql不需要考慮數據量跟內存的關係,不過內存的量和熱數據的關係極大地影響性能的表現。(如果當物理內存和虛擬內存都不夠用的時候,mysql是最好的選擇)

25.mysql常用語句語法

創建表格命令:create table tablename(字段)

增: inser into tablename values(value,values)

刪: delete from tablename where

改: update tablename set 字段=值 (where)

查: select * from tablename where語句

26.MySQL鎖機制詳解及死鎖處理方式

MySQL有三種鎖的級別:頁級、表級、行級

所謂死鎖: 是指兩個或兩個以上的進程在執行過程中,

因爭奪資源而造成的一種互相等待的現象,若無外力作用,它們都將無法推進下去.

此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等竺的進程稱為死鎖進程.

表級鎖不會產生死鎖.所以解決死鎖主要還是真對於最常用的InnoDB.

遇到死鎖的處理方式

27.Django中查詢queryset時什麼情況下使用Q ?

在進行相對複雜的查詢時,使用 django.db.models.Q

Django中想驗證表單提交是否格式正確要用到Form中哪個函數?

is_valid()

28.Python裡面如何拷貝一個對象

1.淺拷貝:

使用copy.copy,它可以進行對象的淺拷貝,它複製了對象,但對於對象中的元素,依然使用引用(換句話修改拷貝對象的元素,則被拷貝對象的元素也會被修改)

2.深拷貝:

使用copy.deepcopy,它可以進行深拷貝,不僅拷貝了對象,同時也拷貝了對象中的元素,獲得了全新的對象,與被拷貝對象完全獨立,

但這需要犧牲一定的時間和空間。

29.Session和Cookie的區別與聯繫 https://www.cnblogs.com/endlessdream/p/4699273.html

Cookie通過在客戶端記錄信息確定用戶身份,Session通過在服務器端記錄信息確定用戶身份。

可以考慮將登陸信息等重要信息存放為session,其他信息如果需要保留,可以放在cookie中。

Cookie分為會話cookie和持久cookie

若不設置過期時間,則表示這個cookie的生命週期為瀏覽器的會話週期,關閉瀏覽器窗口,cookie就消失,這種生命週期為瀏覽器會話期的cookie

被稱為會話cookie,會話cookie一般不存在硬盤上而是保存在內存裡。

若設置了過期時間,瀏覽器就會把cookie保存到硬盤上,關閉後再次打開瀏覽器,這些cookie仍然有效指導超過設定的時間,存儲到硬盤的cookie被稱為持久cookie

Cookie具有不可跨域性,兩個不同瀏覽器的cookie不通用。

Session是另一種記錄客戶狀態的機制,不同的是cookie保存在客戶端瀏覽武器中,而session保存在服務器上,當客戶端瀏覽器訪問服務器的時候,服務器把客戶端

的信息以某種形式保存在服務器上,這就是session,當客戶端瀏覽器再次訪問瀏覽器的時候只需要從該session中查找該客戶的狀態就可以了。

30.Numpy提供N維數組,一種快速高效的內存多維數組,它提供矢量化數學運算。

Scipy庫依賴於NumPy,提供便捷和快速的N維向量數組操作。scipy庫的建立就是和NumPy數組一起工作,並提供許多用戶友好和有效的數值例程。

Pandas包含高級數據結構,以及和讓數據分析變得快速、簡單,它是建立在Numpy之上的

Matplotlib 是python的一個可視化模塊。可以方便的製作線條圖,餅圖,柱狀圖以及其它專業圖形


分享到:


相關文章: