前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java面试:2021.05.22

Java面试:2021.05.22

原创
作者头像
夕梦
修改2021-05-27 18:04:05
4220
修改2021-05-27 18:04:05
举报
文章被收录于专栏:每日面试每日面试

1、SpringBoot 了解吗?SpringCloud 了解吗?

自然是了解的,但是这么一问又比较笼统反而不知道应该往哪个方向进行回答了。

对于springboot而言可以讲解一下自动装配、微服务与分布式的区别这两个点,有的可能会涉及与spring等框架的区别和常用注解。

对于springcloud而言,五大常用组件就要提上议程了,可以简单讲一下然后选其中一个重点来讲解。为什么选用,怎么用的,有没有遇到相关的一些问题,怎么进行处理和解决的。

2、项目接口优化怎么做的?

这里区分两个点,接口优化可以是指接口的规范以及QPS方面的性能优化。

一个后端接口大致由四个部分组成:接口地址 (url)、接口请求方式 (get、post等)、请求数据 (request)、响应数据 (response)。如何构建这几个部分每个公司要求都不同,没有什么“一定是最好的”的标准,但一个优秀的后端接口和一个糟糕的后端接口对比起来差异还是蛮大的,其中最重要的关键点就是看是否规范!

规范方面:

2.1、参数校验(我们用的是:Validator + BindResult进行校验)

Validator可以非常方便的制定校验规则,并自动帮你完成校验。首先在入参里需要校验的字段加上注解,每个注解对应不同的校验规则,并可制定校验失败后的信息。

2.2、自动抛异常(Validator + 自动抛出异常)

2.3、全局异常处理

2.4、数据统一响应

2.5、响应码枚举

2.6、全局处理响应数据

其他的还有命名规范等。

性能优化方面借鉴了一篇文章的项目实例放在了今日文章的后面了,大家可以进行查看。

3、redis挂了怎么办?

还真是一个比较大的点。

首先,咱们先从他的主从结构来看,项目中是否有主从服务器,这里项目中可以采用心跳机制和哨兵机制来出发处理这个问题。

其次,高可用架构这个方面进行分析;

再其次,就要考虑其数据的恢复问题了,这个部分就用到了redis的持久化机制。

大家可以根据自己项目这边的情况进行梳理。

4、如何防止SQL注入?

4.1、PreparedStatement

采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setXXX方法传值即可。

使用好处:

(1).代码的可读性和可维护性.

(2).PreparedStatement尽最大可能提高性能.

(3).最重要的一点是极大地提高了安全性.

原理:

sql注入只对sql语句的准备(编译)过程有破坏作用

而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理,

而不再对sql语句进行解析,准备,因此也就避免了sql注入问题.

4.2、使用正则表达式过滤传入的参数

4.3、字符串过滤

4.4、jsp中调用该函数检查是否包函非法字符

4.5、数据库信息加密

4.6、其他方面

使用JSP的时候要注意 1.不要随意开一生产环境汇总Webserver的错误显示; 2.永远不要相信来自用户端的变量输入,有固定格式的变量一定要严格检查对应的格式,没有固定格式的变量需要对引号等特殊字符进行必要的过滤转义; 3.使用预编译绑定变量的SQL语句; 4.做好数据库账号权限管理; 5.严格加密处理用户机密信息。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、SpringBoot 了解吗?SpringCloud 了解吗?
  • 2、项目接口优化怎么做的?
  • 3、redis挂了怎么办?
  • 4、如何防止SQL注入?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档