查看原文
其他

亚马逊QA/测试工程师面试究竟考察应聘者哪些能力?(附一批面试题)

Test Ninja 软件质量报道 2022-06-03

毫无疑问,亚马逊(Amazon)是IT行业中最好的电子商务公司和最高的薪酬有力竞争者之一,它聘请了不同层次的最佳人才。
亚马逊的招聘过程足够严格和强大,足以筛选出适合职位描述的优秀人选。这就是为什么应聘者需要经历好几个阶段的面试的原因,而且最终只有少数的候选人过五关斩六将,最终赢得职位。
一个普遍的事实是,如果我们事先好好计划面试或任何其他活动,那么事情会有很好的结果。因此,这篇文章就是想让你了解亚马逊如何组织面试以及亚马逊质量保证(QA)工程师可能提出的问题。这样,你就可以清楚地了解Amazon对QA工程师的期望,如何使自己成为胜利的候选者或优秀的测试工程师,也可以在我们自己的面试工作中借鉴Amazon的经验或实践,为自己公司选到优秀的SQA/测试人才。


因此,让我们走进亚马逊招聘人员的场景中,开始领略Amazon面试QA候选者之风景。
  1. 测试技能评估。

  2. 编码技能评估。

  3. 分析技能评估。

  4. 行为测试。

  5. Bar raiser(抬杠者)

  6. 要记住的事情。


~ 测试技能评估 ~

在第一轮中,面试官将评估你在计划测试策略和测试用例方面的能力。
你将获得实时插图,以提供测试策略以及一组测试用例。这是一项基本测试,可让你感到压力并观察自己的表现。面试官可能会强调你需要对测试用例生成部分进行详细说明。以下是在此类采访中询问的示例测试方案的列表。
  • 为自动售货机创建测试计划和测试用例?[功能测试]

  • 创建测试用例以破坏Amazon系统?[聚焦负面测试]

  • 编写测试案例以检查Amazon系统的健壮性?[压力测试]

现在来看一些有关亚马逊QA工程师职位的示例问题。


1. 复习一些真实的示例问题。

在这里,我们列出一些实际常见的问题,从而能了解面试官可能提出哪些要求。
  • 为给定场景编写冒烟测试。一个系统具有三个模块,开发团队修复了一个模块的缺陷,而该模块是从其他模块获得输入。

  • 为以下用例创建测试计划,首次推出销售电子书的网站。

  • 为给定场景编写测试用例。客户选择使用信用卡付款方式购买一本书。

  • 为某应用程序编写测试用例。该应用将文件(例如,文本或pdf)从本地计算机上传到dropbox。

  • 在生产环境中发现错误。QA未及早发现的原因可能是什么? 

  • 确定与通过信用卡在线支付有关通过移动应用程序进行购买的测试用例。 

  • 每次打开闹铃时,结果手机关机,你将采用哪种测试方法?

  • 编写测试用例,以验证输入为HTML页面URL的API。API将解析页面,读取标签内的数字,对它们进行排序并将其存储在文件中。


2. 找出一些棘手的问题。

  • 编写测试亚马逊网站的计划。假设它有两个类别,每个类别有100种产品。它使你可以购买产品,询问客户信息并支持订单跟踪。

  • 你将如何测试Amazon搜索功能,包括基于类别的搜索?你将自动执行哪些测试,而不会自动进行哪些测试?

  • 有一个图表显示缺陷处在“正在处理”状态所花费的平均天数。X轴反映每天/每周/每月的持续时间。Y轴表示天数。制定测试条件以验证该图。

  • 用户订阅表单具有电话号码字段。JavaScript将其限制为仅接受数字。但是后端将它们存储为文本。认为有问题吗?问题严重吗(高/中/低)?说明理由。


~ 编码技能评估 ~

在第二轮采访中,面试官将考你编码问题,并要求能处理好数组和字符串等输入/输出的数据结构。如果你精通任何一种编程语言,你就容易通过这轮面试。完成编码后,面试官可能会要求你编写测试脚本。
  • 编写脚本以计算数组中给定元素的出现次数。

  • 什么是内存泄漏?编写一个shell脚本来查找内存泄漏。

  • 以数组形式给出数字。编写一个程序将所有零移动到末尾。

  • 给出了两个大小为7和3的有序列表。第一个列表的末尾有三个空位。以最小的数量将它们合并排序。步骤。

  • 编写脚本以打印编号。给定字符或字符串中所有字母的出现次数。

  • 如何反转N子集中的数组?例如输入:[1,3,5,7,9,11,15,17,19],输出:[5,3,1,11,9,7,19,17,15]。

  • 编写代码以计算给定字符串中的重复字符。

  • 计算字符串中字符的频率。打印每个字符及其频率。例如对于输入<abcabc>,输出应为<(a,2),(b,2),(c,2)>。

  • 如何查找给定的算术表达式是否有效?

  • 在整数排序数组中打印数字的第一个和最后一个出现的位置,如int []列表= {1,2,3,4,5,5,7,8}

  • 编写程序以打印字符串中的第一个非重复字符。例如,给定字符串“Is it your first company” 返回“ u”。

  • 编写代码以螺旋形式打印2×2矩阵。


~ 分析能力评估 ~

面试官主要检查你如何解决问题和进行调试,包括如何解决算法问题。你可以使用任何已知的编程语言。基本的分析技能和数据结构知识将帮助你顺利完成任务。你可能会遇到与调试相关的问题,例如“如何调试出现404错误的网站?”或“你将如何检查为什么用户无法将商品添加到购物车?”。在这里,你需要深入思考并提出可行的解决方案。
  • 一直运行到昨天的桌面Java应用程序今天崩溃了。你如何调试这种情况?

  • 你正在安装设备驱动程序,它崩溃了。你将如何调试?

  • 你正在尝试运行视频文件,但未打开。你将如何调试?

  • 错误跟踪系统无法正常工作。在这个情况下,你会怎么做?


~ 行为测试 ~

面试官将评估你的适应性、竞争力、信心和合作能力。在这一轮中,问题可能会根据你所申请的职位而有所不同。
  • 你为什么要离开上一家公司?

  • 加入亚马逊的原因是什么?

  • 你不喜欢上一份工作吗?

  • 你如何为产品质量做出贡献?

  • 你如何为我们公司的发展做出贡献?

  • 加入亚马逊后你将采取的第一个举措是什么?


~ Bar Raiser ~

在这个回合中,你可能会遇到与之前任何回合有关的问题。Bar Raiser会在你认为你可以提高亚马逊标准的范围内对你进行调查。你必须证明自己已经掌握了上面讨论的所有能力,展现毅力和遏制狂妄。

  • 这是一种公开回合,候选人可以回答各种问题。

  • 这一回合就像结对编码那样,你必须为某问题提供优化的解决方案。

  • 与其它几轮面试相比,这轮相对困难。

  • 这是确保员工素质达到一定门槛的过程。

  • 面试官善于询问后续跟踪性的问题,其目的是暴露你的自然倾向。

  • 这轮面试的大多数情况,面试官通常会询问行为问题。


Bar raisers是一群在各个岗位都是精英的评估人,在亚马逊在招聘环节中扮演重要角色,对应聘者录用与否拥有表决权,保证亚马逊能招聘到优秀人才的保证。即使应聘者应聘的岗位不是他们所擅长的领域,也不影响他们对应聘者的表决权。

这个由Bar raiser面试应聘者的战略是公司创建初期就开始实施的,后经亚马逊CEO贝索斯改进并一直实施到现在。亚马逊相信这个策略能将不适合公司文化的人筛选出来,然后帮助亚马逊在这个电商竞争的时代保持先进性。

根据一名亚马逊前员工说,目前亚马逊内部共有几百个Bar raisers,这项工作能导致更快的升职。Bar raisers是一项志愿工作,没有额外的报酬,每个Bar raiser每周大约要面试10个人,每个人大约需要2-3个小时,包括笔试和面试等,会占用较多的时间。这些Bar Raiser在做招聘工作的同时还要做好本职工作,比如财务、营销和开发等。所以有些员工也不想做Bar raisers,机制存在着一些问题,也造成Bar raiser的缺失。


~ 要记住的事情 ~

  • 对于每个问题,首先想出一个简单的解决方案,然后考虑一个最佳解决方案。

  • 用清晰正确的语法进行编程,面试官是在没有你干预的情况下理解代码。

  • 你应该能够分辨出代码的复杂性。

  • 尝试通过有用的具体实例来支持你的答案。

  • 不要混淆,要求澄清。它不会伤害但会有所帮助。


~ 其它面试题 ~

  • Test plan for Amazon login screen

  • From a given list of array (Not sorted) find the second largest value

  • Find the prime numbers from the given list of array (1 -100)

  • Find the shortest path between 2 points on a 2d matrix

  • Find the union of two strings?

  • Given an array with numbers 1-5, how would you subtract one number from each index?    

  • Given an array with numbers 1-5, how would you subtract one number from every EVEN number in each index?   

  • How to automate an API that retrieves bank, card holder information based on Credit card number is given as input.  

  • How would you test payment processing. 

  • What else would you test? 

  • Have you been able to work on multiple projects?  

  • Write a function in any language that will print "AN" if a number is divisible by 8, "ANIM" if divisible by 16 and "ANIMAL" if divisible by 32.


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存