Skip to content

百度一面

时间:2026/3/11 周三 16:00-17:00

  • 自我介绍

  • 平时怎么学习前端的

  • 在红岩网校做的什么工作

  • 官网用的哪些技术栈

  • 官网用的什么打包工具

  • 开发之后怎么给他推到线上版本去的

  • 用过哪些包管理器(讲了一下npm和pnpm区别,别的想不起来了)

  • 了解哪些git命令,git merge和git rebase区别是什么?

  • 介绍一下笔记编辑平台项目

  • 为什么要用nextjs

  • nextjs底层用的是什么打包工具

    答错了,应该是turbopack,我说的vite

  • 数据库是用什么实现的

  • 数据库里有几张表

  • 有没有部署上线,现在可以访问吗

  • ai智能续写功能是怎么实现的

  • 项目开发中遇到了什么困难,怎么解决的

  • 会用Linux吗?

  • 事件循环

  • css选择器权重

  • 如何实现居中

  • 闭包是什么,闭包的应用场景,闭包的弊端

  • 浏览器垃圾回收机制

  • react中常用的api

    useRef, useState, useEffect, useMemo, useCallback, useReducer

  • 最常用的是什么api

  • 怎么获取DOM元素,原生js怎么获取DOM元素

  • 有一个api的执行时机比useEffect稍微早那么一点点,你知道是哪个吗?

    useLayoutEffect

  • 手撕:有效的括号

    思路和逻辑正确,但是出现了两个问题:

    const pair = new Map({')'😢, ']':'[', '}':'{')})报错,在面试官指导下改为分别pair.set(')', '(')

    stk[-1]===pair.get(c)判断错误,在面试官指导下改为stk.at(-1) === pair.get(c)运行成功

  • 反问:您作为面试官可以给我一些建议吗?

    1. 项目可以讲的再清楚一点,多讲一些能体现前端技术的
    2. 简历可以再丰富一下

周五中午hr通知一面通过,约二面

询问当天或者下周一是否有空,我答复当天下午三点后及下周一都可以

hr当天晚上八点回复我二面时间为下周一下午两点

百度二面

时间:2026/3/16 周一 14:11-15:48

  • 讲讲在做项目的时候学到了哪些东西
  • 拷打项目为什么选用这样的技术
  • 讲讲从用户输入url到网页渲染的全过程
  • 拷打react diff算法细节,如果有一个列表,我只是把开头的那个元素挪到了最后,diff算法具体会做哪些事
  • 讲讲建立tcp连接的时候为什么需要三次握手,为什么不是两次不是四次
  • 你提到的这个syn和ack是啥(我不知道啊只是我背的资料里出现过这两个词我就记住了。。。)
  • 如果客户端发送了请求之后,在返回响应之前,如果用户这时候直接关掉了整个页面,应该怎么处理
  • 讲讲react中有哪几种组件间的通讯方式
  • 手写react组件
    • 创建一个组件,并让它显示在页面上
    • 实现点击按钮count加一
    • 实现按钮的节流
    • 再创建一个计数器,共享一个按钮,但是它不节流,立马加一
    • 创建一个Child子组件,并挂载到当前组件上
    • 实现按按钮时,仅有父组件重新渲染,子组件不重新渲染(到这一步我就不知道了,面试官教我用memo实现)
    • 子组件传入一个prop,子组件获取到父组件的count值
    • 现在点击按钮时父子组件又都会重新渲染了,怎么解决
  • 反问求建议:
    • 做项目的时候技术选型没有自己的思考,好像是别人要求用这个技术,就用了,没有思考之后的取舍。比如原本为了实现协同编辑引入的Yjs,但是并没有实现协同编辑,Yjs现在也只是为了离线编辑的时候更流畅,为了这么一点小东西引入这么大的包,不值得,如果是他他会直接舍弃Yjs,还可以缩短开发周期,确保项目轻便。
    • 在技术方面没有自己的亮点,没有自己擅长的东西,面试官说他觉得重要的不是会很多东西,好像会用很多技术栈很多框架,重要的是你对一个技术的理解是否深入,如果你真的把他很多底层和细节弄明白了,其实一通百通。
    • 他说我貌似对react原生的一些hooks都不太熟悉

面试官一开始迟到了十多分钟,因为没有找到空会议室

全程没问什么八股和算法,全在问我项目的技术选型和技术细节还有最后的手写组件

我真的感觉自己啥也不知道,完全被问懵了

最后问建议的时候面试官说了很多,感恩

二面挂+反思

时间:2026/3/20 周五

一直到中午都没有一点消息,我实在沉不住气去问了帮我组内直推的朋友,很遗憾他告诉我二面挂了

<img src="mentor评价.jpg" style="zoom:25%;" />

原话:

  • 他说感觉你可能基础不算特别牢固,就是有些东西只是知道怎么做但是没有细细想过为什么要这么做

  • 然后会带来一定程度的沟通理解问题灵活性欠缺

问题出在哪

目前这个项目的技术架构/选型没体现出思考,做的事不是以解决业务实际问题为导向个人能力缺少亮点

1. 技术选型的思考

  • 我好像只是因为别人叫我用这个技术做我就用这个做了,没有自己的思考
  • 我引入yjs其实是为了做协同编辑,但是最后协同编辑没做出来,yjs只在本地存储层,面试官跟我咕咚说一堆,如果这样的话其实根本不适合引入Yjs
  • 引入一个庞大的库但是只优化了一个很没必要的点
  • 这不只是一个技术失误,这是一个思维缺陷
    • 引入Yjs是技术上的贪污,拿了不该拿的复杂度
    • 每一行代码都要对用户流量、首屏性能、包体积负责
  • 我有说我后续的思路,没做是时间原因,面试官意思是如果时间原因更应该思考在技术架构上的选择
  • 本质: 没有建立起 “成本-收益”分析模型

2. 个人能力无亮点

  • 代码基础不扎实
  • 对于一个东西,只会用而不了解【原理】和【为什么】要这么用
  • 灵活性欠缺
    • 回答问题像是在背书,一旦面试官提出其他情景/需要解决其他问题,就卡住说不出来了
    • 沟通固执,既然面试官说了这个方法不好,要换一种解决思路,就不要再重复自己原有的思路,一定要跟着引导走
    • 思考问题没有发散性,要考虑极端条件和边界条件
    • 项目流水账,体现不了自己的思考,像一个执行者而非工程师
    • 面试官引导你换个思路,你还在解释“我当时为什么这么想”。
      • 本质: 这是一种防御性沟通。你在潜意识里把面试官的质疑当成了对你能力的否定,所以本能地想要“辩护”
      • 真正的工程师思维是 “目标导向”:面试官不是在否定你,是在给你递梯子。他希望你顺着他给的思路,展示你解决问题的弹性,而不是展示你的执念
      • 在职场中,如果你做Code Review时,面对senior的质疑,第一反应是辩解而不是理解,那很快就会被贴上“难协作”的标签
  • react性能方面知识薄弱
  • 没有在一个方向深入钻研,造成好像会的很多但一旦问深了都不会的尴尬场面
  • 要有个人特点,性格?思维方式?思考角度?逻辑思维?impressive?

解决问题

1. 针对技术选型问题

  • 任何做的事情都应该是为了解决某个现实的痛点
    • 你为什么要做这个项目,有市场吗,有需求吗,行业发展的前景有考虑吗,有人用吗(忌自嗨式开发)
    • 功能解决了什么痛点,产生了什么效果,遇到了什么难点,如何解决的,学到了什么(忌无脑式开发)
    • 你的项目做到了同类产品没做到的哪些事情(平庸即原罪
    • 说话有章法,言之有物——STAR法则:Situation情景,Task任务,Action行动,Result结果
  • 你是怎么让这个项目变得更好的
    • 本质是考察你对项目的思考,性能优化?比优化更能体现思考的是:更好的架构,更好的选型
    • 在有限的时间空间,用最少的成本,杀伐果断,拿出最好的成果,最成功的产品
  • 针对现状
    • 如果不改项目,那“引入一个庞大的库但是只优化了一个很没必要的点”的痛点会一直存在
    • 下次下下次面试官拷打项目的时候,永远会有这个坑在
    • 这是一个很明显的缺点,会显得我很笨,对技术选型没有思考,直接贴上能力不达标的标签
    • 所以这个痛点一定要尽快解决,要么移除Yjs,要么补全协同编辑功能
    • 解决之后关于这个点能成为下一次面试时体现我思考的亮点

2. 针对个人能力问题

  • 代码基础不扎实

    • 细致过一遍react官网,多写多写,磨手感
  • 不了解原理和为什么

    • 多看mdn,任何技术都要打破沙锅问到底,问到原理,了解其底层如何实现,了解其在实际问题中如何运作,不能泛泛而止
  • 灵活性欠缺

    • 提升综合能力,真的理解到每个知识点的原理和运行机制才能做到灵活作答
    • 认真听面试官说了什么,减少沟通成本,力求秒懂考察点
    • 不要浪费时间,当机立断
    • 发散性思维,讲完正常情况之后尽量再分析一下极端/边界情况
    • 要做工程师而不是执行者,面试其实除了考察基础之外,就是考察一个人对自己所做事情的思考能力
  • 现在开始补课react性能

  • 钻研react方向,技术在深不在广,一通百通,求知致学

  • 面试时需要有个人特点

    • 性格方面:外向、自信、易交流、擅长团队合作、面对压力无惧色、无不良性格(如内向别扭内耗受挫愚蠢)
    • 思维方式:在有理性逻辑的前提下,可以跳脱一些,要有用户角度的产品思维,同时务必体现出技术思维,不要循规蹈矩,不要千篇一律,不要怕超出常规,要Outstanding,要Eyecatching,要Sparkling
    • 表达方式:
      • 在积极大方有礼貌的前提下,非必要不说话,不要讲口水话,避免“呃。。。”和“嗯。。。我想一下啊”,言之有物,每一句话都要有其信息量,你是为了表现自己的聪慧和专业性才张口说这话的,任何可能造成负面印象的话都咽回去
      • 并且讲事不要绕来绕去,任何事情都能用一句话说明白,第二句是承接第一句,而不是把话换一种方式又说一遍,大家的时间都很宝贵
      • 言之有物,从一个人说话的方式就能看出他的思维、性格、靠不靠的住,说话按着STAR法则说,忌张嘴乱叭叭

其他可能存在的问题

  • react状态管理,hook
  • hot100没刷完,手撕还得练
  • 项目后端怎么做的,接口怎么写的
  • http网络层面还得学
  • 行业发展前沿的技术要多了解
  • 探索前端和ai结合的领域
  • 测试,单元测试,ab测试,Jest,Cypress

人生第一次面试就是大厂,面试官很赞,压力和思维都给的恰到好处,让我这个初出茅庐的面试者学到了很多,有做事智慧的人很有魅力,加油成为那样闪耀着理性光辉的人吧,一定会有人欣赏那样的我。

每次规避掉一个坑就是进步,记住这一步,一步又一步,才能向前走去。