![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java面试题
文章平均质量分 83
Java面试题
白鸽呀
这个作者很懒,什么都没留下…
展开
-
一致性hash算法实现
【代码】一致性hash算法实现。原创 2023-01-05 22:23:47 · 316 阅读 · 0 评论 -
网络编程面试题
计算机网络体系结构在计算机网络的基本概念中,分层次的体系结构是最基本的。计算机网络体系结构的抽象概念较多,在学习时要多思考。这些概念对后面的学习很有帮助。网络协议是什么?在计算机网络要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则,比如交换数据的格式、是否需要发送一个应答信息。这些规则被称为网络协议。为什么要对网络协议分层?1、简化问题难度和复杂度。由于各层之间独立,我们可以分割大问题为小问题。2、灵活性好。当其中一层的技术变化时,只要层间接口关系保持不变,其他层不受影响。3、易于实现转载 2021-08-26 18:40:15 · 83 阅读 · 0 评论 -
MySQL数据库面试题
数据库基础知识为什么要使用数据库数据保存在内存优点: 存取速度快缺点: 数据不能永久保存数据保存在文件优点: 数据永久保存缺点:1)速度比内存操作慢,频繁的IO操作。2)查询数据不方便数据保存在数据库1)数据永久保存2)使用SQL语句,查询方便效率高。3)管理数据方便什么是SQL?结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言。作用:用于存取数据、查询、更新和管理关系数据库系统。什么是MySQL?MySQL是一个关系型数据转载 2021-08-14 22:46:32 · 7522 阅读 · 0 评论 -
MySQL的MVCC及实现原理
什么是 MVCC ?MVCCMVCC,全称 Multi-Version Concurrency Control ,即多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。mvcc - @百度百科MVCC 在 MySQL InnoDB 中的实现主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读什么是当前读和快照读?在学习 MVCC 多版本并发控制之前,我们必须先了解一下,转载 2021-08-14 15:58:30 · 781 阅读 · 0 评论 -
数据库三大范式(通俗理解)
范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。目前有迹可寻的共有8种范式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。通常所用到的只是前三个范式,即:第一范式(1NF),第二范式(2NF),第三范式(3NF)。下面就简单介绍下这三个范式。◆ 第一范式(1NF):强调的是列的原子性,即列不能够再转载 2021-08-13 15:46:31 · 14867 阅读 · 0 评论 -
Redis为什么这么快?Redis的线程模型与Redis多线程
一、Redis有多快?Redis是基于内存运行的高性能 K-V 数据库,官方提供的测试报告是单机可以支持约10w/s的QPS二、Redis为什么这么快?(1)完全基于内存,数据存在内存中,绝大部分请求是纯粹的内存操作,非常快速,跟传统的磁盘文件数据存储相比,避免了通过磁盘IO读取到内存这部分的开销。(2)数据结构简单,对数据操作也简单。Redis中的数据结构是专门进行设计的,每种数据结构都有一种或多种数据结构来支持。Redis正是依赖这些灵活的数据结构,来提升读取和写入的性能。(3)采用单线程,转载 2021-08-13 15:27:41 · 87 阅读 · 0 评论 -
MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
这个问题可以从内存淘汰策略,Redis内存大小,设置key过期时间出发为每一个key设置过期时间,设置redis占用内存大小(一般为百分之50%),一旦达到maxmemory阀值,触发Redis内存淘汰策略1、Redis内存淘汰策略默认8种:(1)volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰。(2)volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰。(3)volatile-random:从已设置过期时间的数据集中任意选择数据淘汰。(4原创 2021-08-13 15:05:23 · 481 阅读 · 0 评论 -
Redis面试题
概述什么是RedisRedis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。另转载 2021-08-13 11:46:56 · 451 阅读 · 0 评论 -
SpringBoot面试题
概述什么是 Spring Boot?Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。Spring Boot 有哪些优点?Spring Boot 主要有如下优点:容易上手,提升开发效率,为 Spring 开发提供一个更快、更广泛的入门体验。开箱即用,远离繁琐的配置。提供了一系列大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据转载 2021-08-12 15:07:36 · 98 阅读 · 0 评论 -
Mybatis面试题
MyBatis简介MyBatis是什么?MyBatis 是一款优秀的持久层框架,一个半 ORM(对象关系映射)框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。ORM是什么ORM(Object Relational Mapping),对转载 2021-08-11 11:17:21 · 928 阅读 · 0 评论 -
SpringMVC面试题
概述什么是Spring MVC?简单介绍下你对Spring MVC的理解?Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。Spring MVC的优点(1)可以支持各种视图技术,而不仅仅局限于JSP;(2)与Spring框架集成(如IoC容器、AOP等);(3)清晰的角色分配:前端控制器(dispatcherSe转载 2021-08-10 17:52:06 · 711 阅读 · 0 评论 -
Mysql中sql索引优化和慢sql日志,show profiles分析,mysql锁
基础知识和B+tree原理sql性能下降的原因1、sql写的不行2、索引失效3、多表关联太多join on4、服务器调优及各个参数设置(缓冲、线程数等)注意:innodb中按索引列是否为主键列将索引分为聚集索引(主键索引)和普通索引(辅助索引)。按创建的索引列数目分:包含单值索引,复合索引单值索引select * from user where name='';create index idx_user_name on user(name);复合索引select * from use原创 2021-08-04 20:05:39 · 993 阅读 · 0 评论 -
Mysql中的读写锁,表锁和行锁,间隙锁
Msql数据库锁理论概述锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。锁的分类从对数据操作的类型(读\写)分读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响。写锁(排它锁):当前写操作没有完原创 2021-08-04 20:04:36 · 2501 阅读 · 1 评论 -
Mysql中 慢查询日志和show profile进行sql分析
慢查询日志MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。慢查询sql具体指运行时间超过long_query_time(阀值)值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10秒以上的语句。由他来查看哪些SQL超出了我们的最大忍耐时间值,比如一条sql执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒的sql,结合原创 2021-08-04 16:17:38 · 450 阅读 · 0 评论 -
Mysql中索引失效常见原因和解决方案
索引失效跳过复合索引中间列,或首列CREATE TABLE IF NOT EXISTS article( id INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, author_id INT(10) UNSIGNED NOT NULL, category_id INT(10) UNSIGNED NOT NULL, views INT(10) UNSIGNED NOT NULL, comments INT(10) UNSIGNED NOT原创 2021-08-03 15:55:30 · 1752 阅读 · 0 评论 -
Mysql中的复合索引(联合索引)原理
联合索引原理联合索引,通过顺序比较对应的值,来实现排序和查找。对于每一个联合索引所在页,都包含对应参与联合索引列的值,和指向子节点的指针。create index idx_T1_abc on T1(a,b,b);上诉步骤为T1创建联合索引联合索引具体查找步骤:当咱们的SQL语言能够应用到索引的时候,好比 select * from T1 where b = 12 and c = 14 and d = 3 ;也就是T1表中a列为4的这条记录。查找步骤具体以下:1、存储引擎首先从根节点(通常常驻原创 2021-08-03 15:05:56 · 3639 阅读 · 0 评论 -
Mysql中explain优化分析详解
mysql体系结构性能分析前提知识MySQL Query OptimizerMysql中有专门负责优化SELECT语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息,为客户端请求的Query提供他认为最优的执行计划(他认为最优的数据检索方式,但不见得是DBA认为是最优的,这部分最耗费时间)当客户端向MySQL请求一条Query,命令解析器模块完成请求分类,区别出是SELECT并转发给MySQL Query Optimizer时,MySQL Query Optimizer首先会对整条Qu原创 2021-08-03 10:58:40 · 1802 阅读 · 0 评论 -
Mysql中的回表查询
基础知识Mysql中的B-Tree和B+Tree原理解析MySQL MyISAM和Innodb索引实现原理分析什么是回表查询注意:mysql默认使用的innodb引擎,主键索引 == 聚集索引,辅助索引 == 普通索引。 这两个术语呢,可能在不同文章说法不同,但本质一样回表查询,实际查询两次,通过辅助索引(普通索引)实现的。因为辅助索引叶子节点不存放记录数据,只存放普通值和对应记录主键值例如:表t中有四条记录:1, shenjian, m, A3, zhangsan, m, A5,原创 2021-08-02 22:44:50 · 4118 阅读 · 0 评论 -
MySQL MyISAM和Innodb索引实现原理分析
B+Tree实现原理和基本知识B+Tree实现原理MyISAM 索引(叶子节点存放指向记录地址)MyISAM 引擎使用 B+Tree 作为索引结构,叶节点的 data 域存放的是数据记录的地址上图中,我们以Col1为主键primary Key。对于B+Tree而言,非叶子节点存放的是键值+指向子节点的指针对于MyISAM而言,在B+Tree中,将叶子节点中的data存放的是实际记录的地址记录数据并非聚集在叶子节点当中,因此,MyISAM 的索引方式也叫做“非聚集索引”In原创 2021-08-02 21:40:44 · 506 阅读 · 0 评论 -
Mysql中的B-Tree和B+Tree原理解析
基本知识1、操作系统从磁盘读取数据到内存时是以磁盘块(block)为基本单位的2、InnoDB存储引擎是按页来处理数据的,因此B-Tree/B+Tree的基础分配单位是页。InnoDB存储引擎中默认每个页的大小为16KB。通过以下命令进行茶盘mysql> show variables like 'innodb_page_size';3、磁盘块(block)实际上并没有这么大,因此InnoDB每次申请磁盘空间时都会是若干地址连续磁盘块来达到页的大小16KB。平衡多路查找树(B-Tree)(原创 2021-08-02 19:23:50 · 821 阅读 · 0 评论 -
Spring面试题
Spring概述什么是spring?Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发。Spring最根本的使命是解决企业级应用开发的复杂性,即简化Java开发。Spring可以做很多事情,它为企业级开发提供给了丰转载 2021-07-30 21:33:16 · 184 阅读 · 0 评论 -
java虚拟机(JVM)面试题
Java内存区域说一下 JVM 的主要组成部分及其作用?JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)、Execution engine(执行引擎);两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。Class loader(类装载):根据给定的全限定名类名(如:java.lang.Object)来装载class文件到Runtime data area中的method area。Execution e转载 2021-07-30 11:22:28 · 271 阅读 · 0 评论 -
什么是GC root ,GC root原理
1、GC root原理GC root原理:通过对枚举GCroot对象做引用可达性分析,即从GC root对象开始,向下搜索,形成的路径称之为 引用链。如果一个对象到GC roots对象没有任何引用,没有形成引用链,那么该对象等待GC回收。2、GC root对象是什么?Java中可以作为GC Roots的对象1、虚拟机栈(javaStack)(栈帧中的局部变量区,也叫做局部变量表)中引用的对象。2、方法区中的类静态属性引用的对象。3、方法区中常量引用的对象。4、本地方法栈中JNI(Native原创 2021-07-30 10:20:07 · 15737 阅读 · 0 评论 -
Java基础面试题
本文转载自thinkwonJava概述何为编程编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。什么是JavaJava是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大转载 2021-07-19 16:16:23 · 978 阅读 · 0 评论 -
java多线程面试题
基础知识为什么要使用并发编程(并发编程的优点)充分利用多核CPU的计算能力:通过并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升方便进行业务拆分,提升系统并发能力和性能:在特殊的业务场景下,先天的就适合于并发编程。现在的系统动不动就要求百万级甚至千万级的并发量,而多线程并发编程正是开发高并发系统的基础,利用好多线程机制可以大大提高系统整体的并发能力以及性能。面对复杂业务模型,并行程序会比串行程序更适应业务需求,而并发编程更能吻合这种业务拆分 。并发编程有什么缺点并发编程的目的就是为原创 2021-07-28 22:49:12 · 509 阅读 · 0 评论 -
AQS(abstractQueuedSynchronizer)锁实现原理详解
AQS(abstractQueuedSynchronizer)锁实现原理详解AQS是什么AQS(abstractQueuedSynchronizer)抽象队列同步器。其本身是一个抽象类,提供lock锁的实现。聚合大量的锁机制实现的共用方法。AQS(abstractQueuedSynchronizer)结构图为什么要使用AQS1、我们使用的可重入锁(公平锁/非公平锁)底层实现是AQS。通过实现AQS(队列同步器)子类Sync的FairSync和NonfairSync2、为什么线程争抢锁时,没原创 2021-07-28 10:49:55 · 966 阅读 · 0 评论 -
java综合面试题
一些大厂的面试题蚂蚁花呗一面:Java容器有哪些?哪些是同步容器,哪些是并发容器?ArrayList和LinkedList的插入和访问的时间复杂度?java反射原理,注解原理?新生代分为几个区?使用什么算法进行垃圾回收?为什么使用这个算法?HashMap在什么情况下会扩容,或者有哪些操作会导致扩容?HashMap push方法的执行过程?HashMap检测到hash冲突后,将元素插入在链表的末尾还是开头?1.8还采用了红黑树,讲讲红黑树的特性,为什么人家一定要用红黑树而不是AVL、B树之类原创 2021-07-25 18:15:20 · 568 阅读 · 2 评论 -
linux查看系统性能负载常用命令
linux查看系统性能负载常用命令top 查看系统整体性能/使用情况用法top [-d number] | top [-bnp]-d:number代表秒数,表示top命令显示的页面更新一次的间隔。默认是5秒。-b:以批次的方式执行top。-n:与-b配合使用,表示需要进行几次top命令的输出结果-p:指定特定的pid进程号进行观察top命令使用详解vmstat...原创 2021-07-25 17:48:24 · 581 阅读 · 0 评论 -
java中的七大GC收集器和四大GC算法
java中的七大GC收集器和四大GC算法垃圾收集器的种类和介绍1、serial 串行垃圾收集器,采用单线程收集垃圾2、parallel 并行垃圾收集器,采用多线程收集垃圾3、CMS(concurrentMarkSweep)并发标记收集 垃圾收集器,串行和并行同在,是前两种垃圾收集器的优化,较短时间进行STW(stop the world),保证较快的响应速度。4、G1 新一代垃圾收集器,采用的region分区java8中默认的垃圾收集器jps -l #查看java进程列表jinfo -原创 2021-07-24 22:58:44 · 1346 阅读 · 4 评论 -
JVM中两类错误StackOverflowError和OOM原因复现
JVM中常见的两类错误StackoverFlowErrorjava.lang.StackOverflowError (线程执行栈,栈溢出)OutofMemoryErrorjava.lang.OutOfMemoryError:java heap space (堆空间不足)java.lang.OutOfMemoryError:GC overhead limit exceeded (gc垃圾收集器负载过重,就是gc也回收不了垃圾)java.lang.OutOfMemoryError:Direct原创 2021-07-24 21:15:53 · 1014 阅读 · 0 评论 -
java中的Reference,SoftReference,WeakReference,PhantomReference
java中的引用对象类型java中的引用类型分别是强引用,SoftReference,WeakReference,PhantomReference。我们平常中产生的对象绝大部分是强引用类型,下来来分别介绍。java强引用对象Object o = new Object;String s = "aa";等等。。。。。。。特点当内存不足,JVM开始通过垃圾回收器进行垃圾回收,对于强引用的对象,就算是出现了OOM也不会对该对象进行回收,因为存在引用指向这它,我们平常创建的对象都是强引用对象。要将原创 2021-07-24 18:12:07 · 178 阅读 · 0 评论