前端高频面试题2024/9/22(偏项目问题--通用后台管理系统)

news2024/11/27 14:46:08

文章目录

    • 一.前端项目概述
      • 1.系统登录注册模块
        • 1.对注册的密码进行加密 (使用加密中间件bcrypt.js)
        • 2.登录成功后返回token
        • 3.前端登录页面有用到弹性布局,ref和reactive
        • 4.登录头像:文件上传
      • 2.系统设置模块
      • 2.系统首页模块(轮播图+栅格布局+dialog弹窗)
        • 1.弹窗+富文本编辑器wangeditor
      • 3.系统概览模块(echart组件可视化信息,快速点击入口)
        • 1.用了哪些echart图?
      • 4.用户管理模块
        • 1.前端完成分页功能(实现一个算法)
        • 2.用户赋权问题
    • 二.针对项目可能问的问题
      • 1.用ts吗?说一下你常用的知识点。
      • 2.vue3和vue2的区别。
      • 3.说一下你项目中的难点,是怎样解决的?
      • 4.我看你项目中用过node.js,说一下你对前端用node.js的看法
      • 5.你为什么选择用express框架,express和koa的区别
      • 6.说一下computed和watch的区别,及实现原理
      • 7.你工作中有没有自己写过组件,你觉得写组件的原则是什么?
      • 8.用过哪些设计模式?什么场景下会遇到
      • 9.你对高内聚,低耦合怎么理解?
      • 10.做过哪些性能优化?
      • 11.用过哪些加密方式,都怎么用的?
      • 12.ref和reactive的区别?(组件间传值会用上)
      • 13.Dialog对话框是什么?
      • 14.解构赋值是什么?
      • 15.你这里的文件上传是怎么做的?
      • 16.项目中有遇到哪些错误吗?
      • 17.项目中前端你是如何发送请求的?(写一下原生ajax发送请求)
      • 18.基于promise怎么封装这个axios请求?
      • 19.说一下事件循环?
      • 20.多端适配怎么做?
      • 21.echart了解到什么程度,底层是用canvas和re-render
      • 22.路由传参query和params区别
      • 23.

一.前端项目概述

在这里插入图片描述

1.系统登录注册模块

前端通过ts限制数据类型,后端通过joi限制数据类型
这里的这个joi是对输入数据进行限制的中间件
!!

1.对注册的密码进行加密 (使用加密中间件bcrypt.js)
对密码进行加密bcrypt.js
reginfo.password = bcrypt.hashSync(reginfo.password,10)//10是指加密后的长度

这里后端解密(compareSync),其实也不是真正的解密,这种密码一般都是不可逆的

const compareResult = bcrypt.compareSync(loginfo.password,result[0].password)
2.登录成功后返回token

生成返回给前端的token

res.send({
results:results[0]
status:0
message:"登录成功"
token:'Bearer'+tokenStr
})
3.前端登录页面有用到弹性布局,ref和reactive

弹性布局:flex

display:flex
justify-content:space-between

ref:通常用来定义基本数据类型
reactive:如果使用的是数组和对象,就要使用reactive

const activeName = ref('first')
const loginData = reactive({
account:'',
password:'',
})
4.登录头像:文件上传

Multer是一个node.js中间件
用于处理multipart/form-data类型的表单数据
它主要用于上传文件
!!!
通常情况下,上传图片后,这个图片会和上传该图片的用户绑定
我之前做这个部分的时候,用的是image_url绑定的,事实上,用image_url绑定容易出错,可能会出现相同的url地址。
后来的解决方案是使用onlyid去分别绑定图片的地址,然后用这个onlyid去绑定用户
onlyid是使用node.js的crypto库随机生成的。

2.系统设置模块

pinia:因为我们当前的数据是多组件共用的一个数据
pinia是vue的专属状态管理库
它允许你跨组件或页面共享状态

封装了一个面包屑组件

2.系统首页模块(轮播图+栅格布局+dialog弹窗)

首页基本布局:
在这里插入图片描述

1.弹窗+富文本编辑器wangeditor

在这里插入图片描述

3.系统概览模块(echart组件可视化信息,快速点击入口)

在这里插入图片描述

1.用了哪些echart图?

饼状图,柱状图,环形图,折线图

4.用户管理模块

在这里插入图片描述

1.前端完成分页功能(实现一个算法)

在这里插入图片描述

2.用户赋权问题

本系统做的是一个企业管理系统,在企业中不同的岗位有不同的权限,因此我们需要做一个用户赋权的判断。
其实就是一个dialog弹窗,里面有一个单选
在这里插入图片描述

二.针对项目可能问的问题

1.用ts吗?说一下你常用的知识点。

2.vue3和vue2的区别。

1.vue3中引入组合式api,在setup()中可以更加灵活的组合和复用逻辑,vue2中逻辑分布在data,computed,methods中,有局限性。
2.vue3更好的支持ts
3.生命周期不同,vue3生命周期是setup(),onbeforeMount,onMounted,onbeforeUpdate,onUpated,onbeforeUnMount,onUnmounted
4.vue2使用vuex,vue3使用pinia

3.说一下你项目中的难点,是怎样解决的?

图片上传部分,不能直接根据图片url进行绑定用户,因为它这个图片地址可能是一样的,我们需要为头像创建一个唯一id,通过这个唯一id去绑定用户

4.我看你项目中用过node.js,说一下你对前端用node.js的看法

node.js是一个基于chorme V8引擎的JavaScript运行环境。

5.你为什么选择用express框架,express和koa的区别

6.说一下computed和watch的区别,及实现原理

7.你工作中有没有自己写过组件,你觉得写组件的原则是什么?

写过一些小组件,比如面包屑组件,就是一个导航列表,显示你现在正在哪个功能目录下,比如:用户管理模块–>产品管理员这种
还有头组件,页面底部组件这些
原则是可复用性高,能够是代码更简洁,减少代码量比较好

8.用过哪些设计模式?什么场景下会遇到

发布订阅模式
像数据双向绑定,事件总线都是用的发布订阅模式

9.你对高内聚,低耦合怎么理解?

10.做过哪些性能优化?

数据缓存机制,将用户信息缓存在本地,因为很多组件都要用到这个信息
上传大文件是用的异步上传,几个切片并行上传,节省了时间,提高了性能

11.用过哪些加密方式,都怎么用的?

1.有用过一个加密中间件,是一个密码哈希函数,叫bcrypt.hashSync()
用在系统登录注册模块,前端将用户密码传到数据库的时候,传的其实是加密后的密码,下次再判断用户密码是否正确时,就把用户输入的密码加密,将加密后的内容与数据库中存放的加密密码比较,如果相同,就表示用户输入的密码是正确的。

12.ref和reactive的区别?(组件间传值会用上)

ref和reactive都可以用来创建响应式数据
1.ref一般用来定义基本数据类型的响应式数据,而reactive通常用来定义对象数组这种复杂的数据类型。
2.当你给ref赋值时,vue会自动将值包装到一个带有.value属性的对象中,因此,后面访问,可以通过ref.value来修改这个值

import {ref} from 'vue'
const count = ref(0)
console.log(count.value)
count++
console.log(count.value)

3.当你用reactive创建一个响应式数据时,赋值给他的对象不会被包装,你可以直接访问他的属性

import {reactive} from 'vue'
const state = reactive({
count:0;
})
console.log(state.count)
state.count++
console.log(state.count)

13.Dialog对话框是什么?

就是一个弹窗,这个对话框的内容可以是任何东西,甚至可以是一个表格或表单。

//控制弹窗,默认关闭
const state = reactive({
forgetpasswordDialog:false
})
//打开弹窗
const open=()=>{
state.forgetpasswordDialog=true}

14.解构赋值是什么?

15.你这里的文件上传是怎么做的?

上传头像部分,是使用node.js里面的multer来实现的。

16.项目中有遇到哪些错误吗?

通常情况下,上传图片后,这个图片会和上传该图片的用户绑定
我之前做这个部分的时候,用的是image_url绑定的,事实上,用image_url绑定容易出错,可能会出现相同的url地址。
后来的解决方案是使用onlyid去分别绑定图片的地址,然后用这个onlyid去绑定用户
onlyid是使用node.js的crypto库随机生成的。

17.项目中前端你是如何发送请求的?(写一下原生ajax发送请求)

我的项目是基于vue做的,我用的是axios方法

axios.get("https://api.example.com/data")
.then(response=>{
console.log(response.data)})
.catch(error=>{
console.error('Error fetching data: ', error)
}

18.基于promise怎么封装这个axios请求?

定义一个函数将axios封装起来

function fetchData(url){
return new promise(resolve,reject)=>{
axios.get(url)
.then(response=>{
resolve(response.data)})
.catch(error=>{
reject("error",error)})
}
}
//调用封装好的函数
fetchData("https://api.com/data")
.then(data=>{
console.log(data)
}
.catch(error=>{
console.error('Error fetching data: ', error)})
)

19.说一下事件循环?

20.多端适配怎么做?

21.echart了解到什么程度,底层是用canvas和re-render

22.路由传参query和params区别

query类似于get,参数会拼接到地址栏中显示,数据不会丢失
params类似于post,参数不会显示在地址栏,相对于query传参比较安全,但是传参过去后,参数保存在内存中,再次刷新页面或跳转到其他页面时数据会丢失。

23.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2204476.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第472题连接词

题目: 题解: type trie struct {children [26]*trieisEnd bool }func (root *trie) insert(word string) {node : rootfor _, ch : range word {ch - aif node.children[ch] nil {node.children[ch] &trie{}}node node.children[ch]}node.isE…

ES-入门-http-多条件查询范围查询

must 表示多个条件需要同时满足 在postman 对应的参数配置如下 {"query": {"bool": {"must" : [{"match" :{"category":"小米"}},{"match":{"price":3999.00}}]}} } 如下图查询的结果是需…

JAVA科技赋能共享台球室无人系统小程序源码

科技赋能共享台球室无人系统 —— 智慧台球新体验 🎱 科技引领,台球室迎来无人新纪元 在这个日新月异的科技时代,共享经济的浪潮席卷而来,为我们的生活带来了诸多便利。而今天,我要为大家介绍的,正是科技…

便民医疗服务小程序后端springboot 服务 vue3 开发的后端 系统设计与实现

博主介绍:专注于Java(springboot ssm springcloud等开发框架) vue .net php phython node.js uniapp小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆…

基于Springboot+Vue的智能推荐旅游平台 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统中…

初学Qt之环境安装与 hello word

环境: Qt Creator 4.11.0 (Community) Qt 5.14.0 目录 1.Qt环境配置 1.1 下载Qt 5.14.0 1.2 注册Qt账号 1.3 安装Qt 1.4 配置环境变量 2.创建项目 2.1 创建一个项目 2.2 初始代码解析 2.3 可视化GUI ​编辑 2.4 hello word 2.4.1 可视化hello word …

探索光耦:光耦助力高速电吹风安全与性能的革命性提升

在消费者对家电产品智能化与安全性需求日益增长的今天,高速电吹风作为个人护理领域的明星产品,正经历着前所未有的技术创新。其中,光耦(光电耦合器)的引入,无疑为电吹风的性能优化与安全保障开辟了新路径。…

Java基础(下)

泛型 Java 泛型&#xff08;Generics&#xff09; 是 JDK 5 中引入的一个新特性。使用泛型参数&#xff0c;可以增强代码的可读性以及稳定性。 编译器可以对泛型参数进行检测&#xff0c;并且通过泛型参数可以指定传入的对象类型 ArrayList<Person> persons new Arra…

【linux】冯诺依曼架构

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;linux笔记仓 目录 01.冯诺依曼体系结构02.操作系统&#xff08;Operator System&#xff09;如何理解“管理”操作系统中实现“管理的先描述再组织” 03.系统调用与库函数系统调用库函数 01.冯诺依…

SSM(5)(动态sql <if>、<where>、返回主键值)

返回主键值&#xff1a; 方法一&#xff1a; useGeneratedKeys 为ture 声明 返回主键 keyProperty 表示要返回的值 封装到对象的属性中 但是这一种方法不支持Orcal数据库。 <insert id"save2" parameterType"com.findyou.entity.User" useGenerated…

[软件工程]—TFTP协议简要解析

TFTP协议简要解析 1.TFTP基本概念 TFTP&#xff08;Trivial File Transfer Protocol&#xff09;&#xff1a;是一个很小且易于实现的文件传送协议&#xff1a; TFTP使用客户服务器方式和使用UDP数据包&#xff0c;因此TFTP需要有自己的差错改正机制。TFTP只支持文件传输而不…

基于STM32 ARM+FPGA+AD的电能质量分析仪方案设计(一)硬件设计

电能质量分析系统硬件设计 3.1 电能质量分析系统设计要求 本系统实现对电能质量的高精度测量&#xff0c;根据国家相关电能质量分析仪器规定 标准以及对市场电能质量分析仪的分析&#xff0c;指定以下设计目标。 &#xff08; 1 &#xff09;电能质量参数测量精度&#xf…

基于 Prometheus+Grafana+Alertmanager 搭建 K8S 云监控告警平台(附配置告警至QQ、钉钉)

文章目录 一、机器规划二、部署安装 node-exporter、prometheus、Grafana、kube-state-metrics1、创建 monitor-sa 命名空间2、安装node-exporter组件2.1、说明2.2、应用资源清单2.3、通过node-exporter采集数据 3、k8s 集群中部署 prometheus3.1、创建一个 sa 账号3.2、将 sa …

智谱开放平台API调用解析

一、什么是智谱AI 智谱AI成立于2019年&#xff0c;由‌清华大学计算机系知识工程实验室的技术成果转化而来&#xff0c;是一家致力于人工智能技术研发和应用的公司。智谱致力于打造新一代认知智能大模型&#xff0c;专注于做大模型的中国创新。 二、智谱开放平台API调用 官方文…

遍历有向图链路(DFS算法)- 优化版

在上一节基础上&#xff0c;去除了节点的pre集合&#xff0c;只保留节点next的结合&#xff0c;对数据模型进行了优化&#xff0c;实现思想做了优化。 有向图示例&#xff1a; 基本思路 构建有向图数据模型校验有向图不能出现回路&#xff0c;即当前节点不能出现在历史链路中首…

Java控制台实现《多线程模拟龟兔赛跑》(实现Runnale接口,重写run()方法)

&#xff08;温馨提示&#xff1a;本题最重要的是学习思路&#xff0c;代码还有待优化和改进&#xff01;&#xff09; 下一篇博客进行优化。实现Callable接口&#xff1a;V call() throws Exception 。可以返回结果&#xff0c;以及可以抛出异常。&#xff08;启动线程比较麻烦…

spingboot项目打包到docker镜像[保姆级教程]

目录 1. 项目准备 2. 项目打包测试 3. docker配置 3.1 服务器端配置 3.2 开发IDEA配置 3.3 创建dockerfile 写在前面: 这博客一晃鸽了好久了,其实不是没有创作,只是懒得写博客了.日常都记录在自己的语雀小本本上了.好久没有出保姆级教程了&#xff0c;这次忽然想通过ide…

IP地址类型选择指南:动态IP、静态IP还是数据中心IP?

你是否曾经困惑于如何选择最适合业务需求的IP地址类型&#xff1f;面对动态IP、静态IP和数据中心IP这三种选择&#xff0c;你是否了解它们各自对你的跨境在线业务可能产生的深远影响&#xff1f; 在跨境电商领域&#xff0c;选择合适的IP类型对于业务的成功至关重要。动态IP、…

UART在Linux内核启动时突然不打印的问题

国庆前一天收到的任务&#xff0c;在一颗比较成熟的芯片的SDK基础上&#xff0c;移植一个新内核&#xff0c;让它能够在bitfile下跑在FPGA上。 看了芯片设计那边给的文档&#xff0c;对比过去的那颗&#xff0c;感觉也就改改寄存器&#xff0c;中断号&#xff0c;时钟&#xff…

聚焦AI|智享AI直播三代模型的出现,打破传统直播束缚!

聚焦AI|智享AI直播三代模型的出现&#xff0c;打破传统直播束缚! 在数字化浪潮的推动下&#xff0c;直播行业正经历着前所未有的变革与升级。其中&#xff0c;智享AI直播三代模型的出现&#xff0c;无疑成为了业界关注的焦点。这一创新技术不仅引发了关于无人直播未来发展方向的…