13 Behavioral Software Engineer Interview Questions, Answers
软件工程面试不仅仅是关于编码问题。正如Simple Programmer从一开始就传达的信息:你的"软技能"可以在求职和整体职业成功中决定成败。学习如何展示公司正在寻找的确切行为属性——这样你就可以在下一次面试中获胜,并作为一名软件工程师走得更远。
如何回答行为问题
目标导向和社交智慧
当面试官要求你介绍自己时,并不是闲聊——他们是在评判你是否具备他们希望在候选人身上看到的某些特质。
通过讲述关于你经历的引人入胜的故事,你可以让你有利的特质闪耀出来,而不会显得过于直白或不诚实或吹嘘。
知道他们在寻找什么
公司筛选的主要属性是:
- 你在展示对团队成员的同情心和领导力的同时解决问题的能力
- 你为实现公司使命目标的热忱
- 你对技术的承诺以及尽可能好地使用它
- 你的个人展示:你的魅力和沟通技巧
以NSAR格式准备你的故事
这个回答行为面试问题的模板是由《破解编码面试》的Gayle McDowell创建的:
- Nugget - 简要介绍和总结你的故事
- Situation - 以简洁、引人入胜的方式解释发生了什么
- Action - 展示你如何处理情况,展示你的积极品质
- Result - 让他们知道由于你采取或影响的行动发生了什么。如果可能,用数字支持
用你练习过的故事制作一个网格
为了记住你想在答案中使用的故事,将它们可视化为一个简单的网格会有所帮助。这是一个你可以选择的示例布局(再次受到Gayle McDowell工作的影响):
品质 | 第一份工作 | 第二份工作 |
---|---|---|
领导与影响 | 故事#1 | 克服挑战 |
处理错误 | 故事#2 | 单元格 |
团队合作 | 故事#3 | 单元格 |
取得成功 | 故事#4 | 故事#5 |
想深入了解吗?我们还有一篇关于行为软件工程面试中最佳策略和战术的文章供你查看。
最常见的软件工程师行为面试问题与答案
现在让我们进入你可能会被问到的问题。
你会找到每个问题筛选的品质,如何最好地回答你的答案,以及所有问题的示例答案。
“介绍一下你自己”
筛选内容
- 技能匹配
- 文化匹配
- 动机
- 目标导向
如何回答
- 不要漫无边际或喋喋不休地说流行语
- 以引人入胜的故事讲述你的背景
- 将所有内容与你面试的公司联系起来
示例
“当我长大后,我对技术产生了兴趣。当我开始做一个编码项目时,我意识到:这就是我想做的事情。我继续学习计算机科学。在X公司的工作中,我负责创建技术软件。这使我成长为一名软件工程师和领导者,我很高兴能在贵公司目前正在进行的Y和Z项目上应用我的技能。”
“所有软件工程师应该遵循哪些原则?”
筛选内容
- 领域掌握
- 流程/职业道德
- 团队合作
- 解决问题的能力
如何回答
- 提到软件工程师的积极品质:足智多谋、批判性评估、追求卓越的承诺
- 包括你的编码方法(例如代码设计、清洁代码、有效调试)
- 你可以给出软件工程师出错的地方的例子——以及你会如何做得更好
示例
“我作为软件工程师努力遵循的一个原则是首先对任何项目进行需求分析,这样我们在深入开发之前就确保设定了期望。”
“你最近面临的一个技术挑战是什么——你是如何解决的?”
筛选内容
- 领域掌握
- 流程/职业道德
- 团队合作
- 解决问题的能力
如何回答
- 使用NSAR框架逐步进行
- 暗示好奇心、创造力、批判性思维、领导力和毅力
- 总结它如何为你更好地准备下一份工作的挑战
示例
“当然,让我告诉你我们如何克服在云中以安全合规的方式托管敏感客户数据的挑战:我们实施了加密、双因素身份验证和强大的访问控制,以确保最大安全性。”
“你为什么想在我们公司担任这个软件工程职位?”
筛选内容
- 研究能力
- 真正的联系
- 技能匹配
- 愿景
如何回答
- 谈谈你是如何发现他们的
- 讲述一个与你与他们正在做的工作有关的故事
- 概述你想参与的未来项目
示例
“几年前,我正在处理一个棘手的错误。我在公司博客上找到了一篇文章,其中一位工程师解释了她的团队如何解决了这个问题。她包含了她开源的一个代码片段。我很感激她花时间写下她团队的经验并分享他们的解决方案。这对我帮助很大!这就是我最初开始接触开源的方式。我真的很想与更多这样的工程师一起工作——他们写下自己的工作并试图帮助社区中的其他人。所以我很高兴看到你的团队在博客和公司Github个人资料上分享的一切。”
“我们为什么要聘请你作为软件工程师?”
筛选内容
- 技能匹配
- 热情与动机
- 韧性
- 长期性
如何回答
- 不要过度推销或虚假
- 强调你喜欢做相关技能
- 你很乐意解决他们的问题并在他们的公司进一步发展
示例
“我现在寻找的是一个可以应用我的全栈技能并在使用我最喜欢的技术的同时享受我的工作的地方。而且我也在寻找一个有良好文化的团队和体面的薪水。我做了一些研究,你们似乎是一家友好的公司,正在做伟大的事情和酷的项目。如果这份工作如广告所说,我完全投入。这真的是我想做的事情,这听起来像是适合我的地方。”
“你作为软件工程师的优势是什么?”
筛选内容
- 技术技能
- 软技能
- 自我意识
- 过度自我
如何回答
- 根据公司、其阶段、目标和需求进行调整
- 展示你如何填补他们团队当前的技能差距
- 给出例子并讲故事
示例
“我最大的优势一直是我的软技能和沟通能力。在我目前的工作中,我协调了困难的项目并与客户建立了信任。我需要掌握我的沟通技巧才能完成,但我们做到了。我很乐意将我的能力用于贵公司未来的一些项目。”
“你作为软件工程师的弱点是什么?”
筛选内容
- 自我意识
- 谦逊
- 主动性
如何回答
- 自信地说出弱点
- 给出例子并说明为什么这是一个问题
- 解释你正在如何努力改进这一点
示例
“有时在编码时,我最终会把自己挖进一个坑里。然后我几乎忘记了我最初在做什么。这是因为我喜欢理解我正在处理的每一个概念。但我意识到这是一个弱点,因为如果我们优先考虑速度,这会妨碍。”
“作为软件工程师,你五年后看到自己在哪里?”
筛选内容
- 愿景
- 个人发展
- 可靠性
- 谦逊的自信
如何回答
- 不要说一些通用的东西,比如"我将成为一名受人尊敬的工程经理"
- 概述你过去五年的成长历程
- 如果你一直保持发展,并且可以在五年后回顾你成长了多少,你就会知道你成功了
示例
“让我们先回顾一下过去五年。我为X公司工作,使用Y技术。然后我在初创公司Z转到了一个责任更大的角色。在换工作时,我总是问自己:我能从这里学到多少并成长?我无法确切告诉你五年后我会在哪里,以及我会处于什么位置。但我知道一件事,如果有一个地方我可以回顾并说:天哪,我从那时起学到了很多并成为了一个更好的人——那么那就是我想去的地方。”
“是什么让你对软件开发充满热情?”
筛选内容
- 动机
- 毅力
- 好奇心
- 主动性
如何回答
- 避免听起来夸张和虚假
- 确保你的答案符合公司正在做的事情
- 为你作为一个有动力的解决问题者提供例子
示例
“我一直喜欢用我的分析能力解决技术问题的挑战。每当我遇到需要解决的困难时,我会沉浸在这个问题中——并且我不会放弃直到它被解决。”
“你为什么选择软件工程作为职业?”
筛选内容
- 热情
- 动机
- 个性
- 天赋
如何回答
- 展示你对技术的热情
- 解释你如何喜欢解决问题
- 提到从零开始创造有用事物的能力
示例
“正如我在自我介绍中所说,我一直对技术给我们的机会着迷。并且能够操纵技术为他人创造新的东西来享受——这对我来说是激励。软件工程也为你提供无尽的成长。随着我在职业生涯中的进步,我想在应对越来越大挑战的同时创造越来越多的价值。”
“你如何保持与软件开发相关的新技术的最新状态?”
筛选内容
- 好奇心
- 主动性
- 学习能力
- 纪律
如何回答
- 总结保持最新的重要性
- 列出你最喜欢的学习方式
- 给出你如何了解新趋势的具体例子
示例
“作为一名软件工程师,保持技术新发展是我的天性。我阅读技术博客、开发者论坛、Stack Overflow和GitHub Trending / Explore,并在社交媒体上关注思想领袖。我还与工程师朋友交谈和分享想法和意见。过去我曾参加过开发者会议和本地活动,以保持我的知识最新并获得新想法。开发者书籍和播客也是如此:X和Y是我的一些最爱。我还设定了每年至少学习一门新课程的目标,并且我正在学习一门新的编程语言。”
“你如何处理团队中不同意你作为软件工程师所做工作的成员?”
筛选内容
- 团队合作
- 自信
- 同理心
- 自我
如何回答
- 永远不要责怪他人或找借口
- 展示你对建设性批评的开放性
- 展示你会如何自信地处理这种情况
示例
“我作为软件工程师有很多经验并提供高质量的工作——然而我认为听取我的团队的意见也很重要,因为他们可能也在贡献有价值的东西。所以,我愿意听听他们为什么不同意我的工作以及他们对如何改进的意见。我们都为同一个组织工作,如果我必须改变一些东西以有利于团队目标,如果请求有根据,我愿意这样做。”
“你如何处理与同事的冲突?”
筛选内容
- 团队精神
- 谦逊
- 领导力与自信
- 同理心
如何回答
- 不要说从未有冲突——每份工作都会发生
- 解释在不损害你声誉的情况下专业地处理冲突
- 展示你的推理和说服能力
示例
“作为代码审查员,我必须批评一位开发人员的代码,因为它不符合我们的标准。然后开发人员因为我的审查而生气。我们设法解决了——我告诉他我理解他的沮丧,但解释了我们的最佳实践如何实际上可以使编码更高效,并承诺在未来的任务中保持更多联系。”