最近,由于我的工作,我碰巧选择了我公司的实习生。 记住要成为一名实习生/大三学生的每个人都应该记住,没有经验就被困在一个或多或少正常的地方是多么困难,他们将在这里花费资源进行培训。 由于新手开发人员的流动非常大,因此雇主有机会从中选择最好的人,至少是聪明的有前途的人,他们值得花时间在培训上,以便以后雇用他们。
每个公司都有自己的方法来寻找此类候选人。 今天,我们坚持以下原则:我们给出一个小的测试任务(对于一个有经验的开发人员来说,大约一个小时的工作),对于Java核心的知识就足够了,并要求将其放在github上。 我们不限制执行时间。 然后,定性完成任务,邀请申请人进行面试。

任务通常包含通过具有一个或两个实体的
控制台菜单以及一些字段的验证,来对文件执行CRUD方法。 举例来说,我会遇到一个经典情况,该用户需要根据给定的模板实施电子邮件和电话验证,并且该用户可以输入1到3个电话。 反馈很多,而且位置很少-因此,选择非常困难。
开始连续检查所有任务后,事实证明,通过启动和反馈每个任务需要大约30分钟的时间来测试性能,我不得不修改验证方法并获得标准,以快速过滤出质量不足的高质量代码。 例如,在github上打开一个解决方案,我发现所有代码都集中在几个类中,甚至堆积在一个包中-快速失败(关于OOP的原理是什么?)。
许多人可能会发现这种方法是不公平的,也就是说解决了问题,代码起作用了,但是实习生和下级的生活却很残酷无情。
在这方面,我提供了有关完成测试任务的建议列表
- 您的决定应符合职责范围
认真遵循解决问题的条件中列出的要求。 不要考虑实体中的字段,不要更改验证条件,等等。 等等。 这显示了您对细节的关注程度,这对于开发人员而言非常重要。 - 仔细检查已完成的任务
完成任务-检查性能。 首先是ToR中描述的主要功能,然后是附加功能。 尝试“破坏”您的应用程序:检查或输入足以完成任务的应用程序,如果您输入的数据无效,则数据应尽可能相似。 记住要修复发现的所有问题。 - 编码方式
我认为在UTF-8中,所有文件都必须使用相同的编码。 为此配置您的IDE。 请记住,如果您使用Windows,那么审阅者可能会使用Linux,而额外的带编码蹲坐会浪费审阅者时间。 - 不要一次提交
解决问题时需要提交,并在提交中添加清晰的描述。 如果您会英语,那英语会更好。 这间接表明您不仅在git中合并了别人的解决方案,还亲自编写了代码。 - 尽量不要合并别人的决定
考虑到您声称6月份是最高限额,大多数情况下,您仍然没有足够的经验来使用其他人的代码。 任务的条件可能会略有不同,并且当您仅复制其他人的解决方案时,它可能已经与当前任务有些不一致。 并且任务必须与任务完全完成(请参阅P1)。 - 添加自述文件
将readme.md文件添加到项目根目录。 简要描述您的应用程序,必要时列出启动的其他说明。 如果您还有其他任务要完成,也可以在其中添加自述文件。 例如,如果我对应聘者感兴趣,则可以查看他的其他代码。 而且,如果您不去这里,也可以将此代码附加到简历中。 - 制作方便的菜单
该应用程序必须是用户友好的。 请记住,检查时间通常是有限的,因此请向应用程序预加载数据,并添加一种方法来显示所有实体(条件中存在)。 菜单导航应该很方便,例如使用数字。 有时他们以删除实体的方式来实现它,您需要在控制台中输入“ Delete”。 但是,不能超越它并超越传统知识的范围。 - 尽你所能,尽力而为。
由于您已决定执行测试任务,因此以最大的回报率寻求解决方案。 即使该任务看似微不足道且简单,您也无需正式采用其解决方案并在膝盖上编写代码。 如果您不去这家公司,那么您将在github上拥有一个完整的解决方案,这是实践。 - 不要忘记OOP的原理
在您看来,一个小任务,不要忘记-该任务是一个测试,而Java主要是一种面向对象的语言。 他们将不仅关注应用程序的可操作性,还关注代码。 代码质量是解决方案中非常重要的部分 。 不要写意粉代码。 将所有内容放入类,包中。 必要时创建接口,如有必要, 转移到ENUM 。 - 尝试使用设计模式
成功应用至少一个设计模式将表明您对设计模式有一个概念(或没有)。 在应用这种模式之前,先弄清楚这个主意是什么,应该如何工作以及为什么要发明它。 如果我在代码中看到了模式,那么在面试中我可以问一个有关所应用模式的问题。 - 使用资源
最好将显示给用户的所有消息都带入资源并从中获取。 这将向审阅者显示您知道如何使用资源并了解它们的用途。 消息最好以英文显示。 - 记住要重新定义等于和哈希码的位置
- 使用Java8 +功能,例如lambda表达式,流
不要忘记,更经常的是集合比数组更方便。 如果选择不支持集合,请使用正确的集合。 您应该在面试时准备好证明您的选择对某个特定收藏或数组的合理性。 - 测验
如果可以的话,编写测试,但这已经是五个,还有一些优点。 通常,可以理解,任何好的代码通常都包含在测试中。 尽管对于示例中给出的任务来说,没有测试将不是一件容易的事,因为这是一个了解Java核心的简单控制台应用程序。
总结
很大一部分申请人发送了没有错误的问题解决方案和可靠的密码-经过自然选择并进入下一轮的单位。 所有表演者都会收到反馈。 那些写出了坚实代码的人-个人反馈,那些把意大利面条写在膝盖上的人-更加普遍了。
PS:希望我的建议能帮助您,亲爱的申请人更好地执行您的测试任务,并减少因流泪而使测试人员哭泣的可能性。 祝您搜索愉快,并且是一个很好的起点!