当前位置: 首页 > news >正文

个人记录【Java后端面试】Java基础

Java基础

  • 总结
    • 基础概念
    • 多线程/并发
    • 集合框架
    • 网络编程(netty)
  • 场景题
  • 经典面试题

总结

Java基础面试主要分为4个版块,基础概念(面向对象)、多线程/并发、集合框架以及网络编程。

基础概念

这部分没啥需要记录的,就面向对象那些,直接背。 重点在Java8、11、17、21的新特性。

面试题链接:[https://www.mianshiya.com/bank/1787463103423897602]

多线程/并发

线程的生命周期、synchronize锁升级、volatile的用法与缺点、JMM抽象模型、cas无锁机制、线程池核心参数、如何排查死锁、synchronize与reentryLock的区别、ThreadLocal原理以及内存泄漏风险

面试题链接:https://www.mianshiya.com/bank/1789249312885223425

集合框架

ArrayList以及HashMap底层结构、扩容机制与时间复杂度,currentHashMap并发实现与线程安全策略,HashMap在Java1.7与1.8的实现区别,红黑树算法,哈希冲突。

面试题链接:https://www.mianshiya.com/bank/1788408712975282177

网络编程(netty)

BIO|NIO|AIO的区别与应用、NIO三大组件(channel、selector、buffer)、零拷贝与mmap原理、netty为什么用nio、reatctor模式的单/多线程实现、netty粘包拆包问题。

面试题链接:https://www.mianshiya.com/tag/Netty

这里不记录具体的面试题,可以各大网站去刷(ddkk、面试鸭、github)

场景题

基本上就是考察基础知识积累,以及源码阅读。

经典面试题

  1. hashmap1.7和1.8的区别+currenthashmap1.7和1.8区别

版权声明:以下内容为CSDN博主「Insist Every Day」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_51769717/article/details/135738022

JDK1.7 中(hashmap) 1、使用entry数组来存数据,然后通过hash取模的方法将数据分散存到不同的格子里面,这些key会形成一个链表 2、使用头插法 JDK1.8 中(hashmap) 1、hashmap在数组到达64格链表大于8时会将连别变成红黑树提升效率 2、使用尾插法避免在并发编程的时候出现循环列表问题将头插法改成尾插法 currentHashmap 底层加锁机制: 在JDK1.7中segments数组+HashEntry数组+链表。一个ConcurrentHashMap中有一个Segments数组,一个Segments中存储一个HashEntry数组,每个HashEntry是一个链表结构的元素。segment继承自ReentrantLock锁。首先将数据分为一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一段数据时,其他段的数据也能被其他线程访问,实现了真正的并发访问。 在JDK1.8中摒弃了Segment,而是采用synchronized+CAS+红黑树来实现,锁的粒度也从段锁缩小为结点锁 put的流程不同 在JDK1.7中要进行两次定位,先对Segment进行定位,再对内部的数组下标进行定位。定位之后会采用自旋锁+锁膨胀的机制进行加锁,也就是自旋获取锁,当自旋次数超过64时,会发生膨胀,直接陷入阻塞状态,等待唤醒。并且再整个put期间都持有锁 在JDK1.8中只需要一次定位,并且采用CAS+synchronized的机制。如果对应下标处没有结点,说明没有发生哈希冲突,此时直接通过CAS进行插入,若成功,直接返回。若失败,则使用synchronized进行加锁插入
  1. Java8、11、17、21新特性

    Java8: 1.元空间替代永久代 2.lambda表达式 3.函数式接口(@FunctionInterface) 4.新的日期时间api(LocalDate、LocalTime) 5.Stream API 6.CompletableFuture :是Java 8引入的异步编程工具,解决了老版Future 的两个痛点:一是get 方法会阻塞线程,二是没法 把多个异步任务串起来。 CompletableFuture 支持链式调用,可以用 thenApply、thenCompose这些方法把多个异步操作像流水线一样串起来,前 一个任务完成自动触发下一个,不用手动阻塞等结果。 基本用法是这样的: 1)用supplyAsync提交一个有返回值的异步任务,或者runAsync提交一个无返回值的任务 2)用thenApply 对结果做转换,thenAccept消费结果,thenRun单纯执行后续动作 3)用 exceptionally 或 handle 处理异常 4)用thenCombine合并两个任务的结果,用allOf等待多个任务全部完成 Java11: 1.标准化HTTP客户端API 2.String类方法增强 3.Files类简化文件读写(writingString()/readString()) 4.Optional新增isEmpty() java17: 1.Sealed密封类 2.增强的伪随机数生成器 3.强封装JDK内部API java21: 1.Virtual Threads虚拟线程:重点,可以详细了解一下,适配AI 2.Switch模式匹配 3.Record模式 4.分代ZGC

未完待续

http://www.jsqmd.com/news/1209035/

相关文章:

  • AI应用开发者的底层知识框架与实战路径
  • 让学生吃上“放心饭”,爽提走好校园外卖“安全”路
  • 21被试4分类可视化结果
  • 2026年Q3科华UPS电源及蓄电池产业格局与企业选型策略分析 - 企业推荐官【官方】
  • 2026年实力之选:内蒙古企明星财务有限公司与济南佐佑财税管理咨询有限公司 - 甄选服务推荐
  • 2026年技术内容创作思考:从录播课单品模式到体系化服务的转型之路
  • 香港村屋一站式服务哪家强?2026年元朗中介全链条能力深度对比 - GrowUME
  • 把 UI 注解从 CDS 数据模型中拆出去,深入理解 ABAP Metadata Extensions
  • 江诗丹顿中国官方售后服务中心|官方地址与维修热线权威信息声明(2026年7月更新) - 江诗丹顿服务中心
  • Java加解密性能优化实战:从算法选型到硬件加速的六项关键技术
  • 2026年知识付费小程序搭建找哪家?小程序搭建平台推荐红榜
  • 微信数据解密实战:从内存取证到数据库逆向的完整技术栈
  • 计算机毕设新颖的选题怎么选
  • 从“机械应答“到“服务伙伴“:得物高可控智能客服的 Agent 工程实践|AICon 演讲整理
  • 跨文件全局替换总出错?,Cursor智能上下文感知替换原理与避坑清单
  • WSL2安装配置与开发环境搭建指南
  • 养生食品哪家性价比高:衡身堂理性消费 - 晚香时候
  • 最新发布!武汉光谷科技职业技术学校2026年招生简章 - 武汉中职最新信息发布
  • 2026 年新消息:承德专业的花岗岩石牌坊企业怎么联系,揭秘:这石牌坊如何成为顶级豪宅的身份象征? - 领域鉴赏官
  • 学术文本去 AI 痕迹完整方案:靠谱检测 + 专业改写工具汇总(PaperRed / 笔捷 AI / 毕业之家深度测评)
  • 抖音质量效能部不传之秘:用AI精准预估“可能出事”的模块
  • 2026年7月最新贵阳江诗丹顿官方售后客户服务电话及线下网点地址 - 江诗丹顿官方服务中心
  • Java跨格式文档密码检测实战:基于Apache POI与PDFBox实现
  • 为什么你的ComfyUI提示词总在第12帧崩坏?调度时序对齐原理与6种修复方案(含Python校验脚本)
  • 骨传导耳机哪款运动佩戴体验最好?2026十大热门骨传导耳机实测
  • Canva AI电商模板失效真相:字体版权陷阱、动态图层崩溃、多端适配断层——技术总监亲测避坑清单
  • 小程序毕设项目:线下宠物门店预约系统的设计与实现 基于 SpringBoot + 微信小程序的宠物服务订单管理小程序 (源码+文档,讲解、调试运行,定制等)
  • 零基础玩转 bWAPP 靶场(四):HTML 注入(当前 URL 反射)
  • 卡地亚中国官方售后服务中心|全部地址与24小时客服电话权威信息通告(2026年7月更新) - 卡地亚服务中心
  • 2026年07月:精密CNC加工制造领域供应厂家能力评估与选型参考 - 甄选服务推荐