news 2026/7/17 21:26:14

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
个人记录【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

未完待续

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 21:20:56

嵌入式Linux开发中FTP服务失效的排查与修复

1. 问题背景与ELF 1板卡概述最近在调试飞凌ElfBoard ELF 1开发板时遇到了一个典型问题:重新打包文件系统后,FTP服务突然无法正常连接。这个现象在嵌入式Linux开发中其实相当常见,但涉及的因素较多,需要系统性地排查。ELF 1是飞凌嵌…

作者头像 李华
网站建设 2026/7/17 21:16:16

瑞萨RA6E1开发板串口打印配置与调试指南

1. 瑞萨FPB-RA6E1快速原型板概述瑞萨FPB-RA6E1快速原型板是一款基于R7FA6E10F2CFP微控制器的评估开发板,专为快速原型开发而设计。这块板子最大的特点就是集成了SEGGER J-Link™仿真器电路,这意味着开发者可以直接通过USB连接电脑进行程序烧录和调试&…

作者头像 李华
网站建设 2026/7/17 21:15:24

IntelliJ IDEA 安装与配置全指南:Java 开发者高效工作流构建

1. 为什么说 IntelliJ IDEA 是 Java 开发者的“首选神器”?——从真实项目场景切入 我带过三届校招新人,也参与过银行核心系统、电商中台和 IoT 平台的开发。每次新同事入职,我第一件事不是讲 Spring Boot 启动原理,而是盯着他装…

作者头像 李华
网站建设 2026/7/17 21:08:13

DCQCN:大规模 RDMA 部署中的拥塞控制

DCQCN:大规模 RDMA 部署中的拥塞控制 《Congestion Control for Large-Scale RDMA Deployments》 详细中文解读 阅读说明与总览 这份文档不是只讲结论的摘要,而是按论文的论证顺序做“伴读式”解读。论文中的图、算法框和实验图均直接裁取自原 PDF;中文部分负责解释图中每…

作者头像 李华
网站建设 2026/7/17 21:06:24

阶段二:Element UI 后台页面

从零构建带AI流式对话的Vue2全栈应用-CSDN博客本文是对这个链接阶段二的讲解 一、阶段二解决什么问题 阶段一只是学习 Vue 的基础语法。阶段二开始制作真正的后台管理页面。 要完成的结构是: 后台页面 ├─ 左侧菜单 │ ├─ 仪表盘 │ └─ 用户管理 ├─ 顶…

作者头像 李华
网站建设 2026/7/17 21:05:52

CPLEX 20.1.0 Windows安装与调用避坑指南

1. 项目概述:为什么在Windows上折腾CPLEX 20.1.0,值得花这三小时?我在带一个高校运筹学课程设计小组时,连续三年遇到同一个问题:学生装好CPLEX后,跑第一个example.mps就报错“CPLEX library not found”&am…

作者头像 李华