front-end-interview-handbook/packages/behavioral-interview-guidebook/contents/problem-solving/zh-CN.mdx

184 lines
11 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 解答解决问题行为面试问题
description: 了解如何回答“告诉我一个时间……”风格的问题,以评估您的解决问题的能力。
seo_title: 解决问题 | 行为面试手册
seo_description: 了解如何回答解决问题的行为面试问题,适用于前端工程师。参考示例答案。
social_title: 解决问题行为问题 | GreatFrontEnd
---
正如我们在 [行为面试准备概述](/behavioral-interview-guidebook) 中提到的,**解决问题和追求结果**是需要准备的 8 个主要问题类别之一。
在本指南中,您将学习如何解决它们:
1. 详细的评估标准
2. 将可能的问题抽象成常见主题
3. 建议的答案框架
4. 后续问题的可能性质
5. 示例问题和答案
## 详细的评估标准
解决问题和追求结果被归为一类,因为它们本质上高度相关。在描述解决问题或实现某些结果/目标方面的经验时,也可以推断出他们的心态或这样做的动力。
在对该类别下的候选人进行评分时,面试官通常会关注以下标准:
* 确定最佳解决方案并执行
* 确定正确的问题
* 确定最关键的目标
* 足智多谋和数据驱动的思维方式
* 创造力和创新
* 确定权衡和可持续的解决方案
* 衡量结果、迭代和跟进
* 结果导向的心态
* 尽管存在障碍或障碍,仍积极主动地取得进展
* 影响他人实现目标
* 平衡分析与果断行动
## 将可能的问题抽象成常见主题
正如我们在 [行为面试准备概述](/behavioral-interview-guidebook) 中提到的,为那里出现的每个行为问题专门准备答案是不切实际的。但是,通过将特定问题归入类似的主题,并准备涵盖大量问题要求的故事情节,我们可以将要准备的故事数量减少到大约 3-5 个故事。
可以提出的解决问题和追求结果的行为问题类型实在太多了,例如:
* 您能否告诉我您曾经**使用数据来驱动工程决策**的经历?
* 您能否提供一个您必须在项目中**排除故障并修复复杂问题**的例子?
* 您能否描述一下您曾经**创造性地解决了**一个工程问题或实现了有意义的指标改进的经历?
* 您能否描述一下您曾经必须做出重要的工程决策以及您如何在**权衡之间**做出决定的经历?
但是,当我们查看该类别下的 80% 的问题时,问题通常会询问如何解决问题或有效解决问题所需的特定特质,例如创造力、使用数据或权衡评估。问题的根源或目标,以及候选人在面对障碍时是否具有韧性,也可以从对这些问题的回答中推断出来。
## 建议的答案框架
和往常一样,我们推荐使用 [STAR 格式](https://www.indeed.com/career-advice/interviewing/how-to-use-the-star-interview-response-technique) 作为最简单、最有效的框架来构建你的故事。
尽管问题可能性很多,但我们可以通过思考一个稳健的解决问题的过程来抽象出所有解决问题行为问题的要求:
1. **问题识别**:从表面症状中识别出要关注的正确根本原因或根本问题。
2. **指标/目标设定**:确定解决问题(如果有)时表示成功的关键指标。
3. **信息收集**:从不同来源收集信息的足智多谋和数据驱动的思维方式(使用数据来驱动决策)。
4. **解决方案头脑风暴**:创造性地生成解决根本原因的解决方案
5. **解决方案评估**:评估每个解决方案的权衡,并选择最佳方案
6. **监控和调整**:通过衡量关键指标来监控解决方案的有效性。如果需要,调整策略。
因此,你只需要确保你至少有 1 个 [准备好的故事或项目](/behavioral-interview-guidebook) 涵盖了以上所有步骤。 这样做的话,这个故事可以重复用于解决问题下的所有相关特质,例如数据驱动思维、足智多谋、创造力以及接受用户反馈。
当然,你可能需要根据故事的细节来侧重于特定问题中提出的具体方面。
我们建议你选择解决问题的故事,这些故事也可以用来获取以下方面的信号
* **主动性/积极性**:你主动调查问题、收集信息并解决问题。
* **领导力**:你主导了解决问题的过程
* **团队合作精神**:你必须作为团队的一员来解决问题
### 案例故事
#### 情境
* 我是一家销售奢侈品的电子商务网站的技术负责人。 该网站是作为 Angular 1.5 单页应用程序构建的。
* 近年来,该产品已经显现出它的老化——开发人员的体验并不好,而且网站的性能也很差。 初始加载速度超过 3 秒,转化率约为 0.8%。
#### 任务
* 我的任务是提高网站的性能和转化率。
#### 行动
**1. 问题识别**
* 转化与性能和用户体验相关。
* 过去几年,网站的性能一直在逐渐下降。
* 用户体验已经有一段时间没有被关注了。 \[改进措辞]
**2. 信息收集**
* 查看了过去一年中错误的性质,根据其根本原因进行分类,以确定热点和主要问题领域。
* 收集了团队关于改进领域方面的反馈。
* 与团队一起集思广益,思考改进方法。
* 为了改进,首先我们需要知道我们做得怎么样。
* 再次检查我们的性能和转化跟踪是否正常工作。
* 开始跟踪来自 Lighthouse 和 Core Web Vitals 的新指标。
* 与数据科学家合作,提出了性能和转化的仪表板,并获得了一些见解:
* 确定一些国家的转化率较低。
* 与桌面用户相比,移动用户的转化率较低。
* 与用户体验设计师和用户体验研究人员合作,以确定网站上端到端购物体验中的问题。
* 用户界面元素之间的间距太大,需要大量滚动,这影响了跳出率,因为一些用户懒得滚动。
**3. 解决方案头脑风暴**
* **用户界面**:服务器端渲染对其性能和 SEO 优势至关重要。 围绕良好的性能做出选择。
* **视图**:从 Angular.js 1.6 迁移到 Angular 13 是一项巨大的工程,而且留在 Angular 上并没有节省多少时间。
* **Next.js**:我们的一些开发人员有使用 React 和 Next.js 作为构建 SSR 应用程序的元框架的经验,并且它正在迅速普及。 我们真的希望 Next.js 能够提供快速的初始加载和类似应用程序的行为。
* **Svelte**:反应式模型很有吸引力,而且编程模型比 React 的更容易理解,但是生态系统很小,而且没有那么多库。
* **样式**:由于多年来添加了许多类并且很难删除,样式表变得非常臃肿。
* **Tailwind CSS**Tailwind CSS 是最热门的 CSS 方法之一,其原子 CSS 方法可以很好地扩展到不断增长的代码库。
* **Styled Components**CSS-in-JS 也是我们正在关注的,但 Styled Components 与 React 绑定,并且运行时样式注入对性能不利。
* **以性能为中心的思维模式**。 阅读了 web.dev 和其他电子商务公司的工程博客上的许多性能案例研究,收集了一份重要的性能技术和流程列表:
* 为每个页面设置性能预算(低于 300kb
* 在合并拉取请求之前运行性能基准测试。
* 延迟加载非关键组件 延迟加载低于折叠的内容。
* 在页面级别而不是单个捆绑包上拆分 JavaScript由 Next.js 处理)。
* 对图像使用 WebP 格式。
* 在 CDN 上托管图像,而不是自适应加载图像,以便移动设备加载较小的图像 整合重复的 JavaScript 库data-fns 和 moment.js切换到 lodash-es删除所有 jQuery 的用法 - 查看数据以识别较少使用的功能并将其从代码中删除,从而减少产品详细信息页面上的 JS 大小 200+kb。
**4. 解决方案评估**
* **视图和渲染**:选择 Next.js因为它有 Vercel 的支持,并且拥有最大的社区。 React 也是最流行的 UI 库,并且也最容易找到工作。
* **样式**Tailwind因为它是一个相当可靠且面向未来的选择。
**5. 监控和调整**
* 在为期 2 个月的 A/B 测试中推出了新网站,同时监控了性能和转化率。
* 此前转化率较低的国家/地区,转化率提高了近 50%。
#### 结果
* Lighthouse 分数提高到 92。
* 加载速度提高到 1.5 秒
* 转化率提高到 2.5%
* 在最近的调查中,开发人员的速度有所提高,现在更容易招聘人员加入团队,因为更多的人比其他框架更了解 React。
## 可能的后续问题性质
正如我们在 [行为面试准备概述](/behavioral-interview-guidebook) 中所暗示的那样,鼓励面试官更多地依赖后续问题来真正了解候选人的思维过程和动机,这些问题通常属于以下几类:
* 你认为你为什么做了(插入操作)?
* 你为什么不做(插入操作)?
* 事后看来,你将如何做不同的事情?
对于解决问题或追求结果的问题,面试官很可能会探究问题,以帮助他们更多地了解:
* **任务/问题/目标的来源**(了解主动性和主动性):
* 该项目或任务是由您发起的吗? 在什么程度上?
* 潜在的想法来自您,还是只是执行计划?
* 您如何获得利益相关者的支持,甚至可以开展这项工作?
* **候选人的角色和实际贡献**
* 是否有一个团队参与解决问题或实现目标?
* 您自己主动发起或完全由您贡献了哪些行动,其他人做了什么?
* **确定要实现的问题或目标**
* 是否有原因说明为什么优先解决或完成此特定问题或目标而不是其他问题或目标?
* 是否有另一个问题或根本目标应该更重要?
* 这个问题是否尚未由公司的另一个团队解决? 为什么必须重新发明解决方案?
* **选择适当的指标/目标,以及它们是否在发布后进行了衡量**
* 是否设定了任何定量或定性目标,以及如何决定?
* 它们在发布后是如何衡量的,结果如何?
* 如果问题得到解决,采取了哪些措施来确保不会再次发生同样的问题?
* **使用足够的信息来推动决策**
* 您依赖哪些类型的研究或数据来做出决策/选择要解决的问题?
* 您花了多少时间进行研究和收集信息?
* 您如何在收集信息/计划和实际执行计划之间取得平衡?
* **选择正确的解决方案**
* 考虑了哪些其他解决方案,以及每个解决方案的优缺点是什么?
* 为什么选择最终的解决方案?
* 解决方案最初的想法是谁提出的? 它们是如何得出的?
## 解决问题的示例问题和答案
根据上述示例故事定制答案以回答具体问题。
{/* TODO: 吉娜 */}
* 您能否告诉我您使用数据来驱动工程决策的经历?
* 您能否提供一个您必须对项目中的复杂问题进行故障排除和修复的示例?
* 您能否描述一下您解决工程问题或实现有意义的指标改进的经历?
* 您能否描述一下您必须做出重要的工程决策以及您如何在权衡之间做出决定的经历?