高薪直通車丨 Python面試經驗分享(**斯通實業)

筆試題:

沒有筆試題,如果有題咱也不要怕,告訴你們一個經驗,把筆試題拍個照片發到咱們的班級羣裏,依靠大家的力量,我相信你可以做完的

面試環節:

1、 簡單說下你對input() 函數的理解?

答:在Python3中,input() 函數用來獲取用戶的輸入信息,無論用戶輸入什麼,都獲取到字符串類型的信息;在 Python2 中有 raw_input()和 input(), raw_input()和 Python3 中的 input()作用是一樣的, input()輸入的是什麼數據類型的,獲取到的就是什麼數據類型的。

2、 說幾個Python常用的標準庫(模塊)?

答:ios 操作系統,time 時間,random 隨機,pymysql連接數據庫,threading 線程,multiprocessing 進程,queue 隊列。

第三方庫: django 和 flask 也是第三方庫,requests,scrapy,xadmin,celery, re,hashlib,md5。

3、 說說一般爬蟲的流程?

①爬蟲引擎獲得初始請求開始抓取。

②爬蟲引擎開始請求調度程序,並準備對下一次的請求進行抓取。

③爬蟲調度器返回下一個請求給爬蟲引擎。

④引擎請求發送到下載器,通過下載中間件下載網絡數據。

⑤一旦下載器完成頁面下載,將下載結果返回給爬蟲引擎。

⑥引擎將下載器的響應通過中間件返回給爬蟲進行處理。

⑦爬蟲處理響應,並通過中間件返回處理後的items,以及新的請求給引擎。

⑧引擎發送處理後的items到項目管道,然後把處理結果返回給調度器,調度器計劃處理下一個請求抓取。

⑨重複以上步驟,直到爬取完所有的url請求。

4、你知道深拷貝和淺拷貝的區別嗎?

答:淺拷貝概念:淺拷貝copy只是對另外一個變量的內存地址的拷貝,這兩個變量指向同一個內存地址的變量值。

淺拷貝特點:

公用一個值;

這兩個變量的內存地址一樣;

對其中一個變量的值改變,另外一個變量的值也會改變;

深拷貝概念:

deepcopy一個變量對另外一個變量的值拷貝。

深拷貝特點:

兩個變量的內存地址不同;

兩個變量各有自己的值,且互不影響;

對其任意一個變量的值的改變不會影響另外一個;

5、 對 MVC,MVT 模式的理解?

答: MVC簡介:

M:Model,模型,和數據庫進行交互

V:View,視圖,負責產生 Html 頁面

C:Controller,控制器,接收請求,進行處理,與 M 和 V 進行交互,返回應答。

MVT簡介:

M:Model,模型,和 MVC 中的 M 功能相同,和數據庫進行交互。

V:view,視圖,和 MVC 中的 C 功能相同,是核心,負責接收請求、獲取數據、返回結果

T:Template,模板,和 MVC 中的 V 功能相同,產生 Html 頁面

6、 django 如何提升性能(高併發)?

答:對一個後端開發程序員來說,提升性能指標主要有兩個一個是併發數,另一個是響應時間網站性能的優化一般包括 web 前端性能優化,應用服務器性能優化,存儲服務器優化。

對前端的優化主要有:

①減少 http 請求,減少數據庫的訪問量,比如使用雪碧圖。

②使用瀏覽器緩存,將一些常用的 css,js,logo 圖標,這些靜態資源緩存到本地瀏覽器,通過設 置 http 頭中的 cache-control 和 expires 的屬性,可設定瀏覽器緩存,緩存時間可以自定義。

對我個人而言,我做的優化主要是以下幾個方面:

①合理的使用緩存技術,對一些常用到的動態數據,比如首頁做一個緩存,或者某些常用的數據做個緩存,設置一定得過期時間,這樣減少了對數據庫的壓力,提升網站性能。

②使用celery 消息隊列,將耗時的操作扔到隊列裏,讓 worker 去監聽隊列裏的任務,實現異步操作,比如發郵件,發短信。

③就是代碼上的一些優化,補充:nginx 部署項目也是項目優化,可以配置合適的配置參數,提升效率,增加併發量。

④如果太多考慮安全因素,服務器磁盤用固態硬盤讀寫,遠遠大於機械硬盤。

⑤另外還可以搭建服務器集羣,將併發訪問請求,分散到多臺服務器上處理。

⑥最後就是運維工作人員的一些性能優化技術了。

⑦有過部署經驗?用的什麼技術?可以滿足多少壓力?

答:有部署經驗,在阿里雲服務器上部署的 技術有:nginx + uwsgi 的方式來部署 Django 項目,壓力測試一兩千。

相關文章