问题不是男孩,而是六月。 在面试中向雇主提出22个问题,询问“中级Python开发人员”的职位

图片

引言


两年来,我很幸运地参加了40多份面试,以担任“中级Python开发人员”职位的候选人。 在最后的十五次面试中,我意识到有必要向雇主提出问题,以免将来遇到工作上的意外。 除了应聘者通常会问雇主的基本问题外,我还决定提出我的问题。 当我在面试中问这些问题时,我收到了受访者的各种反应。 有人说我是一丝不苟的,有人认为这些问题太平庸了,甚至有人开始变得紧张(脸红),并以荒谬的借口打断了他的会见,打断了面试。 在本文中,我想谈谈参加此类活动的一般思路,并将我在面试中提出的22个问题带给雇主。


总体思路


对中级开发人员的采访通常看起来与对大三的采访相同。

真的是 这是由于许多团队负责人/技术主管不知道他们到底想在中间开发人员中看到什么。 因此,在这样的采访中,他们通常被要求“写一个装饰器”“用任何一种语言写一个气泡排序”
而且,很少有人了解初级开发人员与中级开发人员的不同之处。 有人说,中级人员是具有一年半经验的开发人员,而具有三年经验的人员。 以我的理解,中级开发人员是指可以安全地进行小型项目或大型项目的任何部分的开发人员,并且他对此负责。 对于中级开发人员来说,一个重要的标准是成为某人的导师的能力,或者仅仅是帮助新员工渗透项目的能力。

面试不是考试,而是确定公司与候选人的契合度的机会。

雇主自己往往不理解这一重要规则。 有一次我在面试中,我被迫开票并在纸上回答被访者。 此外,在整个采访中我们聊了十分钟。 候选人经常会追踪到相同的行为。 候选人常常想回答所有问题,并且表现得像一等奖的优秀学生。 但是在这里,同样重要的是要了解,雇主对您对“ Python2和Python3之间差异”的了解并不特别感兴趣。 对于雇主而言,更重要的是要大致了解您如何进行面试,您如何推理,如何对失败做出反应等。

中级开发人员不能没有经验。

当然可以,但是一段时间后,这将给开发人员的负责人和项目带来巨大的麻烦。 对于没有经验的过分天赋的候选人,人力资源专家会使用自己的术语-“强大的初级开发人员”。 这样的开发商很可能会获得良好的货币补偿,但他们将作为初级开发商承担责任。 回到中级开发人员,我想指出的是,中级人员是从事开发工作一段时间并了解其组成过程的人员。 米德尔还知道如何使用各种工具(监视,部署,配置文件,测试),这些人没有经验的人不太可能出于培训目的而遇到。

软技能成为中级开发人员地位的重要因素。

位置越高,互动的人就越多。 因此,通常在雇用中级开发人员职位时,会与人力资源专家进行额外的访谈,以编制有关未来员工的心理肖像。 这次面试必须与技术面试一样认真。 您需要了解您将继续与这些人一起工作。 而且,如果您觉得未来的同事不太适合您,那么最好立即拒绝进一步的合作。

测试工作不太可能交给中级开发人员。

这种说法是很主观的。 就个人而言,我确实遇到了这样一个事实。 我认为,雇主对您的简历更感兴趣。 如果简历没有很好地编译,那么很可能您应该等待测试任务。

问题


在本节中,将介绍我在面试中向雇主提出的主要问题清单。 也许一段时间后,这个列表会扩大或缩小。 应该注意的是,这些问题应在技术面试中准确提出,建议您以后与谁进行精确交流。

1.测试情况如何? 你在写什么测试? 您使用哪些库进行测试? 工厂moki等)

测试是任何开发中非常重要的部分。 据我了解,所有开发人员都应至少以某种形式编写测试。 唯一可以原谅缺乏测试的人是初创公司。 在初创企业中, 移动过程通常会改变,这是由于任何人通常都不需要旧项目。 因此,确保此类项目的质量是浪费时间。 对于所有其他公司,在此问题上不应有任何仁慈。 您需要了解,首先在项目中引入新员工会导致代码中出现各种错误。 而在这种情况下的考验是他的个人再保险以及将决定投入生产的那一部分的再保险。

当雇主回答问题的第二部分时,您将能够理解团队确保产品质量的能力以及空缺中未讨论的开发人员的可能责任。

值得注意的是,在这个问题上,技术专家经常开始迷路。 有时有人说,该团队刚刚开始编写测试,并且还不熟悉该技术的所有细节。 但是有时候我听到这样的回答: “测试人员应该参与测试,而开发人员必须创建。” 这绝对是不正确的。

开发人员必须编写所需的最低限度的测试,因为是他知道自己创建的功能应该如何工作。 没有人谈论测试人员的无用。 但重要的是要了解,开发人员还必须对其代码的质量负责。

2.开发人员在将代码发送到存储库之前会如何处理?

此问题涉及针对各种参数对代码进行本地验证。 以下是在发送到存储库之前通常检查哪些代码的简短列表:

  • Flake8-符合PEP8的代码分析,
  • Pylint-静态代码分析,
  • 覆盖率 -用于测试覆盖率的代码分析,
  • Tox-检查代码是否与各个软件包的不同版本以及与Python的不同版本兼容。

在开发中不存在这种情况并不重要。 同样,在许多公司中,这种情况直接在CI中使用,并且开发人员不会在本地启动任何程序。 即使未在开发中使用此工具,也很高兴,如果与您进行面试的人员对这些工具有基本的了解。

3.是否有任何CI / CD项目? DevOps工程师吗?

这个问题没有陷阱,我请它更好地了解公司的设备。 如果项目中没有CI / CD,并且DevOps工程师也缺席,那么您很可能会这样做。 因此,在面试时讨论这一点也更好。

4.是否有代码审查? 怎么样了

问题的第一部分可以不加评论,因为每个人都知道此事件的重要性。 但是值得注意的是,我个人对它的运行方式很感兴趣。 通常每个团队都会对提出合并请求的开发人员进行修订。 但是有时候,在任何开发人员中都有一名导师/导师,而正是他负责审查开发人员。 我认为第一种方法更正确,因为修改代码的人越多,对项目和团队的影响就越大。 在这里,团队合作,集体责任和公交乘数增加等方面会立即受到影响。

5.您使用什么版本控制系统?

目前在俄罗斯,仍有许多公司仍在使用hgsvn和其他旧版本控制系统。 对于已经在市场上销售超过10年的公司来说尤其如此。 这个问题更多地测试了公司多久可以接受新技术。 还值得注意的是,我在短时间内参与了使用hg进行的开发,但并没有给我带来很多乐趣。

6.使用git / hg时是否使用git / hg-flow或任何特定方法?

这个问题来自先前有关版本控制系统的问题。 因此,如果团队不使用git / hg ,则没有必要提出要求。 如果公司使用git / hg ,那么此问题将向您显示开发过程的调试程度。

7.您是否使用开发方法(scrum,看板等)?

在开发中,重要的是要遵循特定的方法(方法)。 最受欢迎的开发方法是迭代。 这种方法使您可以确定对项目的贡献。 以我的理解,如果团队使用某种方法论,那肯定是好的。 这使您可以确定效率。 它还可以帮助您了解分配给任务的时间表。 就像小学生一年中有四个季度一样,他们会获得分数,以便稍后确定该年的最终成绩。

8.项目中是否使用了监视系统(Sentry,NewRelic等)?

项目中监视系统的存在与测试的存在同样重要。 监视系统使您可以根据最终用户执行的操作来客观地评估整个系统的工作。 如果没有监视系统,则应考虑制成品的质量。 这就像做饭的厨师,但从不问任何人是否美味。

9.项目是否使用存储日志和使用日志的系统(ELK技术等)?

对我来说,这也是一个重要指标。 如果没有ELK,则很难确定系统中复杂错误的原因。 这个问题并不像第8个问题那么重要,但是值得一提的是,要了解团队处理复杂错误的经验有多丰富。

10.项目中使用了哪些数据库? 为什么是这些?

该问题旨在评估受访者的能力。 很多时候,在使用旧数据库时,我会听到类似“历史上发生过的事情”的信息。 我认为这个答案不合适。 技术人员必须了解他正在使用的数据库的利弊。 仅当您自己精通各种数据库及其差异时,才应问这个问题。

11.项目中使用什么版本的Python? 如果使用Python2.x版本,是否有计划迁移到Python3.x? 以及如何从一个版本迁移到另一个版本?

与前一个问题一样,该问题旨在评估受访者的能力以及评估其推理能力。 必须理解,雇主非常文盲,可以在面试阶段就发现此类问题。 在问这类问题之前,我强烈建议您自己深入研究。

12.公司正在寻找全栈开发人员还是后端开发人员?

仅当公司本身在面试前未指定时,我才问这个问题。 劳动力市场上的乔布斯全职开发人员经常出现。 许多公司发现这对自己有利。 我的个人经验告诉我,由于Web的出现,前端和后端的方向已经变得太不同了,因此没有全栈开发人员。 换句话说,“您不能坐在两把椅子上。”

在大多数情况下,公司对您不了解前端感到满意,并希望您可以在战斗中直接学习它。 我要澄清的是,整个开发人员的空缺对我个人来说是不可接受的。 许多人发现这是一个很好的机会,无需花一卢布就可以进入前端的丰富世界。

13.项目中是否使用了集装箱技术?

该问题是对第3个问题的补充。

14.向面试官稍微询问一下他在该项目之前的工作以及他在该项目工作了多长时间。

这个问题很重要。 受访者的经验越丰富,随着时间的推移,对您的技能的影响就越大。 在人员流动缓慢的小型公司中提出这样的问题特别好。

15.公司是否有年度/季度员工评估,如何进行?

对于任何员工来说,从同事那里收到反馈都是很有用的。 如果公司为此有特殊事件,那就太好了。 如果没有,那就没有什么可担心的了。 无论如何,没有人禁止以自由形式要求同事的反馈。

16.公司有加工吗? 如果是这样,它们抵消了吗?它们多久发生一次?

很少有人喜欢回收垃圾,特别是如果您是学生或哺乳父亲。 有大量的公司将回收再利用放在首位。 要了解该公司没有精炼厂或稀有工厂,有必要提出此类问题。 如果公司偶尔进行炼油,那么没有什么至关重要的。 如果提炼更加频繁,那么值得考虑进一步留在公司中的可行性。

17.公司的官僚机构有多强? (费率从1到10)
许多开发人员甚至都不知道IT领域中存在官僚主义,但是不幸的是,它存在。 这尤其适用于大型的老公司或与州合作的公司。 订单。 公司的官僚主义程度仅取决于管理层的想象力。 通常,官僚机构由各种形式的正式申请,外观,访问,公司几个部门之间的利益冲突以及用Word编写无聊的原始文档组成。 这种官僚主义的主要问题是对发展过程的强烈抑制。 在一家普通公司中,在一个工作日内完成的工作将需要数周的时间。 简而言之,公司的官僚机构越强大,产品的开发速度就越慢,您作为专家的发展也就越慢。

18.资源剥离的情况如何?

资源被理解为用于员工,服务器,域,许可证等的新计算机。 这个问题也可以归因于上一期的官僚主义。

19.面试官与项目中的新实施有何关系?

这个问题使我们能够评估团队内部的民主。 这个问题还将使我们有可能了解普通开发人员的声音对团队和指导者的影响。

20.公司是否参加过任何IT会议,并且公司是否有有关IT主题的出版物?

对于开发人员和公司来说,这次会议是一个很好的机会,以表明自己和他们的成就。 如果该公司已发布并且是会议的参与者,那么在某些时候您也可以利用这个机会。 如果这对您而言并不有趣,那么询问它是没有意义的。

21.公司内部是否有混搭?

在这里,我们将讨论团队内部或团队之间的开发人员调整。 米塔帕斯很重要。 它们使您可以确定在给定时间谁在做什么以及到底在做什么。 如果您在公开演讲方面遇到问题,这也将有助于您提高软技能

22.公司有实习生和指导制度吗?

实习生是公司的潜在未来。 如果公司有实习生,那么也许您可以成为他们的导师并分享您的个人经验。 指导也是您可以发展的领域之一。

结论


以上所有都是基于个人经验的想法,并非100%的真实信息。 该文章的主要思想是,不仅要检查候选人,还要检查雇主。 另外,在面试或面试前也不要紧张。 您需要了解,面试官与您是同一个人,他们也误会或不了解或不了解某些内容。

Source: https://habr.com/ru/post/zh-CN428283/


All Articles