如何使新手开发人员能够在面试中生存而又不会在工作中发疯



译者的话:经验丰富的程序员Valery Aleksiev 谈到了软件开发人员在其职业生涯之初的最佳做法。 特别是,哪些工具值得使用以及在面试中要寻找什么。

我职业生涯的最初几年是密集训练的几年。 我遇到了一个残酷的现实,意识到我需要获得很多以前从未想过的不同技能。 因此,我决定为其他开发人员写一个小指南。 本文揭示了一些主题,例如访谈,作为程序员的工作以及有助于改进的资源。

求职面试


作为程序员开始职业生涯后,您会立即意识到面试很烂。 他们可能对所有相关方面都非常可怕。 他们只是时间的杀手,压力的产生因素,也是成功事业的第一个障碍。 但是您必须与他们打交道,所以最好知道要做什么。

战斗准备

问题和任务可能非常不同,例如,我将引用流行的FizzBu​​zz任务。

编写一个显示从1到100的数字的程序。但是,对于三个数字的倍数,您需要输出Fizz而不是数字本身,对于五个数字的倍数,Buzz。 对于三和五的倍数,请显示单词FizzBu​​zz。

一切似乎都像一天一样简单明了,对吧? 实际上,大多数初学者程序员在面试时都失败了。 我什至看到高级职位申请者没有完成任务的情况,而且他们可以访问网络。 我的建议是在面试之前以您最常使用的编程语言完成此任务。 否则,面试对所有参与者都是浪费时间。

当然,您需要更多的知识。 特别是:

  • 基本数据结构和算法:链表,数组,树和排序。
  • 有关“您的”语言的常规信息,包括字符串不可变性,内存管理等。
  • 面向对象的编程概念,例如类与对象以及继承。

如果要从最好的方面展示自己,所有这些都必须字面上打磨。 我可以建议这样的资源,以帮助准备面试:

  • “破解编码面试 ”,只是一本很棒的书,其中包含有关大量编程问题及其解决方案的信息;
  • CodeWars ,一个具有不寻常编程任务的网站,您可以使用各种语言在浏览器中直接解决。

Skillbox建议:实用课程“专业Web开发人员”

我们提醒您: 对于所有“ Habr”读者来说,使用“ Habr”促销代码注册任何Skillbox课程时均可享受10,000卢布的折扣。

还有一点



有几点可以帮助您获得更多的知识和经验。

首先,学会清楚地陈述自己的想法,并描述自己的知识和能力。 了解如何制作好和折叠的简历。 这听起来可能很愚蠢,但是许多求职者都不知道该怎么做,他们既无法在个人会议中解释自己的身份,也无法撰写有能力的简历。

其次,在GitHub或任何其他开放存储库上发布您的代码示例。 代码示例应该不会太复杂,但是需要使代码整洁合理。 这是您在面试前展示一些技能的机会。

尝试参加一个开源项目。 这将显示您的经验并教会您团队合作。

面试官

是的,面试不仅要问你。 您可以而且应该对您的未来工作和公司的各种细微差别感兴趣。 仔细听答案。 它们可能非常重要,包含有关新公司的名称,团队和工作的明确信息,但不是非常明确的信息。

以下是一些要提问的示例。

我的标准工作日是几点?
这是一个重要的问题,因为不同公司中软件开发人员的任务可能会有很大差异。 如果答案不太自信或含糊不清,则可以将其视为警告,表示此处有问题。 雇用您的人应该对您为什么是公司有清楚的了解。

您如何测试软件?
理想情况下,测试应该是多种多样的。 如果答案是“我们只是立即编写所有无错误的东西,哈哈”,您应该以一种存在错误的方式理解这一点,但是没有人想要或无法修复它们。

您正在使用什么版本控制系统?
一个重要的问题,因为这对于团队合作是必要的。 如果答案是:“什么,版本控制系统?” -然后迅速而远离这样的采访。



如果您的对话者开始谈论自定义系统,那么这家公司中的任何事情也不会等着您,因为很长一段时间以来这里的基础结构显然都没有更新。

您是否进行代码审查?
实际上,代码审查是团队合作中的重要一步,因为它使您可以识别许多错误。 如果您的回答是否定的,则意味着团队的工作表现不是很好。 当然,可能会有例外,但在大多数情况下是例外。 如果您被告知诸如“我们彼此信任”之类的话,那么值得考虑。 最有可能的是,没有人验证这家公司的任何东西。

您可以提供哪些教育计划? 程序员必须不断发展,因此大多数公司都提供了学习的机会。 如果不是这种情况,那么要么是钱问题,要么是开发人员经常更换。



您使用什么软件开发过程?
在任何一家有两个人以上工作的公司中,团队的整体工作必须采用某种算法,即简化流程。 如果没有这样的事情,这家公司的工作就像骑着一辆会燃烧的自行车,周围的一切都会燃烧,每个人都会燃烧。

您如何解决技术债务问题?
技术债务或编码债务,是一个标识代码或应用程序体系结构中长期存在的错误的术语。 问题不断累积,最终成为进一步开展该项目的严重障碍。

如果您回答说没有解决方案,而公司正在“专注于新功能”,那么问题很可能已经扩大到无法解决的程度,否则混乱将在不久的将来开始。

您能谈谈企业文化吗?
不同的公司有着截然不同的氛围和文化。 但请记住,几年中您将需要每周40个小时以上的时间在团队中,所以请听取您的提示。

担任程序员


好的,您经历了面试的所有阶段并找到了工作。 恭喜你!



现在呢 您需要意识到很多有趣的事情,而不是事实。 由于我们是程序员,所以我们开始讨论代码。

好代码

它必须满足以下条件:

  • 易于阅读,因为对代码的分析比对代码的编写要频繁得多。 因此,您自己和您的同事都应该对您的代码可读和理解。
  • 可靠。 您必须确保正确使用了所有类和方法,并且不会导致程序崩溃。
  • 优化。 您不应该是一个完美主义者,但是您仍然需要定期检查代码。 您应该始终准备进行一些代码优化。

这里还有一些要学习的东西。

您不会进行太多编程。

是的,这看起来似乎很奇怪,但是实际上您将在以下方面花费更多的时间:

  • 调试
  • 阅读代码;
  • 会议和写电子邮件/答案;
  • 规划。

让我们谈谈对于程序员的职业至关重要的技能。

调试和读取代码



  • 为了成为调试专家,您需要确定合适的工具。 大多数流行的编程语言都具有调试所需的工具。 了解它们,学习如何使用它们-这将为您节省大量时间。
  • 了解基础,代码库的结构。 您可以使用ReSharper,grep或Sourcegraph之类的工具学习代码。
  • 了解手册。 如果了解到很少有开发人员学习技术文档,您会感到惊讶。 结果,许多人根本不知道软件应该如何工作,这意味着更多的时间花在了调试上。 只需阅读文档-这样可以节省您的时间。

组织与计划

由于您需要与同事进行大量交流,计划和执行任务(以及同时执行一些任务),因此您需要能够安排时间。 这将帮助您:

  • 待办事项/任务。 您的公司很可能拥有一个用于维护任务和监视其执行的系统,但是启动您自己的系统不会受到损害。 使用Trello,Todoist或其他工具。
  • 注意事项 在此过程中,您通常需要记住各种必要的小事情。 最好记录下来-例如,使用Evernote,OneNote和其他工具。
  • 图形和可视化。 最好使用Lucidchart,Visio等工具评估您的效果。

什么时候使用库?

几乎总是如此。 无需一次又一次地重新发明轮子。 在大多数情况下,不使用库而工作会浪费时间。 当然,这并不意味着您应该对如何使用算法或数据库的结构一无所知,因为您需要了解如何以及在何处使用这一切。

大多数流行语言的标准库都非常高效。 查看文档以更好地了解如何使用它们。

如果其他库有助于节省时间,则不要害怕使用它们。 可以是:

  • 开源库,您可以在其中评估代码的质量。
  • 根据MIT和BSD许可的库,您可以毫无问题地使用它们。 使用GPL时要小心。
  • 那些已经使用了很长时间并且具有广泛功能的产品。
  • 支持-那些定期接收更新的人。
  • 由其他公司/项目使用,可能表明其可靠性。

持续改善

听起来有些老套,但您甚至需要每天在工作中以及业余时间学习。 在线课程,书籍,博客以及第二(第三)种教育对此有所帮助。 也值得关注会议和各种研讨会。 在最著名的会议中,我将挑选出GOTO(一般方向),Strange Loop(也很一般),PyCon(Python),CPPCon(C ++),DEF CON(安全),Fluent(webdev)。

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


All Articles