Java常用面试题总结

1.多线程实现方式

2.cookie和session区别

3.数据加密

4.接口并发

5.常用的集合类

6.遍历集合方式

7.接口和抽象类

8.#和$区别

9.防止sql注入

10.springMvc实现过程

11.单点登录流程与实现方式

12.解释spring的ioc和aop

13.常用的linux命令

14.springboot优势

15.redis存取数据和基本用法

16.注解开发流程,例子:日志处理

17.spring事务

18.怎么处理高并发

19.同步机制,锁

20.常用的排序方法,常用设计模式

参考 https://www.cnblogs.com/guangxiang/p/11555231.html

21.mybatis和hibernate区别

①MyBatis上手较为容易,Hibernate上手复杂

②Hibernate是orm框架->Java中ORM的原理: 先说ORM的实现原理,其实,要实现JavaBean的属性到数据库表的字段的映射,任何ORM框架不外乎是读某个配置文件把JavaBean的属 性和数据库表的字段自动关联起来,当从数据库Query时,自动把字段的值塞进JavaBean的对应属性里,当做INSERT或UPDATE时,自动把 JavaBean的属性值绑定到SQL语句中。

③Hibernate对jdbc有一层封装,相比于Hibernate,MyBatis对JDBC的封装程度没那么深,对开发人员的要求较高,但对大型数据库的优化和适配性较强,所以适用于处理大量数据。

22.正向代理和反向代理区别

23.数据库索引分类 ->https://www.cnblogs.com/guangxiang/p/11547039.html

MySQL索引分类:

主键索引(primary key)
唯一索引(unique)
常规索引(index/key)
全文索引(fulltext 只有MyISAM类型表可以用)

MySQL的索引类型有普通索引(normal),唯一索引(unique)和全文索引(full text),合理使用索引可大大提升数据库的查询效率,那么这三种类型的索引都有哪些区别呢?

normal:这是最基本的索引,它没有任何限制,MyIASM中默认的BTREE类型的索引,是我们大多数情况下用到的索引。

unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复。例如身份证号用作索引时,可设置为unique。

full text : 表示全文搜索的索引,仅可用于 MyISAM 表。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,切记对于大容量的数据表,生成全文索引是一个非常消耗时间非常消耗硬盘空间的做法。

总结,索引的类别由建立索引的字段内容特性来决定,通常normal最常见。

在实际操作过程中,应该选取表中哪些字段作为索引?

为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。

创建索引7大原则

1.选择唯一性索引

唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名现象,从而降低查询速度。

2.为经常需要排序、分组和联合操作的字段建立索引

经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作会浪费很多时间。如果为其建立索引,可以有效地避免排序操作。

3.为常作为查询条件的字段建立索引

如果某个字段经常用来做查询条件,那么该字段的查询速度会影响整个表的查询速度。因此,为这样的字段建立索引,可以提高整个表的查询速度。

4.限制索引的数目

索引的数目不是越多越好。每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大。修改表时,对索引的重构和更新很麻烦。越多的索引,会使更新表变得很浪费时间。

5.尽量使用数据量少的索引

如果索引的值很长,那么查询的速度会受到影响。例如,对一个CHAR(100)类型的字段进行全文检索需要的时间肯定要比对CHAR(10)类型的字段需要的时间要多。

6.尽量使用前缀来索引

如果索引字段的值很长,最好使用值的前缀来索引。例如,TEXT和BLOG类型的字段,进行全文检索会很浪费时间。如果只检索字段的前面的若干个字符,这样可以提高检索速度。

7.删除不再使用或者很少使用的索引

表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不再需要。数据库管理员应当定期找出这些索引,将它们删除,从而减少索引对更新操作的影响。
————————————————
版权声明:本文为CSDN博主「visant」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/visant/article/details/79619981

24.数据库引擎redis等

25.数据库优化

一.sql优化

①任何地方都不要使用 select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段

②in 和 not in 也要慎用,否则会导致全表扫描;很多时候用 exists 代替 in 是一个好的选择

③应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描

④应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描

⑤对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引

⑥应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描

二.适当的添加索引,分区分表

26.JVM原理和调优

27.消息队列的理解

特别说明:相关答案为个人理解,如有不全面或错误,请查证指出。也欢迎各位给出自己宝贵的答案。各位有面试被提的问题也可以提出,我会不定时更新。

28.

es怎么用

docker怎么用

springBoot怎么用

Dubbo怎么用

redis怎么用

什么是雪崩,怎么处理

29.秒杀设计

https://www.cnblogs.com/kaleidoscope/p/9647261.html

原文地址:https://www.cnblogs.com/guangxiang/p/10649671.html