Django Web開發技術棧 - 面試常見問題整理

本文內容摘自《Django企業開發實戰》 做者:the5firemysql

連接:https://github.com/the5fire/django-interview-questionsgit

 

1. Python基礎

  • 基礎語法是否熟悉?介紹下。
  • 有哪些關鍵字,而且解釋其做用?
  • 有哪些內置方法,而且解釋其做用?
  • 解釋下什麼是動態語言?動態強類型是指什麼?
  • 是否有編碼規範的概念?採用的是哪中編碼規範?
  • 解釋下深拷貝和淺拷貝
  • lambda的用法以及使用場景?
  • 解釋下什麼是閉包,以及它的做用?
  • 實現一個簡單的裝飾器,用來對某個函數的結果進行緩存?
  • Python中幾種容器類型的差異及使用場景?
  • 列表推導式的使用和場景?
  • yield的使用。
  • 經常使用的內置庫有哪些?舉例他們的用法。
  • 介紹下你瞭解的"dunder method"(魔法方法)有哪些,以及他們的做用?
  • 解釋下面向對象的概念,以及在編程中的做用?
  • 如何實現單例模式?
  • 如何對Python對象進行序列化?
  • 是否可以熟練編寫多線程和多進程程序?
  • 使用socket編寫一個簡單的HTTP Server,成功返回success便可。
  • 如何理解Python中的GIL?對咱們平常開發有什麼影響?
  • 解釋下協程、線程、進程之間的差異。

2. Django基礎

總體結構

  • 如何理解設計模式中的MVC模式,你平常中怎麼使用這種模式?
  • 如何理解Django中的MTV模型?
  • 介紹下Django中你熟悉的模塊有哪些,分別做用是什麼?
  • 如何看待Django自帶的Admin,以及說說你的使用經驗。
  • 如何理解WSGI的做用?
  • 如何本身實現WSGI協議?
  • 爲何正式部署時不要開啓DEBUG = True配置?

Model層

  • 如何理解Django Migrations的做用?
  • 是否有過手動編輯Migrations文件的經歷,緣由是什麼,有哪些須要注意的?
  • 介紹下ORM的概念。
  • 如何理解ORM在Django框架中的做用?
  • 介紹下ORM下的N+1問題,發生的緣由,以及解決方案。
  • 介紹下Django中Model的做用。
  • Model的Meta屬性類有哪些可配置項,做用是什麼,平常用到的。
  • 介紹下QuerySet的做用,以及你經常使用的QuerySet優化措施?
  • 介紹下Pagination的使用。
  • 介紹下Model中Field的做用。
  • 如何定製Manager?什麼場景下須要定製?
  • Raw SQL的效率跟ORM的效率是否進行過對比,結果如何?如何理解這種差別?
  • Django內置提供的權限邏輯是什麼,以及其粒度?

View層

  • Django中function view和Class-based View的差異及適用場景?
  • 如何給Class-based View添加login required裝飾器?
  • Middleware在Django系統中的做用?
  • settings中默認配置的MIDDLEWARES有哪些?他們的做用分別是什麼?是否能夠移除?
  • Django系統如何判斷用戶是否爲登陸用戶?
  • 對於無Cookie的瀏覽器如何實現用戶登陸?
  • Django中的request和HttpResponse的做用是什麼?
  • 如何處理圖片上傳的邏輯,以及展現邏輯?
  • 介紹下用到過的Django的緩存粒度。

Form層

  • 介紹下Django中Form的做用。
  • Form中的Field跟Model中的Field有何關聯?
  • 如何在Form層實現對某個字段的校驗?

Template層

  • 如何理解Django模板對設計師友好的說法?
  • 平常開發中如何規劃Django的模板繼承和include?
  • 經常使用的標籤(tag)和過濾器(filter)有哪些?
  • 在模板中如何處理靜態文件?
  • 在模板中如何處理系統內定義的URL?
  • 如何自定義標籤和過濾器?

3. Django進階

  • 如何排查Django項目的性能問題?
  • 如何部署Django項目,以及不一樣的部署方式之間的差異?
  • 部署時如何處理項目中的靜態文件?
  • 如何實現自定義的登陸認證邏輯?
  • 如何理解Django中Model、Form、ModelForm和Field、Widgets之間的關係?
  • Paginator的原理是什麼,如何本身實現分頁邏輯?
  • Model中Field的做用是什麼?
  • 什麼是SQL注入,ORM又是如何解決這個問題的?
  • CSRF全稱是什麼?Django是如何解決這個問題的?
  • XSS攻擊是指什麼,在開發時應該如何避免這種攻擊?
  • Signal的做用以及實現邏輯?
  • DATABASE配置中的CONN_MAX_AGE參數的做用,以及使用場景?
  • CONN_MAX_AGE的實現邏輯是什麼?
  • 用Django內置的User模型建立用戶時是否能夠直接:User(username='the5fire', password='the5fire').save()
  • 上面的建立方式有什麼問題?應該如何處理用戶密碼?
  • 使用Django-rest-framework如何實現用戶認證登陸邏輯?
  • Session模塊在Django中的做用是什麼?
  • 如何自定義Django中的權限粒度,實現本身的權限邏輯?
  • 如何捕獲線上系統的異常?
  • 如何分析某個接口響應時間過長的問題,假設響應時間爲2秒,一次請求涉及到數據庫和緩存查詢。

4. 部署相關

  • 如何來自動化部署項目到生產環境,具體流程?
  • 介紹下經常使用的自動化部署工具?
  • 用到哪些監控工具,做用是什麼,使用中有什麼不足之處?
  • Supervisor的做用是什麼?爲什麼使用它?
  • Gunicorn的做用是什麼?爲什麼使用它?
  • 如何對系統進行壓測?以及流量預估?
  • Nginx的做用是什麼?是否能獨立配置?有沒有優化經驗?
  • 發版邏輯是什麼,如何保證新版本發生異常時能快速回滾?

5. MySQL數據庫

  • 如何肯定須要哪些字段須要設置索引?
  • 什麼狀況下須要設定字段屬性爲unique = True
  • 如何排查某個SQL語句的索引命中狀況?
  • 如何排查查詢過慢的SQL語句?

6. Redis

  • 你瞭解的Redis的特色是什麼?爲何會使用它?
  • 支持的數據類型
  • 如何合理的規劃key?
  • 好比我須要把全部的文章和分類數據寫入Redis,在Django中直接讀取Redis拿到分類和文章的數據,問怎麼規劃數據存儲,如何處理分頁?
  • 是否支持事務?舉個例子。
  • 有哪些數據淘汰策略?
  • 當你發現有些Redis查詢響應時間太長,如何排查?多是什麼引發的?
  • 你用到的或者瞭解的Redis的部署結構是什麼?
  • 是否瞭解Redis的持久化策略,不一樣的策略有什麼不一樣?
  • 說說你瞭解的Redis主從同步的策略。

7. 經常使用算法

  • Python中字典類型的實現算法?
  • 你瞭解的高級語言中的垃圾回收機制有哪些?Python中用的是什麼?
  • 介紹下你知道的緩存相關的算法?
  • 介紹下你知道的負載均衡相關的算法?
  • 介紹下數據庫索引相關算法?

8. 總結

上面列的不少內容都已經超出了Django的範圍,但依然是屬於Web開發領域須要掌握的知識。github

相關文章
相關標籤/搜索