我通过 Cisco Career 申请,并在一两周内接到了 HR 的电话。我进行了三轮技术面试。
第 1 轮(电话/WebEx)
第一轮开始时我非常简短地解释了我在网络领域的经验,然后是以下问题:
1. Linux内核中数据包的流向
2.虚拟内存/分页/内核空间/用户空间
三、C程序编译阶段
4. 设计一个基于 TCP 协议的客户端服务器模型
5、c程序内存布局的间接问题(栈、堆、数据段)
6. C 中的间接存储类(代码输出)
7. 关于静态、全局变量和静态函数的C 概念
第 2 轮(网真)
1.结构填充/用途/如何告诉编译器不要填充结构/何时需要?
2.双/单链表反转
3. 链接列表中的最后第 n 个元素
4. 当我们在架构级别定义一个变量 volatile 时,编译器做了什么,即。缓存、主内存等会发生什么?
5. 小端和大端。系统如何以小端或大端验证天气?如何编写无端代码?提示:htonl
6. 在循环链表中检测循环的程序。
7. 当中断频率很高时,内核如何处理中断延迟?
9. 您使用过哪些不同类型的 IPC 机制?你认为最快的IPC机制是什么?为什么?
之后对 C 中的指针、数据结构、多线程和锁定机制进行了一些讨论。
第 3 轮(网真)
这一轮是详细讨论我在之前公司做过的东西,包括NAT、Fragmention(IPv4/Iv6)、Linux Kernel、Driver development等。所有的讨论都是从很简单的问题开始的,比如什么是Fragmantaion,然后慢慢讲我所做的工作深度喜欢模块的基础设施、我使用的数据结构、各种回调实现、他认为可能存在的各种问题、我如何通过正确锁定模块来保护数据损坏但不会失去任何性能。
一周后,我接到了 HR 的电话,给了我一个offer。