中科软面试题

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://www.mzph.cn/news/809558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模型训练-保存训练数据

1.目的 找到一个可运行的代码,可以每个epoch打印训练数据,但是不会保存。因为在改进模型需要这些训练数据进行对比,所以需要将每个epoch的训练数据保存下来,写到一个文件中。 2.解决方案 直接问ChatGPT,提示词如下&…

SpringMVC原理及工作流程

组件 SpringMVC的原理主要基于它的各个组件之间的相互协作交互,从而实现了Web请求的接收,处理和响应。 它的组件有如下几个: DispatcherServlet前端控制器 HandlerMapping处理器映射器 Controller处理器 ModelAndView ViewResolver视图…

0基础刷图论最短路 3(从ATcoder 0分到1800分)

AT最短路刷题3(本文难度rated 1200~ 1400) 题目来源:Atcoder 题目收集: https://atcoder-tags.herokuapp.com/tags/Graph/Shortest-Path (里面按tag分类好了Atcoder的所有题目,类似cf) &#x…

Ubuntu22.04安装ffmpeg(v7.0)

需下载文件:ffmpeg-7.0.tar.gz 安装步骤 1. 创建目录 mkdir -p /ffmpeg && cd ffmpeg2. 下载文件 wget https://ffmpeg.org/releases/ffmpeg-7.0.tar.gz3. 解压 tar -zxvf ffmpeg-7.0.tar.gz && cd ffmpeg-7.04. 安装环境依赖 官网说明&#…

练习题(2024/4/11)

1每日温度 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输入…

Leetcode刷题之消失的数字(C语言版)

Leetcode刷题之消失的数字(C语言版) 一、题目描述二、题目解析 一、题目描述 数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗? 注意:本题相对书上原题稍作…

STM32 文档整理

//***********************************************************************************************************// 英文缩写名称NVIC嵌套向量中断控制器SysTick系统滴答定时器RCC复位和时钟控制GPIO通用IO口AFIO复用IO口EXTI外部中断TIM定时器ADC模数转换器DMA直接内存访…

Java中实现监听UDP协议的指定端口并收到数据按照十六进制输出

场景 对接协议中需要监听UDP协议的指定端口并监听数据,且数据格式为十六进制。 如果是在linux服务上,可以快速通过C或者python脚本等方式实现。 这里使用Java代码实现,可便于后续做其他存储数据等的扩展,且只需要在服务器上安装…

华为OD七日集训第6期 - 按算法分类,由易到难,循序渐进,玩转OD

目录 一、适合人群二、本期训练时间三、如何参加四、七日集训第 6 期五、精心挑选21道高频经典题目,作为入门。第1天、逻辑分析第2天、双指针第3天、滑动窗口第4天、二叉树第5天、矩阵第6天、分治递归第7天、深度优先搜索 大家好,我是哪吒。 最近一直在…

《安静的力量》探寻自我的心灵之旅,找到内心的宁静和真正的幸福 - 三余书屋 3ysw.net

安静的力量:通往止境的冒险 大家好,今天我们要解读的书籍是《安静的力量》。让我们先设想一个画面:在纽约曼哈顿,紧邻繁华的时代广场,一位29岁的青年在他的公寓里工作。这里毗邻纽约最富有人群的聚居区,而…

Windows Edge 兼容性问题修复:提升用户体验的关键步骤

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

如何设置MySQL的IP白名单

当我们谈论设置MySQL数据库的IP白名单时,我们通常是在指定哪些IP地址被允许连接到数据库服务器。这是一种安全措施,可确保只有受信任的主机可以访问数据库。以下是一个分步指南,以及如何设置MySQL的IP白名单的说明。 步骤1: 登录到MySQL服务…

Django框架的基础知识

Django(英文发音:dʒŋgəʊ)是一个开放源代码的Web应用框架,使用高性能的Python语言编写而成。Django框架的诞生,最初是用来开发和管理Lawrence Publishing Group(劳伦斯出版集团)旗下的新闻网…

【vscode】在本地加载远端环境并开发

【vscode】在本地利用远程服务器显卡跑代码 写在最前面vscode:远程到本地1、安装ssh插件2、添加服务器连接配置3、连接服务器4. SSH配置5. 在ssh中安装python解释器 vscode基本操作 🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻时光…

JS搜索关键字匹配变色

使用场景:用户通过搜索关健字(keyword),对文本进行匹配,并对匹配到的文本进行一些高亮处理 解析:使用的是JavaScript中的 RegExp(正则表达式)对象,var regExp new RegExp(keyword,…

银河麒麟操作系统修改dns(唯一一篇可以解决DNS生效问题)

背景: Kylin V10 SP1 系统修改dns 1.修改/etc/resolv.conf 临时生效,不满足生产要求 2.修改/etc/network/interface 不生效 3.修改/etc/systemd/resolved.conf,遇到问题,最终解决永久修改DNS 系统版本: root@node01:~# cat /etc/issue Kylin V10 SP1 \n \l 一、如何在…

BLIP 算法阅读记录---一个许多多模态大语言模型的基本组件

论文地址:😈 目录 一、环境配置以及数据集准备 数据集准备 数据集格式展示 环境配置,按照官网所述即可 二、一些调整 vit_base的预训练模型 远程debug的设置 Tokenizer初始化失败 读入网络图片的调整 三、训练过程 Image Encoder …

FebHost:英国.UK域名注册使用中存在哪些侵权行为?

截至2023年6月,英国.uk域名作为全球第五大热门顶级域名,注册数量超过1100万,成为全球最知名和广泛使用的域名之一。英国域名家族包括四个独特的域名后缀——.uk、.co.uk、.org.uk 和 .me.uk——每个都有其独特的特点,并根据数字领…

Mac下用adb命令安装apk到android设备笔记

查询了些资料记录备用。以下是在Mac上使用命令行安装APK文件的步骤: 1. 下载并安装ADB: 如果您的Mac上没有安装ADB,请从官方的Android开发者网站下载Android SDK Platform Tools:Android SDK Platform Tools。将下载的ZIP文件解…

python使用Flask框架开发API

Flask是一个基于Python的轻量级Web应用程序框架。 安装依赖库 pip install flask pip install werkzeug 上传接口 Python from flask import Flask, request from werkzeug.utils import secure_filenameapp Flask(__name__)app.route(/upload, methods[POST]) def uploa…