文章目錄
本面試題題庫,由公號:非本科程序員 整理髮布
第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面試題,穩準狠 |