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