面试真题

技术面 + 非技术面高频问题 · 企业真题标题 + 校招宝自研参考答案
面试真题
2508 道
技术岗
641 道
非技术岗
1867 道
当前筛选
69 道

按赛道技术岗以技术方向细分;非技术岗按「结构化 / 半结构化 / 无领导 / HR / 职能」细分

按方向/形式点选即筛,再点「全部」还原

按难度

按企业点选查看该公司全部题目

技术岗 · 分类:Java69 道 · 点击进入查看参考答案

中等Java
手撕定时器实现
结论:基于优先队列(最小堆)和单线程轮询实现简单定时器。核心要点:1. 定义任务类包含执行时间戳和执行体Runnable;2. 用PriorityQueue按执行时间升序排序;3. 工作线程循环:取堆顶,若队列空则wai…
🎤 百度
中等Java
手撕读写锁(ReadWriteLock)
结论:通过状态计数与条件等待实现允许多读单写的读写锁。核心要点:1. 维护readCount读计数、writeCount写计数(或AQS state高低位);2. 获取读锁:当writeCount==0时CAS增加rea…
🎤 快手
中等Java
逃逸分析的原理、应用场景和优缺点
结论:逃逸分析是编译器(如JVM JIT)判断对象作用域是否逃出当前方法/线程的技术。原理:通过数据流分析,若对象仅方法内局部使用且不被外部引用(不逃逸),则可栈上分配、同步消除、标量替换。应用场景:方法内创建局部对象未…
🎤 哔哩哔哩
中等Java
为什么链表要转换成红黑树?
结论:链表长度过大时查找复杂度退化为O(n),转换为红黑树可将查找、插入、删除稳定控制在O(log n)。原理:以HashMap为例,当桶中节点数超过8且表容量≥64时链表转红黑树;红黑树是自平衡二叉搜索树,通过颜色翻转…
🎤 网易
中等Java
线程池的核心参数,给了一个线程池问有什么问题?
结论:线程池核心参数有7个,给定线程池需检查参数组合是否合理。核心参数:corePoolSize(核心线程数)、maximumPoolSize(最大线程数)、keepAliveTime(空闲线程存活时间)、workQue…
🎤 阿里巴巴
中等Java
序列化写入后读出的对象变化(版本不一致问题)
结论:序列化写入后若类版本不一致,反序列化可能失败或字段丢失。要点:Java靠serialVersionUID标识版本,读写值不同抛InvalidClassException;兼容变更(增删字段)可保持同serialVe…
🎤 阿里巴巴
中等Java
一条 Java 语句从创建到执行的全过程,类加载流程,JDK 内置类如何被启动类加载器加载?
结论:Java语句执行经历编译、类加载、执行三阶段。类加载流程:1. 加载:ClassLoader读.class二进制入方法区,建Class对象;2. 链接:验证字节码、准备静态变量零值、解析符号引用;3. 初始化:静态…
🎤 阿里巴巴
中等Java
针对 Hashtable 的问题,有什么更好方案?
更好方案是ConcurrentHashMap。核心要点:Hashtable全表synchronized锁导致并发阻塞;ConcurrentHashMap(JDK1.8)用CAS+桶头synchronized细粒度锁,支持…
🎤 腾讯
中等Java
HashMap 扩容机制?
结论:HashMap默认初始容量16,负载因子0.75,元素数超容量*负载因子时触发扩容,新容量为旧容量2倍。原理:resize()方法创建新数组,重新分配节点;JDK1.8使用(e.hash & oldCap) == …
🎤 京东
中等Java
HashMap 源码分析,是不是线程安全?
结论:HashMap线程不安全,禁止在多线程并发写场景下直接使用。原理:JDK1.8源码中putVal()无同步控制,多线程同时put时可能出现:1) 同桶位节点覆盖导致数据丢失;2) 扩容期间线程A转移链表,线程B同时…
🎤 阿里巴巴
中等Java
hashmap底层原理,有哪些线程安全的map
结论:HashMap底层为数组+链表+红黑树,线程安全Map有Hashtable、Collections.synchronizedMap、ConcurrentHashMap。原理:HashMap对key的hashCode…
🎤 百度
中等Java
IOC是什么,Bean是怎么初始化的
结论:IOC(控制反转)是将对象创建与依赖管理交给容器,降低耦合;Bean初始化是Spring按流程实例化并调用生命周期回调的过程。核心步骤:1. 容器扫描配置(注解/XML)得到Bean定义;2. 反射调用构造器实例化…
🎤 搜狐
中等Java
Java常用集合 HashMap和ConcurrentMap区别
结论:HashMap线程不安全,ConcurrentHashMap线程安全,机制与性能不同。HashMap基于数组+链表/红黑树,无同步,多线程下数据覆盖或死循环;ConcurrentHashMap在JDK7用分段锁,J…
🎤 搜狐
中等Java
Java线程模型,Thread类底层实现,线程和内核线程的对应关系,有什么优缺点?
结论:Java线程为1:1模型,Thread底层native映射内核线程;优点简单利用多核,缺点开销大。Thread的start0为native,调用pthread或CreateThread;每Java线程对应一个内核线…
🎤 阿里巴巴
中等Java
Java序列化,serialVersionUID的作用,怎么让字段不序列化(除了transient还有吗?)
结论:serialVersionUID用于序列化版本控制,保证反序列化兼容;除transient外,static字段、实现Externalizable或自定义writeObject也可阻止字段序列化。原理:serialV…
🎤 阿里巴巴
中等Java
Java 内部类和匿名内部类的作用?
结论:内部类增强封装与组织,匿名内部类简化临时实现。要点:1.成员内部类可直接访问外部类所有成员包括private;2.静态内部类不依赖外部类实例;3.局部内部类定义在方法内;4.匿名内部类无类名,在new接口/父类时直…
🎤 京东
中等Java
Java 内存模型(堆和栈的细节)
结论:栈线程私有存储方法调用与局部变量,堆线程共享存储对象实例。细节:栈由栈帧组成,每调用方法压入帧,含局部变量表、操作数栈、返回地址等,方法结束弹栈;堆分新生代(Eden、Survivor区)和老年代,新对象优先分配E…
🎤 阿里巴巴
中等Java
JUC 中的 `synchronized` 与可重入锁(`ReentrantLock`)的区别?
结论:synchronized是JVM内置关键字,自动加解锁;ReentrantLock是JUC提供的API锁,需手动释放但功能更灵活。区别:1.实现机制:synchronized基于monitor指令,Reentran…
🎤 京东
中等Java
JVM 内存管理与 C++ 有哪些区别?
结论:JVM内存由虚拟机自动管理(GC),C++由程序员手动管理(malloc/free或new/delete)。区别:1.分配方式:JVM对象基本在堆上由GC统一分配,C++可在栈或堆,栈对象自动析构;2.释放机制:J…
🎤 阿里巴巴
中等Java
JVM 内存结构与 GC 机制?
结论:JVM内存分为线程私有区(程序计数器、虚拟机栈、本地方法栈)与线程共享区(堆、方法区/元空间);GC主要回收堆中无效对象,采用分代收集。要点:1.内存结构:堆分新生代(Eden、Survivor)和老年代,栈存局部…
🎤 京东
题目整理自公开面经,答案由校招宝自研生成,仅供参考