今天满怀期待地去参加 SUSE 公司 Senior OS Developer 岗位的面试, 但是因为个人积累不够,最终反馈的结果是可以让我转和的 veloper 同一个 team 的测试开发,终究还是这方面的积累少了,难受住了。
不过能参与到 linux 内核社区开发的机会对我来说确实非常难得,考虑了之后还是觉得能进 suse 也是难得的机会,接受了下一步的主管面试,主要还是吃了大学的专业背景(自动化)和之后工作的工作经验(嵌入式驱动开发)的亏,只能想办法先参与到这个领域内来了。测试就测试吧,只是有点意难平。
说一说面试的过程吧, 由于之前没有任何操作系统领域的实际开发经验,为了能让自己显得能胜任这个岗位,只能从自己的强项开始说起,主要是 8 年+的 C 语言经验,然后是自学的基本书的知识,《 MCS:APP 》,《编译,装载和库》这些。
然后面试官问得问题其实也不是特别难,就是非常的严谨,例如一些系统内部的细节,虚拟内存的分级页表,程序的编译过程,执行原理,动态链接的加载过程,但是这些内容其实平时我都算是理解了,只是可能是因为紧张了,导致回答的比较模糊,算是整个面试中非常减分的点了。
虚拟内存那里印象比较深刻,因为前面回答的其实还好,就是到面试官把问题引导到问实际 x86 体系下内核现在用的页表是几级页表时候,我竟然回答的是非常旧的书上写的 3 级页表,其实内核在 x64 之后就用上了 4 级页表。我也是面试结束了之后才反应过来。
另外一个就是 C 语言程序编译的部分回答的不够清楚,这里应该也是减份的地方,因为编译原理这种东西确实太晦涩了,我曾经看过一点点,看到语法树就看不下去了。
其他的部分,面试官也非常的严谨,问的东西都是简历上写的,主要是我之前的与现在的工作相关内容,这部分的话,可能是面试官的专业领域不在这方面,所以问的问题我都还能比较清晰的回答上来。
但是让我最郁闷的是,面试官对于 C 语言这个我最有信心的点没问过,这个是真的难受了。。。
总结经验来说就是,由于个人过往大量的编码实践偏向于软硬件交互的嵌入式方面,而且是专有设备的嵌入式开发,虽然现在的岗位是 linux 设备驱动的开发,对于这个岗位的面试帮助不能说没有,但是确实帮助不大,总的来说这次面试搞成这样,一部分是发挥有点不如人意,更大部分还是这个领域的编码实践太少。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.