騰訊面試 TEG 安全崗
面試結(jié)束面試官跟我說我需要去惡補一下基礎(chǔ)知識=声登。=
我就知道我涼了=愚铡。=
沒想到問了這么多的基礎(chǔ)
線程 進程 協(xié)程
進程是計算機資源分配的最小單位
線程是操作系統(tǒng)調(diào)度的最小單位
一個線程只能屬于一個進程,而一個進程可以有多個線程幔摸,但至少有一個線程
協(xié)程看上去也是子程序摸柄,但執(zhí)行過程中,在子程序內(nèi)部可中斷抚太,然后轉(zhuǎn)而執(zhí)行別的子程序塘幅,在適當?shù)臅r候再返回來接著執(zhí)行。
協(xié)程的特點在于是一個線程執(zhí)行尿贫,那和多線程比电媳,協(xié)程有何優(yōu)勢?
極高的執(zhí)行效率:因為子程序切換不是線程切換庆亡,而是由程序自身控制匾乓,因此,沒有線程切換的開銷又谋,和多線程比拼缝,線程數(shù)量越多,協(xié)程的性能優(yōu)勢就越明顯彰亥;
不需要多線程的鎖機制:因為只有一個線程咧七,也不存在同時寫變量沖突,在協(xié)程中控制共享資源不加鎖任斋,只需要判斷狀態(tài)就好了继阻,所以執(zhí)行效率比多線程高很多。
多線程比多進程的系統(tǒng)開銷小很多
python的線程是不是真正的線程
python的多線程是GIL(全局解釋鎖)
每個CPU在同一時間只能執(zhí)行一個線程(在單核CPU下的多線程其實都只是并發(fā)废酷,不是并行瘟檩,并發(fā)和并行從宏觀上來講都是同時處理多路請求的概念。但并發(fā)和并行又有區(qū)別澈蟆,并行是指兩個或者多個事件在同一時刻發(fā)生墨辛;而并發(fā)是指兩個或多個事件在同一時間間隔內(nèi)發(fā)生。)
某個線程想要執(zhí)行趴俘,必須先拿到GIL睹簇,我們可以把GIL看作是“通行證”,并且在一個python進程中哮幢,GIL只有一個带膀。拿不到通行證的線程,就不允許進入CPU執(zhí)行
UDP和TCP的區(qū)別
TCP與UDP區(qū)別總結(jié):
1橙垢、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的垛叨,即發(fā)送數(shù)據(jù)之前不需要建立連接
2、TCP提供可靠的服務。也就是說嗽元,通過TCP連接傳送的數(shù)據(jù)敛纲,無差錯,不丟失剂癌,不重復淤翔,且按序到達;UDP盡最大努力交付,即不保 證可靠交付
3佩谷、TCP面向字節(jié)流旁壮,實際上是TCP把數(shù)據(jù)看成一連串無結(jié)構(gòu)的字節(jié)流;UDP是面向報文的
UDP沒有擁塞控制,因此網(wǎng)絡(luò)出現(xiàn)擁塞不會使源主機的發(fā)送速率降低(對實時應用很有用谐檀,如IP電話抡谐,實時視頻會議等)
4丰包、每一條TCP連接只能是點到點的;UDP支持一對一路翻,一對多绅这,多對一和多對多的交互通信
5仿畸、TCP首部開銷20字節(jié);UDP的首部開銷小,只有8個字節(jié)
6算谈、TCP的邏輯通信信道是全雙工的可靠信道痹栖,UDP則是不可靠信道
UDP和TCP哪個能進行偽造
TCP可以進行偽造TCP是面向連接的需要握手
應用層協(xié)議
file不是應用層協(xié)議
php代碼的權(quán)限沒有x能不能使webshell執(zhí)行
不能只需要r就可以執(zhí)行了
最近的CVE了解過嗎
thinkphp 的 代碼執(zhí)行
thinkphp這個框架有這么多問題為啥CI沒有
設(shè)計思路問題
我沒太了解過這兩個
但大概是tp有很多動態(tài)引用
舉個我比較熟悉的例子辣恋,就是drupal/joomla和dedecms比
dede就是純粹的mvc結(jié)構(gòu)惫撰,結(jié)構(gòu)都是拼起來的羔沙,漏洞一般都很直白,都是代碼的問題厨钻,比如注入啊什么的
而drupal/joomla就有很多動態(tài)引用撬碟,很多函數(shù)啊什么的都是通過call_user_func或者干脆就是動態(tài)加載的
mysql緩存配置
[圖片上傳失敗...(image-9bab36-1553660831807)]
mysql的語句從查詢到取出經(jīng)歷多少
[圖片上傳失敗...(image-79b730-1553660831807)]