面试-技术场景
上传数据的安全性怎么控制
问:上传数据的安全性怎么控制
答:使用对称加密(加密和解密的密钥相同)或者非对称加密(公有密钥加密,私有密钥解密),给前端一个公钥让他把数据加密后传到后台,后台负责解密后处理数据。
遇到过那些棘手的问题
问:遇到过那些棘手的问题
答:使用了一些设计模式
解决线上BUG:CPU飙高、内存泄露、线程死锁
调优:慢接口、慢SQL、缓存方案
组件封装:分布式锁、接口幂等、分布式事务

素未蒙面! 但一见如故! Welcome MyBlog!
答:使用对称加密(加密和解密的密钥相同)或者非对称加密(公有密钥加密,私有密钥解密),给前端一个公钥让他把数据加密后传到后台,后台负责解密后处理数据。
答:使用了一些设计模式
解决线上BUG:CPU飙高、内存泄露、线程死锁
调优:慢接口、慢SQL、缓存方案
组件封装:分布式锁、接口幂等、分布式事务
答:Byte(1) Short(2) Int(4) Long(8) Float(4) Double(8) Char(2) Boolean(1)
答:indexof()从指定字符提取索引位置
replace()替换
subString()截取字符串
equals()比较
split()把字符串分割成字符串数组
答:JVM内存结构主要分为堆内存、方法区和栈。堆内存是JVM中最大的一块内存地址。所有new出来的对象都存储在该区域。栈就是暂存数据的地方,栈中只保存基础数据类型的对象和自定义对象的引用,每个栈中的数据都是私有的,其它栈不能访问。方法区存放了要加载的类的信息如类名、修饰符、静态变量、构造函数等
答:一级缓存是MyBatis默认开启的缓存机制,它是指在同一个SqlSession内的缓存。当进行相同的查询时,如果该查询的结果已经在当前SqlSession的本地缓存中存在,则直接从缓存中获取结果,而不再去数据库查询。本地缓存的作用域是SqlSession,当SqlSession关闭时,本地缓存也会被清空。
二级缓存是指在SqlSessionFactory层面的缓存,它可以被多个SqlSession共享。当多个SqlSession执行相同的查询时,如果查询结果已经存在于二级缓存中,则直接从缓存中获取结果,而不会再去数据库查询。二级缓存的作用域是SqlSessionFactory,在整个应用的生命周期内有效。需要注意的是,二级缓存需要在MyBatis的配置文件中明确地配置开启。
答:索引(index)是帮助数据库高效获取数据的数据结构。MySQL数据库默认采用的是B+Tree的数据结构。其所有的数据都存储在叶子节点,非叶子节点仅用于索引数据。叶子节点形成了一个双向链表,便于数据的排序及区间范围查询。
-- 创建索引语句
CREATE INDEX 索引名 ON 表名(列名1, 列名2...);
-- 创建表的时候加索引
CREATE TABLE 表名 (
列名1 数据类型,
列名2 数据类型,
列名3 数据类型,
-- 唯一索引
UNIQUE KEY 索引名 (列名2),
-- 普通索引(KEY和INDEX 等价,KEY更简洁)
KEY 索引名 (列名2)
);
答:Redis是一个基于Key-Value结构存储的非关系型数据库。数据类型有String、List、Set、Hash、SortedSte有序集合。其基于内存存储速度很快。使用场景有缓存、分布式锁、保存token、消息队列、延迟队列等
答:Spring核心思想为IOC、DI、AOP。Spring框架使用了Java里面的反射机制。IOC就是把对象的创建控制权转移到IOC容器并且负责对象的创建、初始化等一系列工作。被创建的对象在IOC容器中称为Bean。在容器中建立Bean与Bean之间的关系就称为依赖注入。AOP底层是代理模式,可以在不改变原有代码结构的情况下增强功能。具体操作核心是先定义切面来封装通用逻辑,再通过切点明确要切入的目标方法(如指定包 / 类 / 方法规则),接着定义通知确定增强逻辑的执行时机(前置 / 后置 / 环绕 / 异常 / 最终)。
答:SpringBoot一个重要的思想是约定大于配置,其整合了所有的后端框架。优点有能快速创建独立运行的Spring项目以及与主流框架集成。大量的自动配置,简化开发。无需配置大量的XML文件,开箱即用。
答:Vue的生命周期是指从Vue实例创建、挂载、更新、销毁到最终回收的完整过程中不同阶段所能调用的不同函数。