騰訊面試 TEG 安全崗
面試結束面試官跟我說我需要去惡補一下基礎知識=。=
我就知道我涼了=。=
沒想到問了這么多的基礎
線程 進程 協(xié)程
進程是計算機資源分配的最小單位
線程是操作系統(tǒng)調度的最小單位
一個線程只能屬于一個進程,而一個進程可以有多個線程,但至少有一個線程
協(xié)程看上去也是子程序,但執(zhí)行過程中,在子程序內部可中斷,然后轉而執(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ā)是指兩個或多個事件在同一時間間隔內發(fā)生。)
某個線程想要執(zhí)行,必須先拿到GIL,我們可以把GIL看作是“通行證”,并且在一個python進程中,GIL只有一個。拿不到通行證的線程,就不允許進入CPU執(zhí)行
UDP和TCP的區(qū)別
TCP與UDP區(qū)別總結:
1、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接
2、TCP提供可靠的服務。也就是說,通過TCP連接傳送的數(shù)據(jù),無差錯,不丟失,不重復,且按序到達;UDP盡最大努力交付,即不保 證可靠交付
3、TCP面向字節(jié)流,實際上是TCP把數(shù)據(jù)看成一連串無結構的字節(jié)流;UDP是面向報文的
UDP沒有擁塞控制,因此網(wǎng)絡出現(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代碼的權限沒有x能不能使webshell執(zhí)行
不能只需要r就可以執(zhí)行了
最近的CVE了解過嗎
thinkphp 的 代碼執(zhí)行
thinkphp這個框架有這么多問題為啥CI沒有
設計思路問題
我沒太了解過這兩個
但大概是tp有很多動態(tài)引用
舉個我比較熟悉的例子,就是drupal/joomla和dedecms比
dede就是純粹的mvc結構,結構都是拼起來的,漏洞一般都很直白,都是代碼的問題,比如注入啊什么的
而drupal/joomla就有很多動態(tài)引用,很多函數(shù)啊什么的都是通過call_user_func或者干脆就是動態(tài)加載的
mysql緩存配置
[圖片上傳失敗...(image-9bab36-1553660831807)]
mysql的語句從查詢到取出經(jīng)歷多少
[圖片上傳失敗...(image-79b730-1553660831807)]