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.说说你对插槽的了解
插槽是一种用于在组件内部分发内容的机制。它允许您将内容插入到组件的特定位置,而不是将内容硬编码到组件内部
🤗 总结归纳
和面试官聊的很开心,都是对着项目来讲的,挺好的!虽然没过,建议再复习下项目上的点,下次面试说清楚一点,简历需要修改的地方等,感谢这位面试官,点赞!👍
📎 参考文章
继续加油
- 作者:皮卡秋
- 链接:https://pikachu1024.com/article/Interview-Summary-0517
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。