Python Web 面試總結(一)

面試了一家初創公司, 面試官問的問題並不是說很難, 但是覆蓋面比較廣, 有一些基礎概念不清晰的話, 很容易被問倒.

一些資料顯示, 對 Python Web 開發工程師的一些技術棧要求如下:

  • 熟悉Python語言
  • 對 HTML/ CSS/ Javascript 比較熟悉
  • 對網絡基礎知識,比如HTTP、TCP/IP 等比較熟悉
  • 熟悉數據庫、緩存、消息隊列等技術的使用場景和使用方法
  • 日常使用類 Unix 系統工作, 如 Mac OS, Ubuntu, Deepin
  • 有性能優化經驗,能快速定位問題

如果用一個項目來反推技術棧要求可能更好理解.

Python Web 面試總結(一)


用 Python Web 框架開發項目, Python 語法基礎自然是前提條件. 而開發過程中使用 Python 包管理工具也是必不可少的. 這是爲了開發環境不受污染, 同時也方便後期項目的部署, 如果整個系統使用同一個包管理工具, 很容易會出現庫包的版本衝突, 並且部署到服務器時, 由於沒有區分環境, 只能將所有項目的包的並集一起安裝到服務器上, 造成資源浪費.

以 Django 爲例, MTV 模型中的 Model, 雖然是用 ORM 簡化了數據庫的操作, 但是基礎的數據庫增刪改查語句仍是必須要學會的. 如果使用了非關係型數據庫還需要你清楚與關係型數據庫的差別, 或者說使用的原因是什麼. 技術優劣性的討論都是在限定條件下的, 盲目鼓吹某個技術, 並不是一個明智的做法.

Django 中的 T 是 Templates 模板, 模板中需要的大部分都是前端的知識, HTML/ CSS/ JavaScript/ Ajax 都需要有所瞭解, 也許我們不是一個設計師, 但是用前端做一個清爽易用的頁面不是一件很困難的事, 而這卻能提升不少用戶體驗.

Django 中的 V 是 Views 視圖, 視圖通常要與路由 urls 結合使用, 路由少不了看懂並會寫一些基本的正則表達式, 路由轉發請求和視圖響應的過程涉及到一些網絡基礎知識, 這些網絡基礎知識包括但不限於 HTTP/ TCP 協議, 各種網絡響應狀態碼等, 熟悉這些知識可以在調試, 查看日誌時更快地定位錯誤.

最後一項是項目部署上線, 項目部署通常是在 Linux 服務器上進行, nginx / Apache 代理服務器與 uWSGI 之間的配置文件需要清楚是如何關聯的.

由於服務器通常只有一個終端可供交互, 平時的用戶界面都是沒有的. 常用的 Linux 命令自然要瞭然於心, 否則出了問題, 連日誌都不知道怎麼看. 同時常用的 Git 管理命令也要清楚明白. 克隆, 同步, 分支管理的幾個常用命令都是標配, 同時背後的原理也要明白, 什麼時候會衝突, 衝突又要怎麼解決.

關於上述幾個方面的詳細內容, 將會在接下來的文章中展開.

相關文章