【地址】
https://www.kaikeba.com/open/item?c=681&channelCode=gjsh6ytvxy
------------------------------------------------------------------------------------
【面試經驗】
版面整潔,信息精煉:
最多兩頁,字句不多余,恰到好處;
便於快速閱讀,關鍵信息粗體標出,但不超過5處。
有的放矢,突出優勢:
建立多版本化,如研發,算法,技術支持類...
有含金量的技術比賽經歷和獲獎情況。
切忌正確廢話的堆砌。
吃苦耐勞,學習能力強......
熟悉,了解,精通滿屏飛。
電話,視頻面試
安靜,網絡通暢,盡量看着鏡頭。
現場面試
STAR
- Surrounding,項目的時間、地點、背景;
- Target,任務,描述,要求;
- Action,做了什么,工具,困難;
- Result,成就,認知,結果量化。
SA要講清楚
互動,節奏,表達連貫;深度廣度和要求是否一致;精氣神,勇氣-指出來面試的問題,讓面試官給出答案(態度謙虛);把問題主動難度,深度延伸,結合項目。
------------------------------------------------------------------------------------
【如何清晰地回答好TCP三次握手】
網絡怎么分層的:按照數據格式和解決傳輸問題的角度來進行分層。
|-應用層(HTTP/FTP):程序中的數據
|-傳輸層(TCP/UDP):定義端口
|-網絡層(IP/ARP):定義IP地址及子網
|- 鏈路層:怎么組裝有特定意義的數據幀
物理層:定義幀結構-------------------------
<畫 |- 的目的是為了直觀的展示不同數據分層的結構,應用層數據經過組裝成為傳輸層數據,傳輸層經過組裝成為網絡層數據......>
一些要注意的問題:
- IP報文結構中的TTL:IP報文被路由器丟棄之前可經過的最多路由總數。
- 區別於MSL:報文的最大存在時間。
- 區別於RTT:客戶端到服務器往返所花費的時間。TCP含有動態估算RTT的算法,會持續估算,因為網絡傳輸擁塞程度是動態的。
TCP報頭的標志性也是高頻使用的內容:SYN(建立連接),ACK(響應),FIN(關閉連接)
TCP共有10種實際狀態存在。
建立連接4中:
LISTENING,SYN_SENT,SYN_RECEIVED,ESTABLISHED
斷開連接8種:
ESTABLISHED,FIN_WAIT_1,FIN_WAIT_2,CLOSE_WAIT,LAST_ACK,TIME_WAIT,CLOSING,LISTENING
其中的LISTENING和ESTABLISHED是重復的。
它們以 源目的IP+端口號為Key,狀態為Value,存儲在操作系統中。
常考:為什么要三次握手?
1.信息對等:
關於信息對等的含義就是,不僅要知道對方收到了自己的消息,還要讓對方知道我們收到了對方的消息。
舉個例子,兩個人背對背坐着,看不到對方,只能通過聽來判斷。那如果第一個人說,你好,第二個人再說,你好。此時都不說話了,這個時候我們是沒辦法判斷出來第一個人是不是聾子,所以必須要第一個人對第二個人這句話有個回應,才能說雙方說話,和聽話都是沒有問題的。這是下一步交流的基礎。
2.防止請求超時導致的臟連接;
這里主要是跟2次握手方案的對比,如果是兩次握手,那么a和b在建立連接之后,a超時發送給b的數據,b就會建立連接,而此時a是沒有連接的,這就是臟連接。
為什么要4次揮手?
主要是為了傳回未處理完成的包。
- 1.A發FIN消息
- 2.B響應ACK消息
- 3.B做好准備,發送FIN+ACK給A
- 4.A返回ACK,並TIME_WAIT
經過2MSL之后,A進入CLOSE,釋放TCP;B在收到A的ACK后就進入CLOSE,釋放TCP;
為什么需要TIME_WAIT?
默認2分鍾。確認被關閉方直接進入ACK狀態。net.ipv4.tcp_fin_timeout=15。
------------------------------------------------------------------------------------
數據結構-算法復雜度O
猜數字-100以內的數字,二分法最多幾次可以猜到呢?
算法復雜度的排序O(n!)>O(2^n)>O(n^2)>O(nlogn)>O(n)>O(logn)>O(1)
面試常考-快排說明
流程:分界點(pivot)--分區(left, right)--遞歸處理左右分區
難點:遞歸;指針移動與數值交換;復雜度計算與最壞情況
最壞情況是:升序,倒序或者全部相等,O(nlogn)--O(n^2)
遞歸-recursion
- 1.要有退出條件
- 2.參數在變化
- 3.遞歸方法必須有參數
實例:計算階乘(負數階乘沒有意義,13!就超出了int的范圍)
------------------------------------------------------------------------------------
HashMap<13>什么時候變為16的?--resize
異或、>>>無符號位運算、HashMap size()小於64時,一律先擴容,小於64是不可能樹化的,沒必要。大於64時,節點大於8會樹化,小於6會鏈化,鏈表長度為8則平均查找次數為4,樹化后查找深度為3,有收益;而6時,鏈化的平均查找長度也是3,樹化查找深度為3,收益不大。
平衡樹,AVL樹,紅黑樹概念:
紅黑樹的特性(有紅必有黑,紅紅不相連):
- 根節點必須是黑色;
- 所有的NIL節點都是黑色;
- 一條路徑不能出現相鄰的兩個紅色節點;
- 任何遞歸子樹內,根節點到葉子節點的所有路徑上包含相同數目的黑色節點。
AVL絕對的平衡二叉查找樹,紅黑樹不是絕對平衡。紅黑樹兩次就能調整,頻繁插入刪除時紅黑樹更合適,avl的旋轉成本很高的。
HashCode與String的神秘31:
最簡單的Hash算法:所有字符的ASCII碼相加
但很容易沖突,選質數31(不容易溢出,31可以被優化-32-1,即i<<5)
------------------------------------------------------------------------------------
線程與線程池:
- 線程狀態:new runnable running dead blocked
- 線程池狀態:running shutdown stop tidying(新任務不能添加了,老任務繼續消耗) terminated
線程池的作用:
- 利用線程池管理並復用線程、控制最大並發數
- 增加對線程的管理,快速排查問題
- 實現任務線程隊列的緩存策略與拒絕機制
- 實現某些與時間相關的功能,如定時執行、周期執行等
- 隔離線程環境
------------------------------------------------------------------------------------
ConcurrentHashMap類
AQS
Spring中的主線:
BeanFactory,FactoryBean