![](https://img-blog.csdnimg.cn/2019121318064656.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
面试相关
文章平均质量分 76
面试相关
上山打卤面
2015年,网恋被骗8000块,站在成都双流机场一个晚上。第二次是异地恋,牵了牵手,被骗两万。
展开
-
RocketMQ 事务消息实现流程
在面过的几家大厂中,几乎每轮的面试官(「没写错,几乎是每轮面试官」)都问了同样一个问题:你们的系统是分布式的系统吗?答:是。面试官:那么你们分布式的系统是如何解决分布式事务这个问题的呢?也就是如何保证数据的一致性。答:我们的系统中通过 RocketMQ 的事务消息来保证数据的最终一致性。面试官:那你说说它是如何来保证数据的最终一致性的?答:分两部分来回答,第一部分先回答事务消息的实现流程,第二部分解释为什么它能保证数据的最终一致性。事务消息的实现流程事务消息首先服务 A 发送一个半事务消原创 2021-03-17 10:14:00 · 925 阅读 · 0 评论 -
Netty 相关知识点:
NIO 基本概念阻塞(Block)与非阻塞(Non-Block)阻塞和非阻塞是进程在访问数据的时候,数据是否准备就绪的一种处理方式,当数据没有准备的时候。阻塞:往往需要等待缓冲区中的数据准备好过后才处理其他的事情,否则一直等待在那里。非阻塞:当我们的进程访问我们的数据缓冲区的时候,如果数据没有准备好则直接返回,不会等待。如果数据已经准备好,也直接返回。阻塞 IO :非阻塞 IO :同步(Synchronous)与异步(Asynchronous)同步和异步都是基于应用程序和操作系统处理 I转载 2021-03-13 15:52:36 · 257 阅读 · 0 评论 -
计算机网络相关面试题:
一 OSI与TCP/IP各层的结构与功能,都有哪些协议?学习计算机网络时我们一般采用折中的办法,也就是中和 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。结合互联网的情况,自上而下地,非常简要的介绍一下各层的作用。1.1 应用层应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用原创 2020-10-03 16:09:58 · 1250 阅读 · 0 评论 -
JVM故障排除和调优:
1. JDK 监控和故障处理工具总结JDK 命令行工具这些命令在 JDK 安装目录下的 bin 目录下:jps (JVM Process Status): 类似 UNIX 的 ps 命令。用户查看所有 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息;jstat( JVM Statistics Monitoring Tool): 用于收集 HotSpot 虚拟机各方面的运行数据;jinfo (Configuration Info for Java) : Configuration原创 2020-10-03 16:02:56 · 472 阅读 · 1 评论 -
JVM垃圾回收
1 JVM 内存分配与回收Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时,Java 自动内存管理最核心的功能是 堆 内存中对象的分配与回收。Java 堆是垃圾收集器管理的主要区域,因此也被称作GC 堆(Garbage Collected Heap).从垃圾回收的角度,由于现在收集器基本都采用分代垃圾收集算法,所以 Java 堆还可以细分为:新生代和老年代:再细致一点有:Eden 空间、From Survivor、To Survivor 空间等。进一步划分的目的是更好地回收内存原创 2020-10-03 15:58:40 · 218 阅读 · 0 评论 -
类加载过程和类加载器详解:
类的生命周期一个类的完整生命周期如下:类加载过程Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢?系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。加载类加载过程的第一步,主要完成下面3件事情:通过全类名获取定义此类的二进制字节流将字节流所代表的静态存储结构转换为方法区的运行时数据结构在内存中生成一个代表该类的 Class 对象,作为方法区这些数据的访问原创 2020-10-03 15:52:30 · 400 阅读 · 0 评论 -
JVM内存区域详解
掌握JVM,是Java面试的必经之路。(这里没有特别说明都是指的是HotSpot虚拟机)JVM内存结构:概述:对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C++程序开发程序员这样为每一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。运行时数据区域: Jav原创 2020-10-03 15:40:20 · 305 阅读 · 0 评论 -
SpringMVC常见的面试题:
先来看一下什么是 MVC 模式MVC 是一种设计模式.MVC 的原理图如下:SpringMVC 简单介绍SpringMVC 框架是以请求为驱动,围绕 Servlet 设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图。其中核心类是 DispatcherServlet,它是一个 Servlet,顶层是实现的Servlet接口。SpringMVC 使用需要在 web.xml 中配置 DispatcherServlet 。并且需要配置 Spring 监听器ContextLoaderL原创 2020-09-17 09:58:34 · 260 阅读 · 0 评论 -
多线程常见的面试题
多线程常见的面试题:1. 什么是线程和进程? 线程与进程的关系,区别及优缺点?进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。如下图所示,在 windows 中通过查看任务管理器的方式,我们就可以清楚看到 window 当前运行的进程(.exe 文件的运行)。线程与进程相似,原创 2020-09-16 16:21:58 · 17705 阅读 · 9 评论 -
Java知识体系总结(2020版)
转自一个大佬的博客 非常的有用 https://blog.csdn.net/ThinkWon/article/details/103592572?depth_1-utm_source=distribute.pc_feed.none-task&request_id=&utm_source=distribute.pc_feed.none-task...转载 2020-03-05 18:37:48 · 542 阅读 · 0 评论 -
Java学习路线规划
Java学习路线规划:基础知识:语言本身 :语法基础OO编程思想: 抽象 继承 封装 多态 类 对象容器异常泛型IO反射注解数据结构和算法:几种基础的数据结构:字符串链表栈队列二叉树几种基本的算法:查找排序动态规划TCP/IP协议栈设计模式常见的设计模式:单例模式工厂模式代理模式策略模式模板方法模式...原创 2020-05-25 10:59:21 · 485 阅读 · 0 评论 -
Redis常见的面试题 - 1
1. 简单介绍一下 Redis简单来说 Redis 就是一个使用 C 语言开发的数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的 ,也就是它是内存数据库,所以读写速度非常快,因此 Redis 被广泛应用于缓存方向。另外,Redis 除了做缓存之外,Redis 也经常用来做分布式锁,甚至是消息队列。Redis 提供了多种数据类型来支持不同的业务场景。Redis 还支持事务 、持久化、Lua 脚本、多种集群方案。2. 分布式缓存常见的技术选型方案有哪些?分布式缓存的话,使用的比较多的原创 2020-09-13 17:21:29 · 448 阅读 · 1 评论 -
Redis常见的面试题 - 2
10. Redis 给缓存数据设置过期时间有啥用?一般情况下,我们设置保存的缓存数据的时候都会设置一个过期时间。为什么呢?因为内存是有限的,如果缓存中的所有数据都是一直保存的话,分分钟直接Out of memory。Redis 自带了给缓存数据设置过期时间的功能,比如:127.0.0.1:6379> exp key 60 # 数据在 60s 后过期(integer) 1127.0.0.1:6379> setex key 60 value # 数据在 60s 后过期 (setex:[原创 2020-09-13 17:22:38 · 176 阅读 · 0 评论 -
Redis常见的面试题 - 3
1.了解什么是 Redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 Redis 的穿透?缓存雪崩对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机。缓存挂了,此时 1 秒 5000 个请求全部落数据库,数据库必然扛不住,它会报一下警,然后就挂了。此时,如果没有采用什么特别的方案来处理这个故障,DBA 很着急,重启数据库,但是数据库立马又被新的流量给打死了。缓存雪崩的事前事中事后原创 2020-10-03 16:44:23 · 274 阅读 · 0 评论 -
Mybatis 常见的面试题
1、什么是Mybatis?答:MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架。2、讲下 MyBatis 的缓存?答:MyBatis 的缓存分为一级缓存和二级缓存,一级缓存放在 session 里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态),可在它的映射文件中配置3、#{}和${}的区别是什么?答:${}是 Properties 文件中的变量占位符,它可以用于标签属性值原创 2020-09-14 15:59:55 · 111 阅读 · 0 评论 -
Spring 面试之IoC 和 AOP
Spring IoC什么是IoCIoc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:控制是什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器原创 2020-09-14 16:04:22 · 12508 阅读 · 0 评论 -
Spring 面试之常见的注解使用
1. @SpringBootApplication这里先单独拎出@SpringBootApplication 注解说一下,虽然我们一般不会主动去使用它。@SpringBootApplicationpublic class SpringSecurityJwtGuideApplication { public static void main(java.lang.String[] args) { SpringApplication.run(SpringSecurityJwtGu原创 2020-09-14 16:05:26 · 504 阅读 · 0 评论 -
Spring 面试之bean生命周期和作用域
在 Spring 中,那些组成应用程序的主体及由 Spring IOC 容器所管理的对象,被称之为 bean。简单地讲,bean 就是由 IOC 容器初始化、装配及管理的对象,除此之外,bean 就与应用程序中的其他对象没有什么区别了。而 bean 的定义以及 bean 相互间的依赖关系将通过配置元数据来描述。Spring中的bean默认都是单例的,这些单例Bean在多线程程序下如何保证线程安全呢? 例如对于Web应用来说,Web容器对于每个用户请求都创建一个单独的Sevlet线程来处理请求,引入Spri原创 2020-09-14 16:07:00 · 352 阅读 · 0 评论 -
Spring面试之Spring使用的设计模式
Spring 中的设计模式。Design Patterns(设计模式) 表示面向对象软件开发中最好的计算机编程实践。 Spring 框架中广泛使用了不同类型的设计模式,下面我们来看看到底有哪些设计模式?控制反转(IoC)和依赖注入(DI)IoC(Inversion of Control,控制反转) 是Spring 中一个非常非常重要的概念,它不是什么技术,而是一种解耦的设计思想。它的主要目的是借助于“第三方”(Spring 中的 IOC 容器) 实现具有依赖关系的对象之间的解耦(IOC容器管理对象,你原创 2020-09-14 16:07:58 · 382 阅读 · 0 评论 -
Spring面试之事务
1. 什么是事务?事务是逻辑上的一组操作,要么都执行,要么都不执行。我们系统的每个业务方法可能包括了多个原子性的数据库操作,比如下面的 savePerson() 方法中就有两个原子性的数据库操作。这些原子性的数据库操作是有依赖的,它们要么都执行,要不就都不执行。public void savePerson() { personDao.save(person); personDetailDao.save(personDetail);}另外,需要格外注意的是:事务能否生效数据库引擎是原创 2020-09-14 16:09:37 · 1090 阅读 · 0 评论