1.http与https的区别
答:https相比于http更加安全
正确:
HTTP(超文本传输协议)和HTTPS(HTTP+SSL/TLS)的主要区别:
HTTP采用明文传输,数据在网络中可以被轻易窃听和篡改,安全性差
HTTPS通过SSL/TLS协议对传输的数据进行加密,即使被拦截也无法解密
什么是SSL和TLS:SSL和TLS是网络安全传输协议,为HTTP等协议提供加密保护
身份认证:HTTP不需要证书,任何服务器都可以使用
HTTPS需要申请SSL证书,确保服务器身份的可信性
性能:HTTP传输速度稍快,无需加密解密
HTTPS因为需要加密解密过程稍慢
2.什么是静态语言,什么是动态语言
答:静态语言是弱类型语言,在声明变量的时候不需要指定数据类型(说反了,弱类型语言是动态语言js,python)
正确:
静态类型语言:
声明变量时需要确定数据类型
java,C++
动态类型语言:
声明变量的时候不需要确定数据类型,在运行时才确定变量的数据类型
python,js,PHP
优缺点:
静态语言:类型安全,性能好
动态语言:灵活,开发速度快,但容易出现运行时类型错误
3.了解sql注入吗
答:对数据库的恶意攻击,在参数后面带上or 1=1,进行一些删除操作
正确:
SQL注入是一种代码注入攻击技术,攻击者通过在应用程序的输入字段中插入恶意SQL代码,欺骗数据库执行非预期的SQL命令,从而删除或修改数据库中的数据
SELECT * FROM users WHERE username='admin' OR '1'='1' AND password='xxx'
结果:因为 '1'='1' 永远为真,绕过了密码验证
使用MyBatis的#{}参数和sql语句分离,数据库会将参数当作纯数据处理
4.关系型数据库中什么是事务,有用过事务吗
答:用过事务,在spring中spring自动管理事务,通过增加@Transtational,让spring帮我们自动管理事务(说偏了)
正确:
事务是数据库操作的最小工作单元,是一组不可分割的数据库操作序列,这些操作要么全部成功执行,要么全部失败回滚,保证数据的一致性
ACID四大特性:
原子性:事务是一个不可分割的最小单元,要执行这组数据库操作序列,要么全部执行,要么全部不执行,如果事务中任何应该操作失败,整个事务都会回滚
一致性:事务执行前后,数据库必须保持一致状态,例如转账前后总金额不变(有操作失败了,事务没有回滚,就会出现一致性问题)
隔离性:多个事务并发执行时,一个事务的执行不影响其他事务,每个事务都感觉像独立运行的
持久性:事务一旦提交成功,对数据的修改是永久的,通常通过日志和数据库备份实现
Spring中的事务管理:
声明式事务:使用@Transactional注解,Spring自动管理事务的开启、提交、回滚
编程式事务:手动控制事务的边界
事务传播行为:定义方法调用时事务如何传播(REQUIRED、REQUIRES_NEW等)
回滚规则:默认只对RuntimeException回滚,可通过rollbackFor指定异常类型
5.关系型数据库中什么是数据库索引,项目中有用到索引吗
答:用到过索引,对作为查询条件,分组条件的字段添加索引,对数据量少的字段不添加索引(说的有问题)
6.springBoot2.6和springBoot3的区别
答:没有了解过,正在学习springBoot3
7.项目中的JWT是怎么实现的
答:前端发送请求,后端响应,如果token没过期放行,token过期响应401状态码,前端通过Axios拦截器拦截,跳转到登录界面
正确:
什么是JWT:
jwt是一种用于身份验证和信息交换的开放标准,自包含的token,可以在客户端和服务器之间安全地传输信息
jwt的结构:由三部分组成 Header.Payload.Signature
Header(头部):包含token的类型和签名算法(token加密算法),是一个json对象经过Base64编码
Payload(荷载):包含实际传输的数据,自定义字段(用户id),Payload不加密,不要存放敏感信息
Signature(签名):用于验证token是否被纂改
8.项目中的人脸识别考虑过优化吗,可以怎么优化(一个用户在数据库中有多张人脸,前端上传一张要循环比对很慢,应该怎么优化)
答:提高比对阈值(不知道怎么优化)
9.项目中哪里用到了redis缓存
答:在天气预报功能模块中,使用了redis缓存,cityId作为key,天气预报信息作为value存储到redis中,设置一个小时的过期时间,前端发起请求后端先查询缓存,缓存命中返回,缓存中没有,调用api,然后写入缓存中,减少了接口的频繁调用,提升了响应时间和调用接口的开销
10.平常怎么写项目,流程是什么,有没有用过
答:先设计功能,设计好数据库表,先写前端,再写后端(面:应该是先写后端,再写前端,写完后端先使用测试工具,测试接口是否能做出正确响应)
11.有没有用过github,commit和push有什么区别?
答:用过,但使用的是gitee,在练习期间使用过,没有和其他人一起用过,commit是把代码提交给本地仓库,push是提交给远程仓库
12.什么是DNS
答:没了解过

7797

被折叠的 条评论
为什么被折叠?



