面试题11-1

本文详细介绍了Redis的持久化机制、使用场景和数据类型,探讨了MySQL的函数、执行计划优化及数据库索引,还讲解了SpringBoot的自动配置原理、核心配置文件以及应用方法。此外,还涉及了Java、数据库、线程安全和数据模型设计等多个技术领域的面试重点,是准备技术面试的宝贵资料。
摘要由CSDN通过智能技术生成

目录

1、什么是Redis,Redis持久化机制

2、Redis的使用场景

3、Redis有哪些数据类型

4、mysql函数

5、数据库的执行计划

6、如何优化mysql

7、list和map的区别

8、IOC和DI的区别

9、SpringBoot自动配置的原理

10、SpringBoot核心配置文件有哪几个

11、SpringBoot有哪些应用方法

12、SpringBoot和SpringCloud之间的关系

13、什么是Spring 的AOP,AOP的工作原理是什么

14、#跟$的区别

15、AIO BIO NIO的区别

16、RabbitMQ工作模式

17、RabbitMQ如何保证消息稳定性

18、hashmap底层原理

19、如何保护当前线程变量不被其他线程修改而且每个线程变量都是独立的

21、数据模型设计

22、sql语句查询条件是in in后的条件建了索引 真正执行的时候 会去执行索引吗

23、对ioc的理解

24、TCP/IP位于网络传输哪一层

25、TCP/IP网络通信的原理

26、单点登录使用的协议

28、数据双向绑定实现模型、原理

29、积分模块用redis怎么实现

30、cap、aqs、cas安全思想

31、乐观锁实现原理

32、Threadlocal实现原理

33、怎么快速定位异常以及解决

34、redis雪崩、击穿、穿透的解决方案

35、mybatis中XML文件中的SQL语句是通过什么代理过去的?

36、mybatis中XML文件中有一个命名空间和id, id和命名空间可以重复么?

37、java能支持多继承么?

38、为什么java是单继承?

39、java的值传递和引用传递有什么区别?

40、假如ArrayList封装了一个学生类对象, 那么我要对这个学生类去重, 你要怎么做?

42、java中的finally和return的执行顺序是怎么样的?

43、线程池有了解过么?

44、线程池分为哪几种?

45、Redis是用来做什么样的场景?

46、实际开发中Redis用在哪个项目中? 使用的场景是什么样的?

47、MySQL中索引在什么情况下会失效?

48、为什么加索引?

50、SQL的优化方面做过么?

51、crud怎么表现具体实现从java方面讲一下

52、SpringBoot的特点

53、springboot启动时需要依赖哪些包

54、springboot使用什么注入 注解还是配置类 具体代码大概说下

55、springboot配置文件几种

56、springMVC的具体表现

57、ssm的工作流程

​59、mvvm思想具体表现 在什么场景下使用

60、A表目前有100万数据, B表10条数据,根据关联键匹配,A表中的数据与B表中的数据管关联关系一一对应,A表中能关联上48万数据,B表中能关联上的数据为5条。那么问: A inner join B、 A left join B、 A right join B、 A full join B 的连接方式,最终查询出的数据量分别是多少

61、数据库多表联查代码怎么写

62、数据库查询前五条怎么写

63、group by是干啥的

64、事务具体用在哪一层

65、spring中创建bean有哪些方法


1、什么是Redis,Redis持久化机制

        是一个key-value存储系统,非关系型分布式缓存数据库。

        持久化机制:为了能重用Redis数据,防止系统故障,需要将Redis中数据写入到磁盘空间,及持久化。

        Redis提供了两种持久化机制:

                RDB(快照):在不同时间点,将redis存储的数据生成快照并存储到磁盘上。

                AOF(之追加文件):通过日志将redis执行过的所有指令记录下来。Redis重启根据日志文件的内容将写指令从前到后执行一次完成数据恢复。

        AOF与RDB优缺点比较:

                AOF占用的文件体积比RDB大,一般来说利用AOF备份对系统的消耗比RDB低。对于备份时出现的系统故障,RDB可能会全部丢失,但AOF只会损失一部分。

2、Redis的使用场景

        String:某一IP地址在一个时间段访问很频繁,对此进行封锁。

        Hash:存储用户信息。

        List:实行最新消息的排行。

        set:微博中两个人的共同好友。

        Zset:电商上面的综合排名,按自己需求进行价格排名。

3、Redis有哪些数据类型

        String、Hash、List、Set、Zset

4、mysql函数

        Round:四舍五入

        Concat:拼接

        Length:返回字符串的长度

        Replace:把字符串某个字符换成某个字符

5、数据库的执行计划

        执行计划是SQL语句经过查询分析器后得到的抽象语法树和相关表的统计信息做出一个查询方案,这个方案是有查询优化期自动分析产生的。通过explain知道MySQL是如何执行SQL查询语句的,分析seslect语句的性能瓶颈,从而改进查询。

6、如何优化mysql

(1)尽量避免子查询

(2)用IN来替换OR

(3)避免使用SELECT*,尽量补全字段名

(4)从SQL优化、索引优化、优化慢SQL

(5)数据表结构设计;横纵分表分库

(6)通过修改数据库系统配置

7、list和map的区别

        list:有序,可以重复

        map:以key-value的形式存取数据

8、IOC和DI的区别

        IOC:控制反转,将对象的依赖,对象的创建交给Spring容器来管理

        DI: 依赖注入,容器通过调用构造区或者set方法来建立对象之间的依赖关系

9、SpringBoot自动配置的原理

        springBoot启动的时候会通过@EnableAutoConfiguration注解找到META-INF/spring.factories配置文件中的自动配置类,并对其进行加载,而这些自动配置类都是以AutoConfiguration结尾类命名的,它实际上就是一个JavaConfig形式的Spring容器配置类,它能通过以.Properties结尾命名的类中取得在全局配置文件中配置的属性如:server.port,而properties类时通过@ConfigurationProperties注解与全局配置文件中对应的属性进行绑定的。

10、SpringBoot核心配置文件有哪几个

   application和bootstrap配置文件

        application:SpringBoot自动化配置

        bootstrap:使用Spring Cloud Config注册中心时,需要早bootstrap配置文件中添加链接到配置中心的配置属性来加载外部配置中心的配置信息。

格式:.properties和.yml

11、SpringBoot有哪些应用方法

        打包用命令或者放到容器中运行

        用Maven/Gradle插件运行

        直接执行main方法运行

12、SpringBoot和SpringCloud之间的关系

        SpringCloud是关注于全局的微服务协治理框架,他将SpringBoot开发的一个个单体微服务整合并管理起来。为各个微服务之间提供配置管理,服务发现,断路器,路由,微代理,事件总线,决策竞选,分布式会话等集成服务。SpringBoot使用了默认大于配置的理念,很多集成方案已经选择好了,能不配置就不配置,SpringCloud很大一部分是基于SpringBoot来实现的。

13、什么是Spring 的AOP,AOP的工作原理是什么

        AOP:面向切面编程

        工作原理:Spring AOP是使用动态代理在运行期间植入增强的功能代码。Spring的一个关键组件就是AOP,其中最重要的是声明性事务管理,这个服务建立在Spring的抽象事物管理上。允许用户自定义切面,用AOP来完善OOP的使用,可以把Spring AOP看作是对Spring的一种增强。

14、#跟$的区别

        #:封装了preStatement,对数据自动加上双引号,很大程度上能防止SQL注入

        $:封装的是Statement,不能防止SQL注入

15、AIO BIO NIO的区别

        BIO接口设计会直接导致当前线程阻塞,NIO的设计不会触发当前线程的阻塞。AIO为I/O接口提供了异步能力,也就是将I/O的响应程序放到一个独立的时间线上去执行。但是通常AIO的提供者还会提供异步编程模型,就是实现一种异步计算封装的数据结构,并且提供将以不计算同步主线的能力。

16、RabbitMQ工作模式

        简单模式、工作模式、发布订阅模式、路由模式、主题模式、RPC模式

17、RabbitMQ如何保证消息稳定性

(1)消息持久化

        EXchange设置持久化

        Queue 设置持久化

        Message持久化发送

(2)ACK确认机制

(3)设置集群镜像模式

(4)消息补偿机制

18、hashmap底层原理

        HashMap在底层将key-value当成一个整体进行处理,这个整体就是一个Entry对象。HashMap底层采用一个Entry[]数组来保存所有的key-value对,当需要存储一个Entry对象时,会根据hash算法来决定其在数组中的存储位置,再根据equals方法决定其在该数据位置上的链表中的存储位置,当需要取出一个Entry时,也会根据hash算法找到其在数组中的存储位置,再根据equals方法从该位置上的链表中取出该Entry。底层结构:数组+链表、数组+红黑树,当链表的长度大于8时会转成红黑树,小于6时会恢复成链表。

19、如何保护当前线程变量不被其他线程修改而且每个线程变量都是独立的

加同步锁

20、遇到印象很深的问题怎么解决的

21、数据模型设计

(1)确保所有表都有主键

(2)避免存储冗余数据

(3)消除重复数据组

(4)每列只存储一个属性

(5)理解为什么存储计算列通常有害无益

(6)定义外键以确保引用完整性

(7)确保表间关系的合理性

(8)当第三范式不够时,采用更多范式

(9)非规范化数据仓库

22、sql语句查询条件是in in后的条件建了索引 真正执行的时候 会去执行索引吗

        会。

        但是查询值的类型是int,列的类型是vachar,会导致索引失效

23、对ioc的理解

        ioc控制反转,将对象的创建、对象的依赖交给spring容器管理

24、TCP/IP位于网络传输哪一层

        TCP在网络层        

        IP在传输层

25、TCP/IP网络通信的原理

在        网络通信过程中,将发出数据的主机称为源主机,接收数据的主机称为目的主机。当源主机发出数据时,数据在源主机中从上层向下层传送。源主机中的应用进程先将数据交给应用层,应用层上加上必要的控制信息就成了报文流,向下传给传输层。传输层将收到的数据单元加上本层的控制信息,形成报文段、数据报,再交给网际层。网际层加上本层的控制信息,形成IP数据报,传给网络接口层。网络接口层将网际层交下来的IP数据报组装成帧,并以比特流的形式传给网络硬件(即物理层),数据就离开源主机。

26、单点登录使用的协议

        CAS、OAuth2、Openid Connect、SAML2

27、前端请求到后端调用实现链路

28、数据双向绑定实现模型、原理

        模型:MVVM

        原理:Vue数据双向绑定原理是通过数据劫持结合发布者-订阅者模式的方式来实现的,首先是对数据进行监听,然后党建听的属性发生变化是则告诉订阅者是否要更新视图MVVM模式就是Model-View-View-Model模式。它实现了View的变动,自动反映在ViewModel,反之亦然。对于双向绑定的理解,就是用户更新了view,Model的数据也自动被更新了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值