00 java面试经典一百题
本专辑将介绍java中经典的面试题
张力的程序园
兰州大学毕业,10多年软件开发经验,善于系统性设计多种技术映射到问题解决空间。java出身,精通设计模式,熟悉经典算法,主要从事方向为分布式和大数据研发,对高并发、大流量设计思想有深刻理解和运用。
展开
-
23 jdk8新特性
问题jdk8有哪些新特性答案Lambda 表达式 − Lambda 允许把函数作为一个方法的参数。使用lambda表达式之前是这样: Integer[] is=new Integer[]{43,65,87,324,76,12,61,13}; Arrays.sort(is, new Comparator<Integer>() { ...原创 2020-04-02 17:01:46 · 93 阅读 · 0 评论 -
22 锁
问题哪些地方会用到锁答案zookeeper分布式锁是指多个节点都需要做一件事,但这件事在任何一个时间点上只能有一个节点在做,如果多个节点同时做的话,可能造成数据不一致。具体实现算法如下:(1)客户端调用createNode方法在locker下创建临时顺序节点,然后调用getChildren(“locker”)来获取locker下面的所有子节点。(2)客户端获取到所有的子节点path之后...原创 2020-04-02 13:57:18 · 104 阅读 · 0 评论 -
21 跨域及远程调用
问题解释一下跨域及远程调用技术答案跨域特指前端页面调用后端api,即前端页面在一个服务器,后端api在另外一个服务器,是浏览器安全保护行为,与后端没有关系。一般在前后端分离的项目中要解决跨域问题。结局跨域一般有以下几种方式:(1)ajax+jsonp(2)proxytable(3)@CrossOrigin(4)nginx代理(5)response.setHeader(“Acces...原创 2020-04-01 11:59:20 · 260 阅读 · 0 评论 -
20 数据结构
问题数据结构是什么答案程序就是数据结构加算法,好的数据结构,能让算法优雅高效,能让程序健壮稳定。数据结构是相互之间存在一种或多种特定关系的数据元素的集合,即数据及数据的组织形式。常见的数据结构有以下几种:数组(Array)数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。数组可以说是最基本的数据结构,在各种编程语言中都有对应。一个数组可以分解为多个数组元素,按...原创 2020-03-31 22:41:20 · 106 阅读 · 0 评论 -
19 单点登录
问题什么是单点登录答案在分布式项目中,为了提升用户体验,希望用户只登录一次,便能在多个子系统之间进行无缝切换。例如登录了淘宝以后,就可以以同样的身份进入天猫而无需再次登录。这就是单点登录要实现的功能。保存用户信息的session隶属于具体的服务器,即便tomcat提供了一个session共享特性,但那是为了集群而非分布式。也正因为session隶属于具体的服务器,所以依靠session就不...原创 2020-03-31 22:07:50 · 151 阅读 · 0 评论 -
18 IO
问题介绍一下java中的IO答案冯诺依曼体系结构约束了计算机要包括存储设备、控制器、运算器、输入设备和输出设备等五大部分。java中的IO指的是在数据在内存、硬盘和输入设备输出设备之间的流转。I(Input)多只硬盘数据读到内存;O(Output)多指内存数据写到硬盘。java中的IO相关的类或者接口包括:File: 映射文件系统InputStream:字节输入流OutputStr...原创 2020-03-31 21:13:03 · 143 阅读 · 0 评论 -
17 算法复杂度
问题解释一下算法复杂度答案算法一般包括以下衡量指标:正确性、可读性、健壮性、良好的时空效率,其中的时空效率就是对算法复杂度的衡量。算法的效率一般由以下因素决定:(1)算法采用何种策略,排序算法中快速排序就快于冒泡排序(2)问题的规模,寻找10以内的质数显然快于寻找1000以内的质数(3)书写程序的语言,汇编语言的效率显然高于java(4)编译程序产生的机器代码的质量,机器代码质量...原创 2020-03-31 17:55:25 · 158 阅读 · 0 评论 -
16 ACID、CAP、BASE以及分布式事务
问题介绍一下ACID、CAP、BASE以及分布式事务答案*事务,是指一串操作序列,要么全部执行完毕,要么一句也不执行;在执行过程中有一句出现错误则前面所有已经执行的语句的结果必须撤销,多见于数据库,也在业务逻辑中保证数据一致性的时候用到。单机系统的事务一般有数据库本身保证。事务的四大特性(ACID)原子性(Atomicity)事务是一个不可分割的单位,事务中的所有SQL等操作要么都...原创 2020-03-31 16:56:25 · 176 阅读 · 0 评论 -
15 网络七层协议
问题简述网络七层协议答案网络七层协议从下到上依次为:物理层:该层是网络通信的数据传输介质,由连接不同结点的电缆与设备共同构成,利用传输介质为数据链路层提供物理连接,负责处理数据传输并监控数据出错率,以便数据流的透明传输。数据链路层:在物理层提供的服务基础上,在通信的实体间建立数据链路连接,传输以“帧”为单位的数据包,并采用差错控制与流量控制方法,使有差错的物理线路变成无差错的数据...原创 2020-03-31 16:02:38 · 257 阅读 · 0 评论 -
14 nginx
问题nginx的作用是什么答案nginx与apache类似是一个web服务器,比apache更轻,并发更高。nginx包括正向代理,反向代理,负载均衡以及动静分离。正向代理,客户端和代理服务器同属于一个网络,服务器只认识代理服务器,真实客户端信息被屏蔽,正向代理代理客户端。例如软件公司不能连网,但是大家在公司可以通过代理服务器上网。借用一个图形容正向代理如下:反向代理,代...原创 2020-03-31 15:14:56 · 116 阅读 · 0 评论 -
13 activemq
问题activemq的作用是什么答案activemq是apache提供的性能强劲的消息队列,类似的技术还有rabbitmq, zeromq,kafka等。消息队列是典型的的生产者消费者的实现,非常完美的解决了生产者消费者速度不一致的问题,也将一个JVM中的多线程升级到了不同服务去代替。解决了生产者消费者速度不一致的问题体现在假设生产者[请求]每秒钟有100次请求,作为消费者[响应]最好能...原创 2020-03-31 12:10:28 · 89 阅读 · 0 评论 -
12 solr
问题solr的作用是什么答案solr是一个检索和搜索引擎,以lucence为基础,基于倒排索引,完成文档的索引建立和内容搜索,典型的以空间换时间。先解释正排索引,它是以文档的ID为关键字,表中记录文档中每个字的位置信息,查找时扫描表中每个文档中字的信息直到找出所有包含查询关键字的文档。“文档1”的ID > 单词1:出现次数,出现位置列表;单词2:出现次数,出现位置列表;单词n:...原创 2020-03-30 22:41:14 · 89 阅读 · 0 评论 -
11 redis
问题redis的作用是什么答案redis是一款开源的、高性能的键-值存储,支持字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等数据类型。虽说Redis是一种内存数据库,但同时也支持数据的持久化。redis有两种固化方式:RDB(Redis DataBase)和AOF(Apend Only File) 。rdb即快...原创 2020-03-30 20:20:42 · 120 阅读 · 0 评论 -
10 技术架构
问题常见的项目技术架构有哪些答案C架构即Client,不用联网也可以使用,例如WPS、单机游戏。C/S架构即Client/Server架构,必须联网,例如QQ、微信等。C/S的优势在于界面流畅,更易使用本地资源;劣势在于版本更新代价大,通常需要同时维护多个版本。B/S架构即Browser/Server架构,必须联网,例如淘宝、京东。B/S的优势在于版本更新极其方便;劣势在于本地使...原创 2020-03-30 17:47:12 · 362 阅读 · 0 评论 -
09 springmvc的工作流程
问题叙述一下springmvc的工作流程答案首先介绍几个概念:前端控制器:即DispatcherServlet,用以接收前端请求,转发到对应的api处理器映射器:顾名思义,映射找寻对应API处理器适配器:调用映射找寻到的API处理器:即后端控制器,程序员提供的API实现视图解析器:顾名思义,寻址渲染显示视图之用一个前端请求发送到后台再响应到前端一般会经过以下步骤:1 用户发送...原创 2020-03-30 17:46:46 · 104 阅读 · 0 评论 -
08 线程池
问题线程池的作用是什么答案如果没有线程池,用户的每一个请求都会经历申请资源创建线程,执行线程,释放资源销毁线程这个过程,很多时间浪费在创建和销毁这两件事情上。如果用户请求时线程已经存在,用户使用线程结束也不用去考虑如何销毁,由于减少了每个任务调用的开销,它们通常可以在执行大量异步任务时提供增强的性能,并且还可以提供绑定和管理资源的方法。线程池中的线程可以多次重用,这与数据库连接池是相同的逻辑...原创 2020-03-30 17:46:03 · 90 阅读 · 0 评论 -
07 容器
问题spring中相关的容器有哪些答案容器,顾名思义,就是用来存放东西的;java容器包括spring中的容器都是用来存放对象的,而这些对象的功能便提供了相关容器的特性。Servlet容器:Servlet 容器是 Web 服务器的一部分,用于提供基于请求/响应发送模式的网络服务,解码基于 MIME 的请求,并且格式化基于 MIME 的响应。总之,Servlet容器是用来管理Servle...原创 2020-03-30 17:45:33 · 94 阅读 · 0 评论 -
06 线程死锁
问题什么是线程死锁答案举一个很形象的例子,有两扇门D1、D2,两把锁 S1、S2,每把锁有一个钥匙 K1、K2,按如下方式操作:把K2放到D1,用S1锁上D1;把K1放到D2,用S2锁上D2。这时候,要进D1,就得用K1打开S1,但是S1在D2,要打开D2,但是S2在D1,两边都进行不下去,处于阻塞状态。这时候,除非有外力打破这种状态,要不然会一直持续下去。这就是死锁。操作系统中对死锁的定...原创 2020-03-30 14:15:50 · 78 阅读 · 0 评论 -
05 线程通信
问题java中的线程通信机制有哪些答案线程同步也是线程通信的一种,例如这个线程修改了某个数据,另一个线程读取了修改后的数据,这本质上就是通信。Object类提供的wait(), notify(),notifyAll()是我们通常讲得线程通信,它们被引入的意义在于由轮询侦听变为事件触发。例如以下的代码:import java.util.Arrays;import java.util.Com...原创 2020-03-30 11:46:36 · 110 阅读 · 0 评论 -
04 线程同步
问题java中的线程同步机制是什么答案线程源自进程,是独立运行的基本单位,如果两个线程对同一个资源同时读写,那么这个资源就成了竞争性资源,此时必须提供同步机制,否则就会造成错误和混乱。例如,一个银行账号上有1000块钱,妻子在手机银行上消费了500块钱,丈夫在ATM机上取了500块钱,极有可能该银行账户上还有500块钱,实际上应该是0,如何避免这种情况,这就是线程同步机制解决的问题。java...原创 2020-03-29 22:23:54 · 78 阅读 · 0 评论 -
03 mysql数据库调优
问题数据库调优的方式有哪些?答案无论何种数据库,数据都是存储在硬盘,硬盘的读写效率是数据库存取速度的第一决定性因素,例如固态硬盘和机械硬盘的速度便有显著的不同。在基础物理存储介质确定的情况下,数据库本身的设计变成了决定性因素,我们继续缩小数据库范围到mysql去进行讨论。总的原则是选择那些执行速度快的语句或者进行空间和时间的适当交换,具体的在程序员层面我们可以采取的步骤有:使用InnoD...原创 2020-03-29 19:43:06 · 136 阅读 · 0 评论 -
02 java中的solid原则
问题java中的solid原则是什么答案Single Responsibility Principle:单一职责原则一个方法只做一件事情只有一个职责,一个类只做一组相关的事情、承担相近的职责。如果方法做了多个事情,当别人想使用这个方法中的第一个事情时,其他事情也不得不发生,如此一来就得拆分这个方法。如果这个方法在定义的时候就做一件事情,那么就不会被拆分,维护起来也方便好多,对于类也有这种...原创 2020-03-26 21:36:38 · 186 阅读 · 0 评论 -
01 JVM的内存机制
问题:JVM的内存机制是什么答案:JVM中的内存分为五个部分:(1)方法区:存储加载的class字节码,通过该区域我们能寻址到类中的方法的入口。除此之外,方法区还包括运行时常量区和静态常量区。这个区域是所有线程共享的。(2)堆:存储new出来的对象,垃圾回收器主要监控和回收的就是这块区域。在堆里面不断创建对象但是垃圾回收器不回收,就有可能造成OutOfMemoryError错误。这个区域...原创 2020-03-24 22:01:20 · 122 阅读 · 0 评论