面试题库-项目

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
  • 这样就把对两张表的操作捆绑成为了一个事务。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是分库分表?代表性框架有哪些?

在互联网系统开发过程中,所谓的分库分表并不是一个新概念。或者说,对于很多开发人员而言,说起分库分表,大家都或多或少有所了解,也都知道数据量大了就需要进行分库分表。但是究竟如何实现分库分表呢? 要想…

创建Spring Boot项目及配置

目录 一、创建项目所需要的插件 1、安装插件 二、创建项目 三、创建项目所面临的常见问题。 1、IDEA不能识别 2、无效的发行版本 3、确认jar包是否下载成功 一、创建项目所需要的插件 1、安装插件 首先需要在IDEA插件里面搜索Spring,选择Spring Boot Helper…

什么是短信群发上行和下行

短信群发是一种广泛应用于商业和个人通信的技术,通过一次多条的方式,可以快速高效地传递信息。在实际的群发过程中,会涉及到上行和下行的概念。本文将详细介绍什么是短信群发上行和下行,并解释它们的应用。 什么是短信群发上行 群…

Dbeaver连接一段时间不操作后断开的问题

右键数据库连接点击编辑连接点击初始化将连接保持改成60s

BW4HANA混合建模 用ADSO的哪个视图?

写日志的ADSO除了1,2,3表之外。还会有6,7,8view。8view是上了BW4HANA2.0之后激活ADSO就会生成的。如果旧版本没有8,那就RSDG_ADSO_ACTIVATE激活一下。 如果勾了外部HANA视图,那就等于说还有一个HANA view。 首先咱知道ADSO是BW里面用来物理存储&#xf…

做一个属于自己的软件-pyside6快速上手教程

首先环境需要安装python3和pip,软件使用pycharm,安装也都很简单 首先需要安装pyside6,在终端执行: pip install pyside6 然后进入可视化编辑界面 pyside6-designer 进入后创建即可 可以从左侧点击鼠标拉组件进入到中间的工作区&#xff…

BLIP和BLIP2 论文讲解

文章目录 BLIPIntroductionMethod模型架构预训练目标字幕和过滤(Capfilt) BLIP2IntroductionMethod模型结构Q-Former预训练第一阶段Q-Former预训练第二阶段 BLIP 论文: 《BLIP: Bootstrapping Language-Image Pre-training for Unified Visio…

详解BOM编程

华子目录 BOM编程window对象常见的window对象的属性常见的window对象的方法注意 history对象history对象的属性history对象的方法 screen 对象navigator 对象属性方法 location对象属性方法示例 BOM编程 JavaScript本质是在浏览器中运行,所以JavaScript提供了BOM&a…

一文详解FDA邮件认证证书的重要性及其应用

随着全球化和电子商务的飞速发展,跨国贸易和沟通变得越来越频繁。在这个过程中,邮件作为重要的沟通工具,其安全性和可信度成为了各方关注的焦点。FDA(美国食品药品监督管理局)邮件认证证书就是在这一背景下应运而生的一…

1W 3KVDC 隔离 稳压单输出 DC/DC 电源模块——TPV-SAR 系列

TPV-SAR系列产品是专门针对PCB上分布式电源系统中需要与输入电源隔离且输出精度要求较高的电源应用场合而设计。该产品适用于;1)输入电源的电压变化≤5%;2)输入输出之前要求隔离电压≥3000VDC;3)对输出电压…

mac电脑如何安装java

1、检查当前系统的 Java 版本 打开终端,输入以下命令查看当前 Java 版本 /usr/bin/java -version 2、前往 Java 官网下载 Java JDK 打开 Java 官网 (https://www.java.com/zh-CN/download/) 并下载最新版本的 Java JDK。 3、安装 Java JDK 双击下载的 .dmg 文件启动安装程序…

【全开源】Java共享台信息共享系统源码

特色功能 信息整合与共享:该平台提供一站式信息整合服务,将各种类型的信息资源进行汇聚,方便用户快速查找和获取所需资源。多种共享功能:支持信息共享、共享车位、共享会议室、共享电动车等多种共享功能,提高资源利用…

Windows系统本地部署DrawDB数据库设计工具并实现无公网IP远程访问

文章目录 1. Windows本地部署DrawDB2. 安装Cpolar内网穿透3. 实现公网访问DrawDB4. 固定DrawDB公网地址 开发中很多时候都会使用到数据库,所以选择一个好用的数据库设计工具会让工作效率翻倍。在当今数字化时代,数据库管理是许多企业和个人项目的核心。设…

vue-fontawesome-elementui-icon-picker选择icon框架

第一步:安装vue-fontawesome-elementui-icon-picker依赖 npm install vue-fontawesome-elementui-icon-picker --save-dev 第二步:main.js配置 (放在element ui引入之后) import iconPicker from vue-fontawesome-elementui-icon-picker; Vue.use(ico…

Python-VBA函数之旅-setattr函数

目录 一、setattr函数的常见应用场景 二、setattr函数使用注意事项 三、如何用好setattr函数? 1、setattr函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页: https://blog.csdn.net/ygb_1024?…

笨方法自学python(六)

上一节中出现了\n,这个作用是换行。\后面带不同字符有不同的作用,我们先简单了解几个, 使用反斜杠 \ (back-slash) 可以将难打印出来的字符放到字符串。针对不同的符号有很多这样的所谓“转义序列(escape sequences)”,我们来练习…

OPC :快速上手

本系列为OPC技术的快速上以及持续研究和技术实战专栏,将不定期更新。 本章节提供OPC系列技术博文的快速导航。 《OPC服务器简介和入门介绍》 《物联网平台如何为OPC服务器创造新生命力》 《OPC服务器开发之WtOPCSvr——开发文档(1)》 《OPC服…

使用flutter开发一个U盘文件管理APP,只解析图片文件

今天教大家用flutter撸一个U盘文件管理APP,需求是这样的: 当我在Android设备上插入U盘后,我能在APP中打开U盘的文件目录,并且能进入对应目录的下一级目录,如果下级目录下有图片文件,我就对这个图片文件进行解析,并展示出来。 需求了解后,先上个效果图: 效果图看完后,…

海外媒体发稿:7个出口贸易媒体发稿推广必备技巧-华媒舍

在如今全球化的经济环境中,出口贸易在各个国家的经济中占据了重要地位。作为出口贸易从业者,我们都明白推广产品和品牌对于成功开拓国际市场至关重要。而在推广方面,媒体发稿则是一种常见而有效的方式。本文将分享7个出口贸易媒体发稿推广的必…

Spark云计算平台Databricks使用,创建workspace和Compute计算集群(Spark集群)

Databricks,是属于 Spark 的商业化公司,由美国加州大学伯克利 AMP 实验室的 Spark 大数据处理系统多位创始人联合创立。Databricks 致力于提供基于 Spark 的云服务,可用于数据集成,数据管道等任务。 1 创建workspace 点击创建wor…