第一天业务题目

1-1 请说一下你项目中是如何进行项目管理和发布的

      我做过的的项目经常通过两种方式进行同步,根据公司要求来进行选择,分别是Git或者Gogs,其中Gogs配合Jenkins进行代码运维的发布,首先从Gogs拉去项目到本地,使得自己负责模块的代码和远程仓库代码进度一致,开发新一个新功能,创建一个新分支作为新功能分支,然后当功能完成后,先提交然后切换分支到开发分支,将功能分支合并到开发分支上,然后先Pull远程仓库(因为有可能同时开发完另个功能已经上传上去了),直接Push可能覆盖别人的项目,因此要Pull一下保证项目最新,然后再Push推送,当Gogs接收到推送代码后会通知Jenkins,Jenkins会拉去Gogs中的代码,然后重新编译和构建项目,最后生成镜像,容器,然后进行发布

1-2 现在浏览器点击按钮出现了一个报错,如何定位发生问题的代码

      首先观察前端页面是否有错误提示,如果有根据错误提示来查找错误信息,如果没有错误提示,需要F12打开开发者工具,在网络板块中观察按钮绑定的请求,是否发生报错,如果发生报错,根据状态码判断错误发生的原因,具体状态码对应的错误信息如下,根据错误信息,进行分析修改,如果根据错误信息还是无法进行判断具体Bug位置,或者说没有错误提示返回的状态码是200,就使用idea的debug功能,对可能出现bug的代码,进行打断点,一步一步的执行代码,判断到底具体某个业务或者某行出现了问题。

200——交易成功
201——提示知道新文件的URL
202——接受和处理、但处理未完成
203——返回信息不确定或不完整
204——请求收到,但返回信息为空
205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件
206——服务器已经完成了部分用户的GET请求
300——请求的资源可在多处得到
301——删除请求数据
302——在其他地址发现了请求数据
303——建议客户访问其他URL或访问方式
304——客户端已经执行了GET,但文件未变化
305——请求的资源必须从服务器指定的地址得到
306——前一版本HTTP中使用的代码,现行版本中不再使用
307——申明请求的资源临时性删除
400——错误请求,如语法错误
401——请求授权失败
402——保留有效ChargeTo头响应
403——请求不允许 
404——没有发现文件、查询或URl 找不到路径
405——用户在Request-Line字段定义的方法不允许
406——根据用户发送的Accept拖,请求资源不可访问
407——类似401,用户必须首先在代理服务器上得到授权
408——客户端没有在用户指定的饿时间内完成请求
409——对当前资源状态,请求不能完成
410——服务器上不再有此资源且无进一步的参考地址
411——服务器拒绝用户定义的Content-Length属性请求
412——一个或多个请求头字段在当前请求中错误
413——请求的资源大于服务器允许的大小
414——请求的资源URL长于服务器允许的长度
415——请求资源不支持请求项目格式
416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段
417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求
500——服务器产生内部错误
501——服务器不支持请求的函数
502——服务器暂时不可用,有时是为了防止发生系统过载
503——服务器过载或暂停维修
504——关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长
505——服务器不支持或拒绝支请求头中指定的HTTP版本

1-3 你得项目中进行用户的登录和检验的详细流程是怎样的

       首先用户登录访问ip地址也就是访问Nginx,Nginx进行反向代理 将登录请求发送给对应的网关,网关进行鉴权,网关判断该请求是否登录请求,如果不是,判断是否含有token,没有token返回401,有token的话校验token是否正确,正确的话,直接通过,并且将token中的有关用户信息放入请求头里面方便后续使用,不正确的话,返回401。如果是登录请求,直接通过请求,网关可以从服务注册中心获取可用的微服务实例信息,然后根据网关路由通过负载均衡策略发送到对应的微服务,,请求到达对象的Controller层,首先判断用户名和密码是否为null,如果为null返回"不能为空"的提示消息到前端,如果用户名和密码都不为null,通过用户名查询用户表,如果查到了,根据将前端传来的密码进行对应的加密算法后,跟数据库查出来的密码进行比对,如果比对正确,则登陆成功,并生成token返回前端,如果比对不正确,返回密码错误提示消息。如果查询用户表查不到,则说明该用户为新用户,可以进行注册操作,将用户信息保存到数据库,返回注册成功信息和对应的token

1-4 说一下文章发布的流程

        文章发布,当点击发布文章的时候,前端发送请求到Nginx,Nginx反向代理将请求发送给媒资网关,请求经过媒资网关鉴权后通过将用户请求封装到请求头中,网关可以从服务注册中心获取可用的微服务实例信息,然后根据网关路由通过负载均衡策略发送到对应的Media微服务,然后根据前端传来的参数,根据是否含有Id来进行修改或新增,根据前端传入的内容信息,通过封面图片规则来进行设置文章封面图片,然后通过阿里云图片和文本审核机制进行异步审核,进行审核的同时,根据前端传来的发布时间的参数,判断是否到达发布时间,如果到达发布时间直接发布,如果没有到达发布时间,通过Redisson将其放入到延迟队列,设置一个监听器,监听Redisson延迟队列,开一个子线程配合@PostConstruct注解进行监听,到达时间发布文章。当文章审核通过的同时,也要通过feign调用文章微服务,文章微服务判断传来的ArticleDto对象是否有Id来选择修改或者新增,修改或者新增的同时,保存文章具体内容到文章内容表,并且通过MinIo来实现文章内容的持久化,通过RabbitMQ实现ES内容的增量同步。

你可能感兴趣的:(业务题,java)