type
status
date
slug
summary
tags
category
icon
password
😀
20240508 深圳某公司中高级前端面试,很友好,
 

📝 主旨内容

1.网站监控系统你是怎么做的

2.nestjs与其他的框架有什么区别,你用过哪些拦截器,jwt是什么 ,你是如何实现登录的

JWT 是一种用于在客户端和服务器之间传递身份信息的令牌。在 Nestjs 中,可以使用中间件来实现 JWT 认证。我在 Nestjs 中实现 JWT 认证的步骤如下:
  • 在认证中间件中,使用 JWT 解析库解析 JWT 令牌,并提取出其中的用户信息。
  • 根据用户信息查询数据库,验证用户是否合法。
  • 如果用户合法,在请求上下文中设置用户信息,以便后续的路由处理函数可以获取到用户信息。
  • 如果用户不合法,返回错误响应。
我使用了以下拦截器:
  • 认证拦截器:用于验证用户的身份信息,确保只有授权用户能够访问受限资源。
  • 权限拦截器:根据用户的权限对请求进行授权,确保用户只能访问其权限范围内的资源。
  • 日志拦截器:记录请求的相关信息,以便进行日志分析和问题排查。
 

3.你们平常代码规范有哪些

代码规范可以包括代码风格、注释、命名规则等方面。在我的项目中,我们的代码规范如下:
  • 代码风格:遵循统一的代码风格,例如缩进、换行、空格等。
  • 注释:添加必要的注释,解释代码的功能和逻辑。
  • 命名规则:使用有意义的命名规则,例如变量名、函数名、类名等。

4.代码提交有哪些规范

代码提交规范可以包括提交信息的格式、拉取请求的流程等方面。在我的项目中,我们的代码提交规范如下:
  • 提交信息的格式:包括主题和描述,主题简要描述本次提交的主要内容,描述详细说明本次提交的具体内容和修改原因。
  • 拉取请求的流程:先在本地分支上进行开发,完成后提交到远程分支,并发起拉取请求。其他开发者会进行 code review,并提出修改意见。开发者根据修改意见进行修改后,再次提交到远程分支,并等待合并。

5.说下公司的git工作流

git 工作流可以根据项目的需求和团队的习惯来定制。在我的公司中,我们使用的 git 工作流是 feature-branching 工作流。在这个工作流中,每个开发任务都在一个单独的分支上进行开发,完成后合并到主分支。

6.mixin 和 hooks 有什么 区别 mixin的原理是什么,是如何做到混入的

Mixins 它允许你将组件的功能提取出来,形成一个可复用的模块。
Hooks ,它允许你在函数组件中使用状态和生命周期方法。它们的区别在于:
  • 实现方式不同:Mixins 是通过对象的方式将功能混合到组件中,而 Hooks 是通过函数的方式将功能钩子到组件中。
  • 作用域不同:Mixins 中的功能是全局共享的,而 Hooks 中的功能是局部的,只在当前组件中生效。
  • 可读性不同:Hooks 的代码更具可读性,因为它更符合函数式编程的风格。

7.Ts中泛型 你说下你的理解

TypeScript 中的泛型是一种类型参数化的技术,它允许你在定义函数、接口、类等时,使用类型参数来表示不同的类型。泛型的优势在于:
  • 提高代码的可读性和可维护性。
  • 增强类型检查的能力,避免类型错误。
  • 提高代码的复用性,减少重复代码。

8.webpack和vite的区别

Webpack 和 Vite 的区别主要在于:
  • 构建速度:Vite 的构建速度比 Webpack 快很多,因为它采用了基于 ESModule 的模块系统,而 Webpack 则需要将模块转换为 CommonJS 格式。
  • 配置复杂度:Webpack 的配置相对复杂,需要配置很多选项,而 Vite 的配置相对简单,只需要配置一些基本的选项。
  • 适用场景:Webpack 适用于大型项目和复杂的应用场景,而 Vite 适用于小型项目和简单的应用场景。

9.组件库开发 打包的产物是什么样子的

组件库开发中,打包的产物通常包括 JavaScript 文件、CSS 文件、图片等资源。在我的项目中,我使用 Webpack 来打包组件库,打包的产物包括一个 JavaScript 文件和一个 CSS 文件,以及一些图片资源。

10.code review 你只要负责什么

在 code review 中,我主要负责检查代码的质量、风格、可读性、可维护性等方面,并提出修改意见和建议。

11.项目结构优化你做了些什么

项目结构优化可以包括组件的拆分、目录的组织等方面。在我的项目中,我做了以下几方面的项目结构优化:
  • 组件的拆分:将复杂的组件拆分成多个小的组件,提高组件的复用性和可维护性。
  • 目录的组织:将代码按照功能和模块进行分类,放置在不同的目录中,提高代码的可读性和可维护性。

12.你拆分过哪些组件

在项目中,我拆分过一些组件,例如将一个大的表单组件拆分成多个小的组件,分别负责不同的表单字段和验证逻辑。

13.为什么要重构代码

重构代码的原因主要有以下几点:
  • 提高代码的可读性和可维护性。
  • 优化代码的性能。
  • 解决代码中的问题和错误。
  • 适应新的需求和变化。

14.说说你对插槽的了解

插槽是一种用于在组件内部分发内容的机制。它允许您将内容插入到组件的特定位置,而不是将内容硬编码到组件内部

🤗 总结归纳

和面试官聊的很开心,都是对着项目来讲的,挺好的!虽然没过,建议再复习下项目上的点,下次面试说清楚一点,简历需要修改的地方等,感谢这位面试官,点赞!👍

📎 参考文章

 
💡
继续加油
面试总结-0430面试总结-0511