本系列歷史文章:
學姐,來挑戰字節最牛部門
最強阿里巴巴歷年經典面試題匯總:C++研發崗
關于我的那些面經——百度后端(附答案)
《關于我的那些面經》滴滴Java崗(附答案)
朋友面神策數據庫,第五個問題不會,直接再見
美女學姐面了美團阿里京東,這些經驗實在太真實了
學姐騰訊產品面經
學姐總結奇安信18k常問面試題
?這個系列計劃收集幾百份朋友和讀者的面經,作者合集方便查看,各位有面經屯著可以聯系我哦
?
1、測試環境搭建過程
2、? 驗證環境部署是否成功時 跑測試用例 接口是什么樣的?(服務對外提供的調用接口)
3、? 數據庫 表 有個字段 name字段 name=liuguoge 唯一標識id=3 修改name=guogeliu
update user set name=guogeliu where id=3;
4、寫鏈表翻轉(說思路,代碼中每一行的作用)
public ListNode ReverseList(ListNode head) {
?????? //當前節點是head,pre為當前節點的前一節點,next為當前節點的下一節點
??????? if(head==null)return null;
??????? ListNode pre = null;
??????? ListNode next = null;
??????? while(head!=null){
??????????? //先用next保存head的下一個節點的信息
??????????? next = head.next;
??????????? //保存完next,就可以讓head從指向next變成指向pre了
??????????? head.next = pre;
??????????? //讓pre,head,next依次向后移動一個節點,繼續下一次的指針反轉
??????????? pre = head;
??????????? head = next;
??????? }
??????? //head為null,反轉完畢,pre就是反轉后鏈表的第一個節點
??????? return pre;
??? }
5、 Scp和wget區別
curl是libcurl這個庫支持的,wget是一個純粹的命令行命令。
curl支持更多的協議。
curl 支持FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE,
Wget 支持HTTP, HTTPS and FTP.
curl 默認支持HTTP1.1(也支持1.0),而wget僅僅支持HTTP1.0規范。
4.curl在指定要下載的鏈接時能夠支持URL的序列或集合,而wget則不能這樣;
5.wget支持遞歸下載,而curl則沒有這個功能。
7、? 重載與重寫區別
定義區別:
①重載是指不同的函數使用相同的函數名,但是函數的參數個數或類型不同。調用的時候根據函數的參數來區別不同的函數。
②覆蓋(也叫重寫)是指在派生類中重新對基類中的虛函數重新實現。即函數名和參數都一樣,只是函數的實現體不一樣。
類的關系區別
覆蓋是子類和父類之間的關系,垂直關系;重載是同一個類中方法之間的關系,水平關系。
3.產生方法區別
覆蓋只能由一個方法或只能由一對方法產生關系;重載是多個方法之間的關系。
4.參數列表要求區別
覆蓋要求參數列表相同;重載要求參數列表不同。
5.調用方法區別
覆蓋關系中,調用方法體是根據對象的類型來決定;而重載關系是根據調用時的實參表與形參表來選擇方法體的。
?
1、介紹實習經歷
2、? 測試環境的檢查(接口測試)
3、? 寫代碼:奇數在前,偶數在后
private static void fun(int[] arr) {
??? if (arr.length == 0)return;
??? int front = 0,end = arr.length-1;//設置兩個指針,一個指向頭部,一個指向尾部
while (front < end){
?????? //從前往后找偶數
??????? while (front < arr.length && arr[front]%2 == 1) front++;
????????????? //從后往前找奇數
??????? while (end >= 0 && arr[end]%2 == 0)end--;
??????? //將前面的偶數與后面奇數交換位置
if (front < end){
??????????? int temp = arr[front];
??????????? arr[front] = arr[end];
??????????? arr[end] = temp;
??????? }
??? }
}
?
?
如何判斷bug前后端?
前端的問題:
在用戶輸入數據后,發送的請求沒有帶數據或者數據錯誤。
后臺已經傳回了數據,但在前端顯示不出來。
后端的問題:
?????? 接受請求后,存儲/修改錯誤(查看數據庫)
?????? 返回數據錯誤
?
抓包工具來進行分析
通過請求與響應來判斷。
1.請求接口url是否正確
如果請求的接口url錯誤,為前端的bug
2.傳參是否正確
如果傳參不正確,為前端的bug
3請求接口url和傳參都正確,查看響應是否正確
如果響應內容不正確,為后端bug
4,后端bug需要查看 服務器的log日志
?
?
- tcp和udp區別
- 如何抓包
3.一個真實的測試場景,問如何排查問題
4.黑盒測試和白盒測試和灰盒測試區別以及都有什么方法
黑盒:只關注輸出的正確性
白盒:了解程序內部邏輯結構、對所有邏輯路徑進行測試。
灰盒測試,介于二者之間的,關注輸出的正確性,同時也關注內部表現。
?
方法:
黑盒:等價類劃分、邊值分析、因—果圖、錯誤推測等
白盒:代碼檢查法、靜態結構分析法、靜態質量度量法、邏輯覆蓋法、基本路徑測試法、路徑覆蓋
?
?
三次握手
第一次:發送請求
第二次:告訴對方受到了請求并同意
第三次:告訴對方收到了你的同意,可以開始了。
?
為什么連接的時候是三次握手,關閉的時候卻是四次握手?
?
因為當Server端收到Client端的SYN連接請求報文后,可以直接發送SYN+ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。
但是關閉連接時,當Server端收到FIN報文時,很可能并不會立即關閉SOCKET,所以只能先回復一個ACK報文,告訴Client端,"你發的FIN報文我收到了"。只有等到我Server端所有的報文都發送完了,我才能發送FIN報文,因此不能一起發送。故需要四步握手。
?
tcp為什么能穩定傳輸
[1] 確認和重傳機制
建立連接時三次握手同步雙方的“序列號 + 確認號 + 窗口大小信息”,是確認重傳的基礎,
傳輸過程中,如果Checksum校驗失敗、丟包或延時,發送端重傳。
[2] 數據排序
TCP有專門的序列號SN字段,可提供數據re-order
[3] 流量控制
窗口和計時器的使用。TCP窗口中會指明雙方能夠發送接收的最大數據量
[4] 擁塞控制
TCP的擁塞控制由4個核心算法組成。
“慢啟動”“擁塞避免”“快速重傳 ”“快速恢復”
?
HTTP狀態碼分別表示啥
信息響應(100–199)
成功響應(200–299)
重定向(300–399)
客戶端錯誤(400–499)
服務器錯誤 (500–599)
?