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

192 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: 描述:学习如何回答有关前端/网络开发人员/软件工程师的解决问题技能和实现结果的行为问题。 参考示例答案。
---
正如我们在[行为面试准备概述]中提到的,**解决问题和实现结果的驱动力**是 8 个主要问题类型之一。
在本指南中,您将学习如何处理它们:
1. 详细评估标准
2. 将可能的问题抽象为常见主题
3. 建议的答案框架
4. 可能的后续问题的本质
5. 样品问题和答案
## 详细评估标准
解决问题和实现结果被归为一类,因为它们具有高度相关性。 当描述一个人解决问题经验或实现某些结果/目标时,可以推断出他们的思维方式或动力。
在这个类别下评估候选人时,面试官通常会关注以下标准:
- 确定最佳解决方案并执行它们
- 确定正确的问题
- 确定最关键的目标
- 资源能力和数据驱动思维方式
- 创造力和创新性
- 确定折衷和可持续的解决方案
- 测量结果,迭代和跟进
- 以结果为导向的思维方式
- 在面对障碍或路障时积极取得进展
- 影响他人实现目标
- 在决策行动中找到分析与果断平衡点
## 将可能的问题抽象为常见主题
正如我们在[行为面试准备概述]中提到的,为每个行为问题制定答案是不切实际的。 然而,通过将特定问题分批次到相似的主题中,并准备涵盖大量问题要求的故事,我们可以将要准备的故事数量减少到约 3-5 个故事。
在这个类别下有太多类型的解决问题和实现结果的行为问题,例如:
- 你能告诉我一次你必须使用数据来驱动工程决策的经历吗?
- 你可以提供一次你在项目中必须解决和修复复杂问题的例子吗?
- 你能描述一次你创造性地解决了工程问题或实现了有意义的指标改进的经验吗?
- 你能描述一次你必须做出重要的工程决策,以及你是如何在两者之间做出选择的吗?
然而,当我们查看此类别下 80的问题时通常会要求解决问题的过程或有效解决问题所需的特定特征例如创意性、使用数据或者权衡评估。 从这些问题的答案中也可以推断问题或目标的来源,以及候选人是否能够在面对障碍时保持弹性。
## 建议的答案框架
像往常一样,我们推荐使用 STAR 格式来构建故事,它是最简单和最有效的框架。
尽管问题可能很多,但我们可以通过考虑一个强大的解决问题过程来抽象出所有解决问题行为问题的要求:
1. **问题识别**:从表层症状中识别出正确的根本原因或问题。
2. **指标/目标设定**:确定在解决问题方面成功的关键指标(如果有)。
3. **信息收集**:从不同来源收集信息以及数据驱动的思维方式(使用数据驱动决策)的资源能力。
4. **解决方案头脑风暴**:创意地产生解决根本原因的解决方案。
5. **解决方案评估**:评估每个解决方案的权衡折衷并选择最优解决方案。
6. **监测和调整**:通过测量关键指标监测解决方案的有效性。 如有必要,调整策略。
因此,您只需确保您至少准备的一个[故事或项目]涵盖了以上所有步骤。 这样做将使该故事可重复用于解决问题方面的所有相关特征,如数据驱动的思维方式、资源能力、创造力以及从用户反馈中工作。
当然,您可能需要定制故事的细节以便于专注于特定问题的特定方面。
我们还建议您选择可以通过以下方式获取信号的问题解决故事。
- **积极性/主动性**:您已经采取主动措施解决问题,收集信息并解决问题。
- **领导能力**:您带领了解决问题的过程。
- **团队协作**:您必须作为团队的一员来解决问题。
### 实例故事
#### 情境
- 我是一家销售奢侈品的电商网站的技术主管。 该网站是一个 Angular 1.5 的单页面应用程序。
- 近年来,该产品显得有点老了——开发体验不佳,网站性能不佳。 初始加载速度超过 3 秒,转化率约为 0.8%。
#### 任务
- 我的任务是改进网站的性能和转化率。
#### 行动
**1. 问题识别**
- 转化率与性能和用户体验相关。
- 过去几年,网站性能逐渐下降。
- 用户体验值得检查。 [改进措辞]
**2. 信息收集**
- 查看过去一年中的错误性质,根据它们的根本原因对它们进行分类,以确定故障热点和主要问题区域。
- 收集来自团队的反馈,并确定改进的范围和重点。
- 与团队进行头脑风暴会议,以想出改进的方法。
- 为了改进,首先需要知道我们的表现如何。
- 确认我们的性能和转化跟踪是否正常工作。
- 开始从 Lighthouse 和 Core Web Vitals 跟踪新指标。
- 与数据科学家合作创建性能和转化的仪表板,并获得一些见解:
- 确定某些国家的转化率较低。
- 移动用户与桌面用户相比具有较低的转化率。
- 与 UX 设计师和 UX 研究人员合作,识别网站上的 end-to-end 购物体验问题。
- UI 元素之间间隔太大,需要大量滚动,影响了跳出率,因为一些用户不愿滚动。
**3. 解决方案头脑风暴**
- **用户界面**:服务器端呈现对于其性能和 SEO 的好处至关重要。 做出良好选择。
- **View**:从 Angular.js 1.6 迁移到 Angular 13 是一个巨大的任务,而停留在 Angular 上没有太大的时间节省效益。
- **Next.js**:我们的一些开发人员具有使用 React 和 Next.js 作为用于构建 SSR 应用程序的元框架的经验,这种 SSR 应用程序的快速初始载入和应用程序行为非常有吸引力。 我们真的渴望 Next.js 提供的快速初始加载和类似应用程序的行为。
- **Svelte**:响应模型很吸引人,并且相对于 React 的编程模型更容易理解。
- **样式**:由于多年来添加了许多类并且难以删除,因此样式表变得非常臃肿。
- **Tailwind CSS**Tailwind CSS 是最热门的 CSS 方法之一,其原子 CSS 方法可扩展适用于不断增长的代码库。
- **Styled Components**CSS in JS 是我们也在考虑的东西,但 Styled Components 与 React 有关,并且运行时样式注入对性能不利。
- **以性能为中心的思维方式**。 阅读了许多关于 web.dev 和其他电子商务公司的工程博客的性能案例研究,收集了一个重要的性能技术和流程列表:
- 设置每个页面的性能预算(低于 300 kb
- 在合并拉取请求之前运行性能基准测试。
- 惰性加载非关键组件,惰性加载屏幕下方内容。
- 在页面级别上拆分 JavaScript而不是单独的包由 Next.js 处理)。
- 对图片使用 WebP 格式。
- 将图片托管在 CDN 上Adaptive 加载图片,因此移动设备加载较小的图片,合并重复的 JavaScript 库data-fns 和 moment.js切换到 lodash-es删除了所有 jQuery 的用法-查看数据以识别不常用的功能并将其从产品详细信息页的代码中删除JS 大小减少了 200 个+ kb。
- **搜索引擎优化SEO**
- 使用 SEO 工具(例如 Ahrefs持续监测 SEO。
- 与营销团队合作,确保营销内容包含 Ahrefs 显示的重要关键字。
- 调整页面 URL 以包括 SEO 关键字
- 用户体验的改进
- 只需单击一个页面即可付款,而不是使用两个页面付款,从而减少了点击次数。
- 减小了许多 UI 元素的高度。
- 固定检查按钮,这样就不会错过。
- 付款方式改进
- 分析了 Stripe 结账,并实施了特定国家的地址栏。
- 最初只有一种可用的付款方式:信用卡。 得到了数据科学家的帮助,以评估新的支付方式是否受欢迎,以及它们是否值得添加。 我们后来还增加了 PayPal、谷歌支付和苹果支付等支付方式。
**4. 解决方案评估**
- **View 和渲染**:选择 Next.js因为它由 Vercel 支持,拥有最大的社区。 React 也是最流行的 UI 库,最容易为之招聘。
- **样式**Tailwind因为它是相当可靠和未来可靠的选择。
**5. 监控和调整**
- 在 2 个月的时间内监控性能和转化率,并在 A/B 测试中推出新网站。
- 以前转换率较低的国家,其转换率提高了近 50%。
#### 结果
- Lighthouse 分数已提高到 92。
- 加载速度提高至 1.5 秒
- 转化率提高至 2.5
- 在最近的调查中,开发人员的速度已经提高,现在更容易将更多人招聘到团队中,因为更多人了解 React 而不是其他框架。
## 可能的后续问题的本质
正如我们在[行为面试准备概述]中所提到的,面试官鼓励依靠后续问题更多地了解候选人的思考过程和动机,这些后续问题通常属于以下类别:
- 您认为您为什么会这样做?
- 你为什么不那样做?
- 如果换成后见之明,你会如何做事情?
在解决问题或实现结果的问题上,面试官最有可能探究这样的问题,以帮助他们更好地了解候选人:
- **任务/问题/目标的来源**(理解主动性和积极性的水平):
- 项目或任务是否由您发起的? 以及在什么程度上?
- 潜在的想法是来自你,还是只是执行的计划?
- 你是如何得到利益相关者的支持,甚至在这方面的工作?
- **候选人的角色和实际贡献**
- 是否涉及问题解决的团队?
- 哪些措施是由自己主动采取或仅由自己做出贡献的?
- **优先考虑解决的问题或目标**
- 是否有理由将特定的问题或目标视为优先解决或有限时间内必须解决,而其他问题或根本目标存在更重要?
- 这个问题或根本目标是否已被公司中的其他团队解决了?
- 这个问题不是已经由公司的另一个团队解决了吗? 为什么要重新制定解决办法?
- **选择适当的度量标准或目标,以及是否在发布后进行了测量**
- 是否设置了定量或定性的目标,以及如何决定的?
- 它们是如何在发布后被测量的,结果如何?
- 如果问题已解决,那么将采取什么措施确保不再发生同样的问题?
- **使用足够的信息驱动决策**
- 您依赖哪些研究或数据来进行决策/选择要解决的问题?
- 您花费多少时间研究和收集信息?
- 您如何在收集信息/规划和执行计划之间保持平衡?
- **选择正确的解决方案**
- 考虑了哪些其他解决方案,各自的利弊如何?
- 为什么选择了最终的解决方案?
- 谁提出了解决方案的原始想法? 他们是如何得出的?
## 样例解决问题的问题和答案
将上述样本故事调整为回答特定问题。
{/* TODO: Gina */}
- 你能告诉我一次你必须使用数据来驱动工程决策的经历吗?
- 你可以提供一个你必须解决和修复复杂问题的项目的例子吗?
- 你能描述一下你是如何创意地解决工程问题或实现有意义的指标改进的吗?
- 你能描述一次你必须做出重要的工程决策,以及你是如何在两者之间做出选择的吗?