苍穹外卖面试题-下

17. 项目参与人员角色

  1. 项目经理(1人):对整个项目负责,任务分配、把控进度

  2. 产品经理(1人):进行需求调研,输出需求调研文档、产品原型等

  3. UI设计师(1人):根据产品原型输出界面效果图

  4. 架构师(0人):项目整体架构设计、技术选型等

  5. 开发工程师(3+2):功能代码实现

  6. 测试工程师(2人):编写测试用例,输出测试报告

  7. 运维工程师(1人):软件环境搭建、项目上线

18. git在工作中的使用流程

我在工作中对于git的使用,可分为以下几个步骤:

  1. 首先,每天上班之后,我会从公司远程仓库中进行拉取(pull),以保证本地项目和远程仓库项目进度一致

  2. 然后,在本地的开发分支上新建一个当天的分支,进行代码开发

    开发过程中一般在完成某功能或某一模块时,进行本地提交(commit)

  3. 结束一天工作后,先将本地新分支的代码合并到开发分支

  4. 最后,提交(push)到远程仓库前,先进行拉取(pull),如果有冲突,就先进行冲突解决,解决完毕之后,再push

19. 介绍一下苍穹外卖项目

本项目是专门为一家餐厅定制的一款软件产品,主要包含包括 系统管理端小程序端 两部分

系统管理端提供给餐饮企业内部员工使用,可以对餐厅的分类、菜品、套餐、订单、员工等进行管理维护

小程序端提供给消费者使用,可以在线浏览菜品、添加购物车、下单、支付、催单等操作

我在这个项目中主要负责后端分类、套餐、菜品模块和小程序端的所有功能

20. 苍穹外卖核心功能

菜品新增:对菜品表和口味表进行新增操作

  1. 首先将前端传过来的菜品信息保存到菜品表并主键返回,然后遍历前端传过来的口味集合,
  2. 为每个口味设置刚才返回来的主键并保存到口味表

菜品修改:对菜品表进行更新,对菜品详情表进行增删操作

  1. 首先根据前端传过来的菜品信息对菜品表进行修改
  2. 然后根据菜品id删除对应的口味列表集合
  3. 最后再把前端传过来的口味集合重新加入到口味表中

菜品删除:对菜品表和口味表进行删除操作

  1. 遍历前端传过来的菜品id集合得到每个菜品的信息
  2. 如果当前菜品是启售状态或者被套餐关联那么就不能被删除
  3. 否则就可以通过菜品id对菜品表和口味表中的数据进行删除

套餐新增:对套餐表和套餐菜品关系表进行新增操作

  1. 首先将前端传过来的套餐基本信息保存到套餐表中,并返回主键的id
  2. 然后为前端传过来的套餐菜品设置套餐id
  3. 最后将套餐包含的菜品添加到套餐菜品关系表中

套餐修改:对套餐表进行修改,在对套餐菜品关系表进行增删操作

  1. 首先根据前端传过来的套餐基本信息更新到套餐表中
  2. 然后根据套餐的id删除所有套餐菜品关系表中包含的菜品信息
  3. 最后遍历前端传过来的菜品的列表,设置好套餐的id后重新保存到套餐菜品关系表中

套餐删除:对套餐表和套餐菜品关系表进行删除操作

  1. 首先遍历前端传过来套餐id的集合得到每一个套餐的信息
  2. 然后根据id查询套餐,判断套餐的状态是否为启售状态,如果是启售状态,则不能删除
  3. 如果是在禁售状态,就可以通过套餐的id进行套餐菜品关系表的删除操作

分类删除

  1. 分类删除的核心逻辑就是根据前端传过来的分类id去分类表进行一个删除操作
  2. 但是要对这个分类里面是否有菜品和套餐做一个判断,拿着这个id去菜品表和套餐表做一个统计查询
  3. 如果查出来数量大于0,就不能删除,如果为0,直接删除

添加购物车:将用户选择的商品基本数据信息添加到数据库表中进行保存

  1. 利用到的数据库表(本次项目):购物车表,菜品表、套餐表,保存的信息就是从表中查到的

  2. 首先根据id查询购物车中是否有相同商品

    有:则不用添加,只修改查询到的商品number属性+1并重新赋值即可,执行mapper更新。

    无:则判断是菜品还是套餐,查询对应商品的数据库得到基本信息,补全购物车需要的参数执行保存。

公共问题

  1. 在这个项目中主要负责的模块是什么?
  2. 项目中哪些表是你负责设计的? 它们之间的关系是什么?

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

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

相关文章

电商产品经理常用的ChatGPT通用提示词模板

电商产品规划和策略:请帮助我规划和制定电商产品的策略和计划,包括市场调研、用户需求分析、产品定位、竞争对手分析等方面的内容,以便我能够更好地把握市场机会并制定相应的发展策略。 电商产品设计和开发:请帮助我进行电商产品…

Canvas和SVG有什么区别?a元素除了用于导航外,还有什么作用?如何在页面上实现一个圆形的可点击区域?

Canvas和SVG有什么区别? svg 绘制出来的每一个图形的元素都是独立的 DOM 节点, 能够方便的绑定事件或用来修改。 canvas输出的是一整幅画布。 svg 输出的图形是矢量图形,后期可以修改参数来自由放大缩小,不会失真和锯齿 。而canvas 输出标量…

springboot 整合 RocketMQ 可用于物联网,电商高并发场景下削峰,保证系统的高可用

本文根据阿里云 RocketMQ产品文档整理,地址:https://help.aliyun.com/document_detail/29532.html?userCodeqtldtin2 RocketMQ是由阿里捐赠给Apache的一款低延迟、高并发、高可用、高可靠的分布式消息中间件。经历了淘宝双十一的洗礼。RocketMQ既可为分布式应用系统…

内部培训平台的系统 PlayEdu搭建私有化内部培训平台

PlayEdu是由白书科技团队多年经营的线上教育系统,专为企业提供的全新企业培训方案 我们的目标是为更多的企业机构搭建私有化内部培训平台,以满足不断增长的培训需求 通过PlayEdu,企业可以有效地组织和管理培训资源,提供高质量的…

PriorityQueue类

PriorityQueue类 Java中的PriorityQueue是一个基于优先级堆的无界优先级队列。它是一个队列,可以按照元素的优先级顺序对元素进行排序,并且允许快速访问具有最高优先级的元素。它实现了Queue接口,继承了AbstractQueue类。 主要函数和方法&a…

AIGC: 关于ChatGPT中基于API实现一个客户端Client

Java版的GPT的Client 可作为其他编程语言的参考注意: 下面包名中的 xxx 可以换成自己的 1 )核心代码结构设计 src main java com.xxx.gpt.client entity ChatCompletion.javaChatCompletionResponse.javaChatChoice.java… util Proxys.java… ChatApi.javaChatG…

C++的lambda语法

仿函数的最大缺点是: 如果命名不合规范并且没有给出注释,直接阅读难以理解(排序的调用过程中,不查看仿函数细节,则很难直接得知是升序排序还是降序排序)每次实现仿函数都需自己构建一个类 因此C从其他语言…

分类详情 API 返回值说明

为了进行此平台API的调用,首先我们需要做下面几件事情。 1、 获取一个KEY,点击获取测试key和secret 2、 参考API文档里的接入方式和示例。 3、查看测试工具是否有需要的接口,响应实例的返回字段是否符合参数要求。 4、利用平台的文档中心…

[前 5 名] 最顶级的数据恢复软件解决方案列表

您是否在互联网上找到适用于 Windows PC 的前 5 名最受好评的数据恢复软件解决方案?嗯,在线市场上有很多工具可以恢复已删除的文件。但并不是所有的应用程序都值得使用它。值得信赖的文件恢复工具将有助于快速检索丢失、删除、格式化的数据并从计算机恢复…

JVM之基本概念(一)

(1) 基本概念: JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互。 (2) 运行过程: 我们都…

[传智杯 #4 决赛] 小智的疑惑

题目描述 传智专修学院给了小智一个仅包含小写字母的字符串 s,他想知道,里面出现了多少次子串 chuanzhi 呢。 我们称一个字符串 t 是 s 的子串,当且仅当将 s 的开头若干个(可以为 0 个)连续字符和结尾若干个&#xf…

讲一下mysql的锁

MySQL 中的锁机制是数据库管理系统用于控制并发访问的重要组成部分。锁是一种资源访问的机制,通过它可以确保在同一时间只有一个事务能够对资源进行操作,从而维护数据的一致性和完整性。在 MySQL 中,锁主要分为共享锁(Shared Lock…

听GPT 讲Rust源代码--src/tools(7)

File: rust/src/tools/rust-analyzer/crates/ide/src/inlay_hints/chaining.rs 在Rust源代码中,rust-analyzer/crates/ide/src/inlay_hints/chaining.rs这个文件的作用是生成Rust代码中的链式调用提示。 具体来说,当我们使用链式调用时,例如A…

Python练习题(三)

📑前言 本文主要是【Python】——Python练习题的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句&am…

51单片机PWM讲解

前言 51单片机我已经很久没用过了,毕竟是十年前的产物了,但是由于工作室的学弟学妹需要学习,加之马上就要举行循迹小车比赛,很多人反映看不懂PWM,或者看了不会用,于是写一篇文章简单介绍一下。 PWM普遍应…

Kubernetes学习笔记-Part.08 安装k8s环境

目录 Part.01 Kubernets与docker Part.02 Docker版本 Part.03 Kubernetes原理 Part.04 资源规划 Part.05 基础环境准备 Part.06 Docker安装 Part.07 Harbor搭建 Part.08 K8s环境安装 Part.09 K8s集群构建 Part.10 容器回退 第八章 K8s环境安装 8.1.准备安装文件 在外网服务器…

IDEA如何配置Git 遇到问题的解决

新建项目 点击 会变红 会生成.git隐藏文件 配置远程仓库路径:点击Manage Remotes:将远程仓库的链接放到这里: 得到如下样式: 此时提交到本地仓库 点击add,添加到暂存文件: 此时文件变绿&#xf…

【Ratis】Grpc.proto文件里定义的一些RPC

一、 总览 Raft的提供了三种类型的RPC。分别如下: RaftClientProtocolService:client与server之间的交互RPC,分为ordered和unordered,一种是有序的异步请求流、一种是无序的异步请求流。RaftServerProtocolService:r…

JDK中lock锁的机制,其底层是一种无锁的架构实现的,公平锁和非公平锁

简述JDK中lock锁的机制,其底层是一种无锁的架构实现的,是否知道其是如何实现的 synchronized与lock lock是一个接口,而synchronized是在JVM层面实现的。synchronized释放锁有两种方式: 获取锁的线程执行完同步代码,…

Elasticsearch一些函数查询

1. 根据价格分组统计数量,每组区间为2000, filter_pathaggregations 设置查询结果只展示函数结果 也有date_histogram函数根据日期分组等等 GET order/_search?filter_pathaggregations {"aggs": {"hist_price": {"histogr…