成都百世慧科技-线下-笔试+技术面试
笔试:想拍照,没拍上哈哈哈。勉强记录一下:
题型:选择题+填空题+附加题
选择题:sql语句、sql函数(count、max、min、agv、sum)、java与C#(例如private public等等修饰符)、前端语言(<body>内容先加载、创建元素、AJAX语法)
填空题:基本语句的输出
附加题:消息的重复消费、缓存穿透、DDD分层架构、对于分布式架构的理解
消息的重复消费
1. 消息消费前,先判断Redis中是否存在该消息的消费记录。
2. 如果Redis中存在该消息的消费记录,则说明该消息正在被消费,可以跳过当前消息的消费,避免重复执行。
3. 如果Redis中不存在该消息的消费记录,则进行消费并将该消息的消费记录写入Redis。
4. 消息消费完成后,可以释放Redis中该消息的消费记录。
缓存穿透
缓存穿透出现的原因
缓存穿透是指查询一个一定不存在的数据。由于缓存不命中,并且出于容错考虑,如果从数据库查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,失去了缓存的意义。
解决方案
1. 利用过滤器:由于请求的参数是不合法的(每次都请求不存在的参数),使用布隆过滤器 (BloomFilter)或者压缩 filter 提前拦截,不合法就不让这个请求到数据库层!
2. 设置空值:当我们从数据库找不到的时候,我们也将这个空对象设置到缓存里边去。下次再请求的时候,就可以从缓存里边获取了。这种情况我们一般会将空对象设置一个较短的过期时间(不超过 5 分钟)。
DDD分层架构,分层的目的:高类聚,低耦合
DDD全名叫:Domain Driven Design,领域驱动设计。它代表的是一种高质量的软件开发方法,是一种开发复杂软件的系统化的方法学和思想。
对于分布式架构的理解
分布式系统指一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
通俗的理解,分布式系统就是一个业务拆分成多个子业务,分布在不同的服务器节点,共同构成的系统称为分布式系统,同一个分布式系统中的服务器节点在空间部署上是可以随意分布的,这些服务器可能放在不同的机柜中,也可能在不同的机房中,甚至分布在不同的城市。
数据库查询前五十条记录采用什么关键字
SELECT * FROM table_name LIMIT 50;
SELECT * FROM table_name WHERE id IN (SELECT id FROM table2_name LIMIT 50);
Springboot中有哪些设计模式
1. 工厂模式
2. 单例模式
3. 观察者模式
4. 适配器模式
5. 模板方法模式
项目介绍
接触过那些关系型数据库(大学学过android开发的一个轻量级的sqlite sqlserver mysql)
mysql数据库中货币的存储类型
DECIMAL是一种固定精度的数据类型,存储的是精确的小数值。DECIMAL还有一个优点,就是不会出现数据精度丢失的问题。
DOUBLE是一种浮点精度的数据类型,存储的是近似值。虽然DOUBLE在处理大数值时速度更快,但是会出现精度问题,如果涉及到舍入的计算,结果可能会出现误差
#面经##成都##应届##秋招#