1. 程式人生 > >Python面試題(六)

Python面試題(六)

不知道 服務端 並發 獲取對象 alter base 編輯 優點 相同

1.什麽是C/S和B/S架構?


C/S是Client/Server,即客戶端/服務器端架構,一種典型的兩層架構。
B/S是Browser/Server,即瀏覽器/服務器架構。
C/S 優點和缺點
優點:(1)界面和操作可以很豐富 (2) 安全性能可以很容易保證,實現多層認證也不難 (3)由於只有一層交互,因此響應速度較快。
缺點:(1)適用面窄,通常用於局域網中(2)用戶群固定。由於程序需要安裝才可使用,因此不適合面向一些不可知的用戶(3)維護成本高。發生一次升級,則所有客戶端的程序都需要改變。

B/S 優點和缺點
優點:(1)客戶端無需安裝,有Web瀏覽器即可 (2)BS架構可以直接放在廣域網上,通過一定的權限控制實現多客戶訪問的目的,交互性較強。(3)BS架構無需升級多個客戶端,升級服務器即可。
缺點:(1)在跨瀏覽器上,BS架構不盡如人意。(2)表現要達到CS程序的程度需要花費不少精力。(3)在速度和安全性上需要花費巨大的設計成本,這是BS架構的最大問題。(4)C和S交互是請求-響應模式,通常需要刷新頁面,這並不是客戶樂意看到的。(在Ajax風行後此問題得到了一定程度的緩解)


2.Nginx是什麽及作用?


Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP代理服務器。
Nginx是一款輕量級的Web服務器/反向代理服務器以及電子郵件代理服務器,並在一個BSD-like協議下發行。由俄羅斯的程序設計師lgor Sysoev所開發。
國內使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。
Nginx的作用是:反向代理,負載均衡。其特點是占有內存少,並發能力強。
正向代理:簡單的說,我是一個用戶,我訪問不了Goole,但是我能訪問一個代理服務器,這個代理服務器呢,他能訪問那個我不能訪問的網站,於是我先連上代理服務器,告訴他我需要那個無法訪問網站的內容,代理服務器去取回來,然後返回給我。從網站的角度,只在代理服務器來取內容的時候有一次記錄。結論就是,正向代理,是一個位於客戶端和原始服務器之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求並指定目標(原始服務器),然後代理向原始服務器轉交請求並將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。
反向代理:大家都有過這樣的經歷,撥打10086 客服電話,一個地區的 10086 客服有幾個或者成千上萬個,你永遠都不需要關心在電話那頭的是哪一個,叫什麽,男的,還是女的,漂亮的還是帥氣的,你都不關心,你關心的是你的問題能不能得到專業的解答,你只需要撥通了10086 的總機號碼,電話那頭總會有人會回答你。那麽這裏的 10086 總機號碼就是我們說的反向代理。客戶不知道真正提供服務的人是誰。反向代理隱藏了真實的服務端,當我們訪問 www.baidu.com 的時候,就像撥打 10086 一樣,背後可能有成千上萬臺服務器為我們服務,但具體是哪一臺,你不知道,也不需要知道,你只需要知道反向代理服務器是誰就好了,www.baidu.com 就是我們的反向代理服務器,反向代理服務器會幫我們把請求轉發到提供真實計算的服務器那裏去。


3.django中F和Q的作用?

F:操作數據表中的某列值,F()允許Django在未實際鏈接數據的情況下具有對數據庫字段的值的引用,不用獲取對象放在內存中再對字段進行操作,直接執行原生產sql語句操作。通常情況下我們在更新數據時需要先從數據庫裏將原數據取出後方在內存裏,然後編輯某些屬性,最後提交。

Q:對對象進行復雜查詢,並支持&(and),|(or),~(not)操作符。


4.使用orm和原生sql的優缺點?


一,sql註入問題
二,代碼和sql寫死在了一起,導致解耦差
三,sql開發人員水平不一,導致sql性能問題
四,開發效率差

使用orm的優點:
一,實現了代碼與sql數據的解耦合
二,不需要寫原生sql
三,防止sql註入
缺點:
1,犧牲性能
2,復雜語句力不從心

5.SQLAlchemy如何執行原生SQL?


使用sqlalchemy執行sql語句的方法

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine(‘mysql://root:*****@127.0.0.1/database?charset=utf8‘)
DB_Session = sessionmaker(bind=engine)
session = DB_Session()
session.execute(‘alter table mytablename drop column mycolumn ;‘)

6.解釋 PV、UV 的含義?

PV:頁面訪問量,即PageView,用戶每次對網站的訪問均被記錄,用戶對同一頁面的多次訪問,訪問量累計。
UV:獨立訪問用戶數:即UniqueVisitor,訪問網站的一臺電腦客戶端為一個訪客。00:00-24:00內相同的客戶端只被計算一次。

Python面試題(六)