
Java面试题锦集
Java面试题锦集
Coder_by
用技术提升美好事物发生的概率。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java IO
一、概览二、磁盘操作三、字节操作实现文件复制装饰者模式四、字符操作编码与解码String 的编码方式Reader 与 Writer实现逐行输出文本文件的内容五、对象操作序列化Serializabletransient六、网络操作InetAddressURLSocketsDatagram七、NIO流与块通道与缓冲区缓冲区状态变量文件 NIO 实例选择器套接字 NIO 实例内存映射文件对比八、参考资料一、概览Jav..原创 2020-07-06 00:10:53 · 116 阅读 · 0 评论 -
Java 容器
一、概览CollectionMap二、容器中的设计模式迭代器模式适配器模式三、源码分析ArrayListVectorCopyOnWriteArrayListLinkedListHashMapConcurrentHashMapLinkedHashMapWeakHashMap参考资料一、概览容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。Collection..原创 2020-07-06 00:07:12 · 137 阅读 · 0 评论 -
Java 基础
一、数据类型基本类型包装类型缓存池二、String概览不可变的好处String, StringBuffer and StringBuilderString Poolnew String(“abc”)三、运算参数传递float 与 double隐式类型转换switch四、继承访问权限抽象类与接口super重写与重载五、Object 通用方法概览equals()hashCode()toString()clone()六、关键字..原创 2020-07-06 00:03:25 · 174 阅读 · 0 评论 -
Java 虚拟机
一、运行时数据区域程序计数器Java 虚拟机栈本地方法栈堆方法区运行时常量池直接内存二、垃圾收集判断一个对象是否可被回收引用类型垃圾收集算法垃圾收集器三、内存分配与回收策略Minor GC 和 Full GC内存分配策略Full GC 的触发条件四、类加载机制类的生命周期类加载过程类初始化时机类与类加载器类加载器分类双亲委派模型自定义类加载器实现参考资料一、运行时数据区域程序计数器记录正在执行的虚拟机字节码指令的地址(..原创 2020-07-05 12:37:53 · 130 阅读 · 0 评论 -
Java 并发
一、线程状态转换新建(New)可运行(Runnable)阻塞(Blocked)无限期等待(Waiting)限期等待(Timed Waiting)死亡(Terminated)二、使用线程实现 Runnable 接口实现 Callable 接口继承 Thread 类实现接口 VS 继承 Thread三、基础线程机制ExecutorDaemonsleep()yield()四、中断InterruptedExceptioninterrupted()Exe..原创 2020-07-05 12:32:10 · 287 阅读 · 2 评论 -
RPC框架
参考文档:RPC框架RPC简介什么是 RPC?RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务 A、B 部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTTP请求当然可以,但是可能会比较慢而且一些优化做的并不好。 RPC 的出现就是为了解决这个问题。RPC原理服务消费方(client)调用以本地调用方式调用服务;client stu.原创 2020-06-29 15:37:51 · 206 阅读 · 0 评论 -
HTTP协议
参考文档:计算机网络基础概念URIURI 包含 URL 和 URN。请求和响应报文请求报文响应报文HTTP 方法HTTP全称为Hyper Text Transfer Protocol,中文翻译为超文本传输协议,目的是保证浏览器与服务器之间的通信。HTTP的工作方式是客户端与服务器之间的请求-应答协议。HTTP协议中定义了浏览器和服务器进行交互的不同方法,基本方法有4种,分别是GET,POST,PUT,DELETE。这四种方法可以理解为,对服务器资源的查,改,增,删。GET:从.原创 2020-06-29 15:37:16 · 613 阅读 · 0 评论 -
计算机网络
参考文档:计算机网络概述网络的网络网络把主机连接起来,而互连网(internet)是把多种不同的网络连接起来,因此互连网是网络的网络。而互联网(Internet)是全球范围的互连网。互联网服务提供商ISP互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为第一层 ISP、区域 ISP 和接入 ISP。互联网交换点.原创 2020-06-29 15:35:56 · 2921 阅读 · 0 评论 -
Java 基础
1. JDK 和 JRE 有什么区别?• JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。• JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要原创 2020-06-29 15:15:12 · 192 阅读 · 0 评论 -
java面试高频知识点
其实面多了,就会发现核心就这些,下面例举几个我认为的高频知识点。集合类组合拳(尤其是HashMap)我觉得这个已经问烂了,应该熟到条件反射的回答,提醒一下一些冷门知识:Arrays.asList有什么特点、fail-fast与fail-safe、以及hashmap的一些参数(以及为什么)、hashmap是否可以存null值,concurrenthashmap是否可以存null值等等。并发编程组合拳例如:synchronized 的锁升级、对象头、字节码层面、openJDK层面的实现(3个队列),硬原创 2020-06-27 20:10:54 · 381 阅读 · 0 评论 -
JVM
说一下 JVM 的主要组成部分?及其作用?• 类加载器(ClassLoader)• 运行时数据区(Runtime Data Area)• 执行引擎(Execution Engine)• 本地库接口(Native Interface)组件的作用: 首先通过类加载器(ClassLoader)会把 Java 代码转换成字节码,运行时数据区(Runtime Data Area)再把字节码加载到内存中,而字节码文件只是 JVM 的一套指令集规范,并不能直接交给底层操作系统去执行,因此需要特定的命令解析器执行原创 2020-06-27 00:30:19 · 276 阅读 · 0 评论 -
Redis
RedisRedis 是什么?都有哪些使用场景?Redis 是一个使用 C 语言开发的高速缓存数据库。Redis 使用场景:• 记录帖子点赞数、点击数、评论数;• 缓存近期热帖;• 缓存文章详情信息;• 记录用户会话信息。Redis 有哪些功能?• 数据缓存功能• 分布式锁的功能• 支持数据持久化• 支持事务• 支持消息队列Redis 和 memcache 有什么区别?• 存储方式不同:memcache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小;Redis 有原创 2020-06-27 00:28:59 · 308 阅读 · 0 评论 -
MySQL
MySQL数据库的三范式是什么?• 第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。• 第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。• 第三范式:任何非主属性不依赖于其它非主属性。一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此时 id 是几?• 表类型如果是 MyISAM ,那 id 就是 8。• 表类型如果是 InnoDB,那 id 就是 6。InnoDB原创 2020-06-27 00:28:04 · 317 阅读 · 11 评论 -
RabbitMQ
RabbitMQRabbitMQ 的使用场景有哪些?• 抢购活动,削峰填谷,防止系统崩塌。• 延迟信息处理,比如 10 分钟之后给下单未付款的用户发送邮件提醒。• 解耦系统,对于新增的功能可以单独写模块扩展,比如用户确认评价之后,新增了给用户返积分的功能,这个时候不用在业务代码里添加新增积分的功能,只需要把新增积分的接口订阅确认评价的消息队列即可,后面再添加任何功能只需要订阅对应的消息队列即可。RabbitMQ 有哪些重要的角色?RabbitMQ 中重要的角色有:生产者、消费者和代理:• 生产原创 2020-06-27 00:26:03 · 183 阅读 · 0 评论 -
Hibernate 和 MyBatis
Hibernate为什么要使用 hibernate?• hibernate 是对 jdbc 的封装,大大简化了数据访问层的繁琐的重复性代码。• hibernate 是一个优秀的 ORM 实现,很多程度上简化了 DAO 层的编码功能。• 可以很方便的进行数据库的移植工作。• 提供了缓存机制,是程序执行更改的高效。什么是 ORM 框架?ORM(Object Relation Mapping)对象关系映射,是把数据库中的关系数据映射成为程序中的对象。使用 ORM 的优点:提高了开发效率降低了开发成原创 2020-06-27 00:25:02 · 210 阅读 · 0 评论 -
Spring、Spring MVC、Spring Boot、Spring Cloud
为什么要使用 spring?• spring 提供 ioc 技术,容器会帮你管理依赖的对象,从而不需要自己创建和管理依赖对象了,更轻松的实现了程序的解耦。• spring 提供了事务支持,使得事务操作变的更加方便。• spring 提供了面向切片编程,这样可以更方便的处理某一类的问题。• 更方便的框架集成,spring 可以很方便的集成其他框架,比如 MyBatis、hibernate 等。解释一下什么是 aop?aop 是面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种原创 2020-06-27 00:18:27 · 129 阅读 · 0 评论 -
异常、网络和设计模式
异常throw 和 throws 的区别?• throw:是真实抛出一个异常。• throws:是声明可能会抛出一个异常。final、finally、finalize 有什么区别?• final:是修饰符,如果修饰类,此类不能被继承;如果修饰方法和变量,则表示此方法和此变量不能在被改变,只能使用。• finally:是 try{} catch{} finally{} 最后一部分,表示不论发生任何情况都会执行,finally 部分可以省略,但如果 finally 部分存在,则一定会执行 final原创 2020-06-27 00:13:39 · 141 阅读 · 0 评论 -
Java反射机制
什么是反射?反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。什么是 Java 序列化?什么情况下需要序列化?Java 序列化是为了保存各种对象在内存中的状态,并且可以把保存的对象状态再读出来。以下情况需要使用 Java 序列化:• 想把的内存中的对象状态保存到一个文件中或者数据库中时候;• 想用套接字在网络上传送对象的时候;• 想通过RMI(远原创 2020-06-27 00:04:50 · 148 阅读 · 0 评论 -
Java多线程
并行和并发有什么区别?• 并行:多个处理器或多核处理器同时处理多个任务。• 并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是同时执行。线程和进程的区别?一个程序下至少有一个进程,一个进程下至少有一个线程,一个进程下也可以有多个线程来增加程序的执行速度。守护线程是什么?守护线程是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。在 Java 中垃圾回收线程就是特殊的守护线程。创建线程有哪几种方式?创建线程有三原创 2020-06-26 23:40:20 · 104 阅读 · 0 评论 -
Java容器
Java 容器都有哪些?Java 容器分为 Collection 和 Map 两大类,其下又有很多子类,如下所示:CollectionListArrayListLinkedListVectorStackSetHashSetLinkedHashSetTreeSetMapHashMapLinkedHashMapTreeMapConcurrentHashMapHashtableCollection 和 Collections 有什么区别?Co原创 2020-06-26 23:08:16 · 225 阅读 · 0 评论