专栏首页慕容千语的架构笔记Java每日十题——日积月累更能事半功倍

Java每日十题——日积月累更能事半功倍

1、Redis单线程为什么这么快?

(1)纯内存操作 (2)单线程操作,避免了频繁的上下文切换 (3)采用了非阻塞I/O多路复用机制 (4)RESP协议简

2、SpringCloud断路器的作用

参考答案:当一个服务调用另一个服务由于网络原因或者自身原因出现问题时 ,调用者就会等待被调者的响应, 当更多的服务请求到这些资源时,导致更多的请求等待,这样就会发生连锁效应,断路器就是解决这一问题的。 断路器有完全打开状态: 一定时间内,达到一定的次数无法调用,并且多次检测没有恢复的迹象,断路器完全打开,那么下次的请求不会请求到该服务。 半开: 短时间内有回复迹象,断路器会将部分请求发送给服务,当能正常调用时,断路器关闭。 关闭: 当服务一直处于正常状态,能正常调用,断路器关闭。

3、什么是Tomcat的Valve?

在一个大的组件中直接处理这些繁杂的逻辑处理,使用管道(pipeline)可以把把多个对象连接起来,而Valve(阀门)整体看起来就像若干个阀门嵌套在管道中,而处理逻辑放在阀门上。 管道(Pipeline)就像一个工厂中的生产线,负责调配工人(valve)的位置,valve则是生产线上负责不同操作的工人。

4、什么是缓存穿透?如何解决?

参考答案:缓存穿透是指用户查询数据,在数据库没有,自然在缓存中也不会有。这样就导致用户查询的时候,在缓存中找不到,每次都要去数据库再查询一遍,然后返回空(相当于进行了两次无用的查询)。这样请求就绕过缓存直接查数据库,这也是经常提的缓存命中率问题。 解决办法; 最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。

5、 什么是缓存雪崩?如何解决?

缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间 (例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。 缓存雪崩一般使用加锁( 最多的解决方案)来保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发请求落到底层存储系统上。还有一个简单方案就时讲缓存失效时间分散开。

6、当出现Hash冲突时,Jdk时如何处理的?

相同的数据通过hash函数得到相同的key值。这时候,就产生了hash冲突。解决hash冲突的方式有两种。一种是挂链式,也叫拉链法,在产生冲突的hash地址指向一个链表,将具有相同的key值的数据存放到链表中。。

7、HashSet和HashMap的区别是什么?JDK是如何实现HashSet的呢?

参考答案:HashMap实现了Map接口 HashSet实现了Set接口 HashMap储存键值对 HashSet仅仅存储对象 使用put()方法将元素放入map中 使用add()方法将元素放入set中 HashSet内部就是使用HashMap实现,只不过HashSet里面的HashMap所有的value都是同一个Object而已

8、在java中守护线程和用户线程的区别?(并发面试题)

参考答案:java中的线程分为两种:守护线程(Daemon)和用户线程(User)。 任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在Thread.start()之前调用,否则运行时会抛出异常。 两者的区别: 唯一的区别是判断虚拟机(JVM)何时离开,Daemon是为其他线程提供服务,如果全部的User Thread已经结束,Daemon 没有可服务的线程,JVM关闭。 扩展:Thread Dump打印出来的线程信息,含有daemon字样的线程即为守护进程

9、死锁与活锁的区别,死锁与饥饿的区别?

死锁:是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。 产生死锁的必要条件: 互斥条件:所谓互斥就是进程在某一时间内独占资源。 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 不剥夺条件:进程已获得资源,在末使用完之前,不能强行剥夺。 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 活锁:任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败。 活锁和死锁的区别在于,处于活锁的实体是在不断的改变状态,所谓的“活”, 而处于死锁的实体表现为等待;活锁有可能自行解开,死锁则不能。 饥饿:一个或者多个线程因为种种原因无法获得所需要的资源,导致一直无法执行的状态。

10、InnoDB引擎的主键索引是用什么数据结构存储的?普通索引又是用什么结构存储的?

答案解析: InnoDB使用B+Tree的方式存储索引。Innodb的一个表可能包含多个索引,每个索引都使用B+树来存储。而索引包括聚集索引(clustered index )和非聚簇索引(secondary index),聚集索引使用表的主键作为索引键,叶子节点包含表的所有字段。二级索引只包含索引键和聚集索引键(主键)的内容,不包括其他字段。

11、B+tree如何进行优化?

创建索引的时候尽量使用唯一性大的列来创建索引,由于使用b+tree做为索引,以innodb为例,一个树节点的大小由“innodb_page_size”,为了减少树的高度,同时让一个节点能存放更多的值,索引列尽量在整数类型上创建,如果必须使用字符类型,也应该使用长度较少的字符类型。

本文分享自微信公众号 - 慕容千语(mrqy_1507153110)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 像我这样的人

      我是一个特别有计划的人,也特别热爱学习,内心时刻充盈着奋发向上的心;尤其身为码农一族,更要活到老学到老!常常感叹余生苦短,时间宝贵,所以平日里,那些热门的剧...

    用户1615728
  • 凭什么老程序员被裁,应届生却能月薪 1.3 万?

    这场裁员潮来的快且急,很多人措手不及:有人昨天刚通宵发布上线第二天就被裁了;有人早上还在改Bug下午就被裁了;还有公司不发工资逼着员工主动离职…...

    美的让人心动
  • 凭什么老程序员被裁,应届生却能月薪 1.3 万?

    导读:近日,2019届全国普通高校毕业生平均期望月薪出炉。北京、上海的应届毕业生平均期望薪资均超过1万,北京接近1.3万。而在另一边,互联网公司裁员的消息却不断...

    华章科技
  • 比亚迪鸣响汽车芯片第一枪

    近日,国产新能源汽车领域又放出了一个重磅消息。一直默默布局半导体行业的比亚迪一举拿下19亿融资,并称将在合适的时机挂牌上市。长期以来中国半导体严重依赖进口,作为...

    刘旷
  • 他说能把英语学好,如同人生开了挂一样!

    这次推荐一些免费的英语学习方法与资料(见文末),作为福利,让大家3个月就能说一口流利英语?

    哲洛不闹
  • 社群全力配合!AIT以榜首身份上线年度最火爆交易所—FCoin!

    大盘不稳、熊市一片血红,韭菜们虽在各大交易所手持多种代币,但交易价格持续萎靡、交易量迟迟无法上涨,让大家多少都有些无精打采、奄奄一息。

    区块链领域
  • 腾讯企点与有色网联手打造超级工具,金属行业即将迎来一场革新!

    ? ? 近日,腾讯企点 牵手 “上海有色网(SMM)”,双方宣布进行战略合作,致力于为有色行业服务的SMM也望通过这场与腾讯企点的合作为金属行业赋予更多的能量...

    腾讯企点
  • CTO大佬这半年填过的坑!

    转眼间,我加入这家创业公司已经半年了。这半年,每天都在亢奋和鸡血及疲惫的状态下度过。

    孙玄@奈学教育
  • 明日之战:中日竞逐机器人革命

    “前几天,我看了一份材料,说‘机器人革命’有望成为‘第三次工业革命’的一个切入点和重要增长点,将影响全球制造业格局,而且我国将成为全球最大的机器人市场。”6月9...

    机器人网

扫码关注云+社区

领取腾讯云代金券