
Java面试
文章平均质量分 97
Slayer_Zhao
full-stack programmer
展开
-
【详细总结】你所需要掌握的Java后端知识点
目录SpringSpring框架的七大模块Bean定义5种作用域spring ioc初始化流程?BeanDefinition加载流程?DI依赖注入流程? (实例化,处理Bean之间的依赖关系)依赖注入怎么处理bean之间的依赖关系?Bean的生命周期?Spring的IOC注入方式怎么检测是否存在循环依赖?Spring如解决Bean循环依赖问题?Spr...........................转载 2020-05-08 11:16:23 · 8729 阅读 · 0 评论 -
【个人总结】Java面试复习大纲
目录1、知识点部分1.1 java基础知识ListMapSet零散的知识点1.2 多线程1.3 spring1.4 数据库1.5 计算机网络1.7JVM1.8 手撕代码1、知识点部分知识点主要分为:java基础知识、多线程、spring、数据库、计算机网络、JVM和手撕代码7大部分。1.1 java基础知识String、S...原创 2020-02-08 23:10:53 · 422 阅读 · 0 评论 -
学习消息队列需要关注的几个问题
核心点有很多,为了更贴合实际场景,我从常见的面试问题入手: 如何保证消息不丢失? 如何处理重复消息? 如何保证消息的有序性? 如何处理消息堆积? 当然在剖析这几个问题之前需要简单的介绍下什么是消息队列,消息队列常见的一些基本术语和概念。接下来进入正文。什么是消息队列来看看维基百科怎么说的,顺带学学英语这波不亏:In computer science, message queues and mailboxes are software-engine..转载 2020-08-25 10:51:38 · 419 阅读 · 0 评论 -
【详细解析】深入理解synchronized底层原理
目录正文场景有序性可见性原子性可重入性不可中断性底层实现同步代码同步方法monitor1.5 重量级锁那用户态和内核态又是啥呢?1.6 优化锁升级偏向锁轻量级锁自旋锁用synchronized还是Lock呢?多线程的东西很多,也很有意思,所以我最近的重心可能都是多线程的方向去靠了,不知道大家喜欢否?阅读本文之前阅读以下两篇文章会帮助你更好的理解:Volatile乐观锁&悲观锁正文场景我们正常.转载 2020-05-18 09:23:14 · 5528 阅读 · 6 评论 -
【详细解读】计算机操作系统知识点总览
1解释一下什么是操作系统操作系统是运行在计算机上最重要的一种软件,它管理计算机的资源和进程以及所有的硬件和软件。它为计算机硬件和软件提供了一种中间层通常情况下,计算机上会运行着许多应用程序,它们都需要对内存和 CPU 进行交互,操作系统的目的就是为了保证这些访问和交互能够准确无误的进行。2解释一下操作系统的主要目的是什么操作系统是一种软件,它的主要目的有三种 管理计算机资源,这些资源包括 CPU、内存、磁盘驱动器、打印机等。 提供一种图形界面,就像我们前面...转载 2020-05-17 09:03:03 · 2661 阅读 · 0 评论 -
AQS中的公平锁和非公平锁
正文公平锁:多个线程按照申请锁的顺序去获得锁,线程会直接进入队列去排队,永远都是队列的第一位才能得到锁。 优点:所有的线程都能得到资源,不会饿死在队列中。 缺点:吞吐量会下降很多,队列里面除了第一个线程,其他的线程都会阻塞,cpu唤醒阻塞线程的开销会很大。 非公平锁:多个线程去获取锁的时候,会直接去尝试获取,获取不到,再去进入等待队列,如果能获取到,就直接获取到锁。 ...转载 2020-03-29 08:06:18 · 4187 阅读 · 4 评论 -
【深度解析】Java中的乐观锁、悲观锁
前言关于线程安全一提到可能就是加锁,在面试中也是面试官百问不厌的考察点,往往能看出面试者的基本功和是否对线程安全有自己的思考。那锁本身是怎么去实现的呢?又有哪些加锁的方式呢?我今天就简单聊一下乐观锁和悲观锁,他们对应的实现 CAS ,Synchronized,ReentrantLockCAS(Compare And Swap 比较并且替换)是乐观锁的一种实现方式,是一种轻量级...原创 2020-03-06 10:04:22 · 7457 阅读 · 2 评论 -
【最详细解析】Java GC 垃圾回收
前言Java 相比 C/C++ 最显著的特点便是引入了自动垃圾回收 (下文统一用 GC 指代自动垃圾回收),它解决了 C/C++ 最令人头疼的内存管理问题,让程序员专注于程序本身,不用关心内存回收这些恼人的问题,这也是 Java 能大行其道的重要原因之一,GC 真正让程序员的生产力得到了释放,但是程序员很难感知到它的存在,这就好比,我们吃完饭后在桌上放下餐盘即走,服务员会替你收拾好这些餐盘,你...原创 2020-02-29 21:33:29 · 410 阅读 · 0 评论 -
【吊打面试官】数据库索引原理
前言写数据库,我第一时间就想到了MySQL、Oracle、索引、存储过程、查询优化等等。不知道大家是不是跟我想得一样,我最想写的是索引,为啥呢?以下这个面试场景,不知道大家熟悉不熟悉:面试官:数据库有几千万的数据,查询又很慢我们怎么办?面试者:加索引。面试官:那索引有哪些数据类型?索引是怎么样的一种结构?哪些字段又适合索引呢?B+的优点?聚合索引和非聚合索引的区别?为什么说...转载 2020-02-29 21:11:17 · 459 阅读 · 0 评论 -
20000 字的 Spring Cloud 总结,从此任何问题也难不住你
目录什么是Spring cloudSpring Cloud 的版本Spring Cloud 的服务发现框架——Eureka负载均衡之 Ribbon什么是 RestTemplate?为什么需要 Ribbon?Nginx 和 Ribbon 的对比Ribbon 的几种负载均衡算法什么是 Open Feign必不可少的 Hystrix什么是 Hystrix之熔...原创 2020-02-29 21:07:57 · 528 阅读 · 0 评论 -
Redis——5种数据结构底层实现原理
目录一、Redis 简介Redis 的优点Redis 的安装测试本地 Redis 性能二、Redis 五种基本数据结构1)字符串 stringSDS 与 C 字符串的区别对字符串的基本操作2)列表 list链表的基本操作3)字典 hash渐进式 rehash扩缩容的条件字典的基本操作4)集合 set集合 set 的基本使用5)有序...原创 2020-02-29 21:03:15 · 3372 阅读 · 0 评论 -
网络,操作系统面试知识点精简版
目录线程和进程区别硬链接与软链接的区别查看某个进程中的线程查看某个文件夹中每个文件夹的大小CPU负载的含义TCP/IPHTTPTCP建立连接:三次握手为什么要采用三次握手,两次不行吗关闭连接:四次挥手为什么连接的时候是三次握手,关闭的时候却是四次握手滑动窗口协议与UDP区别HTTPS线程和进程区别进程是资源分配的最小单位,线...原创 2020-01-03 11:20:31 · 254 阅读 · 0 评论 -
经典面试问题——如何构建一个秒杀系统?
业务上适当规避根据某些规则对部分用户直接返回没抢到。比如有些用户曾经被系统识别为恶意用户、垃圾用户、僵尸用户,直接告诉用户已经抢完 分散不同客户端打开活动入口的时间。比如将1秒内的流量分散到10秒技术上硬核抗压限流策略。比如在压力测试中我们测到系统QPS达到了极限,那么超过的部分直接返回已经抢完,通过Nginx的lua脚本可以查redis看到QPS数据从而可以动态调节 异步削峰。对R...原创 2020-01-03 11:13:43 · 299 阅读 · 0 评论 -
Java NIO BIO AIO
BIOBlock-IO:InputStream和OutputStream,Reader和Writer。属于同步阻塞模型同步阻塞:一个请求占用一个进程处理,先等待数据准备好,然后从内核向进程复制数据,最后处理完数据后返回NIONonBlock-IO:Channel、Buffer、Selector。属于IO多路复用的同步非阻塞模型同步非阻塞:进程先将一个套接字在内核中设...原创 2020-01-02 14:16:30 · 225 阅读 · 0 评论 -
Java多线程面试知识点精简版
目录多线程线程的生命周期问:你怎么理解多线程的线程间通信的方式锁volatileThreadLocal线程池并发包工具类编程题多线程线程的生命周期新建 -- 就绪 -- 运行 -- 阻塞 -- 就绪 -- 运行 -- 死亡问:你怎么理解多线程的定义:多线程是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计...原创 2020-01-02 14:12:11 · 183 阅读 · 0 评论 -
Java集合面试知识点精简版
集合ArrayList与LinkedList区别ArrayList LinkedList 数组 双向链表 增删的时候在扩容的时候慢,通过索引查询快,通过对象查索引慢 增删快,通过索引查询慢,通过对象查索引慢 当数组无法容纳下此次添加的元素时进行扩容 无 扩容之后容量为原来的1.5倍 无 HashMapJDK 1.8 以前 HashMap...原创 2020-01-02 14:08:16 · 495 阅读 · 2 评论 -
JVM面试知识点精简版
JVM原理Java内存区域的分配JVM虚拟机内存模型实现规范:按线程是否共享分为以下区域:所有线程共享的数据区:方法区(JVM规范中的一部分,不是实际的实现): 存储每一个类的结构信息(运行时常量池、静态变量、方法数据、构造函数和普通方法的字节码、JIT编译后的代码),没有要求使用垃圾回收因为回收效率太低。(运行时常量池:存放编译器生成的各种字面量和符号引用,在类加...原创 2020-01-02 14:06:00 · 161 阅读 · 0 评论 -
Redis面试知识点精简版
数据类型来源:https://redisbook.readthedocs.io/en/latest/internal/db.html#id4Redis是一个键值对数据库,数据库中的键值对由字典保存。每个数据库都有一个对应的字典,这个字典被称之为键空间。当用户添加一个键值对到数据库时(不论键值对是什么类型), 程序就将该键值对添加到键空间字典的键是一个字符串对象。字典的值则可以是包括【字...原创 2020-01-02 14:00:41 · 291 阅读 · 1 评论 -
Mysql面试知识点精简版
目录MySQL引擎对比数据库性能优化SQL优化:事务隔离级别锁表、锁行悲观锁乐观锁、如何写对应的SQL索引分区分库分表MySQL引擎对比InnoDB支持事务 InnoDB支持外键 InnoDB有行级锁,MyISAM是表级锁MyISAM相对简单所以在效率上要优于InnoDB。如果系统插入和查询操作多,不需要事务外键。选择MyISAM如果需...原创 2020-01-02 13:55:33 · 307 阅读 · 2 评论 -
Spring面试知识点精简版
目录Spring什么是SpringSpring MVC流程解决循环依赖Bean的生命周期Bean的作用域IOC(DI)Spring AOPSpring什么是SpringSpring是个包含一系列功能的合集,如快速开发的Spring Boot,支持微服务的Spring Cloud,支持认证与鉴权的Spring Security,Web框架Spring...原创 2020-01-02 13:53:19 · 168 阅读 · 0 评论 -
Java面试复习总结(Redis篇7)——Redis分布式锁进化史
目录Redis分布式锁进化史各个版本的Redis分布式锁分布式Redis锁:Redlock总结Redis分布式锁进化史近两年来微服务变得越来越热门,越来越多的应用部署在分布式环境中,在分布式环境中,数据一致性是一直以来需要关注并且去解决的问题,分布式锁也就成为了一种广泛使用的技术,常用的分布式实现方式为Redis,Zookeeper,其中基于Redis的分布式锁的使用...转载 2019-12-26 13:16:59 · 103 阅读 · 0 评论 -
Java面试复习总结(Redis篇6)——Redis事务浅析与ACID特性介绍
目录事务用法事务中的错误为什么 Redis 不支持回滚(roll back)放弃事务使用 check-and-set 操作实现乐观锁了解WATCH使用 WATCH 实现 ZPOPRedis 脚本和事务redis事务的ACID特性事务MULTI、EXEC、DISCARD和WATCH是 Redis 事务相关的命令。事务可以一次执行多...转载 2019-12-26 13:14:43 · 405 阅读 · 0 评论 -
Java面试复习总结(Redis篇5)——Redis集群机制及一个Redis架构演进实例
Replication(主从复制)Redis的replication机制允许slave从master那里通过网络传输拷贝到完整的数据备份,从而达到主从机制。为了实现主从复制,我们准备三个redis服务,依次命名为master,slave1,slave2。配置主服务器为了测试效果,我们先修改主服务器的配置文件redis.conf的端口信息1. port 6300配置从服务...转载 2019-12-26 13:12:39 · 140 阅读 · 0 评论 -
Java面试复习总结(Redis篇4)——浅析Redis主从复制
目录Redis复制概论Redis复制方式复制优点1、高可用性2、高性能3、水平扩展性复制缺点复制实时性和数据一致性矛盾Redis复制原理及特性slave指向master复制过程增量复制免持久化复制slave只读模式半同步复制总结Redis复制概论数据库复制指的是发生在不同数据库实例之间,单向的信息传播的行为,通常由被复制...转载 2019-12-26 13:08:44 · 172 阅读 · 0 评论 -
Java面试复习总结(Redis篇3)——使用快照和AOF将Redis数据持久化到硬盘中
目录前言快照持久化AOF持久化验证快照文件和AOF文件总结前言我们知道Redis是一款内存服务器,就算我们对自己的服务器足够的信任,不会出现任何软件或者硬件的故障,但也会有可能出现突然断电等情况,造成Redis服务器中的数据失效。因此,我们需要向传统的关系型数据库一样对数据进行备份,将Redis在内存中的数据持久化到硬盘等非易失性介质中,来保证数据的可靠性。将...转载 2019-12-26 13:05:34 · 273 阅读 · 0 评论 -
Java面试复习总结(Redis篇1)——Redis总结
本文主要对Redis的设计和实现原理做了一个介绍很总结,有些东西我也介绍的不是很详细准确,尽量在自己的理解范围内把一些知识点和关键性技术做一个描述。如有错误,还望见谅,欢迎指出。 这篇文章主要还是参考我之前的技术专栏总结而来的。欢迎查看:重新学习Redishttps://blog.youkuaiyun.com/column/details/21877.html使用和基础数据结构(外观)redi...转载 2019-12-26 12:59:04 · 147 阅读 · 0 评论 -
Java面试复习总结(Redis篇2)——什么是Redis
目录redis 学习笔记redis 是什么?Redis 数据结构Redis 数据类型过期时间应用场景内存优化天下无难试之Redis面试刁难大全redis 学习笔记这篇 redis 学习笔记主要介绍 redis 的数据结构和数据类型,并讨论数据结构的选择以及应用场景的优化。redis 是什么?Redis是一种面向“键/值”对类型数据的分布式...转载 2019-12-26 12:54:30 · 115 阅读 · 0 评论 -
Java面试复习总结(Mysql篇11)——Mysql主从复制,读写分离,分表分库策略与实践
目录一、MySQL扩展具体的实现方式二、分表实现策略三、分库实现策略四、分库与分表实现策略五、分库分表总结六、总结Mycat实现主从复制,读写分离,以及分库分表的实践Mycat是什么一、分区分表二、Mycat 数据分片的种类三、Mycat 垂直切分、水平切分实战一、MySQL扩展具体的实现方式随着业务规模的不断扩大,需要选择合适的方案去应对...转载 2019-12-25 14:17:15 · 209 阅读 · 0 评论 -
Java面试复习总结(Mysql篇10)——以Java的视角来聊聊SQL注入
前言靶场准备首先我们来准备一个web接口服务,该服务可以提供管理员的信息查询,这里我们采用springboot + jersey 来构建web服务框架,数据库则采用最常用的mysql。下面,我们来准备测试环境,首先建立一张用户表jwtk_admin,SQL如下:然后插入默认的管理员:这样我们就有了两位系统内置管理员了,管理员密码采用MD5进行Hash,当然这是一个很简单的为了作为研...转载 2019-12-25 14:13:52 · 194 阅读 · 0 评论 -
Java面试复习总结(Mysql篇9)——MySQL里的那些日志
目录1.MySQL日志文件系统的组成2.错误日志3.InnoDB中的日志4- 慢查询日志5.二进制日志总结同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户...转载 2019-12-25 14:09:10 · 288 阅读 · 0 评论 -
Java面试复习总结(Mysql篇8)——Innodb中的事务隔离级别和锁的关系
目录Innodb中的事务隔离级别和锁的关系事务中的加锁方式MySQL中锁的种类Read Committed(读取提交内容)Repeatable Read(可重读)不可重复读和幻读的区别悲观锁和乐观锁MVCC在MySQL的InnoDB中的实现“读”与“读”的区别Innodb中的事务隔离级别和锁的关系前言:我们都知道事务的几种性质,数据库为了维护...转载 2019-12-25 14:04:23 · 143 阅读 · 0 评论 -
Java面试复习总结(Mysql篇7)——MySQL的事务隔离级别实战
目录事务的基本要素(ACID)事务的并发问题MySQL事务隔离级别事务的基本要素(ACID) 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。 2、一致性(...转载 2019-12-25 14:02:21 · 130 阅读 · 0 评论 -
Java面试复习总结(Mysql篇6)——详解MyIsam与InnoDB引擎的锁实现
目录三类常见引擎:如何选择存储引擎:Mysql中的锁MyISAM的锁机制:并发插入锁调度InnoDB锁模式锁的实现方式:何时在InnoDB中使用表锁:死锁:避免死锁:三类常见引擎:MyIsam:不支持事务,不支持外键,所以访问速度快。锁机制是表锁,支持全文索引InnoDB:支持事务、支持外键,所以对比MyISAM,InnoDB的处理...转载 2019-12-25 13:56:53 · 138 阅读 · 0 评论 -
Java面试复习总结(Mysql篇5)——浅谈MySQL的中事务与锁
目录『浅入深出』MySQL 中事务的实现原子性回滚日志事务的状态并行事务的原子性持久性重做日志回滚日志和重做日志隔离性事务的隔离级别隔离级别的实现锁时间戳多版本和快照隔离隔离性与原子性一致性ACID总结浅谈数据库并发控制 - 锁和 MVCC概述悲观并发控制读写锁两阶段锁协议死锁的处理预防死锁...转载 2019-12-25 13:42:21 · 161 阅读 · 0 评论 -
Java面试复习总结(Mysql篇4)——Mysql索引实现原理和相关数据结构算法
目录一:Mysql原理与慢查询一个慢查询引发的思考二:索引建立三:浅析explain用法有什么用?怎么使用?参数介绍idselect_typeextrapossible_keyskeykey_lenrefrows四:慢查询优化建索引的几大原则回到开始的慢查询查询优化神器 - explain命令慢查询优化基本步骤...转载 2019-12-25 13:32:03 · 661 阅读 · 0 评论 -
Java面试复习总结(Mysql篇3)——Mysql索引实现原理和相关数据结构算法
目录MySQL索引一、简介二、语句三、索引类型四、缺点五、注意事项摘要数据结构及算法基础索引的本质B-Tree和B+TreeB-TreeB+Tree带有顺序访问指针的B+Tree为什么使用B-Tree(B+Tree)主存存取原理磁盘存取原理局部性原理与磁盘预读B-/+Tree索引的性能分析MySQL索引实现MyI...转载 2019-12-25 13:17:18 · 161 阅读 · 0 评论 -
Java面试复习总结(Mysql篇2)——MySQL 和 InnoDB
目录数据库的定义数据库和实例MySQL 的架构数据的存储如何存储表如何存储记录数据页结构索引索引的数据结构聚集索引和辅助索引索引的设计锁并发控制机制锁的种类锁的粒度锁的算法死锁的发生事务与隔离级别几种隔离级别脏读不可重复读幻读总结Innodb与Myisam引擎的区别与应用场景作为一名开发人员,在日常...转载 2019-12-24 16:51:52 · 546 阅读 · 0 评论 -
Java面试复习总结(Mysql篇1)——MySQL基本命令
前言开始使用我下面所有的SQL语句是基于MySQL 5.6+运行。MySQL 为关系型数据库(Relational Database Management System),一个关系型数据库由一个或数个表格组成, 如图所示的一个表格: 表头(header): 每一列的名称; 列(col): 具有相同数据类型的数据的集合; 行(row): 每一行用来描述某个人/物...转载 2019-12-24 16:45:50 · 165 阅读 · 0 评论 -
Java面试复习总结(JVM篇10)——再谈四种引用及GC实践
目录一、背景二、简介1.强引用 StrongReference2.弱引用 WeakReference3.软引用 SoftReference4.虚引用 PhantomReference三、小结参考文章一、背景Java的内存回收不需要程序员负责,JVM会在必要时启动Java GC完成垃圾回收。Java以便我们控制对象的生存周期,提供给了我们四种引用方式,引...转载 2019-12-24 11:12:35 · 110 阅读 · 0 评论 -
Java面试复习总结(JVM篇9)——JVM常用参数以及调优实践
目录调优准备性能分析CPU分析内存分析IO分析其他分析工具性能调优CPU调优内存调优IO调优其他优化建议JVM参数进阶参考资料参考文章对于调优这个事情来说,一般就是三个过程:性能监控:问题没有发生,你并不知道你需要调优什么。此时需要一些系统、应用的监控工具来发现问题。 性能分析:问题已经发生,但是你并不知道问题到底出在哪里。此...转载 2019-12-24 11:07:47 · 721 阅读 · 1 评论