java面试题整理
java-girl
选择入行,就努力坚持下去;
只争朝夕,不负韶华!
展开
-
39.dubbo面试题
39.dubbo面试题dubbo工作原理:第一层:service层,接口层,给服务提供者和消费者来实现的第二层:config层,配置层,主要是对dubbo进行各种配置的第三层:proxy层,服务代理层,透明生成客户端的stub和服务单的skeleton第四层:registry层,服务注册层,负责服务的注册与发现第五层:cluster层,集群层,封装多个服务提供者的路由以及负载均衡,将多个实例组合成一个服务第六层:monitor层,监控层,对rpc接口的调用次数和调用时间进行监控原创 2020-07-10 07:53:19 · 269 阅读 · 0 评论 -
springboot面试题
springboot面试题原创 2020-03-16 19:54:01 · 206 阅读 · 0 评论 -
JVM调优
架构师面试-JVM调优深入浅出JVM调优,看完你就懂原创 2020-03-16 17:58:43 · 184 阅读 · 0 评论 -
38.elasticsearch面试题
面试题es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?底层的 lucene 介绍一下呗?倒排索引了解吗?面试官心理分析问这个,其实面试官就是要看看你了解不了解 es 的一些基本原理,因为用 es 无非就是写入数据,搜索数据。你要是不明白你发起一个写入和搜索请求的时候,es 在干什么,那你真的是......对 es 基本就是个黑盒,你还能干啥?你唯一能干的就是用 es...原创 2020-03-16 16:57:59 · 239 阅读 · 0 评论 -
kafka面试题
1 什么是kafka,为什么要使用 kafka,为什么要使用消息队列2.Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么3.kafka中的broker 是干什么的4.kafka中的 zookeeper 起到什么作用,可以不用zookeeper么5.kafka follower如何与leader同步数据6.什么情况下一个 broker 会从 isr中踢出去7.kaf...原创 2020-03-16 16:36:39 · 246 阅读 · 0 评论 -
kafka中的broker,zookeeper 是什么,follower如何与leader同步数据,什么情况下一个 broker 会从 isr中踢出去
3.kafka中的broker 是干什么的broker 是消息的代理,Producers往Brokers里面的指定Topic中写消息,Consumers从Brokers里面拉取指定Topic的消息,然后进行业务处理,broker在中间起到一个代理保存消息的中转站。4.kafka中的 zookeeper 起到什么作用,可以不用zookeeper么zookeeper 是一个分布式的协调组件...原创 2020-03-16 16:24:57 · 1678 阅读 · 0 评论 -
2.Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么
2.Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么ISR:In-Sync Replicas 副本同步队列AR:Assigned Replicas 所有副本ISR是由leader维护,follower从leader同步数据有一些延迟(包括延迟时间replica.lag.time.max.ms和延迟条数replica.lag.max.messages两个维度, 当前最新的版本0.1...原创 2020-03-16 16:23:05 · 323 阅读 · 0 评论 -
什么是kafka,为什么要使用 kafka,为什么要使用消息队列
返回kafka面试题1 什么是kafkaKafka是分布式发布-订阅消息系统,它最初是由LinkedIn公司开发的,之后成为Apache项目的一部分,Kafka是一个分布式,可划分的,冗余备份的持久性的日志服务,它主要用于处理流式数据。2 为什么要使用 kafka,为什么要使用消息队列缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kaf...原创 2020-03-16 16:22:17 · 2249 阅读 · 0 评论 -
37.java开发涉及的端口
37.java开发涉及的端口tomcate:8080mysql:3306redis:6379消息件rabbitmq:服务端口:5672管理应用端口:15672 帐号密码:guest/guestoracle:1521elasticsearch92009300zookeper2181:客户端28888080:...原创 2020-03-16 16:17:12 · 194 阅读 · 0 评论 -
54.怎么实现线程的安全
54.怎么实现线程的安全1.对于线程不安全的对象我们可以通过如下方法来实现线程安全:1: 加锁利用Synchronized或者ReenTrantLock来对不安全对象进行加锁,来实现线程执行的串行化,从而保证多线程同时操作对象的安全性,一个是语法层面的互斥锁,一个是API层面的互斥锁.2: 非阻塞同步来实现线程安全。原理就是:通俗点讲,就是先进性操作,如果没有其他线程争用共享数据,...原创 2020-03-16 15:48:51 · 191 阅读 · 0 评论 -
Spring框架-Bean的作用域和生命周期
Bean的作用域Spring应用中,对象实例都是在Container中,负责创建、装配、配置和管理生命周期(new到finalize())Spring Container分为两种: 1、BeanFactory:提供DI支持 2、ApplicationContext:基于BeanFactory构建,提供应用框架级别的服务ApplicationContext实现类: ...原创 2020-03-16 15:16:45 · 334 阅读 · 0 评论 -
54.怎么实现线程的安全
54.怎么实现线程的安全原创 2020-03-16 14:27:54 · 91 阅读 · 0 评论 -
55.说说对spring框架的理解
55.说说对spring框架的理解原创 2020-03-16 14:26:01 · 332 阅读 · 0 评论 -
56.spring框架中有哪些注解
56.spring框架中有哪些注解原创 2020-03-16 14:25:05 · 505 阅读 · 0 评论 -
34.kafka怎么保证数据不丢失
34.kafka怎么保证数据不丢失原创 2020-03-16 14:08:53 · 317 阅读 · 0 评论 -
60.lock和synchrnoized区别
60.lock和synchrnoized区别synchrnoized Lock ReentantLock 是java中的一个关键字,是java语言的内置特性 不是语言内置的,是一个类,通过这个类可以实现同步访问。 被synchrnoized修饰的代码块,不管是读还是写都会加锁,一个线程在操作时,其他线程都需要等待。 可以只对写操作...原创 2020-03-16 13:36:08 · 383 阅读 · 0 评论 -
59.怎么处理高并发,有哪几种方案
59.怎么处理高并发,有哪几种方案处理高并发的六种方法1:系统拆分,将一个系统拆分为多个子系统,用dubbo来搞。然后每个系统连一个数据库,这样本来就一个库,现在多个数据库,这样就可以抗高并发。2:缓存,必须得用缓存。大部分的高并发场景,都是读多写少,那你完全可以在数据库和缓存里都写一份,然后读的时候大量走缓存不就得了。毕竟人家redis轻轻松松单机几万的并发啊。没问题的。所以你可以考的虑考...原创 2020-03-16 12:13:49 · 501 阅读 · 0 评论 -
58.redis的分布式锁是怎么实现的
实现思想:获取锁的时候,使用setnx加锁,并使用expire命令为锁添加一个超时时间,超过该时间则自动释放锁,锁的value值为一个随机生成的UUID,通过此在释放锁的时候进行判断。获取锁的时候还设置一个获取的超时时间,若超过这个时间则放弃获取锁。释放锁的时候,通过UUID判断是不是该锁,若是该锁,则执行delete进行锁释放。核心代码:import redis.clients....原创 2020-03-16 12:05:30 · 220 阅读 · 0 评论 -
61.什么是缓存穿透,怎么防止
61.什么是缓存穿透,怎么防止1、什么是缓存穿透?缓存穿透是指用户查询数据,在数据库没有,自然在缓存中也不会有。这样就导致用户查询的时候,在缓存中找不到对应key的value,每次都要去数据库再查询一遍,然后返回空(相当于进行了两次无用的查询)。这样请求就绕过缓存直接查数据库。2、你有什么解决方案来防止缓存穿透?1、缓存空值如果一个查询返回的数据为空(不管是数据不 存在,还是系统故...原创 2020-03-16 11:25:38 · 312 阅读 · 0 评论 -
57.谈谈你对redis的理解,redis的五种数据类型的应用场景
57.谈谈你对redis的理解,redis的五种数据类型的应用场景redis是一款高性能的NOSQL系列的非关系型数据库。内容缓存,主要用于处理大量数据的高访问负载。数据模型: 一系列键值对优势: 快速查询劣势: 存储的数据缺少结构化1) 字符串类型 string ( string)常常用来做计数器这类自增自减的功能,可用在粉丝数、微博数等。2) 哈希类型 ha...原创 2020-03-16 10:25:28 · 531 阅读 · 0 评论 -
mybatis的原理
mybatis的原理:MyBatis的基本工作原理就是:先封装SQL,接着调用JDBC操作数据库,最后把数据库返回的表结果封装成Java类。MyBatis的工作原理以及核心流程详解:上面中流程就是MyBatis内部核心流程,每一步流程的详细说明如下文所述:(1)读取MyBatis的配置文件。mybatis-config.xml为MyBatis的全局配置文件,用于配置数据库连接信息。(2...原创 2020-03-16 00:27:16 · 458 阅读 · 0 评论 -
52.mybatis和jdbc有啥区别
51.mybatis和jdbc有啥区别JDBC是Java提供的一个操作数据库的API,是一种规范;mybatis是一个持久层框架,用java编写的.他封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接等繁杂过程.他使用了ORM思想实现了结果集的封装(ORM:Object Relational Mapping 对象关系映射简单的说:就是把数据库表...原创 2020-03-15 23:57:50 · 807 阅读 · 0 评论 -
51.mybatis 的一级和二级缓存及其实现
51.mybatis 的一级和二级缓存及其实现一级缓存一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构用于存储缓存数据。不同的sqlSession之间的缓存数据区域是互相不影响的。也就是他只能作用在同一个sqlSession中,不同的sqlSession中的缓存是互相不能读取的。一级缓存实现原理:户发起查询请求,查找某条数据...原创 2020-03-15 23:57:23 · 251 阅读 · 0 评论 -
50.悲观锁和乐观锁的区别
50.悲观锁和乐观锁的区别悲观锁(Pessimistic Lock):每次获取数据的时候,都会担心数据被修改,所以每次获取数据的时候都会进行加锁,确保在自己使用的过程中数据不会被别人修改,使用完成后进行数据解锁。由于数据进行加锁,期间对该数据进行读写的其他线程都会进行等待。乐观锁(Optimistic Lock):每次获取数据的时候,都不会担心数据被修改,所以每次获取数据的时候都不会进行加...原创 2020-03-15 23:10:47 · 209 阅读 · 0 评论 -
49.MySQL主从复制
49.MySQL主从复制原理:mysql主(master)从(slave)复制的原理:1. master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫做二进制日志事件,binary log events)2. slave将master的binary log events拷贝到它的中继日志(relay log)3. slave重做中...原创 2020-03-15 22:42:34 · 168 阅读 · 0 评论 -
48.SQL除了分库分表,SQL语句怎么优化
48.SQL除了分库分表,SQL语句怎么优化SQL语句优化1)应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。2)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列...原创 2020-03-15 22:29:18 · 338 阅读 · 0 评论 -
47.MySQL和Oracle区别
47.MySQL和Oracle区别一、并发性并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。mysql:mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁...原创 2020-03-15 21:03:31 · 213 阅读 · 0 评论 -
46.Mybatis标签
46.Mybatis标签功能 标签名称 定义SQL语句 iinsert delete update select 配置java对象属性与查询结果集中列名对应关系 resultMap 控制动态SQL拼接 foreach if choose 格式化输出 where set trim 配置关联关系 ccollecti...原创 2020-03-15 19:36:45 · 233 阅读 · 0 评论 -
5.除了CAS,原子类,syn,Lock还有什么线程安全的方式
5.除了CAS,原子类,syn,Lock还有什么线程安全的方式volatileVolatile 变量具有 synchronized 的可见性特性,但是不具备原子性。这就是说线程能够自动发现 volatile 变量的最新值。Volatile 变量可用于提供线程安全,但是只能应用于非常有限的一组用例:多个变量之间或者某个变量的当前值与修改后值之间没有约束。因此,单独使用 volatile ...原创 2020-03-14 21:37:11 · 1406 阅读 · 1 评论 -
3.CMS和G1的异同
3.CMS和G1的异同原创 2020-03-14 20:44:42 · 1272 阅读 · 0 评论 -
2.锁的四种状态及升级过程
锁的四种状态:无锁、偏向锁、轻量级锁和重量级锁,专门针对synchronized的。要注意的是,这四种状态都不是Java语言中的锁,而是Jvm为了提高锁的获取与释放效率而做的优化(使用synchronized时)。四种状态会随着竞争的情况逐渐升级,而且是不可逆的过程,即不可降级。偏向锁假如家里只有一个碗,当我自己在家时,没有人会和我争碗,这时即为偏向锁状态偏向锁的由来...原创 2020-03-14 20:39:54 · 1370 阅读 · 0 评论 -
1.synchrnoized和reentrantlock的区别
一、synchronized原理synchronized用的锁是存在java对象头里的JVM基于进入和退出Monitor对象来实现方法同步和代码块同步。1.代码块同步使用monitorenter和monitorexit指令实现的,monitorenter指令是在编译后插入到同步代码块开始位置,而monitorexit是插入到方法结束后和异常处。任何对象都有一个monitor与之...原创 2020-03-14 19:59:04 · 654 阅读 · 0 评论 -
45. zookeeper与dubbo核心面试题
45.zookeeper与dubbo核心面试题一、简单介绍下zk选举机制?半数机制(paxos协议):集群中半数以上机器存活,集群可用,所以Zookeeper适合安装奇数台服务器内部选举步骤:在分布式系统中选主最直接或者传统的方法是直接选定集群的一个节点为leader,其它的节点为follower,这样引入的一个问题是如果leader节点挂掉,整个集群就挂掉了。所以我们需...原创 2020-03-15 02:13:23 · 237 阅读 · 0 评论 -
44.String、StringBuffer和StringBuilder的区别?分别在哪些场景下使用?
44.String、StringBuffer和StringBuilder的区别?分别在哪些场景下使用?三者都是final,不允许被继承在本质上都是char[]字符数组实现String、StringBuffer与StringBuilder中,String是不可变对象,另外两个是可变的。Stringbuilder 效率更快,因为他不需要加锁,不具备多线程安全。Stringbuffer 里面...原创 2020-03-15 01:51:36 · 375 阅读 · 0 评论 -
6.HashMap和Hashtable的异同
6.HashMap和Hashtable的异同 1.Hashtable是线程安全,HashMap是非线程安全HashMap的性能会高于Hashtable,我们平时使用时若无特殊需求建议使用HashMap,在多线程环境下若使用HashMap需要使用Collections.synchronizedMap()方法来获取一个线程安全的集合(Collections.synchronizedMap(...原创 2020-03-14 22:03:37 · 316 阅读 · 0 评论 -
43.mysql相似字段区别
43.mysql相似字段区别char(16)和 varchar(16)比较:对比项 char(16) varchar(16) 长度特点 长度固定,存储字符 长度可变,存储字符 长度不足情况 插入的长度小于定义长度时,则用空格填充 小于定于长度是,按实际插入长度存储 性能 存取速度比varchar快得多 存取速度比char慢的多 ...原创 2020-03-15 01:25:21 · 181 阅读 · 0 评论 -
42.mysql数据库索引及SQL执行
42.mysql数据库索引及SQL执行索引优点:快速定位到表的位置,减少服务器扫描的数据有些索引存储了实际的值,特定情况下只要使用索引就能完成查询索引缺点:索引会浪费磁盘空间,不要创建非必要的索引增删改操作需要维护索引,带来额外的开销索引过多,修改表的时候重构索引性能差优化实践:前缀索引,特别是TEXT和BLOG类型的字段,只检索前面几个字符,提高索...原创 2020-03-15 01:13:39 · 193 阅读 · 0 评论 -
41.mysql常见的存储引擎,InnoDB,MyISAM的区别
41.mysql常见的存储引擎,InnoDB,MyISAM的区别常见的有多种:InnoDB,MyISAM,MEMORY,ARCHIVE,CSV等。一般比较常用的:InnoDB,MyISAM。MySQL5.5以上的版本默认是InnoDB,5.5之前默认存储引擎是MyISAM。InnoDB,MyISAM的区别:区别项 IInnoDB MyISAM 事务 支持...原创 2020-03-15 00:50:21 · 166 阅读 · 0 评论 -
40.linux的一些基本操作命令
40.linux的一些基本操作命令1、 cd命令功能说明:切换目录。举 例:却换到根目录 :cd /2、 ls命令功能说明:列出目录内容。举 例:列出/var目录的文件和目录的信息 :ls –l /var;常用方式 ls –ltr3、 cat命令功能说明:查看小文件内容。举 例:查看test.txt 文件内容 :cat test.txt4、 chmod命令...原创 2020-03-14 23:57:34 · 143 阅读 · 0 评论 -
31.设计模式之-单例模式 (关于饿汉式和懒汉式)
31.设计模式之-单例模式 (关于饿汉式和懒汉式)单例模式的优缺点:优点单例类只有一个实例,节省了内存资源,对于一些需要频繁创建销毁的对象,使用单例模式可以提高系统性能;单例模式可以在系统设置全局的访问点,优化和共享数据,例如前面说的Web应用的页面计数器就可以用单例模式实现计数值的保存。缺点单例模式一般没有接口,扩展的话除了修改代码基本上没有其他途径。饿汉式:在类加...原创 2020-03-14 23:28:16 · 186 阅读 · 0 评论