中科软面试题

news/2024/7/5 4:36:18

1、用户注册登录这一块用了哪些技术?数据库主要涉及那些表?

用了BCrypt加密算法,jwt生成token,网关实现全局过滤器校验token,还用了拦截器,获取在网关是指到请求头的userid存到threadlocal里面,涉及到的表有用户信息表。

2、token过期时间?token过期了怎么办?

token过期时间设置的是30分钟,过期了的话,会返回401错误信息,让当前浏览页强行跳转到登录页面,让用户手动更新token

3、数据库的三大范式

1.属性不可再分,及每一个列不可再分
2.表中不存在部分依赖,非主键列要完全依赖主键
3.不存在传递依赖

4、索引的类型有哪些?常用的是哪些?

主键索引、唯一索引、普通索引、联合索引、聚集索引、非聚集索引、hash索引、树索引

5、如何创建索引?

1.自动创建,通过约束,系统创建
2.手动创建,create index
3.使用alter语句修改索引

6、索引失效场景

1.违反最左前缀法则
2.范围查询右边的列不能使用索引
3.不要在索引列上进行运算操作,索引将失效
4.字符串不加单引号,造成索引失效(类型转换)
5.以%开头的模糊查询

7、说一下对Spring的了解

Spring是一个开源框架,为简化企业级应用开发而生。Spring可以简化开发,进行框架整合,可以进行模块化开发,实现各层之间的解耦合关系。Spring的核心是IOC、DI、AOP

8、IOC、DI和AOP是什么?

IOC是控制反转,将主动new对象,转换成了IOC来创建对象,bean与bean在IOC容器中的依赖关系通过DI来实现,有setter注入和构造器注入,AOP面向切面编程,就是在不改变源代码的情况下,对方法进行增强。主要用于权限控制、事务管理、记录日志等,底层是基于动态代理的,如果是接口,就用JDK动态代理,如果是类,就用CGLIB实现动态代理。

9、Spring的设计模式?含义?

1.工厂模式:Spring使用工厂模式,通过BeanFactory和ApplicationContext来创建对象
2.单例模式:Spring的bean默认为单例模式
3.策略模式:例如Resource的实现类,针对不同的资源文件,实现了不同方式的资源获取策略
4.代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术
5.模板方法
6.适配器模式
7.观察者模式
8.桥接模式

10、集合有哪些?

List、Set、Map

11、List集合下面有哪些?

ArrayList、LinkedList、Vector

12、ArrayList和LinkedList的区别?

ArrayList是由数组实现的,所以查询效率高,增删慢
LinkedList是由双向链表实现的,所以增删效率高

13、java的基本数据类型

byte、short、int、long
char、float、double、boolean

14、String转char怎么转

String——》char:charAt(index),toCharArray()返回char类型的数组
char——》String:String.valueOf(‘c’)效率最高

15、项目中为什么用SpringCloud,SpringBoot,底层原理了解多少?

首先微服务架构是现在的主流架构,springboot是构建在spring框架基础上的嘛,可以简化常用的工程配置,比如:端口,访问路径啥的,它还有一些辅助功能,比如内置服务器,能快速部署,学习成本低,springboot的起步依赖也可以简化依赖的配置,把依赖的管理交给了springboot,不用去关注不统一来的不同版本是否存在冲突,然后springCloud继承了各种微服务功能组件,并且基于springboot实现了自动装配,开箱即用,springcloud是为服务架构的一站式解决方案。

16、为什么用springcloud不用dubbo

springcloud的定位是微服务架构下的一站式解决方案,dubbo主要是在于服务的调用和治理。
springcloud依托的是spring平台,具备更完整的生态系统,dubbo一开始只是用来做RPC远程调用

17、看你写了MinIO,解释下是用到了啥

将资讯的详情页和一些素材存储到了Minio

18、kafka都能干什么

kafka是一个消息中间件,吞吐量很高,不仅可以发布、订阅消息,还可以做流式计算

19、SpringBoot配置文件有哪些

minio、网关、端口号、spring、nacos、mongodb、数据库的配置

20、介绍下ES,哪些项目中用到es,干了什么?

es是一款开源的搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能,项目中使用es做了资讯搜索功能,并且对搜索的结果进行高亮显示

21、redis热点数据怎么实现,怎么完成排序

在使用redis之前,统计上报,修改业务代码,在操作redis之前,加入key使用次数的统计,定时把收集到的数据上报到统一的服务进行聚合运算
1.Redis集群扩容,增加分片副本,分摊客户端发过来的读请求
2.使用二级缓存,即本地jvm缓存,减少redis的读请求

22、redis的数据结构有哪些

String、List、Hash、set、zset

23、分布式锁是怎么实现的,锁哪些东西

基于数据库实现,版本号控制(mp:@Version标记、向容器中配置乐观锁的拦截器)、redis的setnx命令实现,setnx和设置过期时间不能实现原子性操作,可以使用set的拓展命令,set key value ex nx;
在延迟任务服务的任务信息表中,加了version字段,控制版本,在延迟任务刷新的方法中,用setnx加了分布式锁,防止任务重复刷新

24、springcloud的注册中心用的什么?配置中心?

注册中心和配置中心用的都是nacos

25、网关用的什么?

gateway

26、feign调用怎么使用,服务方没有feignclient能被调用吗?

1.引入feign依赖
2.编写feign客户端接口,用@FeignClient注解标注
3.在服务提供者中实现feign客户端接口
4.在服务消费者的启动类上用@EnableFeignClient开启feign调用,使用feignclient中定义的方法。
feignclient也可以写在服务消费端上

27、讲一讲什么是熔断

雪崩问题:微服依靠服务器来创建线程,而服务器的性能有瓶颈,当请求一致阻塞时,会导致服务器资源耗尽,也就会导致服务不可用,依赖于当前服务的其他服务也会不可用,形成了级联失败,就是雪崩。
熔断降级:由断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求

28、mybatis,$和#的区别

#,表示占位符,相当于jdbc的?,底层是PreparedStatement,sql只编译一次,没有sql注入的问题,#中传入的是基本类型+String,可以随便写,建议写成接口方法的参数名。
$,相当于字符串拼接,底层是Statement,会重新编译sql,有sql注入的问题。当传入的是简单类型的时候,只能写value

29、数据的四大特性

原子性、一致性、隔离性、持久性

30、事务的隔离级别

读未提交、读已提交、可重复读(mysql默认)、串行化

31、多线程的实现方式,线程池实现原理,线程池回收

1.继承Thread类
2.实现Runnable接口
3.实现Callable接口
4.利用线程池创建
工作线程启动后,就进入了runworker方法,里面是一个while循环,循环判断任务是否为空,若不为空,执行任务,若取不到任务,或发生异常,退出循环,执行,processworkerExit,在这个方法里把工作线程移除掉。
线程池创建线程,工作线程从任务队列中,获取任务,执行完任务,将线程归于线程池管理
线程池7大参数:核心线程数、最大线程数、线程存活时间、时间的单位、任务队列、创建线程的工厂、拒绝策略

32、mysql搜索引擎

MyISAM类型不支持事务处理,而InnoDB类型支持。MyISAM类型强调的是性能,其执行速度比InnoDB类型更快,而InnoDB提供事务支持以及外键等高级数据库功能。

33、B+树的底层

1.有两种节点,一种是索引节点,一种是叶子节点
2.索引节点不会保存记录,只用于索引,所有数据都保存在B+树的叶子节点
3.B+树的所有叶子节点会形成一条链表,叶子本身也是按照索引值从小到大排序的,更方便范围查找
3.B+树的索引值一定会全部出现在叶子节点

34、线程池的好处

1.降低资源的消耗
2.提高响应的速度
3.提高线程的可管理性

35、线程的数据如何保持独立

可以使用ThreadLocal,Threadlocal为变量在每个线程中都创建了一个副本,每个线程可以访问自己内部的副本变量

36、使用包装类的好处

封装了基本类型的操作,创建集合对象,可以对元素的数据类型用泛型进行限定,而泛型类型只能是引用类型,那么基本类型就用不了了,就要使用对应的包装类

37、sql优化

1.不要用select *
2.用in代替or
3.禁止不必要的order by排序
4.尽量避免使用子查询
5.使用批量插入
6.使用limit
7.优化group by语句

38、缓存什么时候设置淘汰策略

在Redis Memory占用超过我们配置的阈值的时候触发策略执行

39、消息队列丢失情况

生产者消息确认机制、消息持久化、消费者消息确认机制、消费消息失败重试机制


http://lihuaxi.xjx100.cn/news/2161757.html

相关文章

SOCKS代理是如何提高网络性能和兼容性的?

SOCKS代理作为一种网络协议中间件,不仅在提升网络隐私和安全性方面发挥着重要作用,也在提高网络性能和兼容性方面有着不容忽视的影响🚀。本文将深入探讨SOCKS代理如何通过减少网络延迟🚀、优化数据传输🔄、提高跨平台兼…

SpringBoot日志打印控制

按包控制日志输出&#xff1a; 我们有时候想在项目中控制某个包下面日志的输出等级&#xff0c;可以在yaml文件中这么写&#xff1a; #日志级别TRACE < DEBUG < INFO < WARN < ERROR < FATAL。 logging:level:com.atomikos: WARN

Quanto: PyTorch 量化工具包

量化技术通过用低精度数据类型 (如 8 位整型 (int8)) 来表示深度学习模型的权重和激活&#xff0c;以减少传统深度学习模型使用 32 位浮点 (float32) 表示权重和激活所带来的计算和内存开销。 减少位宽意味着模型的内存占用更低&#xff0c;这对在消费设备上部署大语言模型至关…

问题解决四步法

一、界定问题 1.问题陈述表 1.问题的定义&#xff1a;smart原则 2.背景信息&#xff1a;对解决问题的影响 3.决策人&#xff1a; 4.利益相关者&#xff1a; 5.成功标准&#xff1a; 6.约束条件&#xff1a; 7.问题边界&#xff1a;包含范围不包含问题&#xff0c;地域范…

你还不懂MYSQL正则表达式?

正则表达式匹配的字符类 .:匹配任意单个字符^:匹配字符串的开始$:匹配字符串的结束*:匹配0个或多个前面的元素&#xff0c;尽可能多的:匹配1个或多个前面的元素&#xff0c;尽可能多的?:匹配0个或1个前面的元素&#xff0c;尽可能多的*?:匹配0个或多个前面的元素&#xff0c…

记一次IP访问MySQL失败多次被自动锁定导致无法连接问题,解决方法一条SQL足以。

&#x1f469;&#x1f3fd;‍&#x1f4bb;个人主页&#xff1a;阿木木AEcru &#x1f525; 系列专栏&#xff1a;《Docker容器化部署系列》 《Java每日面筋》 &#x1f4b9;每一次技术突破&#xff0c;都是对自我能力的挑战和超越。 前言 今天下午还在带着耳机摸鱼&#xff…

如何将PHP的Webman框架打包成二进制文件运行

看了看webman的官方文档&#xff0c;发现居然还能打包为二进制&#xff0c;这样太厉害了吧&#xff01; 先执行这个 composer require webman/console ^1.2.24 安装这个console的包&#xff0c;然后 执行 php webman build:bin 8.1 结果谁想到它报错提示&#xff1a; 好…

武汉星起航:深耕亚马逊平台,引领跨境电商市场新风向

在当今时代&#xff0c;跨境电商行业正迎来前所未有的发展机遇。武汉星起航电子商务有限公司以其深厚的行业积淀和敏锐的市场洞察力&#xff0c;深耕亚马逊平台&#xff0c;为创业者提供全方位、专业化的跨境电商服务&#xff0c;成为行业内的引领者。 亚马逊作为全球电商巨头…