我想分享一下我最近在 banglore 的 HP R&D Labs 的面试经历。我有 4 年的网络协议开发经验。开放职位面向网络协议开发者(Layer2/Layer3)。被选中的人被召集起来。
一天总共发生了5轮。 (4 技术(1 书面 + 3 面对面),人力资源)
笔试(目标):
笔试题是考查C语言和操作系统的基础知识。
主要强调按位运算运算符,小端和大端。
技术第一轮:
这一轮完全是为了 c 。面试官问了按位运算运算符和链表的问题。
ac 程序的内存布局。
1. 如何使用按位运算运算符设置、取消设置和切换位?
2. 使用链表的栈实现?
3. 链表的反转?
4. c程序的内存布局?如何找出每个段(数据、堆栈、代码)的起始地址?
我可以清除第一轮并要求进行第二轮。
技术第 2 轮:
在这一轮中,面试官评估了我在网络协议和工作、操作系统和 C 方面的知识。
翻完我的简历,面试官问了我做的协议操作和实际场景。
主要强调操作系统。
1. 信号量和互斥量的区别?
2. 什么是竞态条件?如何避免它们?
3.什么是死锁?如何检测?
4. 您的项目中使用了哪些操作系统?
5. 这些操作系统的 x 因素是什么?
在 C 中,
1.交换链表的两个节点(不是数据)?
2. Malloc 为二维数组分配内存?
3.
int main() {
chat *p=NULL;
p++;
printf("%d",p);
}
上述程序的输出?
4. 什么是空指针崩溃?如何检测?
5. 内存泄漏是如何发生的?如何找出它们?
技术第 3 轮(经理 + 技术):
这一轮是由经理进行的。他试图测试从 C 基础知识、网络、操作系统和软件方法学的所有内容。正如预期的那样,经理提出了其他问题。
人力资源回合:
这是最后一轮。只是就通知期、人力资源问题、薪资谈判等进行了随意的讨论。