Java 面试知识汇总
文章平均质量分 89
java面试知识汇总
攻城狮不是猫
公众号:攻城狮不是猫,分享各种编程语言、开发技术、分布式与微服务架构、分布式数据库、分布式事务、 云原生、大数据与云计算技术和渗透技术。另外,还会分字各种视频资源,面试题和面试技巧。
展开
-
java 面试题
JVM的类加载机制是什么?有哪些实现方式?类加载机制:类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法去内,然后在堆区创建一个java.lang.Class对象,用来封装在方法区内的数据结构。类的加载最终是在堆区内的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。类原创 2018-01-29 11:26:45 · 222 阅读 · 1 评论 -
Redis常见面试题
Redis 是一个使用 C 语言写成的,开源的基于内存的高性能key-value数据库。Redis的值可以是由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)等多种数据结构组成。回到顶部。原创 2024-03-02 09:02:20 · 706 阅读 · 0 评论 -
最近5年183个Java面试问题列表及答案[最全]
Java 面试随着时间的改变而改变。在过去的日子里,当你知道 String 和 StringBuilder 的区别(String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象。因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 Stri...转载 2019-04-30 16:02:16 · 730 阅读 · 0 评论 -
这些年背过的面试题——JVM篇
我使用 jmap 命令,导出了一份线上堆栈,然后使用 MAT 进行分析,通过对 GC Roots 的分析,发现了一个非常大的 HashMap 对象,这个原本是其他同事做缓存用的,但是做了一个无界缓存,没有设置超时时间或者 LRU 策略,在使用上又没有重写key类对象的hashcode和equals方法,对象无法取出也直接造成了堆内存占用一直上升,后来,将这个缓存改成 guava 的 Cache,并设置了弱引用,故障就消失了。第三,由于缓存的使用,有大量的弱引用,拿一次长达 10 秒的 GC 来说。原创 2024-04-09 17:07:05 · 1189 阅读 · 0 评论 -
Nginx 面试经典40问
Nginx是一个 轻量级/高性能的反向代理Web服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。他实现非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发,现在中国使用nginx网站用户有很多,例如:新浪、网易、 腾讯等。一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。原创 2024-03-14 11:40:30 · 2270 阅读 · 0 评论 -
面试中单例模式有几种写法?
上面的分析都忽略了反射和序列化的问题。通过反射或序列化,我们仍然能够访问到私有构造器,创建新的实例破坏单例模式。此时,只有枚举模式能天然防范这一问题。反射和序列化猴子还不太了解,但基本原理并不难,可以在其他模式上手动实现。实现方式关键点资源浪费线程安全多线程环境的性能足够优化基础饱汉懒加载否否饱汉变种1懒加载、同步否是否饱汉变种2懒加载、DCL否否饱汉变种3懒加载、DCL、volatile否是是饿汉静态变量初始化是是是Holder。原创 2024-02-29 10:44:14 · 690 阅读 · 0 评论 -
50道Java线程面试题
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用什么方式...原创 2018-02-23 17:28:07 · 181 阅读 · 0 评论 -
Zookeeper面试题
数据发布/订阅系统,即所谓的配置中心,顾名思义就是发布者发布数据供订阅者进行数据订阅。原创 2024-03-01 09:53:52 · 843 阅读 · 0 评论 -
Java 开发面试题精选:Kafka 一篇全搞定
在Java开发工程师面试中,特别是涉及到Apache Kafka的部分,面试官可能会从基础知识、架构理解、实际应用、故障排查和性能优化等多个维度来考察您的能力。原创 2024-06-11 11:53:10 · 463 阅读 · 0 评论 -
Java 开发面试题精选:Mysql 一篇全搞定
在高级Java开发工程师的面试中,MySQL作为常见的数据库技术,其掌握程度往往是评估候选人综合能力的重要组成部分。在这篇文章中,我精选了一些最可能被问到的与MySQL相关的面试题目,这些题目可以全面考察候选人的理论知识、实战经验和问题解决能力,不管你是准备求职的小伙伴,还是一名面试官,相信都能从这篇文章获取一些经验。原创 2024-06-11 11:54:36 · 958 阅读 · 0 评论 -
Java 开发面试题精选:分布式锁相关一篇全搞定
例如,两个进程试图通过通信来协调它们的行为,每个进程都基于对方的行为来决定自己的下一步操作,结果可能因为同步策略不当,双方都在不停改变状态以适应对方,但实际上没有一方能够完成自己的任务。实现方式:此场景下,使用Redis作为分布式锁服务是较为常见的做法,因为它能提供快速的锁获取与释放操作,并且支持设置锁的自动过期功能,以防锁因为某些原因未被正确释放而造成死锁。解决方案:使用分布式锁,在更新配置时锁定配置项,确保所有服务实例在配置更新完成并解锁前看到的是旧配置,更新后看到的是新配置,从而维护配置的一致性。原创 2024-06-07 10:00:44 · 476 阅读 · 0 评论 -
Java 开发面试题精选:分布式事务一篇全搞定
总的来说,Seata 的工作原理是通过 TM 和 TC 来协调事务的执行和提交,通过 RM 来管理事务涉及的资源。总的来说,ACID 特性的本质是通过原子性、一致性、隔离性和持久性来确保事务处理的可靠性和完整性,从而保证数据的一致性和系统的稳定性,这些特性是关系型数据库管理系统(RDBMS)中事务处理的基础。需要注意的是ACID描述是单机事务场景下的事务特性,如果是在分布式场景,那么就超出了单机事务的处理范畴,需要引入分布式事务的处理机制来解决这个问题,事实上单机事务也是分布式事务的基础。原创 2024-06-07 09:59:38 · 727 阅读 · 0 评论 -
【JAVA面试题解惑系列】类的初始化顺序
类的初始化顺序大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的 关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某 种运算,另外还有一些将变量值输出到控制台的代码,然后让我们判断输出的结果。这实际 上是在考查我们对于继承情况下类的初始化顺序的了解。对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证.转载 2020-08-13 15:45:50 · 295 阅读 · 0 评论 -
【java面经】HashMap?面试?我是谁?我在哪
1、为什么用HashMap? 2、HashMap的工作原理是什么? 3、有什么方法可以减少碰撞? 4、HashMap中hash函数怎么是是实现的? 5、拉链法导致的链表过深问题为什么不用二叉查找树代替,而选择红黑树?为什么不一直使用红黑树? 6、说说你对红黑树的见解? 7、解决hash 碰撞还有那些办法? 8、如果HashM...转载 2019-03-09 22:28:06 · 1730 阅读 · 0 评论