一面1. 自我介紹2. 網(wǎng)絡(luò) 1. TCP三次握手、四次揮手 2. TCP和UDP區(qū)別 3. 如何實現(xiàn)一個可靠的UDP(我直接回答了QUIC,以及哪些實現(xiàn)哪些策略讓他穩(wěn)定可靠)(文章推薦:https://juejin.cn/post/7428200842229006377#heading-0;視頻推薦:https://www.bilibili.com/video/BV1fr4y1F7BD?spm_id_from=333.788.videopod.sections&amp;vd_source=ea52eeafecc0fa82395b5b7600d5b266) 4. Https解決了Http什么問題(下面是個大概,都需要展開說說) 1. 信息加密:混合加密實現(xiàn)信息機密性,解決竊聽風(fēng)險 2. 驗證機制:摘要算法實現(xiàn)完整性,為數(shù)據(jù)生成獨一無二的【指紋】,用于檢驗數(shù)據(jù)完整性,解決篡改風(fēng)險 3. 身份證書:將服務(wù)器的公鑰放入數(shù)字證書,解決冒充風(fēng)險 5. TSL四次握手 6. CA證書驗證流程,存儲在哪里?3. 操作系統(tǒng) 1. 線程和進程區(qū)別 2. 進程通信方式4. 數(shù)據(jù)結(jié)構(gòu) 1. 堆(數(shù)組實現(xiàn),是一個完全二叉樹結(jié)構(gòu)) 2. 排序算法的時間復(fù)雜度對比 3. 排序算法哪些是穩(wěn)定的,哪些是不穩(wěn)定的5. 算法 1. 堆排序(pass) 2. 螺旋數(shù)組 3. 手撕HashMap6. 講解HashMap擴容7. rehash和二次hash有什么區(qū)別(自己口誤,給挖坑了)二面1. 自我介紹(面試官是老鄉(xiāng),寒暄了幾句)2. 算法 1. 大數(shù)乘法(這個真忘了,一般碰到這種都是工具類寫了,撕了20分鐘,沒寫出來) 2. leetcode上的一個中等dp(背包問題),具體是哪個找不到了。3. 實習(xí)拷打4. 項目拷打二面一直拷打,回答一句,問一個,問到不會為止(已掛)大數(shù)加法:public String solve(String s, String t) { if (s == null || t == null || s.length() == 0 || t.length() == 0) { return null; } if (s.equals(&amp;quot;0&amp;quot;) || t.equals(&amp;quot;0&amp;quot;)) { return &amp;quot;0&amp;quot;; } int[] nums = new int[s.length() + t.length()]; // 計算乘積并累加到相應(yīng)位置 for (int i = s.length() - 1; i >= 0; i--) { for (int j = t.length() - 1; j >= 0; j--) { nums[i + j + 1] += (s.charAt(i) - '0') * (t.charAt(j) - '0'); } } // 處理進位 int carry = 0; for (int i = nums.length - 1; i >= 0; i--) { int temp = nums[i] + carry; nums[i] = temp % 10; carry = temp / 10; } // 構(gòu)建結(jié)果字符串 StringBuilder sb = new StringBuilder(); int start = 0; while (start < nums.length &amp;&amp; nums[start] == 0) { start++; } for (int i = start; i < nums.length; i++) { sb.append(nums[i]); } return sb.toString();}大數(shù)乘法:public String solve(String s, String t) { if (s == null || t == null || s.length() == 0 || t.length() == 0) { return null; } if (s.equals(&amp;quot;0&amp;quot;) || t.equals(&amp;quot;0&amp;quot;)) { return &amp;quot;0&amp;quot;; } int[] nums = new int[s.length() + t.length()]; // 計算乘積并累加到相應(yīng)位置 for (int i = s.length() - 1; i >= 0; i--) { for (int j = t.length() - 1; j >= 0; j--) { nums[i + j + 1] += (s.charAt(i) - '0') * (t.charAt(j) - '0'); } } // 處理進位 int carry = 0; for (int i = nums.length - 1; i >= 0; i--) { int temp = nums[i] + carry; nums[i] = temp % 10; carry = temp / 10; } // 構(gòu)建結(jié)果字符串 StringBuilder sb = new StringBuilder(); int start = 0; while (start < nums.length &amp;&amp; nums[start] == 0) { start++; } for (int i = start; i < nums.length; i++) { sb.append(nums[i]); } return sb.toString();}