这个面试问题对于php开发来说太难了.工作?

spr*_*man 12 php

我们正在寻找帮助我们增强和维护基于PHP的高质量交易网络应用原型的人.理想情况下,谁可以很好地沟通,并进行前端和后端Web开发(以及智能/完成任务等).在其他更一般的事情中,我一直在使用这个问题:

鉴于这种:
    $foo = array(1, 3, 7);
写一个函数(在这个白板上)来对数组的值求和.

这对我来说似乎很容易,但是却引起了几个鹿头灯的情况,这总让我觉得自己像个恶棍.

我已经在这里和那里(包括乔尔和杰夫的)阅读了一些帖子,说候选人如何思考,设计技巧,激情等等比任何特定的技术技能更重要,我同意这一点.此外,我可以看到在白板上编程有点不切实际.OTOH,这对我来说似乎很基础,我倾向于将它视为前端开发人员之间的精细首过滤器(谁知道他们的方式围绕html,css,以及如何复制和粘贴js函数或二),以及真正能够编码的人.思考?

触摸更多信息:我对各种答案持开放态度:array_sum,for循环,foreach循环.哎呀,如果他们想写一个ArraySum类,那就太过分了,但还不错.使用javascript或其他语言会很好,如果他们对此感觉更舒服的话.即使是有轻微错误的尝试也没关系,但我已经完成了几次冻结,所以我只是想要理智地检查自己.

Cha*_*rch 47

我个人认为这个问题太容易了.如果有人在面试中问我这个问题,我可能会忙着弄清楚这个"伎俩"是什么,因为它太简单了.

我认为清除绝对最差的程序员是好的,但要确保你没有一个特定的"正确"答案并拒绝接受其他任何东西.例如,不要只接受"使用array_sum()函数"作为正确的答案,它实际上只是一个测试,看看他们是否知道函数存在.

我之所以提到这一点,是因为我的未婚妻曾经接受过一次编程采访,并被问到她将如何扭转字符串.她提供了几种不同的算法来完成它,面试官告诉她每次算法都错了.她终于放弃了,他(不以为然)告诉她她应该刚刚使用了String.Reverse()函数.

不要那样做.请.

  • 在我的脑海里从来没有一个问题只接受"array_sum"方法,虽然这是我喜欢这个问题的一个方面:如果有人知道php很好,他们就会知道这个功能,但如果没有,仍然有很多标准方法.绝对存在"技巧问题"方面,但我很确定这不是我遇到的问题. (2认同)

ste*_*efs 17

在我看来,这个问题是完全有效的,并且对候选人说了一些(不是很多,但很重要),这取决于你投入多少时间.告诉她事先并不是一个技巧问题,它确实非常简单,所以她不会花很多时间去思考陷阱并尽量减少鹿的情况.投入你这样做只是作为一种措施,过滤掉申请编程的人,而不是真正了解任何事情,但希望他们无论如何都会被纯粹的运气雇用(如果他们知道如何编码,但只是紧张,那应该采取有点压力).让他们编码,但如果有$缺失或<?php标签是否存在,则不要集中注意力.

如果她提供array_sumsum_array作为答案几乎无所谓,特别是如果有问题的语言是PHP(但如果两个候选人是相等的,否则... 我甚至不记得我最后一次使用此功能).并且使用自动完成和语法着色(使用预定义的关键字)IDE与愚蠢的文本编辑器在这个事后看来很重要.在这种情况下,请求另一种手工制作的解决方案.

如果我处于提出问题的位置,我不会要求正确的解决方案,那么我会想办法让她想到如何解决这个问题,在特殊情况下会出现什么陷阱.试着找出她对编程的了解,而不是她对php的了解.试着了解情报,解决问题和创造力.即使在快速敲击代码时,altought体验也很重要,它不是一个常数.

我提供的解决方案,优点/缺点以及它告诉我的内容......

  • 内置array_sum(非常快速和definitley没有错误,但缺乏灵活性):我有一些传统的PHP项目的经验

  • for/loop构造(足够好,重新发明轮子.但是如果有不同的对象而不是数字就可以使用.专业人士:每个人都会理解它):如果没有预定义的复制和可粘贴的解决方案,我可以解决简单的问题

  • array_reduce(提供实现array_reduce,如果面试官想看到它):对于一个php程序员来说很不寻常,所以看来我在php沙箱之外有知识和经验

  • 一个ArraySum-Object(使用一种ArraySum::add($value)方法可以保存所有值但缓存总和):我已经习惯了至少一些oop-principles

  • function(){return 11; }(免责声明,这是一个笑话解决方案,但有效):我有(虽然原始)程序员特定的幽默 - 我个人对工作之外的编程感兴趣的标志 ......一些程序员的访谈员(但不是如果时间限制太紧,黑客可能会将此解释为愿意使用脏黑客作为占位符(aehm)

  • 一个递归的解决方案会很好.我可以解决一些更复杂的算法问题,而且大多数人都知道我简单的树和数据结构

  • 递归分而治之:奖金!我更了解算法.

试着从这个问题中尽可能多地获得(如果时间允许的话).最后你会对编程能力有很多了解,而且经验很多(不一定是PHP特定的).

我选择这个问题而不是让候选人写出快速排序 - 这是一个非常具体的问题,关于网络开发世界几乎从未需要的知识 - 随时都可以.

放弃

这个问题在......时没用

  • 面试官不是程序员.如果一个小伙子正在做这件事就算了
  • 面试的时间限制非常紧张.那么结果几乎是随机的.

另外,你在找谁?如果你需要一个廉价的咕噜编码器,即使这样一个简单的问题也应该有用.如果你需要质量和经验,不要浪费太多时间(但无论如何都要这样做).


Emi*_*l H 12

不,这不是太难.如果有人不理解循环的概念或如何遍历数组,那么他们就没有资格成为程序员.我还希望他们知道有一个内置函数(array_sum()),或者至少在哪里寻找它.

你可能想看看五个基本电话筛选问题,虽然你可能需要重新修改它们以满足你的需求.

  • 作为一个与一周中的几天不同的语言工作的人,我不会指望任何不知道或记得存在array_sum的人 - 特别是考虑到那里有多少狭隘和模糊的内置插件在PHP中.那就是说,*任何人的第一直觉就像给出的问题应该是一个循环. (7认同)

Uri*_*Uri 7

我个人认为,你可以要求在白板上编程的玩具问题是有限的.充其量,这些只是玩具,经常在网上论坛上传播,你的候选人会记住.

大多数PHP开发人员创建了可见网站 - 您可以看到他们的工作

对我来说,一个更好的问题是给他一个复杂的你自己的生产代码,并让他解释它的作用或如何改进,等等.大部分时间都花在维护上,最好是得到一个关于他的代码阅读技巧的想法,而不仅仅是代码编写.


gri*_*eve 5

简答:

编辑:只是为了澄清我认为这根本不是一个难题.无论语言如何.正如其他人发布的那样,即使他们无法使语法正确,至少应该能够以合理的伪代码写出来.

答案长:我经常会问面试问题,我希望候选人能错过.人们也可以对它们进行分类(难以开放),但我并不是在寻找答案.我期待看到以下内容:

  • 他们试图回答这个问题吗?有些人立即放弃了
  • 他们如何处理这个问题?即使他们沿着错误的道路前进,他们通常会做出好的假设并提出好的问题吗?
  • 他们在压力下保持镇定的程度如何?这个问题的目的很难,因此会有压力.他们是恐慌,保持冷静,退缩,说出来等等吗?
  • 如果我给他们提示和指示,他们能找到解决方案吗?或者他们听得多好,他们是否能够迅速吸收新信息?

偶尔我会对一个鞭子智能的候选人感到惊讶,并且编写一个快速而优雅的解决方案.那些是明确的守护者.但是我也找到了那些错过最终解决方案的人的好候选人,但他们显然是深思熟虑,合乎逻辑,并且给予足够的时间最终会解决问题.