嗨哈布罗夫斯克 在Java QA工程师课程开始前夕,我们与您分享本材料的继续
。

在我的第一次采访中,我不知道这一点。 但是开发人员不只是看着我-他们期望如此。 他们希望我按照以下算法行事:
完善任务- 问:“回文一词是什么意思?”
- 这回答了问题:候选人是否会立即解决问题-甚至没有意识到其技术条件还不完全清楚? 还是想一想并澄清要求?”
“我们的意思是从左到右和从右到左读取相同的序列。 您的决定必须区分大小写:小r与大r不相同。”
从例子开始- 问:以“收入”和“小屋”为例。 诸如“玫瑰落在Azora的脚掌上了吗?”这样的短语呢? 空字符串或单个字符串呢?
- 这回答了以下问题:候选人会考虑足够数量的边缘案件吗? 它将有多准确和专心?

在开始代码描述之前,请使访问者简短地熟悉算法
候选人如何解决问题? 他会大声说出自己的想法,以便面试官听到吗?例如,
string s = "alla"
。
我们可以对Java字符串charAt(int i)使用helper方法。 在方法中输入行索引,它将在索引处输出字符:
s.charAt(0) == 'a' s.charAt(1) == 'l' s.charAt(2) == 'l' s.charAt(3) == 'a'
要找出字符串的长度,可以使用
length()
方法:
s.length == 4
要找出最后一个字符,可以使用:
int len = s.length s.charAt(len - 1)
我们从0开始计数,因此最后一个字符为“长度减去1”。
我们将第一个字符称为“第一个”,最后一个称为“最后一个”。
- 如果第一个字符s.charAt(第一个)与s.charAt(最后一个)不匹配,则这不是回文。 输出假。
- 如果第一个字符s.charAt(第一个)与s.charAt(最后一个)匹配,我们将继续评估下一组字符,将一个字符从“第一个”和“最后一个”中移出。 如果一切都匹配,则打印true。
- 与访问员检查算法后,您可以开始编写代码:
public boolean isPalindrome(String s) { int first = 0; int last = s.length() - 1; while (first < last) { if (s.charAt(first) != s.charAt(last)) { return false; } first++; last--; } return true; }
调试与测试
- 以最初的测试用例并想像一下:如果将它们插入代码中会发生什么。
- 面试人员在调试时会检查您的注意力。 ( 您是否注意到本机代码中的错误而没有外界提示? )。
- 如果您能给他们留下深刻的印象,面试官会给您一些提示。 ( 如果我们给应聘者一个提示,他会使用它们吗?他准备好听别人的意见吗?他可以和更高职位的人一起工作吗? )。
向其他人显示您的代码并收集他们的反馈
我向我的朋友开发人员展示了回文问题的解决方案。 他做鬼脸:“为什么首先使用变量,最后使用变量? 如果可以使用for循环,为什么还要使用循环呢? 一切都可以变得更短,更优雅,更快:
public boolean isPalindrome(String s) { int len = s.length; for (int i = 0; i < len / 2; i++) { if ( s.charAt(i) != s.charAt(len - 1 - i)) { return false; } } return true; }
接下来是什么
一夜之间掌握编程语言将无法正常工作。 因此,最好遵循以下算法:
- 查找在线基本编程任务。
- 尝试用纸和笔解决它们。
- 如果您无法解决它们,请查看编程语言的官方文档,然后查看哪些内置方法可以为您提供帮助。
- 在寻找别人的决定之前先制定自己的决定。 如果您自己收集信息并进行研究,则该信息有可能永久地落在您的脑海中。
- 不要安排填字游戏。 因此,您只需将信息保存在短期内存中即可。
- 每天15分钟练习短期运动。 因此,这些信息将进入长期记忆,即使在面试过程中承受极大压力,您也可以记住它。
- 不要仅仅为了通过板上的测试就将自己暴露于所有这些折磨中。 瞄准更高! 为自己设定成为一名更专业的程序员的任务!