Skip to content

杭州 乐刻运动 校招 一面 已OC ​

2023-03-24 10:15

  • react 常用 hooks

  • redux 数据流

  • 函数式编程 => 优点

    • 主要的编程范式有三种:命令式编程,声明式编程和函数式编程
    • 更好的管理状态:因为它的宗旨是无状态,或者说更少的状态,能最大化的减少这些未知、优化代码、减少出错情况
    • 更简单的复用:固定输入->固定输出,没有其他外部变量影响,并且无副作用。这样代码复用时,完全不需要考虑它的内部实现和外部影响
    • 更优雅的组合:往大的说,网页是由各个组件组成的。往小的说,一个函数也可能是由多个小函数组成的。更强的复用性,带来更强大的组合性
    • 隐性好处。减少代码量,提高维护性
  • react 和 vue 的区别

  • 虚拟 dom

  • vue 的数据劫持和双向绑定

  • 前端设计模式

  • webpack 打包流程

    • 识别入口文件:Webpack 根据配置文件中的 entry 属性来找到项目的入口文件。
    • 解析模块依赖:Webpack 分析入口文件所依赖的所有模块,以及这些模块之间的依赖关系。
    • 编译模块:Webpack 会把所有模块编译成浏览器可以识别的 JavaScript 代码。在编译模块时,Webpack 会根据模块类型选择相应的 loader 来进行处理。比如说,对于 CSS 模块,Webpack 会使用 CSS loader 和 style loader 进行处理。
    • 输出打包后的文件:在编译完所有模块之后,Webpack 会把它们打包成一个或多个 bundle 文件。打包后的文件会根据配置文件中的 output 属性输出到指定的目录下。
    • 最后,Webpack 会对打包后的文件进行优化,比如对代码进行压缩和混淆,以减小文件大小并提高加载速度。
  • hmr 的实现原理

    • 当一个模块发生变化时,Webpack 会通过该模块的 ID,确定哪些模块需要更新,并构建新的模块。
    • 在浏览器端,Webpack 的运行时会接收到来自服务器的更新通知,并根据更新通知重新加载发生变化的模块。
    • 当浏览器完成模块的加载后,Webpack 会通过 HMR runtime API,卸载旧模块,并加载新模块。
    • 在新模块加载完成后,Webpack 会调用 HMR runtime API,通知应用程序重新运行,以保持页面的状态和逻辑与最新的代码保持一致
  • webpack 和 vite 的区别

    • 构建方式
      • Webpack 采用了类似于静态的方式来构建应用程序。它会将所有的代码都打包到一个或多个文件中,然后在浏览器中加载这些文件。Webpack 需要先构建应用程序再启动服务器。
      • Vite 则采用了基于浏览器原生 ES 模块的方式来构建应用程序。它通过浏览器原生的 import/export 语法实现模块化,并使用本地 HTTP 服务器提供开发环境。Vite 在启动时不需要先构建应用程序,而是在需要时即时编译并输出代码。
    • 构建速度
      • 由于 Webpack 的构建方式需要先将所有代码打包到文件中,因此在处理大型应用程序时,Webpack 的构建速度可能会比较慢。
      • 相比之下,Vite 的基于浏览器原生 ES 模块的构建方式使得它的启动速度非常快,并且在处理大型应用程序时也可以更快地编译和输出代码。
    • 热更新
      • Webpack 和 Vite 都支持热更新,但是它们的实现方式不同。Webpack 的热更新是通过 HMR(Hot Module Replacement)实现的,而 Vite 的热更新则是基于浏览器原生的模块热更新实现的。由于 Vite 的构建方式可以更快地输出代码,因此 Vite 的热更新通常可以更快地更新应用程序的状态和逻辑。
    • 配置方式
      • Webpack 的配置方式相对复杂,需要开发人员深入了解它的配置项和插件,才能够灵活地配置应用程序的构建流程。相比之下,Vite 的配置方式相对简单,通常只需要一些简单的配置即可完成应用程序的构建。
  • vite 的优点

  • promise 实现原理

  • 深浅拷贝 => 实现一个深拷贝

  • 防抖节流

  • 原型链

  • 事件循环

  • ts 的优点

  • http2.0 优点 => 3.0

  • tcp 和 udp 的区别

    • 连接方式:TCP 是面向连接的协议,UDP 是无连接的协议。
    • 可靠性:TCP 是一种可靠的协议,它提供了数据的完整性和有序性保证,可以检测数据是否传输成功并重传丢失的数据包;UDP 则是不可靠的协议,数据传输过程中不能保证数据的完整性和顺序性。
    • 延迟:TCP 相对于 UDP 来说延迟较高,因为它需要在数据传输前进行三次握手建立连接,并且在数据传输过程中需要保证数据的完整性和有序性;UDP 则不需要建立连接和保证数据的完整性和有序性,因此延迟较低。
    • 带宽利用率:TCP 的带宽利用率相对较低,因为它需要进行拥塞控制和流量控制;UDP 则可以充分利用带宽,因为它不进行拥塞控制和流量控制。
    • 应用场景:TCP 适用于要求可靠传输的应用,例如文件传输、电子邮件等;UDP 适用于对实时性要求较高,但对可靠性要求不高的应用,例如音视频传输、网络游戏等。
  • 开发一个 h5 的电商页面 技术选型

  • 开发一个组件库考虑哪些方面

反问 ​

  • 前端:十几人
  • 业务线
    • c 端 原生 app vue 小程序 uni-app taro
    • b 端 app RN 原生 webapp react 为主
    • 中后台 react+umi
  • 上下班时间: 9 - 6:30
  • 四面: 一面 二面前端 leader 三面 CTO 四面 HR

二面 前端 leader ​

2023-03-27 9:30

  • react 的 diff 算法
  • key 的作用
  • 深度优先遍历的优点和缺点
  • JS 处理异步的方法
  • promise 的优点和缺点
  • async await 的优点和缺点
  • 并发处理
  • 三次握手四次挥手

反问 ​

  • 建议还要再加深一些基础

三面 CTO + HRBP ​

2023-03-28 14:00

  • 输入一个url到浏览器渲染页面

  • 异步加载如何渲染

  • RN => 没用过

  • 前端布局 flex grid 双飞翼

  • 布局实现原理

  • 大学最有成就感的事

  • 别人给你打的标签

  • 加班

  • 优胜劣汰

  • 解决问题的能力

  • 手里的offer

  • 如何权衡↑

  • 工作地点

  • 如此多的应届生 你如何脱颖而出

加面 ​

2023-04-03 14:00

Released under the MIT License.