Copilot人工智能可否破解Facebook的编程面试题?- Giuliano


Github Copilot 是OpenAI作为“您的AI对程序员”创建的新产品。它是一个插件,您可以在VSCode中安装,使用和安装都很简单。
GitHub Copilot是如何工作的?由一种称为Codex的深层神经网络语言模型提供动力。Codex是一个经过微调的GPT模型,在Github代码的基础上进行训练。
Github Copilot在一个名为HumanEval的评估集上进行评估,该评估集由OpenAI创建,专门用于测量从文档字符串合成程序的功能正确性。测试时,该模型解决了28.8%的问题。
Copilot根据各种许可证接受公开代码培训,这一事实引发了许多关于其法律含义的讨论。我们将通过代码库的技术视图对其进行分析。
  
三道题
在过去的一周里,我对它进行了测试,想测试一下它有多强大,从40个Facebook编码面试问题中抽取三个问题,应聘者可以用这些问题来训练Facebook面试,看看Github副驾驶有多强大。。

  • 第一个问题:向左移动零

给定整数数组,将所有0元素向左移动,同时保持数组中其他元素的顺序。
Copilot给出的解决方案似乎接近我们想要的,但并不完全是我们想要的:
def move_zeros_to_left(array):
    i = len(array) - 1
    j = len(array) - 1
    while i >= 0:
        if array[i] != 0:
            array[j] = array
          j -= 1
        i -= 1
    while j >= 0:
        array[j] = 0
        j -= 1
    return array

逻辑非常接近我们想要的,似乎我们只需要修改一点函数就可以得到问题所要求的。
  • 第二个问题:合并间隔

您将获得一个间隔对数组(列表)作为输入,其中每个间隔都有一个开始和结束时间戳。输入数组按开始时间戳排序。需要合并重叠的间隔并返回新的输出数组。
Copilot展示了它令人印象深刻的预测算法,非常接近地预测了我们想要的。Copilot在帮助程序员写函数和每一行的过程中帮了大忙。虽然不得不在这里和那里纠正一些错误,但似乎Copilot编写解决方案的速度比我在没有工具帮助的情况下要快得多。
  • 第三个问题:反向词

对于第三个问题,我们用一个更复杂的问题测试了GitHub Copilot。我们想把每个字都倒过来。例如,对于输入“Hello World”,我们希望返回“olleH dlroW”。
Copilot不能很好地处理具有构建块链的程序。在第三个问题中,有两个构建块链是正确实现这一点所必需的。程序需要还原句子中的每个单词和句子中的单词。这可能就是Copilot不能表现得很好的原因。
 
总结
根据我处理这些问题的经验,并试用了Copilot一周多,这个工具似乎绝对无法通过一个科技巨头的编码面试。
但在我们已经尝试过的挑战上,它肯定已经足够接近了。尽管我们已经尝试过网络上的挑战,所以很难判断当面对一个不一定在网络上的新挑战时会是什么样子。
然而,Copilot似乎是一个超级强大的工具,它可以提高开发人员的生产力,并帮助在VSCode上使用它提高开发速度。我认为随着OpenAI和Github获得用户反馈并改进模型,它会越来越好。随着语言模型变得更加强大,如果软件社区采用Github Copilot,它肯定会变得更好。