
面试题
文章平均质量分 55
面试题以及解答
你知道烟火吗
随时私信,欢迎技术交流
展开
-
面试——MySql索引什么场景下会失效
描述:在联合索引中,如果某列的范围查询中断了索引的有序性,后续列的索引无法生效。描述:当查询条件值的类型与索引列类型不一致时,MySQL 会进行隐式类型转换。描述:MySQL 优化器动态调整索引,可能选择非最佳索引或直接全表扫描。描述:如果 OR 条件中有字段未使用索引,会导致整体索引失效。描述:分区表的查询条件未覆盖分区键时,全局索引可能无法生效。描述:排序或分组字段与索引顺序不匹配时,索引无法生效。描述:查询中包含未索引的字段,可能导致回表或索引失效。=、<>)通常会导致索引失效。原创 2024-12-04 10:26:12 · 736 阅读 · 0 评论 -
面试——HashMap的并发问题
【代码】面试——HashMap的并发问题。原创 2024-11-28 18:56:03 · 539 阅读 · 0 评论 -
面试——数据库中小表驱动大表?为何能提高性能?
student表和school表,执行下面的sql。算法,那么选择哪个表作为外驱表和内驱表至关重要。作为外驱表的话,就是大表驱动小表,时间复杂度将是。作为外驱表的话,就是小表驱动大表,时间复杂度将是。都存在索引的情况下,并且数据库采用的是。**,可见根本不是一个数量级的。有一百条数据,如果选择。原创 2024-04-25 16:18:58 · 423 阅读 · 2 评论 -
面试——数据库中的锁升级(Lock Escalation)机制
以MySQL为例,按照两阶段锁协议,会先给tb_user加上表意向锁,然后对tb_user的所有行加上行锁,但是当tb_user数据量非常多的时候,频繁的获取行锁会影响性能,所以会将表意向锁升级为表锁,后续访问的时候不需要再加锁,这样导致的结果是并发性能降低,因为其他线程访问该表会被阻塞。条件,分批去操作数据,尽量防止全表扫描。因此得出建议:操作表的时候尽量带仨很。假设执行下面的sql语句。原创 2024-04-24 18:20:40 · 651 阅读 · 0 评论 -
面试——深度分页问题的优化
在开发中为了防止一次加载太多数据到内存,对内存占用和IO读取开销太大,一般使用limit关键字进行分页加载数据,在数据量比较大的时候,如果进行limit分页查询,越往后,分页查询的效率越低。当在进行分页查询时,如果执行limit 9000000, 10,此时需要排序前9000010条记录,仅仅返回9000000-9000010的记录,其他的记录丢弃,查询排序的代价非常大。丢掉前m条,保留第[m, m+n],n条结果,并返回给客户端返回,从磁盘中读取m+n条数据就是整个查询过程中耗时的操作。原创 2024-03-26 14:58:34 · 309 阅读 · 0 评论 -
面试——线上Java服务器CPU不断飙升,怎么排查
Linux:Java:实际步骤:原创 2024-03-04 10:12:12 · 599 阅读 · 0 评论 -
面试——Java垃圾回收算法和垃圾回收器
他不但只会用一个线程去收集垃圾,在收集垃圾的时候其他的所有工作线程必须停止,即会发生Stop the World现象,对于Stop the world(在垃圾回收开始时停掉其他所有的线程,只供垃圾回收器回收使用,对于系统尤其是高并发系统来说就是一个噩梦),直到垃圾回收结束。复制算法将堆内存分为两个区域,通常是”From“区和”To“区,当”From“区的对象被标记为存活时,它们将被复制到”To“区,而未被标记的对象将被丢弃,完成复制后,”From“区和”To“区的角色交换。标记-清除算法分为两个主要阶段。原创 2024-02-28 18:46:02 · 999 阅读 · 0 评论 -
面试——双亲委派机制
我们再看第四个问题,我们想我们要怎么实现jsp文件的热加载,jsp 文件其实也就是class文件,那么如果修改了,但类名还是一样,类加载器会直接取方法区中已经存在的,修改后的jsp是不会重新加载的。这样保证了Class执行安全。在加载某个类时会先委托父加载器寻找目标类,找不到再委托上层父加载器加载,如果所有父加载器在自己的加载类路径下都找不到目标类,则在自己的类加载路径中查找并载入目标类。如果父加载器及bootstrap类加载器都没有找到指定的类,那么调用当前类加载器的findClass方法来完成类加载。原创 2024-02-27 18:22:26 · 987 阅读 · 0 评论 -
面试——类加载机制
4、解析:将符号引用替换为直接引用,该阶段会把一些静态方法(符号引用,比如main()方法)替换为指向数据所存内存的指针或句柄等(直接引用),这是所谓的静态链接过程(类加载期间完成),动态链接是在程序运行期间完成的将符号引用替换为直接引用。1、加载:在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用类的main()方法,new对象等等,在加载阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。3、父类的变量和代码块(先声明的先执行)原创 2024-02-27 17:36:11 · 398 阅读 · 0 评论 -
面试——redis的缓存击穿、雪崩和穿透及处理办法
redis击穿:请求数据顺序,首先会从redis缓存中拿数据,若未拿到则查数据库,再写到redis。如果是请求一条根本不存在的数据时,则会去直接访问数据库,但是数据库也没有,所以它也没把数据写入redis缓存。所以每次这种请求都会直接访问数据库。如果请求的数量太大的话,这种绕过redis直接访问数据库情况则成为击穿。解决办法:1、在查询数据库的时候若未查询到数据,依然在redis中保存一条记录,并把value设置为null或者其他便于区别的值,可以再给该条数据设置一个过期时间,那么以后再有请求过来访问原创 2022-05-04 11:02:02 · 330 阅读 · 0 评论