消息队列面试夺命连环问
为什么使用消息队列?
解耦
看这么个场景。A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃......
看这么个场景。A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃......
EXISTS
- 先对外表进行循环查询,再将查询结果放入 EXISTS
的子查询中进行条件比较,确定外层查询数据是否保留;IN
- 先查询内表,将内表的查询结果作为条件,提供给外表查询语句进行比较;索引是个前提,其实选择与否还是要看表的大小。你可以将选择的标准理解为小表驱动大表。在这种方式下效率是最高的。
比如下面这样:
秒杀的核心问题就是极高并发处理,由于系统要在瞬时承受平时数十倍甚至上百倍的流量,这往往超出系统上限,因此处理秒杀的核心思路是限流和缓存。
【问题】
【解答】
什么是 Redis:
Redis 是一个开源的“内存”数据库。由于,Redis 的读写操作都是在内存中完成,因此其读写速度非常快。
ES 部署情况:
5 节点(配置:8 核 64 G 1T),总计 320 G,5 T。
约 10+ 索引,5 分片,每日新增数据量约为 2G,4000w 条。记录保存 30 天。
你往 es 里写的数据,实际上都写到磁盘文件里去了,查询的时候,操作系统会将磁盘文件里的数据自动缓存到 filesystem cache
里面去。
String 类能被继承吗?
String,StringBuffer,StringBuilder 的区别。
String 类不能被继承。因为其被 final 修饰,所以无法被继承。
StringBuffer,StringBuilder 拼接字符串,使用 append 比 String 效率高。因为 String 会隐式 new String 对象。
StringBuffer 主要方法都用 synchronized 修饰,是线程安全的;而 StringBuilder 不是。
如果你不是从事于通信领域,面试时问及计算机网络的知识,一般也就限定在:HTTP(含 HTTPS、Cookie、Session)、TCP、UDP、Socket 这些
❓ 问题:计算机网络如何分层?各层的作用是什么?各层的主要协议、设备分别是什么?
这是学习计算机网络知识宏观层面必须要了解的核心点。知道了这些,对于网络的体系结构就基本上了解了。
Version | Feature |
---|---|
Spring 2.5 | 发布于 2007 年。这是第一个支持注解的版本。 |
Spring 3.0 | 发布于 2009 年。它完全利用了 Java5 中的改进,并为 JEE6 提供了支持。 |
Spring 4.0 | 发布于 2013 年。这是第一个完全支持 JAVA8 的版本。 |
数据类型 | 可以存储的值 | 操作 |
---|---|---|
STRING | 字符串、整数或者浮点数 | 对整个字符串或者字符串的其中一部分执行操作 对整数和浮点数执行自增或者自减操作 |
LIST | 列表 | 从两端压入或者弹出元素 读取单个或者多个元素 进行修剪,只保留一个范围内的元素 |
SET | 无序集合 | 添加、获取、移除单个元素 检查一个元素是否存在于集合中 计算交集、并集、差集 从集合里面随机获取元素 |
HASH | 包含键值对的无序散列表 | 添加、获取、移除单个键值对 获取所有键值对 检查某个键是否存在 |
ZSET | 有序集合 | 添加、获取、删除元素 根据分值范围或者成员来获取元素 计算一个键的排名 |