作者@TechGuidex

背景

面试时间:3.6

面试岗位:C++开发

面试类型:实习

有很多首次参加校招或者实习的小伙伴,声哥提醒下注意两点:对于面试,保持松弛感和准备好八股文、熟悉好项目一样重要,有时候和面试官聊得来就体现在这种松弛感营造的氛围。对于笔试,前几次可以当作练练手,第一就是把往年的笔试真题自己练习下,出门刷笔经里已经准备好了,第二就是对于一些小细节留心,比如数据类型限制,据声哥不完全统计,每年笔试都会有一半的人栽在ACM输入和数据类型long long上,提前练习可以规避这些低级问题~

问题

  1. 自我介绍
  2. 介绍一下服务器项目的功用
  3. vector list deque介绍及区别
  4. 介绍std::forward以及std::move
  5. 说一下rpc啥啥啥(不懂)
  6. http头部有哪些字段
  7. UDP发送一个包,对端回复什么。

没理解啥意思,我说udp尽最大努力交付,没有超时重传等机制,要看具体业务逻辑。
然后面试官说什么端口,build啥的,我还是不太懂,就说内核会挑选一个端口,没必要绑定端口(当然也可以)。我估计没get到点。

  1. 讲解一下tcp发送syn的过程
  2. redis用的很熟吗(回不是很熟,哈哈)
  3. 有没有了解过音视频的编码

算法题

力扣15:三数之和

class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        int n = nums.length;
        Arrays.sort(nums);
        List<List<Integer>> ans = new ArrayList<List<Integer>>();
        // 枚举 a
        for (int first = 0; first < n; ++first) {
            // 需要和上一次枚举的数不相同
            if (first > 0 && nums[first] == nums[first - 1]) {
                continue;
            }
            // c 对应的指针初始指向数组的最右端
            int third = n - 1;
            int target = -nums[first];
            // 枚举 b
            for (int second = first + 1; second < n; ++second) {
                // 需要和上一次枚举的数不相同
                if (second > first + 1 && nums[second] == nums[second - 1]) {
                    continue;
                }
                // 需要保证 b 的指针在 c 的指针的左侧
                while (second < third && nums[second] + nums[third] > target) {
                    --third;
                }
                // 如果指针重合,随着 b 后续的增加
                // 就不会有满足 a+b+c=0 并且 b<c 的 c 了,可以退出循环
                if (second == third) {
                    break;
                }
                if (nums[second] + nums[third] == target) {
                    List<Integer> list = new ArrayList<Integer>();
                    list.add(nums[first]);
                    list.add(nums[second]);
                    list.add(nums[third]);
                    ans.add(list);
                }
            }
        }
        return ans;
    }
}
// VX公众号关注TechGuide 实时题库 闪电速递

比较简单,写了几行面试官说不写了直接说一下思路,说了下说可以了,我说还要考虑去重啥的,他说没有重复元素可以了。

总结

最后聊一些其他的实习相关的东西,感觉面试官人很好,没有为难人,不过感觉没怎么问简历上的东西和网络编程的东西,哈哈哈。已通知二面。