
Java面经
文章平均质量分 72
面试题整理
独自破碎E
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
赛迪信息面试题整理
wait()是Object类的成员方法,在让线程进入等待状态的同时,会释放线程已经持有的锁,需要被其他线程调用notify()或notifyAll()方法唤醒,并且wait()方法必须在同步代码块中使用。但是,一致性哈希可能存在数据倾斜的问题,即服务器在hash环上分布不均匀,为了解决这个问题,可以引入虚拟节点的概念,为每个服务器创建多个虚拟节点,让这些虚拟节点更均匀地分布在hash环上。sleep()是Thread类的静态方法,在让线程休眠的同时,不会释放任何已经持有的锁,时间到自动唤醒。原创 2025-02-15 16:51:24 · 441 阅读 · 0 评论 -
南京某企业面试题整理
substring(int beginIndex)截取字符串的一部分,concat(String str)将指定的字符串连接到该字符串的末尾,trim()去除字符串两端的空白字符,toUpperCase()和toLowerCase()转换大小写,split(String regex)分割字符串。:equals(Object obj)比较两个字符串的内容是否相同,区分大小写,equalsIgnoreCase(String anotherString)比较两个字符串的内容是否相同,忽略大小写。原创 2025-02-14 17:57:43 · 449 阅读 · 0 评论 -
【6】阿里面试题整理
IoC,即控制反转,是一种设计思想,它将对象之间的依赖关系的控制权从对象自身转移到外部容器。AOF适合用于数据安全性要求高的场景,例如,金融系统的缓存层,需要保证数据的完整性和可靠性。RDB的优点是文件紧凑、恢复速度快、对性能影响小,缺点是存在数据丢失的风险。VisualVM是一个功能更强大的工具,不仅包含了JConsole的所有功能,还提供了性能分析器,可以分析CPU和内存的使用情况,帮助定位性能瓶颈。CMS适用于对停顿时间敏感,CPU资源充足的应用,而G1适用于大堆内存,对停顿时间有要求的应用。原创 2025-02-14 12:39:27 · 650 阅读 · 0 评论 -
【5】阿里面试题整理
ZooKeeper是一个开源的分布式协调服务,核心功能是通过树形数据模型(ZNode)和Watch机制,解决分布式系统的一致性问题。它使用ZAB协议保障数据一致性,典型场景包括分布式锁、配置管理和服务注册发现、集群管理等。ZooKeeper通常以集群的方式部署,由多个ZooKeeper服务器组成。集群中有一个领导者服务器,负责处理客户端的写请求,并将数据同步到其他服务器;其他服务器是追随者,负责处理客户端的读请求。原创 2025-02-09 21:21:40 · 386 阅读 · 0 评论 -
【1】快手面试题整理
Minor GC会把Eden区和From Survivor区中存活的对象复制到To Survivor区,同时存活对象的年龄会加1。之后清空Eden区和From Survivor区,然后From Survivor和To Survivor的角色会互换。空间不足、或者新生代GC后存活的对象需要晋升到老年代但老年代空间不足,或者方法区空间不足时,会触发老年代GC(也叫Major GC或者Full GC)。首先是幂等消费,确保消息被多次消费与只消费一次的效果是一样的,例如可以通过数据库的唯一索引或者状态检查实现。原创 2025-02-03 16:57:57 · 598 阅读 · 0 评论 -
【4】阿里面试题整理
数据库死锁是指两个或多个事务,由于互相请求对方持有的资源而造成的互相等待的状态,导致它们都无法继续执行。死锁会导致事务阻塞,系统性能下降甚至应用崩溃。比如:事务T1持有资源R1并等待R2,事务T2持有R2并等待R1,这就形成了一个循环等待,导致死锁。原创 2025-02-02 18:43:08 · 1326 阅读 · 0 评论 -
【3】阿里面试题整理
扩容的时候,HashMap会创建一个新的数组,容量是原数组的2倍,然后把原数组中的元素重新计算hash值,并根据新的数组容量重新分配到新的数组中。方面,最常用的是旁路缓存模式,即先查缓存,缓存没有再查数据库,并且把数据写入缓存,更新数据的时候,先更新数据库,然后删除缓存。的操作,会导致HashMap的性能下降,所以,如果在预知存储的数据量比较大的情况下,最好在初始化的时候设置一个合理的容量,,每次插入、更新或者删除数据的时候都需要更新索引,创建过多的索引会增加数据库的负担。原创 2025-02-01 20:23:10 · 648 阅读 · 0 评论 -
【2】阿里面试题整理
则关注的是整个网络环境。如果浏览器缓存未命中,操作系统会检查自身的DNS缓存,如果操作系统缓存也未命中,操作系统会向配置的本地DNS服务器发起查询。超时重传是最基本的机制,发送端发送数据包后启动定时器,如果在定时器超时前没有收到接收端的确认,则重传数据包。与GET不同,POST请求通常不会被缓存,且不具备幂等性,多次发送相同的POST请求,可能会对服务器产生不同的影响。另外,GET请求通常会被浏览器缓存,以便下次快速访问,具有幂等性,即多次发送相同的GET请求,结果应该是一样的,不会对服务器产生副作用。原创 2025-01-30 20:14:53 · 1171 阅读 · 0 评论 -
【1】阿里面试题整理
在JDK 8之前,如果索引位置已经有元素,新的Node节点会以链表的形式插入到该位置的末尾。如果超过了,就会触发扩容操作,创建一个新的、容量更大的数组,并将旧数组中的所有元素重新散列到新数组中。MyBatis Plus还提供了通用的Service接口,添加了一些业务方法,可实现基本的业务逻辑,而无需手动编写业务代码。副本机制是Kafka确保数据一致性的基础,使用ISR(In-Sync Replica)机制来处理副本之间的同步,将消息持久化到硬盘中,以确保消息在发生故障时不会丢失。原创 2025-01-27 20:59:25 · 497 阅读 · 0 评论 -
Java 面经之 Kafka
包含了OSI七层模型中的数据链路层和物理层,是TCP/IP协议的最底层,通过网络媒介传输数据,负责网络接口与硬件设备之间的联系。将OSI七层模型中的应用层、表示层、会话层合并在了一起,是TCP/IP体系结构的顶层,负责提供网络服务和应用程序之间的接口。负责为分组交换网上的不同主机提供通信服务,将数据从源主机传输到目标主机,通过路由器实现不同网络之间的通信。,Kafka的集群数量主要是看生产者端消息的峰值生产速度,确保集群具有一定的冗余能力以应对单点故障。Kafka的集群数量通常需要按照实际业务需求来确定。原创 2024-12-16 19:51:39 · 502 阅读 · 0 评论 -
Java面经之MySQL
可以保证数据的一致性,而Redis是单节点的,不支持分布式事务,在并发访问时可能会出现数据不一致的情况。指的是事务中的所有操作要么全部执行成功并且对数据库产生了影响,要么全部失败回滚,并且对数据库没有任何影响。是指事务执行过程中涉及的操作结果必须满足数据库的约束和规则,保证数据库的完整性没有被破坏。是指一个事务一旦被提交,在数据库中的改变就是永久的,即使系统崩溃,这些改变也不会丢失。是指在并发场景中,事务之间是相互隔离、互相独立的,一个事务的执行不受其他事务的影响。,具有完整的结构和功能,可以进行。原创 2024-12-07 22:00:58 · 348 阅读 · 0 评论 -
【1】北森云计算面试题整理
最短路径问题是指求解从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小路径问题。分为单源最短路径和任意两点之间的最短路径问题。单源最短路径问题是求图中某一顶点到其他顶点的最短路径,任意两点之间的最短路径问题是求图中每一对结点间最短路径。原创 2024-11-09 11:33:42 · 1504 阅读 · 0 评论 -
【3】北森云计算面试题整理——设计模式
工厂模式是一种设计模式。通过定义一个创建对象的,让去决定实例化哪一个工厂类,使类的实例化过程延迟到子类进行。和。原创 2024-11-12 21:03:25 · 760 阅读 · 0 评论 -
Java面经之JVM
JVM内存模型指的是运行时数据区。主要分为堆(Heap)、虚拟机栈本地方法栈方法区程序计数器(Program Counter Register)这五个部分。虚拟机栈、本地方法栈、程序计数器为线程私有,堆和方法区为线程共享区。堆是各个线程共享的内存区域,在虚拟机启动时创建。几乎所有的对象实例都在这里分配内存。方法区也是各个线程共享的内存区域,用于存储已被虚拟机加载的类信息、常量、静态变量等数据。程序计数器用于记录下一条JVM指令的执行地址,字节码解释器。原创 2024-11-27 20:43:42 · 532 阅读 · 0 评论 -
Java 面经之 Spring
DispatcherServlet收到请求后会调用处理器映射器(HandlerMapping),根据请求的URL找到对应的处理器(Handler),生成Handler对象以及处理器拦截器(HandlerIntercepter)一并返回给DispatcherServlet。,主要用于处理Web层的请求和响应,构建传统的Web应用程序。,其中应用程序被分解为小型、自治的服务单元,每一个服务单元也都是一个微服务,具有独立的功能和责任,可以独立开发、测试、部署和扩展,并能使用轻量级通信机制相互通信。原创 2024-12-02 22:07:36 · 1383 阅读 · 0 评论 -
Java 面经 - HashMap
当线程T1和线程T2都准备对HashMap进行扩容操作,此时T1和T2都指向链表的头节点A,且T1和T2的下一个节点分别是T1.next和T2.next,都指向B节点。接下来开始扩容,这时,假设线程T2的时间片用完,进入了休眠状态,此时,线程T1开始执行扩容操作,线程T1执行完成之后,如果需要删除的节点有两个子节点,找到该节点的中序遍历后继节点,将其值复制到需要删除的节点中,然后删除后继节点。首先访问树的根节点,然后访问根节点的所有子节点,再访问子节点的子节点,依此类推。适用于生产者-消费者模型。原创 2024-11-25 19:35:48 · 499 阅读 · 0 评论 -
字节跳动抖音直播面试题整理 1
面向对象编程(Object-Oriented Programming, OOP),主要基于“对象”的概念,将现实世界的事物抽象为对象,每个对象都有自己的属性和行为。面向对象的三个重要的特征分别是:封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。继承:可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。多态。原创 2024-11-03 21:32:11 · 439 阅读 · 0 评论 -
【1】猫眼娱乐后端开发面试题整理
锁升级的意义在于提高多线程环境下的性能和吞吐量,减少同步操作的开销,并尽量避免线程切换的开销。锁升级是Java中synchronized关键字实现同步机制时,锁状态随着竞争情况逐渐升级的一个过程。synchronized锁有四种状态,级别从低到高依次是:无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态。当第一个线程访问同步块并获取锁时,锁从无锁状态升级为偏向锁。当第二个线程尝试获取同一个锁时,如果发现该锁已经是偏向锁,并且偏向的线程仍然存活,则JVM会将锁升级为轻量级锁。原创 2024-11-17 17:23:06 · 1038 阅读 · 0 评论 -
【1】流利说面经整理
CAP理论是指在分布式系统设计中,没有一种设计可以同时满足(一致性)、(可用性)、(分区容错性)3个特性,最多只能同时满足三个特性中的两个。一致性强调的是所有节点在同一时刻看到的数据必须是相同的;可用性强调的是系统能够持续正常运行并对外提供服务;分区容错性强调的是系统中任意信息的丢失或失败不会影响系统的继续运作。原创 2024-11-19 22:12:17 · 511 阅读 · 0 评论 -
字节跳动抖音直播面试题整理3
QUIC,即快速UDP网络连接 (Quick UDP Internet Connections ),主要是为了解决TCP协议在HTTP2.0中存在的连接建立时间长、队头阻塞、移动网络切换时连接不稳定等问题,并利用UDP协议无连接、数据无序、协议简单,修改成本低的优势。来看,快速排序通过选择一个“枢轴”元素,将数组分成两部分,一部分包含所有小于枢轴的元素,另一部分包含所有大于枢轴的元素,如果每次选择的枢轴都能将数组均匀分成两半,即每次分区后枢轴都刚好落在子数组的中间,这个时候最快。原创 2024-11-06 16:01:23 · 540 阅读 · 0 评论 -
【长园深瑞继保面试题整理】
依赖注入(Dependency Injection)是指类之间的依赖关系由容器来负责。比如说a依赖b,但a不创建(或销毁)b,仅使用b,b的创建(或销毁)交给容器。原创 2024-10-30 21:39:26 · 356 阅读 · 3 评论 -
【2】北森云计算面试题整理
资源不能被多个线程同时访问。如果一个资源被一个线程占用,其他线程必须等待直到该资源被释放。:一个线程已经持有至少一个资源,同时请求获得当前正被另一个线程所拥有的其他资源。:线程已获得的资源在末使用完之前不能被其他线程强行剥夺,只有自己使用完毕后才释放资源。:多个线程形成了一个循环等待链,每个线程都在等待下一个线程所占有的资源,导致所有线程都无法继续执行。原创 2024-11-11 19:34:10 · 1361 阅读 · 0 评论 -
字节跳动抖音直播面试题整理2
客户端请求断开连接后,服务端可能还存在没有传输完的数据,因此需要等待所有数据发送完毕再请求断开,也就是服务端的ACK和FIN报文是分两次发送的。:通过锁定缓存行,当某个CPU对缓存行中的共享变量进行修改时,其他CPU会通过总线嗅探机制感知到变化,并使自己对应的缓存行失效,从内存重新读取最新数据。同一进程的线程共享本进程的内存空间和资源,而进程之间的内存空间和资源是相互独立的,因此线程之间的切换开销要小于进程。当发送方收到接收方的ACK确认,窗口就会向前滑动,允许发送方继续发送新的数据包。原创 2024-11-04 20:29:45 · 619 阅读 · 0 评论 -
【2】猫眼娱乐后端开发面试题整理
在Java中,存在一个存储字符串对象的特殊内存区域字符串常量池。当创建一个字符串时,如果该字符串已经存在于字符串常量池中,直接返回这个字符串的引用;如果不存在,将该字符串添加到字符串常量池中,并返回新创建的字符串的引用。String类内部使用一个final修饰的字符数组来存储字符序列。final关键字确保了该数组在String对象生命周期内不会被重新赋值。主要还是String的不可变性,一旦String对象被创建,其内部的字符序列就不能被改变。原创 2024-11-17 17:25:34 · 1443 阅读 · 0 评论 -
Java面经之【多线程】
死锁是指两个或多个事务在相互等待对方释放锁资源,从而导致彼此永远等待下去的情况。乐观锁假设多个事务之间不会发生冲突,因此在不进行锁定的情况下进行数据修改,在数据进行提交更新的时候,才会对数据的冲突与否进行检测。通常通过版本号(version)或时间戳(timestamp)字段来实现。适合读操作多的场景。悲观锁假设多个事务之间往往会发生冲突,因此在数据访问之前先对数据进行锁定,以防止其他事务对数据进行修改。适合写操作多的场景。指令重排序是一种对程序中的指令执行顺序进行调整的优化技术。原创 2024-11-23 21:32:29 · 746 阅读 · 0 评论 -
【广和通面试题整理】
Error是错误,如系统崩溃、虚拟机错误、动态链接失败等,应用程序无法处理,最终会导致应用程序中断。其中整数类型有byte,short,int,long四个,浮点类型有float、double两个,字符类型为char,布尔类型为boolean。在Java中,不再使用的对象一般由垃圾收集器GC自动清理,但是,有时候一些不再使用的对象,在GC看来不能被释放,就会造成内存泄露。,==运算符比较的是对象的引用是否相等,而equals()方法比较的是对象的值是否相等。是否相等,作用于引用数据类型时,比较的是。原创 2024-10-31 20:20:19 · 304 阅读 · 0 评论 -
【字节跳动面试题整理1】
输入URL后,首先进行DNS解析得到IP地址;浏览器根据 IP 地址与服务器进行连接;浏览器向服务器发送 HTTP 请求,接收响应;浏览器解析响应数据,并渲染页面;DNS(Domain Name System,域名系统)是互联网上用于将域名和IP地址相互映射的一个分布式数据库系统。它允许用户通过易于记忆的域名来访问互联网上的资源,而不需要记住复杂的IP地址。DNS 协议是一种应用层协议,主要运行在UDP(用户数据报协议)的53号端口上,但也可以通过TCP(传输控制协议)的53号端口进行。原创 2024-11-02 10:18:34 · 486 阅读 · 0 评论