版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UCJava面试题及详细答案(真实面试版、无机器话术)说明:本套题目为UC浏览器/阿里大文娱日常Java后端面试高频题,偏向业务开发、基础扎实度、并发、JVM、Redis、MQ、数据库、线上问题,答案为面试口语化标准答案,适合应届生、1–3年开发面试使用。一、Java基础高频题1、说一说==和equals的区别?参考答案:==是比较两个变量的内存地址,也就是是不是同一个对象;如果是基本数据类型,比较的是数值本身。equals是对象方法,默认也是比较地址,但像String、Integer这些类都重写了,会直接比较内容值。日常开发里,字符串比对一定要用equals,避免==导致的缓存问题、空指针问题。2、String、StringBuilder、StringBuffer的区别?参考答案:String是不可变的,每次拼接都会生成新字符串,频繁拼接性能很差。StringBuilder可变、线程不安全、速度快,绝大多数业务场景优先用它。StringBuffer可变、加了锁线程安全,性能低,现在基本不用,只有老代码里能看到。实际开发:单线程拼接一律StringBuilder,多线程字符串拼接一般自己加锁或用ThreadLocal,不会用StringBuffer。3、final、finally、finalize区别?参考答案:final是修饰符:修饰变量不可改、修饰方法不可重写、修饰类不可继承。日常用来定义常量、防止篡改。finally是异常代码块:try-catch之后一定会执行,主要用来关闭流、释放资源。finalize是对象回收方法,已经基本废弃,JDK9之后不推荐使用,现在都是手动控制资源释放。4、接口和抽象类区别?参考答案:抽象类是半抽象模板,可以有构造方法、成员变量、普通方法,只能单继承。适合做通用父类、模板复用。接口是行为规范,没有构造方法、变量默认常量,支持多实现。适合做能力定义、解耦。业务开发原则:抽象类抽公共代码,接口定义行为规范。二、集合框架高频(UC必问)1、ArrayList和LinkedList区别?参考答案:ArrayList底层数组,查询快、增删慢,支持随机访问,日常业务90%场景都用它。LinkedList底层双向链表,增删快、查询慢,不支持随机访问,适合频繁插入删除的场景。开发中基本优先ArrayList,除非明确大量头尾增删才用LinkedList。2、HashMap底层原理?JDK1.8做了哪些优化?参考答案:HashMap底层是数组+链表,JDK1.8加入了红黑树。put流程:先算hash值定位数组下标,如果为空直接放;如果有值就链表追加;链表长度大于8、数组长度大于64转为红黑树,提高查询效率。JDK1.8优化:1、引入红黑树,解决链表过长查询慢的问题;2、优化hash扰动算法,减少哈希冲突;3、扩容时机、阈值计算更合理。另外HashMap线程不安全,并发扩容容易死循环、数据覆盖,多线程场景推荐ConcurrentHashMap。3、ConcurrentHashMap原理?怎么保证线程安全?参考答案:JDK1.8放弃分段锁,采用CAS+synchronized锁单个桶位。插入时如果桶位为空,用CAS无锁写入;如果桶位有数据,锁住当前链表/树的头节点,只锁当前位置,不锁整个数组,并发性能很高。同时底层也是数组+链表+红黑树,兼顾安全和性能,是现在并发存键值对的首选。三、多线程与并发(UC重点考察)1、synchronized和Lock区别?参考答案:synchronized是原生关键字,自动加锁释放,简单易用,底层偏向悲观锁,新版本JDK做了偏向锁、轻量级锁优化,性能已经很好。Lock是接口,需要手动lock、unlock,灵活性更高,可以超时锁、可中断锁、公平锁。业务简单场景用synchronized,需要精细控制并发、超时、重试的场景用ReentrantLock。2、线程池核心参数?为什么不推荐Executors?参考答案:核心参数:核心线程数、最大线程数、空闲超时时间、任务队列、拒绝策略。不推荐Executors是因为它封装的线程池参数固定,容易出问题:比如newFixedThreadPool队列无界,可能堆积大量任务导致OOM;newCachedThreadPool线程无上限,可能创建大量线程打垮服务。实际开发都是手动创建ThreadPoolExecutor,根据业务压测配置参数。3、线程池执行流程?参考答案:1、来了任务先判断当前线程数,小于核心线程数直接新建核心线程执行;2、超过核心线程数,任务进阻塞队列;3、队列满了,新建非核心线程;4、线程数达到最大值,触发拒绝策略。四、JVM面试高频1、JVM内存区域分哪几块?各自作用?参考答案:堆:存放所有对象实例,GC主要回收区域,线程共享。栈:每个线程私有,存局部变量、方法栈帧,栈内存很小、速度快。方法区:存类信息、常量、静态变量、编译代码。本地方法栈:给native方法服务。程序计数器:记录当前线程执行位置,唯一一个无OOM的区域。2、GC垃圾回收原理?CMS和G1区别?参考答案:GC主要回收堆中没有引用的对象,避免内存溢出。CMS是老年代收集器,主打低停顿,采用并发标记清除,缺点是内存碎片多、CPU占用高。G1是分区收集器,把堆分成多个区域,可预测停顿,既能兼顾吞吐量也能控制停顿时间,现在线上服务基本都用G1。3、常见OOM场景?怎么排查?参考答案:常见场景:内存泄漏、集合无限累加、静态集合持有对象、线程池堆积任务、大文件读取未流式处理。排查方式:看日志、dump堆快照,用工具分析大对象、泄漏对象,定位代码位置,优化对象回收、改流式读取、限制集合大小。五、MySQL数据库1、InnoDB和MyISAM区别?参考答案:InnoDB支持事务、行锁、外键、崩溃恢复,数据安全性高,默认引擎,业务表全部用它。MyISAM不支持事务、表锁、容易崩,但是查询快,现在基本不用,只有老静态数据表能看到。2、索引原理?B+树为什么适合做数据库索引?参考答案:B+树特点:所有数据都在叶子节点,非叶子节点只存索引键,层级少、磁盘IO少;叶子节点有序链表,范围查询、分页查询非常快。相比二叉树层级太深、哈希不支持范围查,B+树最适合数据库场景。3、什么是回表?覆盖索引?最左前缀原则?参考答案:回表:普通索引只存主键,查到主键后还要去主键索引拿完整数据,多一次IO。覆盖索引:查询字段全部在索引里,不需要回表,性能极高。最左前缀:联合索引要遵循从左到右匹配,跳过最左字段索引失效,日常写SQL必须遵守。4、事务四大特性、隔离级别?参考答案:四大特性:原子性、一致性、隔离性、持久性。四个隔离级别:读未提交、读已提交、可重复读、串行化。MySQL默认可重复读,能解决脏读、不可重复读,通过间隙锁解决大部分幻读问题。六、Redis高频题(UC业务必考)1、Redis为什么快?参考答案:1、纯内存操作,没有磁盘IO;2、单线程模型,没有线程切换开销、没有锁竞争;3、IO多路复用,高性能处理大量连接;4、数据结构设计高效,编码精简。2、缓存穿透、击穿、雪崩解决方案?参考答案:穿透:查不存在的数据,直接打数据库。解决方案:空值缓存、布隆过滤器、接口校验。击穿:热点key过期,瞬间大量请求打数据库。解决方案:互斥锁、热点key永不过期、定时刷新。雪崩:大量key同时过期,或Redis宕机。解决方案:过期时间加随机值、集群高可用、降级限流。3、Redis持久化RDB和AOF区别?参考答案:RDB定时全量快照,速度快、文件小,但可能丢数据。AOF实时记录操作日志,数据更安全,文件大、恢复慢。线上一般同时开启RDB+AOF,兼顾性能和数据安全。七、Spring/SpringBoot基础1、SpringIOC原理?参考答案:IOC就是控制反转,把对象创建、管理、依赖注入全部交给Spring容器,不再自己new对象。核心就是读取配置、扫描注解、实例化bean、依赖注入、初始化,统一管理生命周期,实现解耦。2、SpringAOP使用场景?参考答案:AOP面向切面,对方法进行增强,不改动原有业务代码。常用场景:日志记录、权限校验、事务控制、接口耗时统计、限流、缓存切面。3、SpringBoot自动配置原理?参考答案:通过启动注解开启自动配置,读取场景依赖,根据classpath存在的类自动装配对应组件,默认帮我们配好MVC、数据源、容器参数,减少大量XML和手动配置,快速开发。八、微服务&线上问题(UC真实面试)1、说说你对熔断、降级、限流的理解?参考答案:限流:限制入口流量,防止流量打垮服务。熔断:下游服务异常多、超时多,直接断开调用,快速失败,避免级联故障。降级:服务出问题时,放弃非核心业务,保底返回结果,保证核心功能可用。三者都是为了服务高可用,线上大流量项目必备。2、接口超时怎么处理?怎么优化接口性能?参考答案:超时处理:设置合理超时时间、重试机制、熔断兜底、异步解耦。性能优化:加合适索引、避免大事务、避免循环查库、Redis缓存热点数据、异步处理非实时逻辑、分页查询、减少返回字段。九、HR综合面试题(UC软实力提问)1、为什么想来UC/大文娱?参考答案:我一直比较认可UC的产品生态,工具、内容、信息流场景用户量大、流量真实,非常适合后端开发做高并发、高可用业务打磨。我希望进入大厂真实业务场景,提升自己的工程能力和线上问题处理能力,长期深耕后端开发。2、遇到复杂线上问题你怎么排查?参
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工方案论证会(3篇)
- 普陀别墅装饰施工方案(3篇)
- 2026-2027学年初中数学七年级下册(新教材)北京版(新教材)9.3 数据的表示课时精练卷
- 安全员教育教学课件
- 初中三年级数学《相似三角形的判定(二)》教案
- 安全员基础教学课件
- 流程再造怎么把大企业做小
- 安全用电演讲课件
- 吉林省普通高中友好学校联合体2025-2026学年高一上学期期末考试数学试题
- 2026年天津市苏教版一年级数学下册第九单元同步练习题
- 老年髋部骨折诊疗与管理指南2026年版
- 2026年重庆丰都县社区工作者招聘考试【结构化面试题库+高分答题模板】(含考官评分要点)
- 统编版九年级上册 道德与法治 第二单元《进入新时代》单元检测试卷(含答案)
- 2026江西九江长途汽车运输集团有限公司劳动合同制员工招聘4人考试模拟试题及答案解析
- 2026福汽集团审计稽核部招聘2人考试模拟试题及答案解析
- 四上2-8《呵护我们的器官》教学课件
- 新生儿PICC置管与维护技术
- CSCO肾癌诊疗指南2026
- 2025四川简阳农商行社会招聘笔试历年典型考题及考点剖析附带答案详解
- 2.2.1 中国的气候 课件(共37张)地理商务星球版(2024)八年级上册
- 变压器装配工岗中理论实操考核试卷含答案
评论
0/150
提交评论