尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
面试问题总结
1.回答输出结果为什么Integer i new Integer(100); Integer j new Integer(100); System.out.println(i j); String a abc; String b a b c; System.out.println(a b); String c abcd; String d a d; System.out.println(c d);1.ij 输出false原因i和j对象虽然在常量池范围内但都通过new关键字分配新内存地址。2.ab输出true原因都是字符串常量都直接在字符串常量池中直接引用。3.cd输出false原因d是在堆内创建新字符串对象。2.String b在JVM中具体是怎么创建的在栈中创建一个b变量在字符串常量池招是否存在“abc“若找到了则直接引用没有找到在字符串常量池中创建。3.JVM中运行时数据区都包含那些部分分为线程私有和线程共享线程私有程序计数器本地方法栈虚拟机栈。线程共享元空间堆4.堆是干嘛的方法区是干嘛的虚拟机栈是干嘛的堆是用来存创建的对象数组等方法区存储字节码指令类的结构信息静态变量常量JIT编译器编译的目标对象识别的机器码。虚拟机栈存入一个个栈帧一层层方法每个栈帧保存了每个方法的局部变量操作数栈和动态链接方法出口等信息。5.讲讲堆分为那些部分每个部分都是啥堆分为新生代和老年代新生代约占1/3分为survive0和survive1和Eden区老年代约占2/3.6.讲讲垃圾收集新生代中对于Eden区域中的对象生命周期短所以垃圾收集频率高速率块未回收的进入到survive0中而在老年代中对象占用空间大生命周期长回收频率低速率慢。7.一个对象是怎么从新生代流转到老年代的新生代对象经过频繁的垃圾收集还存活达到阈值时会流转到老年代当新生代容量不够时survive0,survive1中的对象会直接流转为老年代对象。8.surviveo区域、survive1区域具体讲讲新生代中经历垃圾回收存活的对象的年龄加1并放入到surivie0中如果达到阈值则流转为老年代对象。survive1和survive0中总有一个为空。9.Java线程有那些状态各个状态是怎么流转的当线程新创建时未执行start()方法时处于New状态当线程准备执行或正在执行时处于RANNABLE状态执行join时间值wait时间值等方法时间处于计时等待状态等待时间结束处于RANABLE状态执行joinwait方法时处于等待状态需要通过notifynotifyall等方法唤醒如果存在锁竞争锁失败的线程处于阻塞状态执行ran()方法完毕进入终止状态。10.如果执行sleep方法会进入什么状态线程会进入计时等待状态休眠状态如果有锁并不会释放锁一直持有锁。11.线程同步机制了解吗了解过线程并发进行线程采用抢占模式为了使操作的资源正确通过同步锁Synchronize保证线程的同步安全也可以使用CAS和ReentrantLock保证线程同步安全。12.Lock有哪些实现有ReentrantLockReentrantLockReadWriteLock等实现类都是保证线程同步安全的13.Synchronize和ReentrantLock有什么区别分别在什么情况下使用Synchronize是一个关键字声明在方法上或在代码块中使用是隐式获取锁和释放锁用法简单不能中断不能判断状态不能设置超时仅支持非公平锁底层是通过Monitor监视器、而ReentrantLock是Lock类的实现类需要通过创建对象通过对象调用获取锁和释放锁的方法也可以trylock()非阻塞的方式显式获取和释放锁unlock()必须配合findlly 代码块使用用法复杂可以通过lockInterruptibly()中断通过trylock时间值设置超时时间支持公平锁和非公平锁底层是通过AQS实现的。14.讲讲Synchronize锁升级锁升级是从无锁-偏向锁-轻量级锁-重量级锁偏向锁是只有一个线程频繁的获取释放锁会记住这个线程不用通过锁直接比较实现如果过发现不同的线程会升级为轻量级锁线程竞争不激烈冲突小线程通过CAS的方式获取锁如果CAS长时间自旋说明冲突激烈锁会升级为重量级锁具有强烈的互斥性和排他性已独占的方式获取锁。15.讲讲CAS的原理会遇到什么问题怎么解决CAS是一种无锁化的并发管理操作执行流程是先获取内存中需要修改的值A通过计算得出B再将自己拿到的值A与内存中的值C比较如果相同则进行更新操作如果不同则进行重试或自旋操作。会出现ABA问题是CAS拿到内存中的值A10但是存在另一个线程修改内存中的值为10当前线程比较时内存中的值与自己的值相同边进行更新没有发现其他修改的线程可以通过加一个版本号解决。16.线程安全的集合类有哪些1.CopyOnWriteArrayList,使用ReentrantLock保证线程安全。2.CopyOnWriteArraySet内部是一个CopyOnWriteArrayList,所以使用ReentrantLock保证线程安全。3.ArrayBlockingQueue使用一个锁ReentrantLock保证线程安全4.LinkedBlockingQueue使用两个锁对象ReentrantLock保证线程安全。5.ConcurrentHashMap使用CASsynchronize保证线程安全在没有发生哈希冲突时使用CAS写入发生发哈希冲突使用链表头节点或红黑树的根节点作为锁对象进行局部上锁。6.Stack使用Synchronize保证线程安全。17.如果我想要一个线程安全的List应该怎么做可以使用CopyOnWriteArrayList适合读多写少的场景18.线程池了解嘛有哪些核心参数执行流程是什么线程池是一种池化技术实现了线程复用线程的并发管理避免了线程的重复创建。参数核心线程数最大线程数非核心线程的空闲时间的时间单位阻塞工作队列线程工厂拒绝策略。执行流程当线程任务进入线程池判断小于核心线程数则创建核心线程执行该线程任务若大于核心线程数小于工作队列则线程任务入队等待若大于工作队列小于最大线程数创建非核心线程执行线程任务若大于最大线程数执行拒绝策略。19.内存有限快速找到top10000怎么办使用优先队列小顶堆栈先遍历1000个数据通过for循环入队剩余元素入队元素队头元素对头元素出队遍历至数据结束得到top1000020. 数据量极大找到一个数在其中是否存在怎么做使用布隆过滤器穿件创建布隆过滤器对象把数据存入到布隆过滤器中来判断某个数字是否存在21.布隆过滤器的原理优缺点将数据通过不同的哈希法计算出不同的哈希值并在位数组中将计算出来的哈希值位置上的0改为1.优点可以高效率查询和插入数据占用内存极小缺点存在误判存入的数据不能取出原数据原生布隆过滤器不支持删除。22. 如果让你实现布隆过滤器的hash算法怎么写使用不同的种子seed和容量cap和传如数据datahash seed*cao-1data.hashcode^data.hashcode()16
RELATED

相关推荐

【Linux网络加餐】《HTTP 会话保持:Cookie 与 Session 原理及实验验证》---详解

【Linux网络加餐】《HTTP 会话保持:Cookie 与 Session 原理及实验验证》---详解

一.HTTP 会话保持1.Cookie HTTP 的特征如下:简单快捷无连接无状态HTTP 本身是无状态协议:协议层面不会保存客户端的历史访问信息,每一次 HTTP 请求都是独立的,服务器收到单次请求时,默认不知道这个请求来自哪个用户、之…

📅 2026/10/25 2:04:10
2026年毕业设计相关信息

2026年毕业设计相关信息

01 毕业设计学生信息基本信息 学生1 ### 学生2### 学生2 卓老师,想问您今年还有本科毕设名额吗? 我是自动化2023级本科生曾天怀(自34班),之前大二的时候上过您的信号与系统课,想要在您的指导下完成毕设。 在…

📅 2026/10/25 2:04:10
RE转换为NFA:Thompson算法

RE转换为NFA:Thompson算法

RE转换为NFA:Thompson算法词法分析器生成器接受RE作为输入,并将RE转换为NFA,再将NFA转换为DFA,进一步处理得到词法分析器代码。 Thompson算法思想 它是一个递归算法:考虑下面正则表达式的基本形式:前面两种…

📅 2026/10/25 1:59:10
MORE NEWS

更多资讯

📰

CentOS 7 swap交换空间配置指南:容量、创建、调优与排错

1. 先把账算明白:CentOS 7 需不需要交换空间在 CentOS 7 上加交换空间(swap)这件事,看起来只是个dd加mkswap的操作,但我在实际交付中见过太多人把它做成了“加完之后系统更卡”的结果。原因基本都不在命令敲错&#xf…

📰

SpringBoot+微信小程序开发任务打卡系统实战

1. 项目概述:SpringBoot微信小程序的任务打卡系统去年团队内部推行OKR考核时,我开发了一套任务打卡系统来解决日报周报的追踪难题。这个基于SpringBoot后端微信小程序前端的全栈项目,实现了任务创建、进度追踪、数据统计等核心功能。相比传统…

📰

SaaS多租户架构设计与实现经验分享

1. 多租户功能的核心价值与设计考量在SaaS领域摸爬滚打多年,我深刻体会到多租户架构就像一栋精装修的公寓楼——同一套基础设施服务着不同租户,但每个租户都拥有独立的门锁和私密空间。最近我们团队刚完成产品多租户功能的上线,过程中踩过的坑…

📰

开源OA系统选型指南:从原理到企业级部署实战

1. 为什么企业需要开源OA系统?在数字化办公时代,一套优秀的OA系统就像企业的中枢神经系统。我经手过数十家企业信息化建设项目,发现传统商业OA系统普遍存在三大痛点:采购成本动辄数十万、二次开发受制于厂商、界面交互反人类。而开…

📰

Spring Boot 3整合MyBatis-Plus:CRUD、分页与逻辑删除

简介:这是一份面向 Java Web 开发者的 Spring Boot 3 与 MyBatis-Plus 整合示例项目,适合正在学习框架整合、需要快速搭建数据访问层的初中级开发者参考。工程围绕依赖引入、数据源配置、实体注解、Mapper 接口、Service 与 Controller 分层展开&#xf…

📰

微信OCR工具开发:多引擎支持与性能优化实践

1. 微信OCR屏幕文字提取工具的设计理念这个工具的核心定位是解决移动端场景下的即时文字识别需求。不同于传统OCR软件需要拍照上传再处理的繁琐流程,它直接对接微信生态,实现"所见即所得"的文字抓取体验。我在实际测试中发现,其响应…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬