自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 收藏
  • 关注

原创 最热 Java 八股文,速度赶紧马上打包带走

我分享的这份秋招 Java面试总结包含了 JavaOOP、Java 集合容器、Java 异常、并发编程、Java 反射、Java 序列化、JVM、Redis、Spring MVC、MyBatis、MySQL库、消息中间件 MQ、Dubbo、Linux、ZooKeeper、 分布式 &结构与等 25 个专题技术点,都是小编在各个大厂总结出来的面试真题,已经有很多粉丝靠这份 PDF 拿下众多大厂的 offer,今天在这里总结分享给到大家!我这篇分享篇幅可能有点长,观看的朋友可以先了解一下目录。

2022-09-27 15:08:14 604 1

原创 你说使用过ZooKeeper,那来说说他的基本原理吧

ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。简单介绍了Zookeeper的基本原理,数据模型,Session,Watch机制,一致性保证,Leader Election,Leader和Follower的工作流程和Zab协议。100期面试题汇总。

2022-09-26 16:10:12 298

原创 Java面试题必考50道(含答案)

以下的内容是对原有的和最近Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,相对来说比较经典,相信对准备入职的Java程序员一定有所裨益。Java程序员面试题集(1-50)一、Java基础部分1、面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。2)继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、

2022-09-14 21:31:06 19160 3

原创 面试中被问到SQL优化,看这篇就对了

先简单梳理下Mysql的基本概念,然后分创建时和查询时这两个阶段的优化展开。

2022-09-08 17:04:08 2528

原创 别找了,Java集合面试问题这里帮你总结好了!

它不支持add和addAll操作。集合是受map支持的,map的变化会在集合中反映出来,反之亦然。1)ArrayList是由Array所支持的基于一个索引的数据结构,所以它提供对元素的随机访问,复杂度为O(1),但LinkedList存储一系列的节点数据,每个节点都与前一个和下一个节点相连接。(3)在Java1.4中引入了LinkedHashMap,HashMap的一个子类,假如你想要遍历顺序,你很容易从HashMap转向LinkedHashMap,但是HashTable不是这样的,它的顺序是不可预知的。

2022-09-08 17:00:13 149

原创 对多线程熟悉吗,来谈谈线程池的好处?

前几天公司面试,问了很多线程池的问题,由于也是菜鸟一只本来对线程池就不太熟悉,再加上一紧张脑袋一紧,就GG了,之后可谓是深恶痛极,决定把线程池这边好好的整理一番。

2022-09-08 16:55:02 144

原创 对并发熟悉吗?谈谈线程间的协作(wait/notify/sleep/yield/join)

本文主要详细讲解了wait/notify/notifyAll和sleep/yield/join方法。最后回答一下上面提出的问题:wait/notify/notifyAll方法的作用是实现线程间的协作,那为什么这三个方法不是位于Thread类中,而是位于Object类中?位于Object中,也就相当于所有类都包含这三个方法(因为Java中所有的类都继承自Object类)。要回答这个问题,还是得回过来看wait方法的实现原理,大家需要明白的是,wait等待的到底是什么东西?

2022-09-08 16:52:31 125

原创 Java序列化三连问,是什么?为什么需要?如何实现?

遇到这个 Java Serializable 序列化这个接口,我们可能会有如下的问题什么叫序列化和反序列化作用,为啥要实现这个 Serializable 接口,也就是为啥要序列化serialVersionUID 这个的值到底是在怎么设置的,有什么用。有的是1L,有的是一长串数字,迷惑ing。我刚刚见到这个关键字 Serializable 的时候,就有如上的这么些问题。在处理这个问题之前,你要先知道一个问题,这个比较重要。

2022-09-08 16:47:36 179

原创 说说你知道的关于BeanFactory和FactoryBean的区别

如XMLBeanFactory就是一种典型的BeanFactory。原始的BeanFactory无法支持spring的许多插件,如AOP功能、Web应用等。ApplicationContext包含BeanFactory的所有功能,通常建议比BeanFactory优先。

2022-09-08 16:44:00 135

原创 说一下线程池内部工作原理

咱们先不管allowCoreThreadTimeOut,这个变量默认值是false。wc>corePoolSize则是判断当前线程数是否大于corePoolSize。如果当前线程数大于corePoolSize,则会调用workQueue的poll方法获取任务,超时时间是keepAliveTime。如果超过keepAliveTime时长,poll返回了null,上边提到的while循序就会退出,线程也就执行完了。

2022-09-08 15:32:41 100

原创 Mybatis面试18问,你想知道的都在这里了

与JDBC批处理相同。原理是,Mybatis解析A标签,发现A标签引用了B标签,但是B标签尚未解析到,尚不存在,此时,Mybatis会将A标签标记为未解析状态,然后继续解析余下的标签,包含B标签,待所有标签解析完毕,Mybatis会重新解析那些被标记为未解析的标签,此时再解析A标签时,B标签已经存在,A标签也就可以正常解析完成了。另一种是使用嵌套查询,嵌套查询的含义为使用join查询,一部分列是A对象的属性值,另外一部分列是关联对象B的属性值,好处是只发一个sql查询,就可以把主对象和其关联对象查出来。

2022-09-08 15:28:38 121

原创 分布式系统接口,如何避免表单的重复提交?

关于怎么实现承载更多用户量的系统,一直是我重点关注的一个技术方向。改造架构提高承载力,通常来讲分为两个大方向,互相配合实现。主要是使用阿里云这种多组件的云环境:通过负载均衡SLB,模版克隆的云服务器ECS,云数据库RDS,共享对象存储OSS等不同职责的云产品组合实现。主要是软件代码开发的规范:业务解耦合,架构微服务,单机无状态化,文件存储共享等在分布式系统的学习途中也不断见识新的知识点,今天要说的就是软件开发时候对于接口服务的“幂等性”实现!

2022-09-07 19:42:43 171

原创 Redis 面试常见问答

通常,我们会使用缓存用于缓冲对 DB 的冲击,如果缓存宕机,所有请求将直接打在 DB,造成 DB 宕机——从而导致整个系统宕机。缓存查询一个没有的 key,同时数据库也没有,如果黑客大量的使用这种方式,那么就会导致 DB 宕机。我们可以使用一个默认值来防止,例如,当访问一个不存在的 key,然后再去访问数据库,还是没有,那么就在缓存里放一个占位符,下次来的时候,检查这个占位符,如果发生时占位符,就不去数据库查询了,防止 DB 宕机。

2022-09-07 19:40:37 92

原创 说说hashCode() 和 equals() 之间的关系?

上一篇关于介绍时,提到equals()和hashCode()方法可能引出关于的面试题,本篇来解析一下这道基础面试题。先祭一张图,可以思考一下为什么?equals()的作用是用来判断两个对象是否相等。hashCode()的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。我们以“类的用途”来将“hashCode() 和 equals()的关系”分2种情况来说明。

2022-09-07 19:35:52 97

原创 说说Object类下面有几种方法呢?

今天说一道基础题型,不过很多人会忽略或者至少说不完整,但是面试时被问到的几率还是很大的。

2022-09-07 19:32:11 111

原创 Redis中是如何实现分布式锁的?

分布式锁常见的三种实现方式:数据库乐观锁;基于Redis的分布式锁;基于ZooKeeper的分布式锁。本地面试考点是,你对Redis使用熟悉吗?Redis中是如何实现分布式锁的。

2022-09-07 19:29:29 291

原创 单例模式有几种写法?

上面的分析都忽略了反射和序列化的问题。通过反射或序列化,我们仍然能够访问到私有构造器,创建新的实例破坏单例模式。此时,只有枚举模式能天然防范这一问题。反射和序列化笔者还不太了解,但基本原理并不难,可以在其他模式上手动实现。下面继续忽略反射和序列化的问题,做个总结回味一下:单例模式是面试中的常考点,写起来非常简单。

2022-09-07 19:25:55 94

原创 消息队列中,如何保证消息的顺序性?

比如,生产者向 RabbitMQ 里发送了三条数据,顺序依次是 data1/data2/data3,压入的是 RabbitMQ 的一个内存队列。生产者在写的时候,其实可以指定一个 key,比如说我们指定了某个订单 id 作为 key,那么这个订单相关的数据,一定会被分发到同一个 partition 中去,而且这个 partition 中的数据一定是有顺序的。这是生产系统中常见的问题。一个 topic,一个 partition,一个 consumer,内部单线程消费,单线程吞吐量太低,一般不会用这个。

2022-09-07 19:23:23 165

原创 分库分表之后,id 主键如何处理?

更重要的是,UUID 不具有有序性,会导致 B+ 树索引在写的时候有过多的随机写操作(连续的 ID 可以产生部分顺序写),还有,由于在写的时候不能产生有顺序的 append 操作,而需要进行 insert 操作,将会读取整个 B+ 树节点到内存,在插入这条记录后会将整个节点写回磁盘,这种操作在记录占用空间比较大的情况下,性能下降明显。这个 snowflake 算法相对来说还是比较靠谱的,所以你要真是搞分布式 id 生成,如果是高并发啥的,那么用这个应该性能比较好,一般每秒几万并发的场景,也足够你用了。

2022-09-07 19:21:21 157

原创 如何决定使用 HashMap 还是 TreeMap?

的Key值是要求实现,所以迭代的时候TreeMap默认是按照Key值升序排序的;TreeMap的实现是基于红黑树结构。适用于按自然顺序或自定义顺序遍历键(key)。的Key值实现散列hashCode(),分布是散列的、均匀的,不支持排序;数据结构主要是桶(数组),链表或红黑树。适用于在Map中插入、删除和定位元素。

2022-09-07 19:19:48 130

原创 1000+ 道 Java面试题及答案整理(2022最新版)

1、面向对象编程有哪些特征?2、JDK 与 JRE 的区别是什么?3、Java 有哪几种基本数据类型?4、== 和 equals 比较有什么区别?5、public,private,protected,默认的区别?6、this 和 super 有什么区别?s1 += 1;有错吗?有错吗?9、float n = 1.8 有错吗?10、i++ 和 ++i 的区别?11、while 和 do while 有啥区别?12、如何跳出 Java 中的循环?

2022-09-07 16:44:53 823

原创 72道Java线程面试题,一题一答案,不搞花里胡哨

1) 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成该任务只需10毫秒。2) 线程和进程有什么区别?一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间

2022-09-06 20:36:18 96

原创 用项目案例彻底理解Spring IOC容器

要解决上面的问题,就需要弱化Principal类对组件的控制权,将组件的创建和属性的注入(图2红色点划线指示的功能)交给第三方托管,这个第三方就是Spring框架的IOC容器,控制反转就是将Principal类对组件的控制权移交给IOC容器。要解决上面的问题,就需要弱化Principal类对组件的控制权,将组件的创建和属性的注入(图2红色点划线指示的功能)交给第三方托管,这个第三方就是Spring框架的IOC容器,控制反转就是将Principal类对组件的控制权移交给IOC容器。,希望对您的学习有所帮助。

2022-09-06 20:00:50 90

原创 2022Java面试题大全

针对错误写法一,在遍历第二个元素字符串bb时因为符合删除条件,所以将该元素从数组中删除,并且将后一个元素移动(也是字符串bb)至当前位置,导致下一次循环遍历时后一个字符串bb并没有遍历到,所以无法删除。put执行首先判断table[i]位置,如果为空就直接插入,不为空判断和当前值是否相等,相等就覆盖,如果不相等的话,判断是否是红黑树节点,如果不是,就从table[i]位置开始遍历链表,相等覆盖,不相等插入。37. 下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"

2022-09-06 19:54:45 81

原创 java程序员不得不会的124道面试题

所有的面试题目都不是一成不变的,特别是像一线大厂,上面的面试题只是给大家一个借鉴作用,最主要的是给自己增加知识的储备,有备无患。21)存在两个类,B 继承 A,C 继承 B,我们能将 B 转换为 C 么?85)Java 中 java.util.Date 与 java.sql.Date 有什么区别?45)a.hashCode() 有什么用?28)为什么 Java 中的 String 是不可变的(Immutable)?66)在我 Java 程序中,我有三个 socket,我需要多少个线程来处理?

2022-09-06 19:50:46 65

原创 MySQL进阶系列:锁-InnoDB中锁的情况

相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

2022-09-06 19:45:23 134

原创 2022年最新整理必背的Java面试题大全,背好了Offer在手

比如JVM的垃圾回收线程是一个守护线程,当所有线程已经撤离,不再产生垃圾,守护线程自然就没事可干了,当垃圾回收线程是Java虚拟机上仅剩的线程时,Java虚拟机会自动离开。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但是在进程切换时,耗费的资源较大,效率要差些。sys 指的是进程在核心态(Kernel Mode)花费的CPU时间量,指的是内核中的系统调用所花费的时间,只统计本进程所使用的时间。

2022-09-06 19:38:02 194

原创 Java面试:你了解HashMap吗?

看到这里,我们已经HashMap的源码和实现有了清晰的理解,并且对它的构造方法再到它的一个put数据和get数据的一个源码解析,还有一些它里边比较精妙和重要的一些方法也都探索清楚了,希望这些知识点可以在大家以后的面试中也能够帮助到大家,斩获一个心仪的offer。

2022-09-06 19:30:12 107

原创 全网最全JAVA面试八股文,终于整理完了

线程池就是提前创建若干个线程,如果有任务需要处理,线程池里的线程就会处理任务,处理完之后线程并不会被销毁,而是等待下一个任务。由于创建和销毁线程都是消耗系统资源的,所以当你想要频繁的创建和销毁线程的时候就可以考虑使用线程池来提升系统的性能。java 提供了一个java.util.concurrent.Executor 接口的实现用于创建线程池。CAS 是 compare and swap 的缩写,即我们所说的比较交换。cas 是一种基于锁的操作,而且是乐观锁。在 java 中锁分为乐观锁和悲观锁。

2022-09-06 19:26:24 34925

原创 Java性能优化的七个方向

性能优化根据优化的类别,分为业务优化和技术优化。业务优化产生的效果也是非常大的,但它属于产品和管理的范畴。同作为程序员,在平常工作中,我们面对的优化方式,主要是通过一系列的技术手段,来完成对既定的优化目标。这一系列的技术手段,我大体归纳为如图以下 7 类:可以看到,优化方式集中在对计算资源和存储资源的规划上。优化方法中有多种用空间换时间的方式,但只照顾计算速度,而不考虑复杂性和空间问题,也是不可取的。我们要做的,就是在照顾性能的前提下,达到资源利用的最优状态。接下来,我简要介绍一下这7个优化方向。

2022-09-05 20:41:15 88

原创 SpringCloud 架构各个组件的原理,一次性给你说全

我们先认识一下SpringCloud的各个组件,然后知其所以然。原理讲解前,先看一个最经典的业务场景,如开发一个电商网站,要实现支付订单的功能,流程如下:创建一个订单之后,如果用户立刻支付了这个订单,我们需要将订单状态更新为“已支付”扣减相应的商品库存通知仓储中心,进行发货给用户的这次购物增加相应的积分如上,微服务的应用场景和核心竞争力:降低耦合:每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率。独

2022-09-05 20:06:01 128

原创 「秋招系列」MySQL 面试核心 25 问(附答案)

事务: InnoDB 是事务型的,可以使用 Commit 和 Rollback 语句。并发: MyISAM 只支持表级锁,而 InnoDB 还支持行级锁。外键: InnoDB 支持外键。备份: InnoDB 支持在线热备份。崩溃恢复: MyISAM 崩溃后发生损坏的概率比 InnoDB 高很多,而且恢复的速度也更慢。其它特性: MyISAM 支持压缩表和空间数据索引。

2022-09-04 17:07:35 290

原创 字节面试官:“这 92 道 Spring Boot 面试题都答不上来?”

Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯 Java 方法。因此它有助于避免使用 XML 配置。使用 JavaConfig 的优点在于:1、面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。一个配置类可以继承另一个,重写它的 @Bean 方法等。2、减少或消除 XML 配置。基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在 XML 和 Java 之间来回切换。

2022-09-04 16:47:50 164

原创 史上秋招最全 500 道 Java 面试题:JVM+ 分布式 + 算法 + 锁 +MQ+ 微服务 + 数据库

最近面试的小伙伴很多,对此我整理了一份Java面试题手册:基础知识、JavaOOP、Java集合/泛型面试题、 Java异常面试题、Java中的IO与NIO面试题、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、 Memcached、MongoDB、Spring、SpringBoot、SpringCloud、RabbitMQ、Dubbo、MyBatis、ZooKeeper、数据结构、算法、 Elasticsearch、Kafka、微服务、Linux等等。

2022-09-04 16:26:07 178

原创 Java/Spring/Dubbo三种SPI机制,谁更好?

试想一下,如果是一个固定的get方法,那么get到的是一个固定的实例,SPI 还有什么意义呢?SPI 的目的,就是增强扩展性。将固定的配置提取出来,通过 SPI 机制来配置。那既然如此,一般都会有一个默认的配置,然后通过 SPI 的文件配置不同的实现,这样就会存在一个接口多个实现的问题。要是找到多个实现的话,用哪个实现作为最后的实例呢?所以这里使用iterator来获取所有的实现类配置。刚才已经在我们这个。

2022-09-02 19:54:19 136

原创 面试反馈 Spring Cloud 的25连环炮

下面是一张Spring Cloud核心组件关系图:从这张图中,其实我们是可以获取很多信息的,希望大家细细品尝。下面是和核心组件的总结:话不多说,我们直接开始 Spring Cloud 连环炮。Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。

2022-09-02 16:20:24 129

原创 Java线程池深度揭晓

重点关注 ctl 变量,这个变量将线程池自身状态和线程数量,融合在这一个变量中,其中高 3 位表示线程池状态,低 29 位表示线程池中的线程数量,这样在多线程环境下更易保证线程池自身状态和线程数量的统一,不得不佩服源代码作者 Doug Lea,可谓是设计甚妙!重点关注从任务队列中获取待执行任务的对象的方法调用:workQueue.poll()、workQueue.take() ,前者是移除并返回队列中的头部元素,如果队列为空,则返回 null,而后者是移除并返回队列中的头部元素,如果队列为空,则阻塞。

2022-09-01 21:37:00 116

原创 如何设计一个牛逼的API接口

本篇文章从安全性、幂等性、数据规范等方面讨论了API设计规范。除此之外,一个好的API还少不了一个优秀的接口文档。接口文档的可读性非常重要,虽然很多程序员都不喜欢写文档,而且不喜欢别人不写文档。为了不增加程序员的压力,推荐使用swagger或其他接口管理工具,通过简单配置,就可以在开发中测试接口的连通性,上线后也可以生成离线文档用于管理API。

2022-09-01 21:19:19 283

原创 java面试八股文-基础篇

(1)java语言是一种高级计算语言,是一种面向对象的编程语言,在java的世界中,万物皆为对象;(2)跨平台性,可能你听说过java的一句经典的话:Write once and run everywhere,一次编写 ,到处运行,这是为什么呢?java利用java虚拟机运行字节码文件,所以不管是什么系统的平台,只要能对java程序进行编译,都是可以运行的;(3)java是一种解释型语言,编译器把java代码编译成平台无关的中间代码,然后jvm上运行;

2022-09-01 21:15:05 405

原创 备战秋招涵盖二十九大技术栈Java面试最新八股文来袭

2022秋招眼看着就要来了,很多同学开始感受到压力,着急金九银十的秋招,所以纷纷临时抱佛脚,开始在找有没有什么提升面试成功率,查漏补缺的方法。我的回答是: 有!说起来,临阵磨枪没有比背八股文更靠谱的了,很多人对这个很不屑: 呵,背题家罢了!但国内大环境如此,你不背,你就找不到满意的工作,很现实的一个事情。当然,你可以选择出淤泥而不染,身体力行的表示反抗,对推动国内互联网陋习改革出一份力,那我还是很佩服的。

2022-09-01 20:56:57 220

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除