第 1 轮 · 返回本次面经 · 已是最后一轮 →

本轮要点: 浏览器渲染过程、浏览器的缓存机制、浏览器的垃圾回收机制、浏览器的存储机制

本轮共 10 道题。答案默认折叠,便于先自行作答。

1. 在你做过的项目中,最值得说的是哪一个

题目要点

STAR法则

参考答案

基于自己简历挖掘亮点项目

2. 在该项目中,你主要负责哪些模块的开发?这些模块的技术难点是什么

题目要点

参考答案

3. 请举例说明在项目中,你是如何通过技术手段解决业务问题的

题目要点

参考答案

4. 在项目中,你采取了哪些性能优化措施?效果如何

题目要点

参考答案

可以参考 【性能优化】相关知识点,在面经最后

5. 在项目中遇到的最大技术挑战是什么?你是如何解决的

题目要点

参考答案

6. 在项目中,你是如何与团队成员协作的?请分享一个具体的协作案例

题目要点

参考答案

7. 在团队协作中,遇到过哪些冲突?你是如何解决的

题目要点

参考答案

8. 在项目中,你是如何进行项目管理和进度保障的

题目要点

参考答案

9. 你的职业规划是什么样的?短期和长期目标分别是什么

题目要点

参考答案

10. 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式

注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数

示例 1:

输入: num1 = "2", num2 = "3"
输出: "6"

示例 2:

输入: num1 = "123", num2 = "456"
输出: "56088"

题目要点

  • 模拟多位数乘法的过程,按位乘积+进位合并
  • 用数组保存每一位的计算结果,最终拼接成字符串
  • 注意字符串转数字、进位处理、前导 0 清除等细节
  • 不允许使用 BigInt、Number 等将字符串转换为数字
参考答案

考察点

  • 考察对字符串操作的熟练程度和大数模拟乘法逻辑实现能力
  • 掌握多位数相乘的数学原理,模拟竖式乘法
  • 考察对数组操作、进位处理、边界情况的处理能力

参考答案

一、原理说明

由于不能直接将字符串转为整数,需模拟“逐位乘法 + 进位处理”,如同手动计算多位乘法(竖式)一样:

假设有:


1  2  3
×     4  5  6
-------------
7  3  8  (123×6)

6 1 5 (123×5,向左移一位)


* 4  9  2       (123×4,向左移两位)

---

5  6  0  8  8

二、核心实现(模拟乘法)

function multiply(num1, num2) {
  if (num1 === "0" || num2 === "0") return "0";

  const len1 = num1.length;
  const len2 = num2.length;
  const result = new Array(len1 + len2).fill(0);

  // 从后向前遍历两个字符串
  for (let i = len1 - 1; i >= 0; i--) {
    const n1 = +num1[i];
    for (let j = len2 - 1; j >= 0; j--) {
      const n2 = +num2[j];
      const mul = n1 * n2;
      const p1 = i + j, p2 = i + j + 1;

      const sum = mul + result[p2];
      result[p2] = sum % 10;
      result[p1] += Math.floor(sum / 10); // 进位加在前一位
    }
  }

  // 去掉前导 0
  while (result[0] === 0) result.shift();

  return result.join('');
}

三、测试示例

console.log(multiply("2", "3"));         // 输出: "6"
console.log(multiply("123", "456"));     // 输出: "56088"
console.log(multiply("0", "456"));       // 输出: "0"
console.log(multiply("999", "999"));     // 输出: "998001"

四、常见误区与陷阱

  • 不能直接使用 BigInt、parseInt、Number 等进行转换
  • 进位位置处理错误,应将进位加在 i + j 位置,当前乘积位加在 i + j + 1
  • 处理前导 0 要注意,避免输出如 "00056088" 这样错误结果
  • 对字符串字符转数字要用 +num[i]parseInt(num[i]),不能直接 num[i] * num2[j] 而不明确转型,虽然在JS中可自动转型,但应写清晰

第 1 轮 · 返回本次面经 · 已是最后一轮 →