百度2.27面試

一、hadoop spark穩定性

二、get post 

  • GET - 從指定的資源請求數據。
  • POST - 向指定的資源提交要被處理的數據
  GET POST
後退按鈕/刷新 無害 數據會被重新提交(瀏覽器應該告知用戶數據會被重新提交)。
書籤 可收藏爲書籤 不可收藏爲書籤
緩存 能被緩存 不能緩存
編碼類型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。爲二進制數據使用多重編碼。
歷史 參數保留在瀏覽器歷史中。 參數不會保存在瀏覽器歷史中。
對數據長度的限制 是的。當發送數據時,GET 方法向 URL 添加數據;URL 的長度是受限制的(URL 的最大長度是 2048 個字符)。 無限制。
對數據類型的限制 只允許 ASCII 字符。 沒有限制。也允許二進制數據。
安全性

與 POST 相比,GET 的安全性較差,因爲所發送的數據是 URL 的一部分。

在發送密碼或其他敏感信息時絕不要使用 GET !

POST 比 GET 更安全,因爲參數不會被保存在瀏覽器歷史或 web 服務器日誌中。
可見性 數據在 URL 中對所有人都是可見的。 數據不會顯示在 URL 中。

1xx: 信息

消息: 描述:
100 Continue 服務器僅接收到部分請求,但是一旦服務器並沒有拒絕該請求,客戶端應該繼續發送其餘的請求。
101 Switching Protocols 服務器轉換協議:服務器將遵從客戶的請求轉換到另外一種協議。

2xx: 成功

消息: 描述:
200 OK 請求成功(其後是對GET和POST請求的應答文檔。)
201 Created 請求被創建完成,同時新的資源被創建。
202 Accepted 供處理的請求已被接受,但是處理未完成。
203 Non-authoritative Information 文檔已經正常地返回,但一些應答頭可能不正確,因爲使用的是文檔的拷貝。
204 No Content 沒有新文檔。瀏覽器應該繼續顯示原來的文檔。如果用戶定期地刷新頁面,而Servlet可以確定用戶文檔足夠新,這個狀態代碼是很有用的。
205 Reset Content 沒有新文檔。但瀏覽器應該重置它所顯示的內容。用來強制瀏覽器清除表單輸入內容。
206 Partial Content 客戶發送了一個帶有Range頭的GET請求,服務器完成了它。

3xx: 重定向

消息: 描述:
300 Multiple Choices 多重選擇。鏈接列表。用戶可以選擇某鏈接到達目的地。最多允許五個地址。
301 Moved Permanently 所請求的頁面已經轉移至新的url。
302 Found 所請求的頁面已經臨時轉移至新的url。
303 See Other 所請求的頁面可在別的url下被找到。
304 Not Modified 未按預期修改文檔。客戶端有緩衝的文檔併發出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務器告訴客戶,原來緩衝的文檔還可以繼續使用。
305 Use Proxy 客戶請求的文檔應該通過Location頭所指明的代理服務器提取。
306 Unused 此代碼被用於前一版本。目前已不再使用,但是代碼依然被保留。
307 Temporary Redirect 被請求的頁面已經臨時移至新的url。

4xx: 客戶端錯誤

消息: 描述:
400 Bad Request 服務器未能理解請求。
401 Unauthorized 被請求的頁面需要用戶名和密碼。
402 Payment Required 此代碼尚無法使用。
403 Forbidden 對被請求頁面的訪問被禁止。
404 Not Found 服務器無法找到被請求的頁面。
405 Method Not Allowed 請求中指定的方法不被允許。
406 Not Acceptable 服務器生成的響應無法被客戶端所接受。

5xx: 服務器錯誤

消息: 描述:
500 Internal Server Error 請求未完成。服務器遇到不可預知的情況。
501 Not Implemented 請求未完成。服務器不支持所請求的功能。
502 Bad Gateway 請求未完成。服務器從上游服務器收到一個無效的響應。
503 Service Unavailable 請求未完成。服務器臨時過載或當機。
504 Gateway Timeout 網關超時。
505 HTTP Version Not Supported 服務器不支持請求中指明的HTTP協議版本。

 

三、兩張表查詢賬單信息

60萬的數據進行多表關聯查詢,總結結果如下:

from多表關聯查詢:耗時15.376s、15.106s、15.216s、17.569s、15.729s,平均15.7992s

inner join on多表查詢:耗時16.3s、17.469s、18.295s、15.505s、18.411s,平均17.196s

 

四、快排思路

1.將數組的最後一個數right作爲基準數key。 

2.分區過程:從數組的首元素begin開始向後找比key大的數(begin找大);end開始向前找比key小的數(end找小);找到後然後兩者交換(swap),知道begin >= end終止遍歷。最後將begin和最後一個數交換( 這個時候end不是最後一個位置),即 key作爲中間數(左區間都是比key小的數,右區間都是比key大的數) 

3.再對左右區間重複第二步,直到各區間只有一個數。

 

五、linux 進程、磁盤管理查看

df

df命令參數功能:檢查文件系統的磁盤空間佔用情況。可以利用該命令來獲取硬盤被佔用了多少空間,目前還剩下多少空間等信息。

du 用來查看某個目錄所佔空間大小

du -sh

 

六、linux 文件查看(不打開的情況)

grep -i 字符串 文件

 

七、網絡層次

應用層 表示層 會話層 傳輸層 網絡層 數據鏈路層 物理層

八、三次握手,四次握手

TCP/IP三次握手,四次揮手

九、kubernetes docker應用

十、研究生半年學業在幹啥,有沒有發論文

十一、進程查看

ps aux | grep fCNL:查到fCNL的進程 
kill -s 9 pid 

十二、併發線程倒序打印1~10,寫入文件

package Test.DataStructure.ExLock;

public class ExLock {
    public static int count=0;
    public static Object Lock =new Object();

    static class RunnableImple implements Runnable{

        @Override
        public void run() {
            countNumber();
        }
    }

    public static void countNumber(){
        synchronized (Lock){
            count++;
            try {
                System.out.println(count);
                if (count<10){
                    Lock.wait();
                }else {
                    Lock.notifyAll();
                }
            }catch (InterruptedException e){
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            Thread thread =new Thread(new RunnableImple());
            thread.start();
        }
    }
}

十三、spark如何提交一個應用

十四、hadoop,spark分發過程

十五、mongdb存儲數據,爬蟲爬取信息

十六、zookeeper保證可靠性,機制

十七、linux 端口號查詢

方法二:直接使用 netstat   -anp   |   grep  portno
即:netstat –apn | grep 8080 查看端口占用情況

netstat -anp命令簡單說明:

-a,顯示所有

-n,不用別名顯示,只用數字顯示

-p,顯示進程號和進程名

 

十八、前後端代碼編寫

MVC代碼編寫

十九、網絡不好,tcp/ip怎麼檢查

二十、hashmap底層源碼

二十一、mybatis防止sql注入攻擊

mybatis中的#和$的區別:

1、#將傳入的數據都當成一個字符串,會對自動傳入的數據加一個雙引號。
如:where username=#{username},如果傳入的值是111,那麼解析成sql時的值爲where username="111", 如果傳入的值是id,則解析成的sql爲where username="id". 
2、$將傳入的數據直接顯示生成在sql中。
如:where username=${username},如果傳入的值是111,那麼解析成sql時的值爲where username=111;
如果傳入的值是;drop table user;,則解析成的sql爲:select id, username, password, role from user where username=;drop table user;
3、#方式能夠很大程度防止sql注入,$方式無法防止Sql注入。
4、$方式一般用於傳入數據庫對象,例如傳入表名.
5、一般能用#的就別用$,若不得不使用“${xxx}”這樣的參數,要手工地做好過濾工作,來防止sql注入攻擊。
6、在MyBatis中,“${xxx}”這樣格式的參數會直接參與SQL編譯,從而不能避免注入攻擊。但涉及到動態表名和列名時,只能使用“${xxx}”這樣的參數格式。所以,這樣的參數需要我們在代碼中手工進行處理來防止注入。
【結論】在編寫MyBatis的映射語句時,儘量採用“#{xxx}”這樣的格式。若不得不使用“${xxx}”這樣的參數,要手工地做好過濾工作,來防止SQL注入攻擊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章