Java面试题
该专栏介绍了所有的关于java的面试题.超详细!
阿凡博客
程序员不是喜欢996的加班,而是喜欢996的工资
展开
-
SpringCloud面试专题及答案
问题一: 什么是Spring Cloud?Spring cloud流应用程序启动器是基于Spring Boot的Spring集成应用程序,提供与外部系统的集成。 Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。问题二: 使用Spring Cloud有什么优势?使用Spring Boot开发分布式微服务时,我们面临以下问题与分布式...原创 2020-03-14 20:51:12 · 1269 阅读 · 0 评论 -
SpringBoot面试专题及答案
问题一 什么是 Spring Boot?多年来,随着新功能的增加,spring 变得越来越复杂。只需访问 https://spring.io/projects 页面,我们就会看到可以在我们的应用程序中使用的所有 Spring 项目的不同功能。如果必须启动一个新的 Spring 项目,我们必须添加构建路径或添加 Maven 依赖关系,配置应用程序服务器,添加 spring 配置。因此,开始一个新...原创 2020-03-14 20:06:56 · 1199 阅读 · 0 评论 -
mysql面试专题
1.数据库三范式是什么?第一范式(1NF):字段具有原子性,不可再分。(所有关系型数据库系 统都满足第一范式数据库表中的字段都是单一属性的,不可再分)第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足 第二范式(2NF)必须先满足第一范式(1NF)。要求数据库表中的每 个实例或行必须可以被惟一地区分。通常需要为表加上一个列,以存储 各个实例的惟一标识。这个惟一属性列被称为主关...原创 2020-03-13 16:40:32 · 292 阅读 · 0 评论 -
面试必备之乐观锁与悲观锁
何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生 活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以 场景而定说一种人好于另外一种人。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它...原创 2020-03-14 18:33:08 · 1012 阅读 · 0 评论 -
Nginx面试专题
1、请解释一下什么是 Nginx?Nginx 是一个 web 服务器和反向代理服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。2、请列举 Nginx 的一些特性。Nginx 服务器的特性包括:反向代理/L7 负载均衡器嵌入式 Perl 解释器动态二进制升级可用于重新编写 URL,具有非常好的 PCRE 支持3、请列举 Nginx 和 Apache 之间的...原创 2020-03-14 17:53:08 · 875 阅读 · 0 评论 -
RabbitMQ消息中间件面试专题
问题一:RabbitMQ 中的 broker 是指什么?cluster 又是指什么?答:broker 是指一个或多个 erlang node 的逻辑分组,且 node 上运行着 RabbitMQ 应用 程序。cluster 是在 broker 的基础之上,增加了 node 之间共享元数据的约束。问题二:什么是元数据?元数据分为哪些类型?包括哪些内容?与 cluster 相关的元数据 有哪些?元...原创 2020-03-14 16:59:07 · 944 阅读 · 0 评论 -
Kafka面试专题
1.Kafka 的设计时什么样的呢?Kafka 将消息以 topic 为单位进行归纳将向 Kafka topic 发布消息的程序成为 producers.将预订 topics 并消费消息的程序成为 consumer.Kafka 以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个 broker. producers 通过网络将消息发送到 Kafka 集群,集群向消费者提供消息2....原创 2020-03-14 16:50:53 · 212 阅读 · 0 评论 -
ActiveMQ消息中间件面试专题
1.什么是ActiveMQ?activeMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效 的、可扩展的、稳定的和安全的企业级消息通信2. ActiveMQ服务器宕机怎么办?这得从ActiveMQ的储存机制说起。在通常的情况下,非持久化消息是存储在内存中的,持久化消息是 存储在文件中的,它们的最大限制在配置文件的节点中配置。但是,在非持久化消息堆 积到...原创 2020-03-14 16:27:04 · 283 阅读 · 0 评论 -
MySQL 性能优化的21个最佳实践
1. 为查询缓存优化你的查询大多数的 MySQL 服务器都开启了查询缓存。这是提高性最有效的方法之 一,而且这是被 MySQL 的数据库引擎处理的。当有很多相同的查询被执行了多 次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不 用操作表而直接访问缓存结果了。这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因 为,我们某些查询语句会让 MySQL 不使用缓存。请...原创 2020-03-14 15:07:37 · 849 阅读 · 0 评论 -
Tomcat优化相关问题
1. 你怎样给 tomcat 去调优?JVM参数调优:-Xms 表示JVM初始化堆的大小,-Xmx表示JVM堆的最大值。这两个值的大小一般根据需要进行设置。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。在catalina.bat中,设置JAVA_OPTS=’-Xms256m -Xmx512m’,表示初始...原创 2020-03-13 17:22:55 · 221 阅读 · 0 评论 -
JVM面试专题及答案
1.内存模型以及分区,需要详细到每个区放什么。JVM 分为堆区和栈区,还有方法区,初始化的对象放在堆里面,引用放在栈里面, class 类信息常量池(static 常量和 static 变量)等放在方法区方法区:主要是存储类信息,常量池(static 常量和 static 变量),编译后的代码(字 节码)等数据 堆:初始化的对象,成员变量 (那种非 static 的变量),所有的对象实例和...原创 2020-03-13 16:27:03 · 320 阅读 · 0 评论 -
Netty面试专题
1.BIO、NIO 和 AIO 的区别?BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。伪异步 IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。 NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用 器轮询到连接有 I/O 请求时才启动一个线程进行处理。AIO:一个有效请求一个线程,客户端的 I/O 请求都是...原创 2020-03-13 15:59:13 · 166 阅读 · 0 评论 -
并发编程面试专题
1)现在有 T1、T2、T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执 行?这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用 join 方法实现。2)在 Java 中 Lock 接口比 synchronized 块的优势是什么?你需要实现一个高效的缓存,它允 许多个用户读,但只允许一个用...原创 2020-03-13 15:27:37 · 222 阅读 · 0 评论 -
Linux面试专题
问题一:绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?答案:绝对路径:如/etc/init.d当前目录和上层目录:./ …/主目录:~/切换目录:cd问题二:怎么查看当前进程?怎么执行退出?怎么查看当前路径?答案:查看当前进程:ps执行退出:exit查看当前路径:pwd问题三:怎么清屏?怎么退出当前命令?怎么执行睡眠?怎...原创 2020-03-13 15:12:17 · 365 阅读 · 0 评论 -
Dubbo面试专题及答案
Dubbo 支持哪些协议,每种协议的应用场景,优缺点? dubbo: 单一长连接和 NIO 异步通讯,适合大并发小数据量的服务调用, 以及消费者远大于提供者。传输协议TCP,异步,Hessian 序列化; rmi: 采用 JDK 标准的 rmi 协议实现,传输参数和返回参数对象需要实现 Serializable 接口,使用 java标准序列化机制,使用阻塞式短连接,传输数 据包大小混合...原创 2020-03-13 12:28:17 · 404 阅读 · 0 评论 -
设计模式面试专题
1.请列举出在 JDK 中几个常用的设计模式?单例模式(Singleton pattern)用于 Runtime,Calendar 和其他的一些类中。工厂模式 (Factory pattern)被用于各种不可变的类如 Boolean,像 Boolean.valueOf,观察者模式 (Observer pattern)被用于 Swing 和很多的事件监听中。装饰器设计模式(Decorator de...原创 2020-03-13 08:56:07 · 388 阅读 · 0 评论 -
Redis的87道高质量面试题
(1)请回答一下:复制,哨兵,集群的优缺点?(1)复制:复制是高可用Redis的基础,哨兵和集群都是在复制基础上实现高可用的。复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷是故障恢复无法自动化;写操作无法负载均衡;存储能力受到单机的限制。(2)哨兵:在复制的基础上,哨兵实现了自动化的故障恢复。缺陷是写操作无法负载均衡;存储能力受到单机的限制。在主从复制的基础上,...原创 2020-02-27 20:54:56 · 8572 阅读 · 2 评论 -
Java集合必会14问(精选面试题整理)
1)说说常见的集合有哪些吧?答:Map接口和Collection接口是所有集合框架的父接口:1.Collection接口的子接口包括:Set接口和List接口2.Map接口的实现类主要有:HashMap、TreeMap、Hashtable、ConcurrentHashMap以及Properties等3.Set接口的实现类主要有:HashSet、TreeSet、LinkedHashSet等...转载 2020-02-26 12:11:44 · 390 阅读 · 0 评论 -
Redis面试的17个高水平问题
一、为什么使用Redis笔者认为,在项目中使用Redis,主要是从两个角度去考虑:性能和并发。当然,Redis还具备可做分布式锁等功能的其它功能,但如果只是为了分布式锁这些其它功能,完全还有其它中间件(如Zookpeer等)可以代替,并不是非要使用Redis。因此,这个问题主要从性能和并发两个角度去答:1、性能如下图所示,我们在碰到需要执行耗时特别久、且结果不频繁变动的SQL时,就特别适合...原创 2020-02-22 17:14:23 · 478 阅读 · 0 评论 -
Redis详解&应用场景&面试题
Redis是什么Redis是一个开源的底层使用C语言编写的key-value存储数据库。可用于缓存、事件发布订阅、高速队列等场景。而且支持丰富的数据类型:string(字符串)、hash(哈希)、list(列表)、set(无序集合)、zset(sorted set:有序集合)Redis在项目中的应用场景1、缓存数据最常用,对经常需要查询且变动不是很频繁的数据 常称作热点数据。2、消息队列...转载 2020-02-21 23:40:01 · 1043 阅读 · 0 评论 -
SpringMVC超详细面试题(附答案)
1、什么是Spring MVC?简单介绍下你对springMVC的理解?Spring MVC是一个基于Java的实现了MVC设计模式的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。2、什么是MVC?MVC主要的用途就是对组件之间进行隔离分层。M:业务逻辑...原创 2020-02-14 00:03:00 · 10636 阅读 · 0 评论 -
史上最详细的Spring面试题(附答案)
1、简单介绍一下Spring?Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开...原创 2020-02-13 23:41:57 · 2868 阅读 · 0 评论 -
史上最全Java并发编程面试题(75道附答案)
1、在 java 中守护线程和本地线程区别?java 中的线程分为两种:守护线程(Daemon)和用户线程(User)。任何线程都可以设置为守护线程和用户线程,通过方法 Thread.setDaemon(boolon);true 则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在 Thread.start()之前调用,否则运行时会抛出异常。两者的区别:唯...原创 2020-02-13 23:20:07 · 1229 阅读 · 0 评论 -
Mybatis超详细面试题
1、什么是 MyBatis?答:MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架。2、讲下 MyBatis 的缓存答:MyBatis 的缓存分为一级缓存和二级缓存,一级缓存放在 session 里面,默认就有,二级缓 存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现 Serializable 序列化 接口(可用来保存对象的状态),可在它的映射文件中配置...原创 2020-02-12 21:56:47 · 2533 阅读 · 0 评论 -
Spring史上最全面试题
什么是spring?Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。使用Spring框架的好处是什么?轻量:Spring 是轻量的,基本的版本大约2MB。控制反转:Spring通过控制反转实现...原创 2020-02-07 21:38:59 · 339 阅读 · 0 评论 -
Zookeeper超详细的面试题
1.ZooKeeper是什么?ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了监听器,这个监听器也是由所连接的zooke...转载 2020-01-08 23:51:30 · 516 阅读 · 0 评论 -
FreeMarker经典面试题
FreeMarker的定义:FreeMarker是一个基于java语言的免费开源的模板引擎,基于文本的模板输出工具,使用FreeMarker可以生成任意的字符信息,包括html,xml,java文件等等文本资源.在软件项目中常常用来生成HTML的 Web页面FreeMarker的优势:1.分离表现层和业务逻辑FreeMarker的原理就是:模板+数据模型=输出.模板只负责数据在页面中的展...原创 2020-01-04 12:11:51 · 3496 阅读 · 0 评论 -
Docker面试题
1**、如何列出可运行的容器****?**docker ps2**、启动nginx容器(随机端口映射),并挂载本地文件目录到容器html的命令是?**docker run -d -P --name nginx2 -v /home/nginx:/usr/share/nginx/html nginx3**、进入容器的方法有哪些?**1、使用 docker attach 命令2、使用 exe...原创 2019-12-25 16:20:41 · 2492 阅读 · 0 评论 -
Java的Mysql数据库的面试题
数据库部分1、用两种方式根据部门号从高到低,工资从低到高列出每个员工的信息。employee: eid,ename,salary,deptid; select * from employee order by deptid desc,salary 2、列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序创建表: mysql> create tab...原创 2019-12-25 11:30:54 · 2174 阅读 · 0 评论 -
Java的Jdbc和Servlet&Jsp面试题
servlet的内容2、HTTP 请求的 GET 与 POST 方式的区别答:servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。 这个生存期由 javax.servlet.Servlet 接口的 init,service 和 destroy 方法表达。3、解释一下什么是 servlet;答:servlet 有良好的生存期的定义,包括加载和实例化、初始化、...原创 2019-12-25 09:32:25 · 1792 阅读 · 0 评论 -
史上(目前)最详细的Redis面试题含(最详细的答案)
Redis是什么面试官:你先来说下redis是什么吧我:(这不就是总结下redis的定义和特点嘛)Redis是C语言开发的一个开源的(遵从BSD协议)高性能键值对(key-value)的内存数据库,可以用作数据库、缓存、消息中间件等。它是一种NoSQL(not-only sql,泛指非关系型数据库)的数据库。我顿了一下,接着说:Redis作为一个内存数据库。性能优秀,数据在内存中,读写速...转载 2019-12-23 11:55:13 · 1573 阅读 · 1 评论 -
史上最全的Java线程面试题
1、java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和 和 suspend() 方法为何不推荐使用?java5以前,有如下两种:第一种:new Thread(){}.start();这表示调用 Thread 子类对象的 run 方法,new Thread(){}表示一个Thread 的匿名子类的实例对象,子类加上 run 方法后的代码如下:new Thre...原创 2019-12-19 23:45:37 · 552 阅读 · 0 评论 -
史上最全Java集合框架面试题
1、你所知道的集合类都有哪些?主要方法?最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。Array...原创 2019-12-20 20:17:53 · 571 阅读 · 0 评论