![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试题
XP-Code
这个作者很懒,什么都没留下…
展开
-
面试题:如何计算InnoDB中B+树索引的层高
假设有一张user表中有200万条数据,表结构如下:create table user( `id` bigint(64) NOT NULL COMMENT 'id主键', `user_name` varchar(64) DEFAULT NULL COMMENT '用户名' PRIMARY KEY (`id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;bigint 长度为 8 字节,指针大小在 I原创 2021-04-19 21:13:34 · 983 阅读 · 0 评论 -
面试题:SpringBoot 自动装配原理
1. @SpringBootApplication注解首先,我们都知道SpringBoot程序的入口是通过@SpringBootApplication注解修饰的一个类,例如:@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(ConfigApplication.class, args); }原创 2021-04-13 21:42:35 · 10747 阅读 · 0 评论 -
面试题:热Key的发现和解决
其实热key问题说来也很简单,就是瞬间有几十万的请求去访问某一台Redis(或MySQL)服务器上某个固定的key,这样会造成流量过于集中,达到物理网卡上限,从而导致这台服务器宕机。那么这个key的请求,要么直接打到数据库上,要么就是由于MySQL服务器宕机导致请求失效。一、热Key发现发现热Key的方法主要包括如下几个:1. 凭借业务经验,进行预估哪些是热key其实这个方法还是挺有可行性的。比如某商品在做秒杀,那这个商品的key就可以判断出是热key。缺点很明显,并非所有业务都能预估出哪些key是原创 2021-04-12 21:52:20 · 591 阅读 · 0 评论 -
面试题:Spring的 IOC和DI 的本质理解
反转控制(Inverse of Control, IOC)思想最核心的地方就是:资源不由提供方和使用方管理,而是通过不使用资源的第三方管理。这样的好处是:资源集中管理,实现资源的可配置和易管理。降低了使用资源双方的依赖程度,也就是我们说的耦合度。依赖注入(Dependency Injection)则是使用方开放接口,在它需要的时候,能够将资源传递进来(注入)。反转控制是目的,依赖注入是手段。通常我们在编程的时候是面向接口编程,也就是不需要关注具体的实现类。这个时候只要通过依赖注入,将需要的原创 2021-04-12 14:00:35 · 257 阅读 · 0 评论 -
面试题:Java程序中 try,catch和finall 的执行顺序以及方法返回值
1. try,catch,finally中都有return值执行下面的程序:import java.util.*;public static class Test1 { public static void main(String []args) { System.out.println("Output : "+test()); } public static String test(){ try{ System.out原创 2021-04-12 13:25:05 · 350 阅读 · 0 评论 -
面试题:ThreadLocal 的内存泄漏问题
一、ThreadLocal 简介多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal是除了加锁这种同步方式之外的一种保证一种规避多线程访问出现线程不安全的方法,当我们在创建一个变量后,如果每个线程对其进行访问的时候访问的都是线程自己的变量这样就不会存在线程不安全问题。ThreadLocal是JDK包提供的,它提供线程本地变量,如果创建一个ThreadLocal原创 2021-04-10 15:40:07 · 241 阅读 · 0 评论 -
面试题:拦截器,过滤器,监听器的区别和触发顺序
监听器(Listener)@WebListenerpublic class RequestListener implements ServletRequestListener { @Override public void requestDestroyed(ServletRequestEvent sre) { // TODO Auto-generated method stub System.out.println("======销毁监听器=======原创 2021-04-10 16:58:46 · 1201 阅读 · 0 评论 -
面试题:使用单例模式产生的对象经过序列化和反序列化之后还是原来的对象么?
这个问题的意思就是在我们使用单例模式时首先获取一个对象instance,然后经过了序列化保存到磁盘中(或者网络二进制流),再将磁盘上的二进制文件反序列化为Java程序中的一个对象,问这个对象和原来的instance对象是不是同一个对象。我们用代码来复现一下这个问题:package com.example.demo;import java.io.*;public class SingletonSerializable implements Serializable { private stat原创 2021-04-06 10:30:53 · 729 阅读 · 0 评论 -
面试题:雪花算法(SnowFlake)如何解决时钟回拨问题
1. 雪花算法雪花算法是一种分布式ID生成算法,首先它生产的是一个64bit位的ID,这64bit位中划分成多段:第1个bit位:保留位,无实际作用第2-42的bit位:这41位表示时间戳,精确到毫秒级别第43-52的bit位:这10位表示专门负责生产ID的工作机器的id第53-64的bit位:这12位表示序列号,也就是1毫秒内可以生成2122^{12}212个不同的ID优点:毫秒数在高位,自增序列在低位,整个ID都是趋势递增的。作为DB表的主键,索引效率高。不依赖数据库等第三方系统原创 2021-04-10 21:33:43 · 12408 阅读 · 6 评论