25年10月大连云通信息技术 Java开发 实习 一面
#JAVA##JAVA面经##JAVA内推#
先简单聊聊自己吧~学校专业、怎么接触编程的,最近在忙些啥?
“我是XX大学计算机科学与技术专业大四学生。高中因信息学竞赛接触C++,大学用Java写第一个‘课程表查询系统’时被其工程化魅力吸引。最近三件事:
1️⃣ 毕业设计:《基于微服务的校园活动平台高可用优化》,用Spring Cloud + Redis + RabbitMQ重构单体架构
2️⃣ 技术沉淀:系统梳理JVM调优、分布式事务方案,输出技术博客5篇
3️⃣ 实习准备:深度复盘校园项目,针对性补强分布式系统知识
始终相信:技术人的成长 = 扎实基础 × 解决真实问题 × 持续反思。”
多线程有接触过吗?Java里创建线程一般有哪几种方式?你项目里用过哪种?
“接触深入。三种核心方式:
🔹 继承Thread(少用,单继承限制)
🔹 实现Runnable(解耦任务与线程)
🔹 线程池(ExecutorService)(项目首选)
项目实践:
- OJ判题服务:
ThreadPoolExecutor自定义线程池(核心线程=CPU*2,队列=100)- 优势:
✅ 避免频繁创建销毁线程(资源复用)
✅ 精确控制并发数(防OOM)
✅ 任务拒绝策略兜底(CallerRunsPolicy触发降级)
认知:直接new Thread是‘技术债’,线程池是生产环境底线。”
多个线程要共享数据,你会怎么处理?
“按场景精准选型:
场景 工具 项目实例 计数器 AtomicInteger判题服务并发计数 缓存Map ConcurrentHashMap用户会话存储(key=token) 复杂状态 ReentrantLock+ Condition抽奖库存扣减(lock.tryLock(3s)) 简单同步 synchronized单例模式双重检查锁 避坑经验: ⚠️ 避免 synchronized大方法(锁粒度粗)⚠️ ConcurrentHashMap的computeIfAbsent慎用(嵌套调用可能死锁)✅ 优先用JUC工具类(经高并发验证)”
继承和接口在写代码时怎么选?
“核心原则:
- 继承:
is-a关系 + 需复用父类实现(慎用!单继承限制)- 接口:
can-do能力 + 多实现扩展(首选)
项目对比:
🔸 用接口(支付策略):public interface PaymentStrategy { void pay(Order order); } public class AlipayStrategy implements PaymentStrategy { ... } // 新增微信支付只需实现接口,零修改原有代码🔸 慎用继承:曾用
BaseController抽公共方法,后因业务差异导致子类冗余重写。现改用:
- 工具类(静态方法)
- 组合模式(Service注入通用组件)
感悟:接口定义契约,继承传递实现——优先面向接口编程。”
能手写一个排序吗?
“选归并排序(稳定、O(nlogn),适合链表/外部排序):
思路三步:
1️⃣ 分:递归拆数组为左右两半(mid = left + (right-left)/2)
2️⃣ 治:左右子数组分别排序
3️⃣ 合:双指针合并两个有序数组(辅助数组暂存)
关键代码逻辑:void mergeSort(int[] arr, int l, int r) { if (l >= r) return; int mid = l + (r-l)/2; mergeSort(arr, l, mid); // 左半排序 mergeSort(arr, mid+1, r); // 右半排序 merge(arr, l, mid, r); // 合并 } void merge(int[] arr, int l, int mid, int r) { int[] tmp = new int[r-l+1]; int i=l, j=mid+1, k=0; while (i<=mid && j<=r) tmp[k++] = arr[i] <= arr[j] ? arr[i++] : arr[j++]; while (i<=mid) tmp[k++] = arr[i++]; // 补剩余 while (j<=r) tmp[k++] = arr[j++]; System.arraycopy(tmp, 0, arr, l, tmp.length); // 覆盖原数组 }项目应用:OJ系统中合并两个学生的提交记录(按时间排序),用此法避免不稳定排序导致的显示错乱。”
数据库主要用MySQL吧?索引这块帮了啥忙?
“聚簇索引(主键索引):
- 数据与索引存一起,查主键直接得数据(如
SELECT * FROM orders WHERE id=100)- 项目价值:订单查询避免回表,耗时<5ms
联合索引:orders(user_id, status, create_time)- 三重收益:
✅ 覆盖索引:SEL(Extra: Using index) ✅ 最左前缀: 走索引 ✅ 避免filesort: 直接走索引排序 :索引不是越多越好,每个索引都是写入成本——只为高频查询建。”
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏在精不在多,内容分为八股文、大厂真实面经,面试通过后将offer和面试题私发给我,可退还专栏的收益部分费用。欢迎大家共建专栏
查看21道真题和解析