點開瞅瞅,再來幾道Python面試題吧,Python面試題No20

本面試題題庫,由公號:非本科程序員 整理髮布

第1題:如何理解 Django 被稱爲 MTV 模式?

這個題就是面向對象設計和設計模式的開始。
你可能比較熟悉的模式叫做: MVC。說是 Model View Controller,而在 Django 中因爲 Template 來處理視圖展現,所以稱爲:
MTV。
接下里會問到的就是分層的概念,有句話叫:“沒有什麼問題是不能通過增加一層解決的,如果有,那就再加一層。”當然還會有設計模式的一些原則等着你,比如開-閉原則、單一職責原則等。

第2題:解釋下什麼是 ORM 以及它的優缺點是什麼?

ORM:Object Relational Mapping(對象關係映射),它做的事就是幫我們封裝一下對數據庫的操作,避免我們來寫不太好維護的 SQL 代碼。

  • 優點就是讓我們寫的代碼更容易維護,因爲裏面不用夾雜着各種 SQL 代碼。
  • 缺點是失去了 SQL 的靈活,並且越是通用的 ORM 框架,性能損耗會越大。

說到性能損耗,可以接着聊的是 Django 中的 raw sql,也就是說 Model.objects.raw 這個方法的使用,它的作用、原理、性能提升等。還可以繼續聊另外一個老生常談的問題:N+1 的問題。

第3題:Django 系統中如何配置數據庫的長連接?

這涉及到 Django 如何處理數據庫連接細節的問題。默認情況下對於每一個請求 Django 都會建立一個新的數據庫連接。這意味着當請求量過大時就會出現數據庫(MySQL)的 Too many connection 的問題,對於這個問題,在其他的語言框架中有連接池這樣的東西來減少數據庫的連接數,來提升連接的使用效率。而在 Django中,爲了處理這一問題,增加了一個配置:

CONN_MAX_AGE,在 settings 的 DATABASES 配置中。配置了該選項後,Django 會跟數據庫保持鏈接(時長取決於 CONN_MAX_AGE 設定的值 ),不再會針對每個請求都創建新的連接了。

但是需要注意的是,這跟數據庫連接池的概念還不太一樣。

第4題: 請解釋一下python的線程鎖Lock和Rlock的區別,以及你曾經在項目中是如何使用的?

從原理上來說:在同一線程內,對RLock進行多次acquire()操作,程序不會阻塞。
資源總是有限的,程序運行如果對同一個對象進行操作,則有可能造成資源的爭用,甚至導致死鎖 也可能導致讀寫混亂

第5題:字典、列表查詢時的時間複雜度是怎樣的?

列表是序列,可以理解爲數據結構中的數組,字典可以理解爲數據結構中的hashmap,python中list對象的存儲結構採用的是線性表,因此其查詢複雜度爲O(n)
而dict對象的存儲結構採用的是散列表(hash表),其在最優情況下查詢複雜度爲O(1)。
dict的佔用內存稍比list大,會在1.5倍左右。

第6題:關注題,最近在公號更新一個神奇的系列入門文章

更多內容,歡迎關注 https://dwz.cn/r4lCXEuL

序號 文章
Python面試題No1 Python基礎面試,看這篇文章畫重點吧
Python面試題No2 Python面試快問快答,理論要的就是速度與精準
Python面試題No3 學習Python一年,基礎忘記了,看看面試題回憶回議
Python面試題No4 去面試Python工程師,這幾個基礎問題一定要能回答
Python面試題No5 2019年,Python工程師必考的6個面試題
Python面試題No6 昨天去面試,這5個Python面試題都被考到了
Python面試題No7 週三面試Python開發,這幾道Python面試題差點答錯,Python面試題No7
Python面試題No8 面試Python工程師,這幾道編碼題有必要背背
Python面試題No9 又面試了Python爬蟲工程師,碰到這麼幾道面試題
Python面試題No10 朋友去面試Python工程師,又帶回來幾道基礎題
Python面試題No11 剛畢業去面試Python工程師,這幾道題太難了
Python面試題No12 五一4天就背這些Python面試題了
Python面試題No13 大意了,這幾道Python面試題沒有答對
Python面試題No14 明天找python工作,看看這幾道Python面試題吧
Python面試題No15 這幾道Python面試題,穩準狠
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章