Redis面试题
⚫ 熟悉Redis缓存,熟悉数据类型,缓存持久化,分布式锁,对于缓存雪崩等问题有解决方案;
数据类型
String(字符串)
1、字符串是 Redis 中最简单和最常用的数据类型。可以用来存储如字符串、整数、浮点数、图片(图片的base64编码或图片的路径)、序列化后的对象等。
2、每个键(key)对应一个值(value),一个键最大能存储512MB的数据。
12>SET key "value">GET key
Hash(哈希)1、Redis Hash是一个String类型的field和value的映射表,类似于Java中的Map。
2、Hash特别适合用于存储对象,如用户信息、商品详情等。
3、 每个Hash可以存储2^32 - 1个键值对。
12>HSET user:1000 name "John">HGET user:1000 name
List(列表)1、 列表是一个有序的字符串集合,可以从两端压入或弹出元素,支持在列表的头部或尾部添加元素。
2、 列表最多可存储2^32 - 1个元素。
123>LPUSH ...
MQ面试题
⚫ 熟悉Rocketmq的使用,掌握持久化机制,消息可靠性,延迟消费等,解决过消息积压,消息逆序等问题;
使用场景(系统解耦和流量削峰)
异步通信场景:MQ可以实现消息的异步传递,避免了请求等待的时间,提高了系统的响应速度和吞吐量。
常见的应用场景有异步下单、异步支付等,例如在电商平台中,当用户下单或支付后,这些操作可以被转化为消息发送至MQ,由后台服务异步处理,而用户无需等待操作完成即可进行其他操作。
分布式系统场景:MQ可以在分布式系统中实现各个节点之间的高效通信,解决网络延迟、网络抖动等问题。
常见的应用场景有分布式任务调度、分布式事务等。例如,在微服务架构中,服务之间的数据交互可以通过MQ实现,降低服务的耦合度,提高系统的可扩展性和可维护性。
解耦系统场景:MQ可以将系统各个模块之间的耦合度降低,实现系统的解耦。
常见的应用场景有日志收集、异常监控等。通过使用MQ,可以将这些操作从主业务逻辑中分离出来,降低系统的复杂性。
流量削峰场景:MQ可以在高并发场景下,实现流量的削峰,避免系统崩溃或响应变慢。
常见的应用场景有秒杀、活动抢购等。通过使用MQ缓存请求,后台服务可以按顺序处 ...
算法(java)
快读
注意:
如果读取的字符串中含有空格,则使用上述方法读取字符串,会存在读取问题,读到空格就 停止本次的数据读入,因为StreamTokenizer在读取输入数据时,是以空格或回车换行为每次 输入数据的分隔,所以如果要读取含有空格的字符串,要使用下面的方法
虽然StreamTokenizer 有提供方法,可以修改输入数据时的分隔符,但是由于大部分题目的输 入数据中都是以空格或换行为分隔符,所以不建议进行修改(如要修改可以参考: StreamTokenizer 使用详解)
如果要将数值数据以字符串的形式读入,则不能使用上述的方法,需要使用下面的方法。 StreamTokenizer 以字符串的形式读取数值数据,读入后的字符串变量将指向null,即 StreamTokenizer 以字符串的形式读入数值数据读入的结果为空。
用StreamTokenizer 快读读的数范围不能抄过1e16!否则可能会导致double转long 丢失精度!一行一行读的建议直接用BufferedReader
123456789101112131415161718192021222 ...
Spring面试题
IOC和DI
控制反转(IoC)将对象的创建和依赖关系的管理交给Spring IoC容器,极大地提高了代码的模块化和可维护性。
Spring IoC容器负责管理应用程序中对象的生命周期和依赖关系。它的主要职责包括:
对象的创建:根据配置文件或注解创建对象。
依赖注入:将对象的依赖注入到相应的对象中。
对象的销毁:在适当的时候销毁对象,释放资源。
配置方式
XML配置:通过XML文件定义Bean及其依赖关系。
Java配置:通过Java类和注解定义Bean及其依赖关系。
注解配置:通过注解(如@Component,@Autowired)自动扫描和注入Bean。
依赖注入(DI)依赖注入是实现控制反转的一种方式。
构造函数注入:通过构造函数将依赖对象传递给被依赖对象。
Setter方法注入:通过Setter方法将依赖对象注入到被依赖对象中。
字段注入:直接在字段上使用注解进行注入。
BeanFactory 和 ApplicationContext 的区别?
BeanFactory和ApplicationContext都是用于管理Bean的容器接口
BeanFactoryBeanFacto ...
JVM面试题
⚫ 熟悉JVM相关知识,如JVM组成,垃圾回收,双亲委派机制,类加载机制和过程等;
垃圾回收过程
算法模板
快排12345678910111213141516171819void quicksort(int l,int r) { if(l>=r) return; swap(a[i],a[l+rand()%(r-l+1)]); int x = a[l]; int i = l,j = r; while (i<j) { while (i<j&&a[j]>x) j--; if(i<j) a[i++] = a[j]; while (i<j&&a[i]<x) i++; if(i<j) a[j--] = a[i]; } a[i] = x; quicksort(l,i-1); quicksort(i+1,r); }
归并12345678910111213141516171819void ...
Mysql面试题
⚫ 熟悉Mysql底层存储结构,索引,事务,mvcc工作原理,学习过sql调优及分库分表优化;
事务的四大特性和隔离级别
原子性(Atomicity)原子性确保事务中的所有操作要么全部完成,要么全部不完成。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。事务是一个不可分割的最小工作单元。
例子:假设有一个银行转账操作,事务包括从账户A中扣钱和向账户B中加钱。如果任何一个操作失败,整个事务都会回滚,账户A和账户B的余额不会发生变化。
一致性(Consistency)一致性确保事务在完成后,数据库从一个一致状态转换到另一个一致状态。事务开始前和结束后,数据库的完整性约束没有被破坏。
例子:在银行转账操作中,一致性确保转账后总金额保持不变。如果账户A减少了100元,账户B就应该增加100元。
隔离性(Isolation)隔离性确保并发执行的事务彼此隔离开来,避免相互干扰。不同的事务之间的操作是互不可见的,直到事务提交。
例子:还是上面的银行转账操作,a 正在银行扣 100 块的时候,b 不能往里面加 100 块。
隔离级别:
读未提交(Read Uncommitt ...
测试文章
abstract:用于设置加密文章显示的摘要。
message:输入密码提示。
wrong_pass_message: 输入错误提示。
https://img.zcool.cn/community/011f8a5c9e21cba801214168ae2c61.jpg?imageMogr2/auto-orient/thumbnail/1280x%3e/sharpen/0.5/quality/100/format/webp
https://img.zcool.cn/community/01c9765c9e21c9a801208f8b3657ee.jpg?imageMogr2/auto-orient/thumbnail/1280x%3e/sharpen/0.5/quality/100/format/webp
https://img.zcool.cn/community/0163b85c9e21cba801208f8b89e09a.jpg?imageMogr2/auto-orient/thumbnail/1280x%3e/sharpen/0.5/quality/100/form ...
简历八股文
ba70b6bc2ab4ad59844d4157e0762dd1d9f30e3164ff81c09043ddf988348263fa3504f1113b1514ea9c7668bff5ddc630dea029b6fc0071f09204eb96c3305a2a6670e4a682b4f3a64dcfe2274ed43a4de50791f4f2598f03eeddfe0cd40e5a08f3aa69c821b9d8a9779ca167b1a709807ecaf4c31e48122e3cb816a08621480201c156f834467f42e888290d6a79bd36fac1f5f11404d496706a7a5cc492a4abe1e4f8ad4dee6159ea032b42c90fbab7ebe82fd31d3c8254af6f46bca36f718c5d55905e6aa792fe7d7d281ccea8455b5865d97bb5784585716797609d3bdc899c788dd17da933ba1b553d5e4754e42f6afe7e2441b61e9 ...