Java程序员面试题

要求

逻辑清晰

每个框架清楚应用场景、注意事项、运行流程即可。

一、Java基础

  1. 说说spring 框架。 bean注入 aop 事务 反射等
  2. 说说spring boot? 说说autowired方法? Spring - @Autowired背后实现的原理_springboot autowired原理_Q.E.D.的博客-CSDN博客
  3. spring boot 统一异常处理 SpringMVC中统一处理异常_springmvc统一异常处理_fang·up·ad的博客-CSDN博客
  4. spring boot 不同环境的配置文件如何切换
  5. 说说微服务
  6. 分布式事务如何保证 安全验证 - 知乎 【分布式】分布式事务解决方案_哔哩哔哩_bilibili
  7. 多线程说说?说几个多线程类
  8. 死锁?如何避免 Java 线程死锁及如何避免死锁介绍_java死锁如何避免_大渔歌_的博客-CSDN博客
  9. CAS https://www.cnblogs.com/Shuuichi/p/10590710.html  
  10. 异常体系 java异常体系_捻玖的博客-CSDN博客
  11. G1 垃圾回收器 - 简书

二、Spring

三、Spring Boot

1.为什么spring boot 不推荐使用Autowired注解 

     视频讲解  为什么Spring官方不推荐使用@Autowired属性注入_哔哩哔哩_bilibili   

(1)成员变量初始化零值,是给每个类对象用null、0等初始化。

(2)Autowired是在init方法以后执行。底层反射也会花费时间;

(3)构造器方法初始化。在init方法中就会执行。提前执行且没有反射浪费时间。可使用lombok降低代码冗余,RequiredArgsConstructor会将成员变量生成一个构造器。

 

四、redis

redis 数据类型,采用的数据结构表示和什么编码格式存储。

数据类型的编码格式,即数据的存储格式,数据库中的数据存储格式非常重要,如 RDBMS 的行式存储和列式存储。Redis 作为内存数据库,对于数据编码的设计思想是,最大限度地“以时间换空间”,从而最大限度地节省内存。

缓存

使用缓存是为了系统的高并发,高性能,提高访问速度

(1)本地缓存

使用JVM的CocurrentHashMap实现或Guava实现。

应用场景

  • 存储频繁使用的少量数据,支持高并发访问

使用方式  Guava缓存(一)基础_guava 缓存_雪孤城的博客-CSDN博客

https://www.cnblogs.com/zjdxr-up/p/16307774.html

20道经典Redis面试题_CSDN砖家的博客-CSDN博客

Redis数据类型之Bitmaps_java界泥石流的博客-CSDN博客

Redis实现分布式锁_三月不灭的博客-CSDN博客

Redis和MySQL双写一致性保证 - 简书

五、mysql

B+树和B数区别? 

        B+叶子节点和排序的下一个节点使用指针互相指向,叶子节点有所有父节点的数据冗余。他两相同点事都是排好序,叶子节点有多个。

 

上图B树,下图B+树。B树自己定义层数

innodb的page结构

(1) innodb和磁盘交互以16KB的存储大小进行读写交互。作用:减少磁盘IO,提高查询效率。比如where查询时,会先读出16kb比较是否存在,不存在,在读书下一个16kb比较,依次进行

(2)用户数据插入时,会根据主键进行排序。 所以建议主键使用自增id,可以提高插入效率。

         页目录用来将用户数据分成多个组,记录每个组的主键和其实指针,提高遍历效率,因为如果没有页目录,如果查找一个大于用户数据中最大主键的数据,那么此时需要遍历整个链表。比如 select * from t where a=3 查询时直接从页目录找,因为 1<3<4,所以从第一组数据里面找。找到返回,找不到就找不到。提高了遍历链表速度。

        为什么建议主键使用自增id?①因为数据插入时需要按照主键进行排序,如果主键id随意大小,每次插入都需要排序 ②最糟糕的是,如果一页满了,插入时需要将某个数据挤出此页,那么引发多米诺骨牌效应。

        为什么不建议使用uuid? uuid无序,另外太占空间。

(3)多页数据存储。

       where查询时,会先读出16kb比较是否存在,不存在,在读书下一个16kb比较,依次进行 ,如果数据多,那么一页页比较也特别慢,怎么解决?将每个页目录的最小值取出来,形成一个链表。那查询时就可以加快。 空间换区时间。

 

 

 

 

六、微服务

七、分布式

八、大数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fang·up·ad

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值