天天看點

21年-外包-面試題背景題目

目錄

  • 背景
  • 題目
    • 1.sql執行過程
    • 2.判斷sql是否執行成功?
    • 3.get和post差別
    • 補充:為什麼get比post更快
    • 4.線程池
    • 5.線程的建立方式
    • 6.索引失效了怎麼辦
    • [email protected]用法
    • 8.索引有幾種

背景

21年5月,應聘杭州餘杭某外包。

題目的答案,是根據我的了解寫的。可能有不對的地方,歡迎大家指正。

題目

1.sql執行過程

2.判斷sql是否執行成功?

表述1:通過sql傳回值-受影響的行數,判斷是否執行成功

受影響的行數>=1,執行成功

表述2:在SQL語句附近加上 mysql_affected_rows() ,如果 mysql_affected_rows()的值為“-1”,則執行失敗,如果大于等于0,則語句執行成功!

3.get和post差別

一般的差別:

(1)post更安全(不會作為url的一部分,不會被緩存、儲存在伺服器日志、以及浏覽器浏覽記錄中)

(2)post發送的資料更大(get有url長度限制)

(3)post能發送更多的資料類型(get隻能發送ASCII字元)

(4)post比get慢

(5)post用于修改和寫入資料,get一般用于搜尋排序和篩選之類的操作(淘寶,支付寶的搜尋查詢都是get送出),目的是資源的擷取,讀取資料

補充:為什麼get比post更快

1.post請求包含更多的請求頭

因為post需要在請求的body部分包含資料,是以會多了幾個資料描述部分的首部字段(如:content-type),這其實是微乎其微的。

2.最重要的一條,post在真正接收資料之前會先将請求頭發送給伺服器進行确認,然後才真正發送資料

post請求的過程:

(1)浏覽器請求tcp連接配接(第一次握手)

(2)伺服器答應進行tcp連接配接(第二次握手)

(3)浏覽器确認,并發送post請求頭(第三次握手,這個封包比較小,是以http會在此時進行第一次資料發送)

(4)伺服器傳回100 Continue響應

(5)浏覽器發送資料

(6)伺服器傳回200 OK響應

get請求的過程:

(1)浏覽器請求tcp連接配接(第一次握手)

(2)伺服器答應進行tcp連接配接(第二次握手)

(3)浏覽器确認,并發送get請求頭和資料(第三次握手,這個封包比較小,是以http會在此時進行第一次資料發送)

(4)伺服器傳回200 OK響應

也就是說,目測get的總耗是post的2/3左右,

3.get會将資料緩存起來,而post不會

4.線程池

Executors.newCachedThreadPool

Executors.newFixedThreadPool

Executors.newScheduledThreadPool

Executors.newSingleThreadExecutor

5.線程的建立方式

6.索引失效了怎麼辦

[email protected]用法

8.索引有幾種

主鍵索引

唯一索引

普通索引

全文索引