一面 1. 自我介绍2. 网络1. TCP三次握手、四次挥手2. TCP和UDP区别3. 如何实现一个可靠的UDP(我直接回答了QUIC,以及哪些实现哪些策略让他稳定可靠)(文章推荐: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. 信息加密:混合加密实现信息机密性,解决窃听风险2. 验证机制:摘要算法实现完整性,为数据生成独一无二的【指纹】,用于检验数据完整性,解决篡改风险3. 身份证书:将服务器的公钥放入数字证书,解决冒充风险5. TSL四次握手6. CA证书验证流程,存储在哪里?3. 操作系统1. 线程和进程区别2. 进程通信方式4. 数据结构1. 堆(数组实现,是一个完全二叉树结构)2. 排序算法的时间复杂度对比3. 排序算法哪些是稳定的,哪些是不稳定的5. 算法1. 堆排序(pass)2. 螺旋数组3. 手撕HashMap6. 讲解HashMap扩容7. rehash和二次hash有什么区别(自己口误,给挖坑了)二面1. 自我介绍(面试官是老乡,寒暄了几句)2. 算法1. 大数乘法(这个真忘了,一般碰到这种都是工具类写了,撕了20分钟,没写出来)2. leetcode上的一个中等dp(背包问题),具体是哪个找不到了。3. 实习拷打4. 项目拷打二面一直拷打,回答一句,问一个,问到不会为止(已挂)大数加法: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()];// 计算乘积并累加到相应位置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;}// 构建结果字符串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();}大数乘法: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()];// 计算乘积并累加到相应位置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;}// 构建结果字符串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();}