黑马项目一阶段面试58题 苍穹外卖业务逻辑15题
黑马项目一阶段面试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行的数据
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)