黑马项目一阶段面试58题 苍穹外卖业务逻辑15题
一、员工登录流程
1.前端在登录页面登录,发送请求
2.进入拦截器,拦截器放行所有登录页面的请求
3.进入三层架构,查询用户是否存在,若存在,则加盐加密,返回JWT的token,存放在请求头部。用户不存在,则不能登录。
二、登录验证如何实现的
1.试图访问任意非登录界面,前端发送请求
2.进入拦截器,开始拦截验证JWT。
3.校验成功,则进入访问界面。否则跳到登录界面。
三、项目开发有哪些角色
项目经理
对整个项目分工,负责进度把控。
可能会用到项目管理软件,比如禅道、ones。
除了项目经理,第二牛气的:
产品经理
进行需求调研分析,输出需求调研文档、产品原型。
跟上面领导打交道比较多,但不是领导胜似领导,只是一个岗位名称。意思就是,我出需求,你来实现,是提要求的,所以一般就牛气一点。
(出需求的产品经理,是程序员的天敌)
UI设计师
根据产品原型输出界面效果图。
不一定是小姐姐的哦。
架构师
项目整体架构设计,即项目整体结构的搭建,还有技术选型等。
比如架构是选微服务还是单体,用什么技术,设计什么模块,
以及一些棘手的问题,都是架构师去做。
架构师不一定很牛,有牛逼的也有菜的。有些大公司,有小组,其中就有架构师组。里面的,不一定都是你能佩服到高山仰止的哦~
开发工程师
代码实现。
喏,苦逼打代码的来了。
测试工程师
编写测试用例,输出测试报告。
运维工程师
软件环境搭建,运行项目。
其他
在公司内可能还有其他细化方向,比如还有DBA,即数据库管理员。
他们就只写SQL语句。
四、编辑员工的流程
1.完善之前登录时存储员工id到线程中。
2.完成回显功能,即根据id查询出员工。
3.完成修改功能,即update员工数据。
五、公共字段自动填充实现流程
1.确定使用AOP技术。
2.在com.sky.annotation包下创建自定义注解,比如叫AutoFill
3.用一个枚举类代表更新和新增两种状态,并放入自定义注解中。
4.在com.sky.aspect包下自定义切面类
5.完善切面类的自动填充逻辑,判断更新、新增两种状态,进行不同处理。
6.在mapper中对应的方法上加自定义注解
六、新增菜品的流程
1.实现文件上传。
(1)在配置文件中引入自己的阿里云。
(2)写一个类,比如AliOssProperties,用来读取配置文件。
(3)写一个工具类,用来上传文件。
(4)用一个配置类,比如OssConfiguration,来生成OSS工具类对象。
(5)在三层架构中注入、调用实现文件上传。其中要用UUID随机生成文件名。
2.实现新增菜品的文本细节新增。注意要增入两个表,一个dish,一个dish_flavor。
七、删除菜品的流程
注意业务层分四步:
1.判断是否起售
2.判断是否被套餐关联
3.删除菜品表中数据
4.删除菜品关联的口味数据
八、修改菜品的流程
首先实现根据id查找
然后实现修改
注意修改口味时要先删除原有口味,再单个for循环插入,或多个一起插入。
九、微信登录流程
1.controller层接收前端传过来的授权码code,调用service层,查找授权码是否通过校验。
2.service层校验授权码是否有效,无效则抛出异常;有效,则调用mapper层查询用户。
3.mapper层查找已存在用户并返回service值。
4.service中,若用户存在,直接返回;若不存在,完成用户的自动注册,并返回用户给controller层。
5.controller拿到返回用户,即用户存在或注册好后,封装响应对象,最后返回给前端。
总结3层架构:
controller层:
1.用DTO接收授权码
2.交给service层校验授权码是否有效,拿到返回值用户
3.将返回用户封装给VO,return给前端
service层:
1.准备参数,利用微信第三方,校验授权码是否有效
2.解析响应参数,获取openid。如果为空,说明校验无效,抛异常
3.根据openid,交给mapper查询user列表,如果没有对应的用户,完成自动注册;
4.返回用户
mapper层:
根据openid,查询是否存在用户
十、缓存菜品流程
1.在service层添加代码。添加代码如下:
1.1查询redis。
1.2如果redis中没有数据,则用mapper查询出数据。有则直接跳到1.4步
1.3将mapper查出的数据存入redis。
1.4返回数据
十一、添加购物车流程
1.前端传给controller层菜品/套餐与口味等。
2.controller层交给service层进行添加到购物车。
2.1判断购物车中是否已经存在。调用mapper层,select一下。
2.2如果存在,则只修改数量,交给mapper update一下数量。
2.3如果不存在,则分类添加菜品or套餐给shopcart对象。
2.3.1如果是菜品,查出菜品以及id、图片等
2.3.2如果是套餐,查出套餐以及id、图片等。
2.4添加shopcart对象到数据库,mapper insert进去。
3.mapper层照上操作
十二、用户下单流程
1.查询地址
2.查询购物车
3.封装订单,并添加一条
4.封装订单详情,有可能添加多条
5.清空购物车
6.封装VO并返回
十三、微信支付流程
1.调用微信下单接口;
2.返回预支付交易标识;
3.将组合数据再次签名;
4.推送支付结果;
5.更新订单状态。
十四、来单提醒和用户催单实现流程
来单提醒:
在提交订单的业务层代码里加入WebSocket的注入,然后传输带订单信息的map。
用户催单:
在三层架构里面写催单功能,也用WebSocket来注入、实现双向通信。
十五、导出运营数据实现流程
-
读取Excel模版到内存中。
-
准备运营数据
-
将数据写到Excel模板中。
-
将Excel文档响应回浏览器(文件下载)
注意的点
ClassLoader能加载的文件位置
ClassLoader能加载的文件位置在resources下。
放入resources后需要的操作
需要用maven构建管理的complie编译一下,才能保证类加载器ClassLoader加载到。
创建的POI与Office对应的下标
下标中getRow(0)与getCell(1)对应的分别是第一列第2行的数据
相关文章:
黑马项目一阶段面试58题 苍穹外卖业务逻辑15题
一、员工登录流程 1.前端在登录页面登录,发送请求 2.进入拦截器,拦截器放行所有登录页面的请求 3.进入三层架构,查询用户是否存在,若存在,则加盐加密,返回JWT的token,存放在请求头部。用户不…...
C++学习笔记总结练习: 字符串类MyString的实现
MyString是一个自定义的字符串类,它封装了一些常见的字符串操作和功能。下面是一个简单的MyString类的实现示例: #include <iostream> #include <cstring>class MyString { private:char* m_data; // 用于存储字符串的字符数组int m_length…...
测试人进阶技能:单元测试报告应用指南
为什么需要单元测试 从产品角度而言,常规的功能测试、系统测试都是站在产品局部或全局功能进行测试,能够很好地与用户的需要相结合,但是缺乏了对产品研发细节(特别是代码细节的理解)。 从测试人员角度而言࿰…...
非2的幂次的ASTC纹理格式尺寸对带宽的影响
1)非2的幂次的ASTC纹理格式尺寸对带宽的影响 2)C#端如何处理xLua在执行DoString时候死循环 3)如何制定美术规范或者各个模块的指标 4)如何处理Lua的io.open出现中文路径 这是第348篇UWA技术知识分享的推送,精选了UWA…...
Java设计模式之策略模式
1. 策略模式介绍 1、根据它来避免 if-else 或 switch 分支判断,避免使用多重条件转移语句; 2、支持“开闭原则”,可以在原有基础上选择行为方法,同时允许增加行为方法。 2. 策略模式结构类 ① 接口或抽象类:自定义接口…...
IPv4分组
4.3.1 IPv4分组 IP协议定义数据传送的基本单元——IP分组及其确切的数据格式 1. IPv4分组的格式 IPv4分组由首部和数据部分(TCP、UDP段)组成,其中首部分为固定部分(20字节)和可选字段(长度可变࿰…...
Jmeter常用功能-参数化介绍
JMeter也有像LR中的参数化,本篇就来介绍下JMeter的参数化如何去实现。 参数化:录制脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统。 这个时…...
“深入探索JVM内部机制:解密Java虚拟机的工作原理“
标题:深入探索JVM内部机制:解密Java虚拟机的工作原理 摘要:本文将深入探索Java虚拟机(JVM)的内部机制,解密其工作原理。我们将介绍JVM的基本组成部分、类加载过程、内存管理和垃圾回收、即时编译器等关键概…...
C++超基础语法
💓博主个人主页:不是笨小孩👀 ⏩专栏分类:数据结构与算法👀 C👀 刷题专栏👀 C语言👀 🚚代码仓库:笨小孩的代码库👀 ⏩社区:不是笨小孩👀 🌹欢迎大…...
位运算相关题目:下一个数、整数转换、配对交换
题目1:下一个数 给定一个正整数,找出与其二进制表达式中1的个数相同且大小最接近的那两个数(一个略大,一个略小)。 示例: 输入:num 2(或者0b10) 输出:[4,…...
【数据结构】链表常见题目
文章目录 链表合并两个有序链表反转链表复制带随机指针的链表环形链表环形链表II相交链表移除链表元素链表中倒数第k个节点链表分割链表的回文结构链表的中间节点旋转链表链表排序链表求和 (逆序求)链表求和II (正序求)重排链表奇偶链表反转链表II <==> 链表内指定区间反…...
多家企业加入即将在2024年发射的量子卫星SpeQtral-1任务
近日,总部位于新加坡的量子通信技术公司SpeQtral宣布将与纳米航空电子公司NanoAvionics和卫星光子学公司Mbryonics合作执行即将到来的SpeQtral-1量子密钥分发(Quantum Key Distribution, QKD)卫星任务。NanoAvionics被选为卫星平台提供商&…...
shell脚本基础
目录 前言 一、概述 (一)、shell脚本基础概念 (二)、shell的类型 二、Shell变量 (一)、组成 1.变量名 2.变量值 (二)、类型 1.系统内置变量(环境变量) 2.自定…...
创建maven的Springboot项目出现错误:Cannot access alimaven
创建maven的Springboot项目出现错误:Cannot access alimaven 1)问题2) 分析问题3)解决问题 1)问题 创建maven的Springboot项目出现错误: Cannot access alimaven (http://maven.aliyun.com/nexus/content/groups/p…...
神经网络基础-神经网络补充概念-32-神经网络与大脑
概念 神经网络(Neural Networks)是受到生物神经系统启发而设计的机器学习模型,用于处理和学习复杂的数据模式。尽管神经网络的设计和工作原理与大脑有一些相似之处,但它们并不完全相同,以下是神经网络和大脑之间的一些…...
linux自动填充密码及提示信息
背景:需要自动创建nvc的登录密码 sudo apt-get install expect expect 是由Don Libes基于Tcl(Tool Command Language )语言开发的,主要应用于自动化交互式操作的场景,借助Expect处理交互的命令,可以将交互…...
IC设计中主要的EDA工具有哪些? (内附EDA虚拟机安装资源)
EDA工具的使用涵盖了芯片的功能设计、综合、验证、物理设计等环节,更是被称作“芯片设计的工作母机”。下面就来为大家具体介绍一下常见的EDA工具。(需要EDA虚拟机安装资源文末可领取~) 什么是EDA? EDA是电子设计自动化…...
Zabbix配置通用的TCP/IP:port监控项
我们经常的用接口,比如说FTP、HTTP、DNS、数据库接口,都可以用IP:PORT方式探测其是否存活,那么我们去繁就简,就简单监控一下IP:PORT吧! 1、新建主机: 填入主机名称、群组、Agent可以不填&…...
【RocketMQ】SpringBoot集成RocketMQ
SpringBoot集成RocketMQ 首先依旧是引入依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.2</version> </dependency>然后就可以编写发送不同类…...
思腾云计算
思腾合力受邀参加第七届世界智能大会,届时在会上展出思腾合力 AI 服务器。诚挚邀请与会者来思腾展位(S10-B04)参观与交流,领取七彩虹电竞机械键盘与鼠标、正版NVIDIA信仰尺、公牛魔方智能USB插座、超大桌面鼠标垫等精美礼品。 由天…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
