跳到主要内容

概述

什么是非技术问题?

非技术问题偏向于了解你如何进行团队合作,分析和解决问题,以及如何自省与反思的问题。大部分情况下,你的回答内容应该使非技术人员都能够理解。

非技术问题分类

非技术问题可以分成以下 5 个类别,每个题目都有对应的关键点:

自我介绍

Please introduce yourself

  • 按照个人背景,项目经验,专业技能三方面分点阐述
  • 控制在 40 秒左右,根据面试官的提问深入阐述

项目介绍

Please briefly introduce this project. Which modules are you mainly responsible for?

  • 了解整个项目的架构
  • 项目中主要职责与参与度

What is the difficulty in the project? What is the most challenging part?

  • 发现问题和解决问题的能力
  • 对项目进行总结和反思

Have you ever encountered a deadlock in database operations in your project?

  • 专业技术以及对工具原理是否清楚

团队合作

How do you respond when you disagree with a coworker?

  • 沟通与相互尊重
  • 列出数据与方案,对比不同方案的优缺点
  • 咨询团队其他成员的建议

Describe a time when you had to work closely with a colleague who was difficult to get along with. How did you handle interactions with them?

  • 保持专业和客观
  • 寻找共同点和共同目标
  • 设定明确的沟通和工作界限
  • 必要时寻求管理层的介入或调解

Can you give an example of a successful project you worked on as part of a team? What was your role, and how did the team work together to achieve success?

  • 分享项目目标和期望
  • 确保每个成员的角色和责任清晰
  • 定期的团队会议和更新
  • 鼓励团队内部的开放沟通和反馈

When you need to take ownership of a project. How do you handle this situation?

  • 分解任务,设定任务优先级以及 dealline,根据团队成员的职责分配任务
  • 使用工具跟踪任务进度,对于没有及时完成的任务进行关注以及给予帮助

专业技能

What is the hardest technical problem you have faced on projects so far and how did you solve it? What was the result?

  • 简述该问题为什么难,以及如何从技术上解决该问题(阅读资料,学习业界最佳实践,咨询团队成员等)
  • 简述最终成果如何,通常来说你举的例子应该最终解决了该问题

Describe a time when you contributed to improving the performance of a software application. What was your approach?

  • 分析性能瓶颈,使用性能分析工具
  • 优化代码和数据库查询
  • 实施缓存策略,减少不必要的计算

Tell me about a time when your technical solution did not work as planned. What did you learn from that experience?

  • 反思项目失败的原因,吸取教训
  • 探索不同的解决方案,保持灵活性
  • 加强与团队的沟通,共同寻找更好的方法

个人成长

Tell me about a time you had multiple responsibilities to manage. How did you respond to this situation?

  • 改变时间管理,临时调整每天的行程
  • 分解任务,设定任务优先级以及 dealline

Talk about a project you are most passionate about, or one where you did your best work.

  • 简述该项目你感兴趣的地方,展示你对于编程的热情
  • 针对某个功能,阐述你做得最好的地方以及达到的效果

How do you deal with unexpected changes to deadlines?

  • 申请外部资源协助完成紧急任务,并推迟非紧急任务
  • 重新对任务优先级进行排序,根据新的 deallines 安排工作计划

Tell Me About a Time You Failed

  • 了解以及分析失败的原因
  • 从失败中学习,避免下次犯同样的错误

如何回答非技术问题?

  1. 将问题将其划分到相应的类别,
    1. 专业技能:需要突出技术攻关能力,精益求精的思想以及对技术的热情
    2. 团队合作方面:如何快速融入团队,如何沟通,如何激励队员
    3. 个人性格:是否正直,是否乐于助人
  2. 根据对该问题的理解,找到该题目的关键点以及对应的故事
  3. 叙述该公司对应的价值观/故事/高管语录,原因有两点:(可选)
    1. 体现你认可该公司的价值观,并且愿意学习和了解他们的文化。(否则你不会知道这些故事)
    2. 这些故事是“正确”的答案,因为这些公开的故事通常是高管在书中或者采访中叙述,并且希望大家学习的,例如面试亚马逊的时候,你列举亚马逊发展中的故事以及贝索斯的一些观点,面试官很难会说你的价值观不符合他们要求
  4. 结合自己的故事使用 STAR 准则围绕关键点进行阐述

回答示例

问:如果在产品开发的时候,你和上司对于产品功能不同的意见,这时候要怎么处理?

  1. 分类:

    团队合作

  2. 关键点:

    1. 沟通:了解上司的想法,从对方的角度分析原因
    2. 列出数据与对比:使用可量化的数据对比两个方案的优缺点
    3. 咨询其他团队成员:与其他成员进行讨论,了解其他成员的意见
  3. 公司故事:

    谷歌的文化提倡:下属必须勇于直言,要形成“表达异议的义务”,当有人认为某个方案有错误的地方,他们必须提出顾虑,否则,一旦不好的方案通过,他们要为过失负责,同时也影响产品发展。谷歌的 AdWords 问世的时候,创始人布林想让瓦米的工程师团队执行一个方案,但是他并没有提出极具说服力的论据,所以瓦米并不认同这个方案。布林提出一个折衷方案让瓦米一半团队执行布林的防范,一半听瓦米指挥。但是瓦米仍然不同意,双方继续争论两个方案的优缺点,最后,布林的方案被放弃。

  4. 围绕关键点叙述对应的故事:

    S: “在 A 产品开发的过程中,我的上司希望为产品添加 B 功能,不过我不同意,因为我认为这个功能用户并不需要,而且需要大量的开发资源。”

    T: “我制定了两个任务,第一,了解为什么上司想要加 B 功能。第二,调研开发 B 功能所需要的资源。”

    A: “对于任务一,通过和上司的沟通,我了解到 Ta 想要加功能的表层原因是竞品最近上线了类似的功能,而且后台统计最近 30 天的在线用户减少 10%。Ta 怀疑用户是因为 B 功能所以转移到其他平台。为了验证这个观点,我选择了 10 位最近没有活跃的用户进行一对一沟通,了解他们没有上线的原因以及对于 B 功能的看法。另外,我花了几天时间使用竞品的 B 功能,通过在线人数等数据统计了该功能的使用率。并且将结果整理成文档。对于任务二,我与团队其他工程师一起估算了开发 B 功能所需要的时间以及各方面资源(包括机会成本),并且整理了一个简单的表格。”

    R: “上司看到了我整理的两个文档之后,高度赞赏了我调研以及分析的行为,并且对其中不严谨的地方提出了改进的建议,希望我可以根据新的方案针对性再次调查。根据第二次的调查结果,我们一致同意暂停开发 B 功能。”

这个问题也可能转变身份来进行提问:

问:如果你是上司,你想加一个功能,但是下属不同意的话,这时候怎么做?

  1. 分类:团队合作
  2. 关键点:
    1. 沟通了解:阐述想加此功能的目的以及了解下属不同意的原因
    2. 分析资料:以产品的价值观作为核心目的,针对两种方案进行讨论和选择。
  3. 公司故事:如果你身居要位,当对负责的职务不够专业,很容易试图用“我说这样做,就得这样做”的方法论来恐吓胁迫下属,但是你必须对自己的团队有信心,并有足够的执行放手让他们找到更好的方法
  4. 围绕关键点叙述故事

沟通技巧

面试前学习一些技巧来提高表达能力:

  • 分点阐述:你的回答应该能够分成两到三个小点,即使面试官没理解其中一个的话,也不影响另外几点,切忌缺乏结构性,没有重点的一段话。
  • 总分结构:你的回答尽量能够做到先提出关键点,再详细阐述。这样面试官会对你接下来的回答有一个预期,不需要从整段回答中寻找重点。

遇到你没有准备过的问题,可以使用过渡性语句来给自己争取更多思考的时间,请参考: