我正在为一家大公司(前 10 名公司)的系统管理员(Linux)职位做准备,其中一项要求是了解 perl、python 或 Ruby 等语言。我有一个电话面试,需要与面试官共享一个编辑器,那么在电话面试或常规面试中我会遇到什么样的编码练习呢?
我使用 shell 完成了大部分日常任务,偶尔使用 Perl 和 python 完成一些大任务。现在我不希望他们问
编写一个将 AD 用户同步到 LDAP 的脚本。
我不认为数据结构、算法或排序问题适合我的角色?你能给我举一些与 SysAdmin 相关的编码问题的例子吗?
答案1
我不认为数据结构、算法或排序问题适合我的角色?
您为什么不这么认为?也许不知道 O(n) 和 O(1) 以及 O(log n) 之间的区别,但编写好的代码 - 脚本就是代码 - 肯定需要对这三件事有基本的了解。
当我采访我现在的工作我至少被问到下面的问题(我可能忘记了一些)我被允许使用我选择的语言。
- 菲兹巴兹
- 给出四个点和一个坐标,确定坐标是在正方形/矩形的内部还是外部
- 给出一份姓名和考试成绩的列表,如何找出谁获得了高分和平均分。考试可以重新进行,因此每个姓名可能有多个条目,只计算他们的高分。如何找出特定学生的高分。
一些系统管理员特定的事情:
- 如何在 100GB 的日志文件中搜索与 $Pattern 匹配的条目?
- 给定一个包含 1000 人的列表:名字、姓氏、部门和电话号码,如何将这些人添加到没有中央身份验证系统的 $Dirctory 或 $10 *nix 服务器中?
- 如何将错误事件与 3 个不同日志文件中的相关日志关联起来?
- 如何使用结构已提供给您? 您将如何改变数据库的结构?
答案2
我不喜欢面试就像考试一样。面试应该更多地是了解候选人是否适合这个职位和组织,而不是让面试者当场回答问题。当然,一个好的系统管理员必须能够在压力下编写出有用的脚本,但压力不是一回事。
因此,我更倾向于聊聊脚本语言偏好、文化等,而不是问一系列问题。(这对 Python、Perl 或 Ruby 尤其有效!)通常,这足以了解面试者的订婚使用所选的语言,这比在纸上回答一些精心挑选的聪明问题的能力更重要。
面试结束后,您可以随时要求通过电子邮件发送示例脚本。(然后您可以用 Google 搜索部分代码,看看是否是抄袭的……)
答案3
根据我的经验,面试中系统管理员的问题往往基于文件处理。例如,“获取此日志文件并提取唯一 IP 地址以及每个 IP 地址的数量”是我在不久前的一次面试中被问到的问题。
这菲兹巴兹测试仍然是最受欢迎的编程问题之一。
答案4
其他人提供了一些你可能会遇到的很好的练习示例,所以我就不多说了。不过我想说的是,让代码运行起来和让代码可维护一样重要——这在系统管理员领域可能比在其他地方都更重要,因为我们是那种倾向于编写脚本然后多年后才忘记它直到出现问题的人,而不像应用程序开发人员那样,他们花大量时间密切关注代码库并习惯其特性。我曾招聘过系统管理员,这种清晰度是我在代码示例中寻找的东西。
遵循一致命名方案的可理解变量名;足够的注释;将配置与代码分开(我的许多 perl 编程同事都有一个非常坏的习惯,就是将他们的脚本配置存储在以逗号分隔的大型内联字符串标量中,这种拼写错误会将本应是警告的内容变成一片混乱);等等。我衷心推荐Damian Conway 的“Perl 最佳实践”作为这方面的参考。希望它能有所帮助;祝你面试顺利!