8.24 百度面試記錄

zhuhui132發表於2020-08-24

刪除連結串列中倒數第k個節點

// 1 2 3 4 6      2  => 1 2 3 6
public void getKNode(ListNode head,int k){
ListNode slow = head, fast= head;
while(k>0 && fast!= null ) {
fast= fast.next;
k--;
}
if (slow !=null && fast!= null ){
fast=fast.next;
slow=slow.next;
}
slow.next=slow.next.next;
return ;
}

陣列裡重複次數最多的值

public int returnMost(int[] arr){
if (arr == null || arr.length == 0) return 0;
int Max = 0;
int result = 0;
HashMap<Integer,Integer> map = new HashMap<>();
for (int i : arr) {
//map.get(i) == null?map.put(i, 1): map.put(i, map.get(i) + 1);
if (map.get(i) == null ){
map.put(i,1);
}
else {
map.put(i,map.get(i)+1);
}
if (map.get(i) >= Max) {
Max = map.get(i);
result = i;
}
}
System.out.println(result);
return result;
}

sql 查詢太慢,怎麼優化

https://tech.meituan.com/2014/06/30/mysql-index.html

完整的http請求

過程

• 域名解析
• 發起TCP3次握手
• 建立TCP連線後發起http請求
• 伺服器響應請求,返回結果
• 瀏覽器得到html標籤程式碼
• 瀏覽器解析html程式碼中的資源,例如js,css,img等
• 瀏覽器對頁面進行渲染並呈現給使用者

為什麼tcp需要第三次握手

謝希仁版《計算機網路》中的例子是這樣的,“已失效的連線請求報文段”的產生在這樣一種情況下:client發出的第一個連線請求報文段並沒有丟失,而是在某個網路結點長時間的滯留了,以致延誤到連線釋放以後的某個時間才到達server。本來這是一個早已失效的報文段。但server收到此失效的連線請求報文段後,就誤認為是client再次發出的一個新的連線請求。於是就向client發出確認報文段,同意建立連線。假設不採用“三次握手”,那麼只要server發出確認,新的連線就建立了。由於現在client並沒有發出建立連線的請求,因此不會理睬server的確認,也不會向server傳送資料。但server卻以為新的運輸連線已經建立,並一直等待client發來資料。這樣,server的很多資源就白白浪費掉了。採用“三次握手”的辦法可以防止上述現象發生。例如剛才那種情況,client不會向server的確認發出確認。server由於收不到確認,就知道client並沒有要求建立連線。”。主要目的防止server端一直等待,浪費資源。

登入頁面測試

1、功能測試(Function test)
• 輸入正確的使用者名稱和密碼,點選提交按鈕,驗證是否能正確登入。
• 輸入錯誤的使用者名稱或者密碼, 驗證登入會失敗,並且提示相應的錯誤資訊。
• 登入成功後能否能否跳轉到正確的頁面
• 使用者名稱和密碼,如果太短或者太長,應該怎麼處理
• 使用者名稱和密碼,中有特殊字元,和其他非英文的情況
• 記住使用者名稱的功能
• 登陸失敗後,不能記錄密碼的功能
• 使用者名稱和密碼前後有空格的處理
• 密碼是否以星號顯示
2、介面測試(UI Test)
• 佈局是否合理,2個testbox 和一個按鈕是否對齊
• testbox和按鈕的長度,高度是否複合要求
• 介面是否好看
• 圖片,顏色,字型,超連結,是否都顯示正確
3、效能測試(performance test)
• 開啟登入頁面,需要幾秒
• 輸入正確的使用者名稱和密碼後,登入成功跳轉到新頁面,不超過5秒
• 能支援多少個使用者同時登陸
4、安全性測試(Security test)
• 登入成功後生成的Cookie,是否是httponly (否則容易被指令碼盜取)
• 使用者名稱和密碼是否通過加密的方式,傳送給Web伺服器
• 使用者名稱和密碼的驗證,應該是用伺服器端驗證, 而不能單單是在客戶端用javascript驗證
• 使用者名稱和密碼的輸入框,應該遮蔽SQL 注入攻擊
• 使用者名稱和密碼的的輸入框,應該禁止輸入指令碼 (防止XSS攻擊)
• 錯誤登陸的次數限制(防止暴力破解)
5、可用性測試(Usability Test)
• 是否可以全用鍵盤操作,是否有快捷鍵
• 輸入使用者名稱,密碼後按回車,是否可以登陸
6、相容性測試(Compatibility Test)
• 主流的瀏覽器下能否顯示正常已經功能正常(IE,6,7,8,9, Firefox, Chrome, Safari,等)
• 不同的平臺是否能正常工作,比如Windows, Mac
• 移動裝置上是否正常工作,比如Iphone, Andriod
• 不同的解析度
• 不同的瀏覽器大小 (瀏覽器最大化, 和非最大化)

索引的原理

什麼是索引
優點與缺點
原理
想要理解索引原理必須清楚一種資料結構「平衡樹」(非二叉),也就是b tree或者 b+ tree,重要的事情說三遍:“平衡樹,平衡樹,平衡樹”。當然, 有的資料庫也使用雜湊桶作用索引的資料結構 , 然而, 主流的RDBMS都是把平衡樹當做資料表預設的索引資料結構的。

linux--

列印第二列

awk '{print $2}' test.file
# awk -F ":" '{print $2}' test2.txt f 分割
cut -d " " -f 2 test1.txt
# cut -d ":" -f 2 test2.txt
sed "s/^[^ ]* \([^ ]*\) [^ ]* [^ ]*/\1/g" test1.txt
# sed "s/^[^:]*:\([^:]*\):[^:]*:[^:]*/\1/g" test2.txt

埠衝突

檢視9000這個埠是否被使用

netstat -lnt | grep 9000 
# # 根據埠檢視程式資訊
lsof -i : 9000
# 結束佔用埠的程式:killall 程式名
# 雖然我們不建議用這種本末倒置的方法來解決衝突問題,
#但某些情況下還是可以直接結束掉佔用程式的
#(比如重啟Apache時程式沒有完全退出,導致重啟失敗)

自動化測試的價值

(1)你怎麼做的自動化
(2)什麼樣的介面級別加入自動化
(3)自動化使用 場景,收益

效能測試

(1)關注於哪些指標
(2)怎麼調優?

多型

(1)什麼是多型
(2)好處
https://www.cnblogs.com/chenssy/p/3372798.html

相關文章