腾讯CSIG一二三+HR面经验+timeline(已OC)

4/29 技术一面(90min)

  1. 为什么选择前端(答:注重用户表达和体验;所见即所得,反馈感强)
  2. 实习相关:哪个部门,什么技术栈
    1. 框架理解(例如nest.js为什么要基于express/fastify等层层封装 - 答:类似于装饰器模式,不断往上面加功能)
    2. 除了装饰器模式还知道哪些设计模式?(订阅-发布,工厂模式)
  3. 个人项目介绍-最具有挑战性的项目-why-技术选型
  4. 使用 AI 工具了吗?如何使用的?
  5. 知道闭包吗?为什么出现闭包?
  6. 闭包会产生什么问题?(内存泄露)那怎么解决内存泄露?
  7. Promise解决什么问题(回调地狱),简述如何把回调改成Promise
  8. 浏览器事件循环
  9. 回流和重绘,什么时候触发,如何减少(答:我只知道 React 用 Virtual DOM 来合并多次 DOM 操作一起 commit,只回流一次)
  10. 那讲讲 React 的虚拟 DOM 和 Fiber 吧
  11. useLayoutEffectuseEffect有何区别?如何模拟生命周期?
  12. HTTP 1/2/3 的主要区别
  13. “Git 会吗?哦,我看你 GitHub 有一堆项目,咱不用问了(面试官好可爱哈哈哈哈)”
  14. 手写题:实现一个throttle
  15. 手写题:在二叉搜索树(BST)里找到第 K 大的值
    1. 我先写了一个记忆化搜索+贪心,过了用例。面试官提示:知道树的遍历吗?
    2. 我(醍醐灌顶版):“Oh!!中序遍历!!我3min写出来!!”
    3. 面试官:“好,知道你会,不用写了(开始反问环节)”

5/1 技术二面(80min)

  1. 实习深深深深深挖(25min)
  2. (接着实习的 Node 项目问)中间件知道是做什么的吗?用过哪些?
  3. 对大模型的理解和应用
  4. 用 Webpack 还是 Vite?(都用)讲讲你的理解,它们的区别
  5. 为什么个人项目用 Vite,实习的时候的脚手架都是 Webpack?
  6. Vite 开发环境、生产环境有何不同?(开发环境不会全部打包)
  7. Webpack 和 Vite 的 Tree shaking
  8. React Fiber(梅开二度……)
  9. React Hooks 是做什么的?常用哪些 hooks?
  10. useMemo, useCallbackuseRef 都是性能优化 / 缓存类 Hook,有什么区别?
  11. TCP 和 UDP 区别,TCP 三次握手,SYN 攻击
  12. 跨域,同源策略
  13. 前端优化,使用过哪些优化方式(我说没怎么接触过……)
  14. TS 用过吗?type 和 interface 有何区别?
  15. 手写题(这次是 share screen 在本地写):

对算术表达式求值:给定一个字符串,输出对应的计算结果,包括加减乘除,小括号,只考虑正整数,例如"2+3*2" => 输出8

例如:1+2*(5-2)+4 => 1+2*3+4 => 1+6+4 => 11

(代码见下一页,最优解是逆波兰表达式,但我不会,写了个同样是O(n)的多轮迭代

  1. 手写题2: 有一种花,两种鸟,花定时开放,鸟看到花开会叫,鸟的叫声不一样,用代码来实现这样一种场景(我:?????不明所以……写了两个类,类似于发布订阅)
  2. 评价:代码能力挺好的……(秒过,面试官说“如果有三面,要安排到五一回来”)
// 对算术表达式求值:给定一个字符串,输出对应的计算结果,包括加减乘除,小括号,只考虑正整数
// 1+2*(5-2)+4 => 1+2*3+4 => 1+6+4 => 11

function calculate(str: string): number {
  let stack: number[] = [];  // 下标
  let result = 0;
  // 处理括号,如果没有 () 则不用递归
  for (let i = 0; i < str.length; i ++) {
    let c = str[i];
    if (c === '(') {
      stack.push(i);
    } else if (c === ')') {
      let startIdx = stack.pop() as number;  // 最后一个元素,也就是括号开始
      if (stack.length === 0) {
        const inner = str.substring(startIdx + 1, i);
        const res = calculate(inner);
        // 替换原来括号部分的东西
        return calculate(str.substring(0, startIdx) + res + str.substring(i + 1));
      }
    } 
  };

  // 解析
  let components: (number | string)[] = [];
  let currentNumber = 0;
  for (let c of str) {
    if (["+", "-", "*", "/"].includes(c)) {
      components.push(currentNumber);
      currentNumber = 0;
      components.push(c);
    } else {
      currentNumber = currentNumber * 10 + Number(c);
    }
  }
  components.push(currentNumber);

  // Tested
  // 乘除  2*3*3 -> [--, --, 6, *, 3]
  for (let i = 0; i < components.length; i ++) {
    if (components[i] === "*" || components[i] === "/") {
      // 计算 i-1 和 i+1
      let temp: number;
      if (components[i] === "*") {
        temp = (components[i - 1] as number) * (components[i + 1] as number);
      } else {
        temp = Math.floor((components[i - 1] as number) / (components[i + 1] as number));
      }
      // 替换
      components[i + 1] = temp;
      components[i] = components[i - 1] = "--";  // 无用占位符
    } 
  }
  // 加减 [2, +, 3, -, 5]
  components = components.filter((c) => c !== "--");
  let isAdd = true;
  for (let i = 0; i < components.length; i ++) {
    if (components[i] === "+" || components[i] === "-") {
      isAdd = (components[i] === "+");
    } else {
      result += (isAdd ? components[i] as number : -components[i]);
    }
  }
  // console.log(result)
  return result;
}


console.log(calculate("(1+2*(5-2))*4"));
console.log(calculate("20*11+80/4"))
console.log(calculate("((1+2)*(5-2))*(((4+3)*2)+6)"));

5/7 技术三面(30min)

  1. 聊聊你做过的项目
    1. 有没有上线,有没有用户(没有,只是demo)
    2. 看一下部署的 URL(我发了3个,简历上没写的都发了,但只有一个是完成度高的)
    3. 选择其中一个展示。难点是什么?
    4. 为什么要封装很多个 hooks(答:视图和数据分离,方便维护)
  2. 聊聊实习
  3. (画风突变)聊聊基础问题:
    1. 平时使用哪些协议?(HTTP最多,有写过 TCP/UDP socket 的 C++ 项目)
    2. HTTP 状态码有哪些?
    3. 深挖304 Not Modified:缓存在哪里?浏览器发请求了吗?
  4. JS 原型链知道吧(知道)最终指向哪里(null)然后就没细问
  5. 留学学到了什么?研究方向(无,授课型)?有没有投其他岗位?

5/7 HR面(30min)

  1. 为什么选前端?确定搞前端吗?
  2. 周围人对你什么评价?(是好盆友)
  3. 周围人对你有过负面评价吗?(有,说我话太多)
  4. 实习的时候被批评过吗?(有,还是话太多,太爱分享)
  5. 三个词语形容优点(每一个都细问了,聊了很久)
  6. 三个词语形容缺点
  7. 被批评什么感受?分享得不到反馈会难过吗?(不会)
  8. 有过一段长时间投入没有回报的事情吗?
  9. 为什么留学?什么时候决定的(大二就决定了,强调了一下不是大四一拍屁股决定的、不是保不上研才决定的)
  10. 为什么放弃保研?
  11. 今后什么打算,回国去哪个城市有倾向吗(那必然是大深圳!!)

5/7 云证,录用评估中

坐等OC坐等OC坐等OC!!求求了鹅!!让我做一次鹅孝子吧!!

咏鹅一首:

有鹅选鹅,无鹅延毕,明年再鹅,延毕还无,建议读硕,毕业再鹅,无鹅延毕,明年再鹅,若再无鹅,建议读博,毕业再鹅,无鹅延毕,明年再鹅,延毕还无,博后可读,出站再鹅,若再无鹅,入校拼搏,评上教授,还能再鹅

5/8 私聊问了HR,说“这两天”审批完,继续许愿!!盼鹅!!!

5/9 HR直接说offer发到邮箱了,1秒接收!!!孩纸来还愿了!!!

让我再次咏鹅:

有鹅选鹅,无鹅延毕,明年再鹅,延毕还无,建议读硕,毕业再鹅,无鹅延毕,明年再鹅,若再无鹅,建议读博,毕业再鹅,无鹅延毕,明年再鹅,延毕还无,博后可读,出站再鹅,若再无鹅,入校拼搏,评上教授,还能再鹅

#面试##前端技术面试##腾讯求职进展汇总##腾讯前端面试#
全部评论

相关推荐

评论
3
7
分享

创作者周榜

更多
牛客网
牛客企业服务