9个实际的软件工程面试问题
忘记算法……我们真正应该要求程序员看他们是否具备所需条件?
> Photo by Michael DeMoya on Unsplash
总的来说,软件工程面试问题很烂。 我们当中有多少人面临的问题和挑战与我们在工作中实际所做的很少有共同之处? 我的意思是,来吧。 上一次有人真正写出生产代码来反向链接列表的时间是什么时候(在白板上也是如此)?
当然,这提出了一个重要的问题:我们应该问哪些软件工程候选人? 我们将面临哪些挑战,这些挑战将帮助我们判断他或她是否真的可以生存并成为一名真正的软件工程师,并且表现出色? 因此,我不得不考虑我们程序员经常面对的问题。
问题
我提出了九种方案,这些方案代表了我通常处理的事情。 然后我把它们变成面试问题。
因此,事不宜迟,欢迎接受本工程采访。 在此期间您将一直在此会议室中。 您将遇到许多面试官,每个面试官都会向您提出一些问题或要解决的挑战。 桌子上有一台笔记本电脑,一些面试官会要求您使用。 还有一个白板和一个记事本,如果您也需要使用它们的话。
祝好运!
问题1
这是您团队的JIRA Scrum板。 您需要将标记为ENG-320的问题单从其当前列"代码审查"移至"完成"列。 但是,JIRA不允许您这样做。 由于某些原因,将ENG-320拖到"完成"列时,它不会突出显示。
找出原因。
问题2
您需要计划一个会议,其中包括来自四个不同团队的代表。 这是每个团队的成员,以及他们的日程表。 为每个乐器团队找到至少45分钟的开放日历空缺,每个团队中至少有一名成员可以参加。
后续问题:现在找到一个可以容纳所有会议参与者的相同时间的开放式会议室。
问题3
您最近发布了一项新服务,该服务将用户数据存储到数据库中。 几周后,有人注意到用户界面中未显示某个特定的数据。 您的任务是确定数据是否首先保存到数据库中。
当您在本地和测试环境中运行时,一切都可以正常运行。 由于您正在处理个人身份信息,因此您不允许在生产中记录任何内容。 您也没有访问生产数据库的权限。 但是,假设他们可以帮助您适应下一个冲刺,则您将在两周内访问可以帮助您的DBA。
您有30分钟的时间解决问题。
问题4
您服务的错误率Grafana警报已在深夜发出。 事实证明,在凌晨小时内的音量已足够低,任何单个的瞬时错误都会触发警报。 不幸的是,一旦呼叫工程师醒来,问题通常会自行解决。
显示您将如何重写警报以最大程度地提高通话睡眠时间,同时仍解决需要通话注意的真正错误。
问题5
您的任务是构建一个微服务,该服务将:
· 公开gRPC端点,以允许客户端发布和检索数据
· 将数据存储在MySQL数据库中
· 利用Redis缓存
· 向Kafka发布消息
这是您公司的github存储库。 构建微服务时,应从哪些项目复制并粘贴代码?
问题6
您的经理今天打电话请病假,但是在发送一条消息要求您集中精力完成高优先级功能之前就没有请病假。
同时,另一个团队的高级主管要求您对服务进行故障排除,而您在最近的8个月中已经做了一点工作,该服务已经进行了一些工作。
您还刚刚被添加到Slack频道,专门解决正在发生的高优先级生产事件,即"可能对问题有所了解的人"。
弄清楚您今天将要从事的工作。
问题7
您已经对项目的git存储库进行了多次提交,现在可以将更改推送到源了。
六次提交之前,您引入了一个表示文件名模式的配置值。 您的安全团队添加了一个提交过滤器,该过滤器拒绝任何包括硬编码密码或其他凭据的更改。 不幸的是,该过滤器只是将您的文件名模式错误地标识为密码,并拒绝了您的整个推送。
撤消一个提交,使其他所有提交保持完整,然后找出如何重新实现文件名模式而不会触发安全过滤器。
问题8
这是您公司的入职文档。 当然,这已经过时了。 请按照文档进行操作,每当遇到无法解决的问题时,请确定您实际应该执行的操作,然后重写文档的那一部分。
后续挑战:每当您遇到任何根本没有任何意义的内容时,请将其重写以使其实际上具有一定意义。
问题9
经理刚刚要求您替换一位生病的同事面试一名工程候选人。 面试时间为五分钟。 您的经理不确定应聘者是否正在申请初级或高级工程职位。
提出一个合适的面试问题。
说真的…
我写这篇文章的目的是为了嘲笑软件工程面试,并以此(希望)产生一些笑声。 但是,当我写这篇文章时,我想知道:为什么我们在编程面试中不问更多类似这样的问题?
好的,也许不是这些问题。 当然,我们仍然想评估任何工程候选人的技术和编程技能。 但是现实是,我们需要解决的许多问题根本不涉及编程。 稍微挖掘一下一下,看看我们的候选人如何应对现实世界的问题是否有意义?
如果没有别的,那可能会带来一些笑声。