面試題總結

面試題總結

簡述OSI七層

'''
應用層:HTTP,FTP,NFS
表示層:Telnet,SNMP
會話層:SMTP,DNS
傳輸層:TCP,UDP
網絡層:IP,ICMP,ARP,
數據鏈路層:Ethernet,PPP,PDN,SLIP,FDDI
物理層:IEEE 802.1A,IEEE 802.11
'''

簡述TCP三次握手,四次揮手的流程

三次握手過程:mysql

'''
1首先客戶端向服務端發送一個帶有SYN 標誌,以及隨機生成的序號100(0字節)的報文
2服務端收到報文後返回一個報文(SYN200(0字節),ACk1001(字節+1))給客戶端
3客戶端再次發送帶有ACk標誌201(字節+)序號的報文給服務端
至此三次握手過程結束,客戶端開始向服務端發送數據。
1客戶端向服務端發起請求:我想給你通訊,你準備好了麼?
2服務端收到請求後迴應客戶端:I'ok,你準備好了麼
3客戶端禮貌的再次回一下客戶端:準備就緒,我們開始通訊吧!
整個過程跟打電話的過程如出一轍:1喂,你在嗎2在,我說的你聽獲得不3恩,聽獲得(接下來請
開始你的表演)
補充:SYN:請求詢問,ACk:回覆,迴應。
'''

四次揮手過程:面試

'''
因爲TCP鏈接是能夠雙向通訊的(全雙工),所以每一個方向都必須單獨進行關閉(這句話纔是
精闢,後面四個揮手過程都是其具體實現的語言描述)
四次揮手過程,客戶端和服務端均可以先開始斷開鏈接
1客戶端發送帶有fin標識的報文給服務端,請求通訊關閉
2服務端收到信息後,回覆ACK答應關閉客戶端通訊(鏈接)請求
3服務端發送帶有fin標識的報文給客戶端,也請求關閉通訊
4客戶端迴應ack給服務端,答應關閉服務端的通訊(鏈接)請求
'''

全局解釋器鎖GIL

'''
全局解釋器鎖,每次只能一個線程得到cpu的使用權:爲了線程安全,也就是爲了解決多線程之間的數據完整性和狀態同步而加的鎖,由於咱們知道線程之間的數據是共享的。
'''

python中如何使用線程池和進程池

'''
# 線程池
import threadpool, times
with open(r'../uoko_house_id.txt', 'r', encoding='utf-8') as f: # with open語句表示通用
的打開文件的方式,此處用來獲取須要爬取參數的列表
 roomIdLi = f.readlines()
 roomIdList =[x.replace('\n','').replace(' ','') for x in roomIdLi]
 print(roomIdList)
 li = [[i, item] for i, item in enumerate(roomIdList)] # enumerate()將列表中元素和其
下標從新組合輸出
def run(roomId):
 """對傳入參數進行處理"""
 print('傳入參數爲:', roomId)
 time.sleep(1)

def main():
 roomList = li # 房間信息
 start_time = time.time()
 print('啓動時間爲:', start_time)
 pool = threadpool.ThreadPool(10)
 requests = threadpool.makeRequests(run, roomList)
 [pool.putRequest(req) for req in requests]
 pool.wait()
 print("共用時:", time.time()-start_time)
if __name__ == '__main__':
 main()


# 進程池
from multiprocessing.pool import Pool
from time import sleep
def fun(a):
 sleep(5)
 print(a)
if __name__ == '__main__':
 p = Pool()
 for i in range(10):
 p.apply_async(fun, args= (i, ))
 p.close()
 p.join()
 print("end")

'''

TCP與UDP的區別,爲什麼基於TCP通訊比UDP更可靠

'''
一、TCP面向鏈接(如打電話要先撥號創建鏈接);UDP是無鏈接的,即發送數據以前不須要創建鏈接
二、TCP提供可靠的服務。也就是說,經過TCP鏈接傳送的數據,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力
交付,即不保證可靠交付
三、TCP面向字節流,其實是TCP把數據當作一連串無結構的字節流;UDP是面向報文的
UDP沒有擁塞控制,所以網絡出現擁塞不會使源主機的發送速率下降(對實時應用頗有用,如IP電話,實時視頻會議
等)
四、每一條TCP鏈接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通訊
五、TCP首部開銷20字節;UDP的首部開銷小,只有8個字節
六、TCP的邏輯通訊信道是全雙工的可靠信道,UDP則是不可靠信道
'''
# 爲什麼基於tcp協議的通訊比基於udp協議的通訊更可靠?
'''
tcp:可靠 對方給了確認收到信息,才發下一個,若是沒收到確認信息就重發
udp:不可靠 一直髮數據,不須要對方迴應
'''

請列舉出你所知道的數據庫類型及對應的數據庫軟件,其中MySQL存儲引擎有哪些,各有什麼特色。

'''
主要 MyISAM 與 InnoDB 兩個引擎,其主要區別以下:
InnoDB 支持事務,MyISAM 不支持,這一點是很是之重要。事務是一種高級的處理方式,
如在一些列增刪改中只要哪一個出錯還能夠回滾還原,而 MyISAM就不能夠了;
MyISAM 適合查詢以及插入爲主的應用,InnoDB 適合頻繁修改以及涉及到安全性較高的應
用;

InnoDB 支持外鍵,MyISAM 不支持;
MyISAM 是默認引擎,InnoDB 須要指定;
InnoDB 不支持 FULLTEXT 類型的索引;

InnoDB 中不保存表的行數,如 select count() from table 時,InnoDB;須要掃描一遍整個表
來計算有多少行,可是 MyISAM 只要簡單的讀出保存好的行數便可。注意的是,當 count()
語句包含 where 條件時 MyISAM 也須要掃描整個表;
對於自增加的字段,InnoDB 中必須包含只有該字段的索引,可是在 MyISAM表中能夠和其
他字段一塊兒創建聯合索引;清空整個表時,InnoDB 是一行一行的刪除,效率很是慢。
MyISAM 則會重建表;

InnoDB 支持行鎖(某些狀況下仍是鎖整表,如 update table set a=1 where user like
'%lee%'

'''
innobd 可存放數據,安全性高
myisam 可存放數據,查找數據效率高於innobd
blackhole 存什麼沒什麼,什麼都存不進去,適用於從網站上爬取的不須要的信息,能夠丟入數據庫的blackhole
memory 往內存中存,關閉即消失,表結構存在硬盤上,可是表數數據所有存在內存中

什麼是事務,事務都有哪些特色?什麼又是數據庫三大範式

'''
事務具備四個特性,即 ACID 特性:
( 1 )原子性:事務中包括的全部操做要麼都作,要麼都不作。
( 2 )一致性:事務必須使數據庫從一個一致性狀態變到另外一個一致性狀態。
( 3 )隔離性:一個事務內部的操做及使用的數據對併發的其餘事務是隔離的。
( 4 )持續性:事務一旦提交,對數據庫的改變是永久的。
'''

列舉常見的django中的技術點及大體功能(如:cookie)

'''
Session 依賴於 Cookie,若是瀏覽器不能保存 cookie 那麼 session 就失效了。由於它須要瀏
覽器的 cookie 值去 session 裏作對比。session就是用來在服務器端保存用戶的會話狀態。

cookie 能夠有過時時間,這樣瀏覽器就知道何時能夠刪除 cookie了。 若是 cookie 沒有
設置過時時間,當用戶關閉瀏覽器的時候,cookie 就自動過時了。你能夠改變SESSION_EXPIRE_AT_BROWSER_CLOSE 的設置來控制session 框架的這一行爲。缺省狀況下, SESSION_EXPIRE_AT_BROWSER_CLOSE設置爲 False ,這樣,會話 cookie 能夠在用戶瀏覽器中保持有效達SESSION_COOKIE_AGE 秒(缺省設置是兩週,即 1,209,600 秒)若是你不想用戶每次打開瀏覽器都必須從新登錄的話,用這個參數來幫你。若是SESSION_EXPIRE_AT_BROWSER_CLOSE設置爲 True,當瀏覽器關閉時,Django 會使 cookie 失效。

SESSION_COOKIE_AGE:設置 cookie 在瀏覽器中存活的時間。

'''

請描述一下項目的開發流程

'''
1.需求分析
2.概要設計
3.詳細設計
4.編碼
5.測試
6.軟件交付
7.驗收
8.維護
'''

什麼是防火牆以及做用

'''
在互聯網上防火牆是一種很是有效的網絡安全模型,經過它能夠隔離風險區域(即Internet或有必定風險的網絡)與安全區域(區域網)的鏈接,同時不會妨礙人們對風險區域的訪問,因此它通常鏈接在覈心交換機與外網之間。
1.過濾進出網絡的數據
2.管理進出訪問網絡的行爲
3.封堵某些禁止業務
4.記錄經過防火牆信息內容和活動
5.多網絡攻擊檢測告警
'''

同步和異步,阻塞和非阻塞的區別

'''
同步:執行一個操做以後,須要主動等待返回結果;
異步:執行一個操做以後,不須要主動等待返回結果,若接收到結果通知,再回來執行剛纔沒執行完的操做。
同步和異步關心的問題是:要不要主動等待結果。
阻塞:在執行一個操做時,不能作其餘操做;
非阻塞:在執行一個操做時,能作其餘操做。
阻塞和非阻塞關心的問題是:能不能作其餘操做。
'''
相關文章
相關標籤/搜索