面试题库-项目

1.项目主要实现了哪些功能?

本项目是专门为校园食堂窗口定制的一款软件产品,包括系统管理后台和客户端两部分。其中系统管理后台主要提供给食堂内部员工使用,可以对餐厅的菜品、套餐、订单、员工等进行管理维护。客户端主要提供给学生及校职工使用,可以在线浏览菜品、添加购物车、下单、支付、催单等。

2.Nginx反向代理

(1)引入

问题:前端发送的请求,是如何请求到后端服务的?

答:利用nginx反向代理。

(2)nginx反向代理

nginx反向代理:将前端发送的动态请求由 nginx 转发到后端服务器。

(3)好处

  • 提高访问速度。(nginx可以缓存,当请求相同的接口地址时,可以在nginx将数据响应给前端,而无需再访问后端服务器)
  • 进行负载均衡。(负载均衡:就是把大量的请求按照我们指定的方式均衡地分配给集群中的每台服务器)(没有nginx,前端—1个后端服务器;有nginx,前端—多个后端服务器)
  • 保证后端服务安全。(后端一般不对外开放,在公司的局域网(内网)下)

(4)配置方式

nginx反向代理的配置方式

nginx负载均衡的配置方式

nginx负载均衡策略:

轮询

默认方式

weight

权重方式,默认为1,权重越高,被分配的客户端请求就越多

ip_hash

依据ip分配方式,这样每个访客可以固定访问一个后端服务

least_conn

依据最少连接方式,把请求优先分配给连接数少的后端服务

url_hash

依据url分配方式,这样相同的url会被分配到同一个后端服务

fair

依据响应时间方式,响应时间短的服务将会被优先分配

(5)nginx正反向代理的区别

正向代理反向代理
代理的对象是客户端
代替客户端去发送请求
代理的对象是服务端
代理服务端接受请求
客户端架设的服务端架设的
保护客户端免受潜在的网络风险和威胁保护原始资源服务器免受高并发方法等造成的过载问题
proxy和client同属一个LAN,对server透明proxy和server同属一个LAN,对client透明

3.MD5密码加密

  • MD5是信息摘要算法第五代,属于Hash算法一代。
  • MD5可以将输入的信息加密转换为128位固定长度的散列值。
  • MD5是一种单向加密算法,即不可逆(只能正向加密,无法反向解密)。

(1)为什么要加密?

员工表中的密码是明文加密,安全性太低。

(2)过程

(3)缺点

  • 作为一种哈希算法,虽然很难发生散列碰撞,但是经过验证,仍然存在两种不同数据会发生碰撞
  • MD5的安全性:将用户的密码直接MD5后存储在数据库是不安全的。
    • 第一,用户普遍习惯用容易记忆的密码(例如:生日、手机号等),攻击者可以将所有密码的常见组合进行单向哈希,得到一个摘要组合(rainbow table),然后与数据库中的摘要进行比对即可获得对应的密码。这也是加盐值的一个原因。
    • 第二,直接MD5存入数据库,若数据库被破解,通过MD5反查会查到密码,需要随机盐值的配合。

(4)为什么不可逆?

当MD5的运算过程中出现进位时,进位被直接丢失而不会保存,即MD5的运算过程存在信息丢失。由于不知道运算过程中会有多少个进位在哪一步被丢弃,因此仅仅根据MD5的计算过程和得到的最终结果,是无法逆向计算出明文的。

【面试总结】MD5及加密算法优劣_md5码计算速度有哪些有关-CSDN博客

3.Swagger框架

(1)为什么要使用Swagger?

使用Swagger只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及在线接口调试页面。

  • Swagger是在开发阶段使用的框架,帮助后端开发人员做后端的接口测试。
  • Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。

(2)使用方式

  • 导入knife4j的maven坐标

  • 在配置类中加入knife4j相关配置(一个docket方法)

  • 设置静态资源映射(一个addResourceHandlers方法),否则接口文档页面无法访问。

  • localhost8080/doc/html打开接口文档界面

(3)常用注解

通过注解可以控制生成的接口文档,使接口文档拥有更好的可读性,常用注解如下:

注解

说明

@Api

用在类上,例如Controller,表示对类的说明

@ApiModel

用在类上,例如entity,DTO,VO

@ApiModelProperty

用在属性上,描述属性信息

@ApiOperation

用在方法上,例如controller的方法,说明方法的用途、作用(value:可省略)

4.JWT令牌

(1)定义

JWT(JSON Web Token)是一种用于身份验证和授权的开放标准。它有三部分组成,分别是头部(Header)、载荷(PayLoad)和签名(Signature)

  • 头部(Header):令牌类型、签名算法等。
  • 载荷(PayLoad):携带信息。
  • 签名(Signature):用于验证令牌的完整性和可信任性。

(2)JWT验证流程

JWT令牌主要用于实现一种无状态的认证机制,定义了一种紧凑且自包含的方式,在各方之间安全的传输信息。主要用于用户首次登录成功以后,服务器会创建一个JWT,将其发回给用户。随后用户的每次请求都会包含这个JWT。JWT使得服务器无需去存储用户的登录状态,从而实现无状态认证。

5.

3.POI是什么?

4.怎么实现微信支付?

5.如果要实现地图定位功能,该怎么做?

6.如何得到销量排名前三的川菜?

7.

8.怎么保证在同时操作多张数据库表出现程序错误时保证数据的一致性?

我在使用多表操作时使用了事务(Transaction:将涉及到的数据库操作封装在一个事务中。在事务中,要么所有的数据库操作都成功提交,要么全部失败回滚,保证了数据的一致性。如果发生异常,可以通过捕获异常并执行回滚操作来保证数据的一致性。

具体操作:

  • 在启动类上方添加@EnableTransactionManagement
  • 开启事务注解之后,我们只需要在需要捆绑成为一个事务的方法上添加@Transactional
  • 这样就把对两张表的操作捆绑成为了一个事务。

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

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

相关文章

台球桌上的答案 如何优化图形化编程对复杂程序的展现

在公司的休息区,卧龙和凤雏正站在台球桌旁,一场激战即将打响。 “来吧,凤雏,让我们一决高下!”卧龙手持台球杆,面带自信的微笑,向凤雏发起挑战。 凤雏点了点头,拿起台球杆&#xff0…

自定义表单工作流的优势介绍

当前,应用低代码技术平台可以助力企业提高效率,降低开发成本,实现个性化场景定制,因而越来越得到了客户的信赖与喜爱。很多客户朋友询问自定义表单工作流的优势和特点,为了帮助大家解决这个疑问,今天&#…

代码随想录算法训练营Day 38| 动态规划part01 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

代码随想录算法训练营Day 38| 动态规划part01 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯 文章目录 代码随想录算法训练营Day 38| 动态规划part01 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯理论基础一、常规题目二、解题步骤…

PLC设备通过智能网关采用HTTP协议JSON文件对接MES等系统平台

智能网关IGT-DSER集成了多种PLC的原厂协议,方便实现各种PLC、智能仪表通过HTTP协议与MES等各种系统平台通讯对接。PLC内不用编写程序,设备不用停机,通过网关的参数配置软件(下载地址)配置JSON文件的字段与PLC寄存器地址等参数即可。 智能网关…

如何给文件和文件夹添加备注信息

1. 给文件添加备注信息 1. 打开文件夹,点击查看 → 选项 → 更改文件夹和搜索选项 → 勾除隐藏受保护的操作系统文件 → 勾选显示隐藏的文件、文件夹和驱动器; 2. listary工具搜索desktop.ini,随便点击一个desktop.ini文件,即可…

Gartner发布准备应对勒索软件攻击指南:勒索软件攻击的三个阶段及其防御生命周期

攻击者改变了策略,在某些情况下转向勒索软件。安全和风险管理领导者必须通过提高检测和预防能力来为勒索软件攻击做好准备,同时还要改进其事后应对策略。 主要发现 勒索软件(无加密的数据盗窃攻击)是攻击者越来越多地使用的策略。…

git的标签管理

理解标签 在Git中,标签tag用于标记特定的一个重要点,比如版本发布。标签允许捕捉某一次提交的状态,当我们需要退回到某次提叫的版本时,通过标签我们快速定位到。标签具有两种类型: 轻量标签:最简单的标签形式&#x…

Linux(CentOS7)离线使用安装盘部署Telnet

[在线工具网 - 各类免费AI工具合集,免费pdf转word等](https://www.orcc.online) https://orcc.online 挂载镜像CentOS-7-x86_64-DVD-1810.iso到/mnt下(其他位置也行),命令如下: mount /dev/sr0 /mnt 安装包默认在Pa…

C++ 概览并发

并发 资源管理 资源 程序中符合先获取后释放(显式或隐式)规律的东西,比如内存、锁、套接字、线程句柄和文件句柄等。RAII: (Resource Acquisition Is Initialization),也称为“资源获取就是初始化”,是C语言的一种管…

Vue.js-----vue组件

能够说出vue生命周期能够掌握axios的使用能够了解$refs, $nextTick作用能够完成购物车案例 Vue 生命周期讲解 1.钩子函数 目标:Vue 框架内置函数,随着组件的生命周期阶段,自动执行 作用: 特定的时间点,执行特定的操作场景: 组…

[前后端基础]图片详解

[前后端基础]图片传输与异步-CSDN博客 https://juejin.cn/post/6844903782959022093#heading-3 base64、file和blob用JS进行互转的方法大全【前端】_js base64转blob-CSDN博客 后端存储方式 对于第一种存储方式,我们前端直接将存储路径赋值给 src 属性即可轻松显示。…

STM32——GPIO输出(点亮第一个LED灯)

代码示例: #include "stm32f10x.h" // Device headerint main() {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//开启时钟GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP;GPIO_InitSt…

租赁商城小程序源码部署/售后更新/搭建上线维护

基于ThinkPHPFastAdminUniApp开发的租赁商城小程序,提供用户物品租赁服务的应用程序,方便客户搭建各种类型的租赁场景服务。通过小程序端多角色进行平台管理,用户租赁商品缴纳租金及押金,员工端可操作商品出库和归还,订…

文件夹名批量重命名:一键实现中文到意大利语的高效翻译!文件管理更高效!

文件夹管理成为了我们日常工作和生活中的重要一环。当文件夹名称繁杂且多样,尤其是涉及到不同语言时,如何快速、准确地批量重命名,成为了许多人的迫切需求。今天,我们就来聊聊如何轻松实现文件夹名从中文到意大利语的批量翻译&…

基于FPGA的视频矩阵切换方案

一、单个显示设备的系统方案:会议室只有1个显示设备 会议室的信号源有很多,但是显示设备只有1个,这个时候最佳方案是使用切换器。 (1)切换器(控制方式:遥控器、软件、机箱面板、中控&#xff…

版本控制工具之Git的基础使用教程

Git Git是一个分布式版本控制系统,由Linux之父Linus Torvalds 开发。它既可以用来管理和追踪计算机文件的变化,也是开发者协作编写代码的工具。 本文将介绍 Git 的基础原理、用法、操作等内容。 一、基础概念 1.1 版本控制系统 版本控制系统&#x…

Python-----容器的介绍以及操作

1.列表和元组 1.列表是什么, 元组是什么: 编程中, 经常需要使用变量, 来保存/表示数据. 如果代码中需要表示的数据个数比较少, 我们直接创建多个变量即可. 但是有的时候, 代码中需要表示的数据特别多, 甚至也不知道要表示多少个数据. 这个时候, 就需要用到列表 列表…

论文解读--High-resolution Automotive Radar Point Cloud Imaging and Processing

高分辨汽车雷达点云成像和处理 摘要 汽车雷达具有体积小、硬件成本低、全天候工作、高分辨率等公认的优点,是高级驾驶辅助系统(ADAS)必不可少的一类重要传感器。然而,低角度分辨率和低成像性能的限制很难满足下一阶段ADAS的需要。新兴的4D成像雷达采用多…

SSC369G 双4K高性价比AI IPC方案

一、方案描述 SSC369G 双4K高性价比AI IPC方案采用主芯片SSC369G,内核为CA55四核最高主频为1.5Ghz处理器。SOC内置集成一个64位的四核RISC处理器,先进的图像信号处理器(ISP),高性能的H.265/H.264/MJPEG视频编解码器&a…

每日OJ题_记忆化搜索⑤_力扣329. 矩阵中的最长递增路径

目录 力扣329. 矩阵中的最长递增路径 解析代码1_爆搜递归(超时) 解析代码2_记忆化搜索 力扣329. 矩阵中的最长递增路径 329. 矩阵中的最长递增路径 难度 困难 给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度。 对于每…