技术分享

Java技术测试

  技术测试可以是电话面试的补充,甚至可以替代电话面试。技术测试可能是电话面试的一部分,你也可能会被邀请到现场进行技术测试。
  技术测试通常包含和具体职位性质相关的众多领域的问题。如果应聘的职位是和Web应用相关的工作,那么可能会问一些关于Servlet API的问题,有可能涉及一些框架,例如Spring MVC和Tomcat。你应该注意应聘职位的性质以及会使用到的语言和框架。
  技术测试通常是单独进行的,而且可能采取多种不同的方式。有些面试官使用的是纸笔测试的方式,喜欢问一些答案固定的简单问题,而有些面试官可能会让你写简单的程序,代码长度一般在10~20行。
如果让你在纸上写代码,那么应该特别注意代码的可理解性。尽管任何宽厚的面试官都会谅解一些低级错误,例如方法命名错误或漏掉分号的错误,但是你也一定要致力于不给面试官任何不让你参加下一轮面试的理由。
另一种常用的测试方法是在一台能用IDE的计算机上进行编码测试。这种测试方法更加公平,因为这种方式更接近于候选人在进行日常工作时的环境。面试官可能不会提供互联网访问,但是可能会提供离线的Java文档。
 在面对使用全功能IDE或只有一个编译器的测试时,千万不要写出无法通过编译的代码。
  不论采用的是哪种方式,都请编写单元测试。单元测试要先写。尽管会耗费一些额外的时间,但是可以确保编写的代码是正确的。即使面试没有提到要写单元测试,编写了单元测试也能向面试官展现出你的用心和对细节的关注。这种行为也会展示你以自己的工作为骄傲,也以自己为骄傲。
  例如,JUnit 4以及更新版本中的方法命名可以随意选择任何命名约定,因此如果碰到了类似下面这样的问题:编写一个简单的算法来归并两个已经排好序的整数列表,那么你可以迅速编写一组测试用例,这些测试用例之后可以用作JUnit测试的方法名。对于上述问题,下面给出了一些测试用例的例子:
twoEmptyLists
oneEmptyListOneSingleElementList
oneEmptyListOneMultipleElementList
twoSingleElementLists
oneListOfOddNumbersOneListOfEvenNumbers
oneListOfNegativeNumbersOneListOfPostiveNumbers
twoMultipleElementLists
   通过测试用例的名称应该很容易理解每一个用例的用途。给定一个定义良好的API之后,应该在5~10分钟之内写出测试用例,然后可以在实现归并算法时频繁运行这些测试以进行完整性检查。这种做法可以保证你顺利地编写和重构真实的代码。
尽管这些测试用例可能无法覆盖归并两个已排序列表的算法的所有代码路径,但是应该可以使你和面试官对你的具体实现产生足够的信心。
   大部分现代的IDE都可以在没有互联网访问的情况下自动导入JUnit JAR,因为已经捆绑在IDE中了。要确保自己知道在一些IDE中应该怎样操作,因为在面试场合中可能没有选择。至少要知道在Eclipse和IntelliJ中怎样操作。这些IDE都很聪明,能够识别@Test标注并提示导入JUnit JAR。
尽量简洁快速地编写测试用例。任何理智的面试官都不会介意漏掉一些古怪的测试用例,他们会理解你想要在给定时间内尽可能展示自己能力的意图。
   如果你进行的面试包含纸上测试和上机测试,那么你可以将纸上的代码输入到笔记本电脑中,通过这种方式检查纸上写的代码。有一些公司会采取这种方式,他们会在纸上提供一些简单的试探性的Java问题,然后要求你编写一个更有深度的小应用程序。
   考虑到你申请的是开发者的工作,因此在面试过程中被要求展示自己的技术能力是理所当然的。不过值得注意的是,并不是所有的情形都如此——面试的标准差异巨大,因此只和招聘经理进行简单的沟通之后就结束了的情况也不是不存在。这种方法对于雇主来说通常并不是很好,谢天谢地现在这种方式不像过去那样常见了。
与面试流程中的其他每一个步骤一样,技术测试也需要好好准备。在工作细节描述的页面中应该包含了很多技术信息,如果使用的语言、技术和框架等。在公司的招聘网页上应该可以找到工作细节描述页面,如果找不到的话,可以向公司请求一份。不会有人要求你对工作描述页面中的每一点要求都了如指掌,但是你对自己的实力展示得越多越好。雇主寻求的是对学习新事物和适应新环境的意愿,因此在面试过程中要注意表达出这些意愿。最重要的是,要表达出愿意学习公司所使用的技术的意愿。
  再次强调一下,要了解对方公司所做的业务,在面试过程中甚至可能被问到你对公司的具体了解,也可能被问到你所面试的团队开发的应用软件的具体问题。如果这家公司有一个对公的网站,请一定要用好这个网站。如果申请的职位是游戏过程中的一个步骤,请确保你已经玩过这个游戏。有一些雇主有这样的规则,那就是如果面试者没有使用过面试团队所开发的产品,那么一定会拒绝这位面试者。