news 2026/4/24 18:54:25

程序员面试最常被问的10道题,答对7道算你厉害(文末免费领简历模板)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
程序员面试最常被问的10道题,答对7道算你厉害(文末免费领简历模板)

不是八股文,是实战中真正卡人的点

金三银四刚过,身边好几个朋友都在找工作。跟他们聊了一圈,发现一个共性问题:

很多人刷了半年LeetCode,结果面试挂在了一些“简单”问题上。

不是题不会做,是答不到面试官想听的点

下面这10道题,是我从最近20多场技术面试里扒出来的高频题。每道题都附上了“面试官想听什么”和“怎么答才加分”。

你可以自测一下,看看能答上来几道。

文末整理了Java、前端、C++方向的简历模板,有需要的可以直接领。

一、基础篇

1. “讲一讲HashMap的原理”

这是Java面试的“入门级”问题,但80%的人答不到点上。

低级回答:HashMap是键值对存储的,线程不安全,允许null键和null值。

面试官想听什么

  • 底层数据结构:数组+链表+红黑树(JDK1.8之后)

  • 哈希冲突怎么解决:链地址法

  • 扩容机制:负载因子0.75,2倍扩容,resize时的rehash

  • 为什么线程不安全:多线程下扩容可能产生死循环(JDK1.7)或数据丢失

  • 和Hashtable、ConcurrentHashMap的区别

加分回答:顺带提一下JDK1.8对HashMap的优化——当链表长度超过8且数组长度超过64时,链表转红黑树,查找复杂度从O(n)降到O(log n)。

2. “线程池的七大参数,以及任务执行流程”

这题考的是对ThreadPoolExecutor的理解,背文档没用,要理解流程。

面试官想听的关键点

  • 七大参数:corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory、handler

  • 核心执行流程:核心线程 → 阻塞队列 → 非核心线程 → 拒绝策略

  • 4种内置拒绝策略:Abort、CallerRuns、Discard、DiscardOldest

加分回答:结合一个实际场景——比如“CPU密集型任务,线程池怎么设置?”(corePoolSize设为CPU核心数+1);“IO密集型任务怎么设置?”(corePoolSize设大一点,比如CPU核心数×2)。

3. “MySQL的索引为什么用B+树,不用B树?”

这道题考的是对数据库索引底层原理的理解。

常见的错误回答:“B+树查询更快”。(面试官内心:为什么?)

正确的回答逻辑

  • B+树非叶子节点不存数据,只存键值,所以一个磁盘块能存更多索引,树的高度更低,IO次数更少

  • B+树的叶子节点用双向链表连接,支持范围查询顺序扫描,B树做不到

  • B树每个节点都存数据,树更胖更高,范围查询需要多次回溯

加分回答:可以主动说“MyISAM和InnoDB的索引实现有什么区别”(聚簇索引和非聚簇索引)。

二、框架篇

4. “Spring Boot的自动配置原理”

这个问题考察的是对Spring框架源码的理解程度。

回答框架

  1. @SpringBootApplication是三个注解的组合:@SpringBootConfiguration+@EnableAutoConfiguration+@ComponentScan

  2. 核心在@EnableAutoConfiguration,通过@Import(AutoConfigurationImportSelector.class)导入

  3. AutoConfigurationImportSelector会读取META-INF/spring.factories文件,加载所有候选配置类

  4. 每个配置类上的@Conditional条件注解决定是否生效(如@ConditionalOnClass@ConditionalOnMissingBean

加分回答:可以举例说“比如RedisAutoConfiguration只有在引入了RedisTemplate依赖时才会生效”。

5. “事务失效的场景有哪些”

Spring事务是面试重灾区,很多人用了好几年,遇到问题还是不知道原因。

需要答出的失效场景

  • 方法不是public

  • 同一个类内部调用(没有经过代理)

  • 异常被catch了,没有抛出

  • 抛出的异常不是RuntimeException(需要指定rollbackFor

  • 数据库引擎不支持事务(如MyISAM)

加分回答:顺带解释一下@Transactional的原理——基于AOP,通过动态代理生成代理类,在代理类中开启和提交事务。

三、算法与设计篇

6. “如何设计一个秒杀系统”

这道题考的是系统设计能力,没有标准答案,但要有完整思路。

回答骨架

  1. 流量层面:CDN缓存静态资源,Nginx限流(漏桶/令牌桶),前端防抖节流

  2. 中间件层面:消息队列削峰(RocketMQ/Kafka),Redis预扣库存(Lua脚本保证原子性)

  3. 数据库层面:数据库最终扣减库存,行锁优化,分库分表

  4. 兜底策略:降级(返回友好提示)、熔断(服务不可用时的保护)

加分回答:提到“热点数据问题”——可以用Redis集群,或者把库存分散到多个key上。

7. “哪些排序算法是稳定的?快排稳定吗?”

这道题经常被忽略,但面试官喜欢问。

常见排序稳定性

  • 稳定:冒泡、插入、归并、计数、桶、基数

  • 不稳定:选择、快排、希尔、堆排序

加分回答:解释一下“稳定性”的意义——比如对“成绩表”先按分数排序,再按姓名排序,稳定排序能保证分数相同时名字的顺序不变。

8. “Redis为什么快?”

这道题不要只答“基于内存”。

完整回答

  • 纯内存操作,读写速度快

  • 单线程模型,避免了上下文切换和锁竞争(6.0之后多线程只用于网络IO)

  • I/O多路复用,能同时处理大量客户端连接

  • 高效的数据结构(SDS、跳表、压缩列表等)

加分回答:可以对比Memcached——Memcached是多线程,适合多核,但每个请求的CPU开销更大;Redis单线程反而减少了锁开销。

四、综合题

9. “说说你的一个项目亮点”

这道题看似开放,实则最容易暴露问题。很多人答成“项目介绍”。

正确的回答结构(STAR原则)

  • Situation:项目背景是什么?遇到了什么问题?

  • Task:你的任务是什么?

  • Action:你采取了什么技术方案?为什么选这个方案?有没有对比过其他方案?

  • Result:最终结果怎么样?有没有量化数据(如QPS从500提升到2000,响应时间从2s降到300ms)

加分回答:能说出踩过的坑以及怎么解决的。比如“刚开始用Redis缓存,发现缓存穿透,后来加了布隆过滤器……”

10. “你有什么想问我的?”

这是面试的最后一题,很多人说“没有”就结束了。

建议反问的问题

  • “这个岗位目前团队最大的挑战是什么?”
    ——体现你有解决问题的意愿

  • “团队的技术栈和开发流程是怎样的?”
    ——体现你对技术有追求

  • “我对xx技术比较感兴趣,公司有相关的实践机会吗?”
    ——体现你有学习主动性

不要问:加班多吗?包吃吗?(这些可以问HR)

五、一些提醒

  1. 不用每题都答得完美,面试官主要想看到你的思路和应变能力

  2. 不会的题直接说不会,不要编,可以尝试说“虽然我没用过,但根据我的理解可能是……”

  3. 手写代码时说话,把思路说出来,写错了也比沉默强

  4. 简历上的每一个字都要负责,写在“熟悉”的内容被问倒,会直接扣分

六、面试常见问题速查表

模块高频考点重点程度
Java基础HashMap、JVM内存模型、垃圾回收、多线程锁⭐⭐⭐⭐⭐
SpringAOP原理、循环依赖、事务失效、Bean生命周期⭐⭐⭐⭐⭐
MySQL索引优化、事务隔离级别、MVCC、explain⭐⭐⭐⭐⭐
Redis持久化、缓存雪崩/穿透/击穿、分布式锁⭐⭐⭐⭐
消息队列如何保证消息不丢失、顺序消费、重复消费⭐⭐⭐⭐
算法二分查找、快排、链表反转、LRU⭐⭐⭐⭐

🎁 写在最后

面试这件事,七分靠实力,三分靠表达。上面的10道题,建议你自己对着镜子练一遍,不是背答案,是学会“面试官想听什么”。

祝你顺利拿到心仪的offer。

另外,我自己整理了一批程序员简历模板,包含Java后端、Web前端、C++、数据科学等方向,还有应届生和社招两个版本。有需要的朋友可以免费下载:

资料下载: https://pan.quark.cn/s/45c9a17b9f29 https://pan.baidu.com/s/1mfkr6y8cTeRIB4m4rNJZuw?pwd=8888

(如果链接失效,可以私信我补链)


最后送大家一个福利

如果你想系统地准备面试,推荐几个我常看的学习资源:

  1. LeetCode:刷题必备,建议按tag刷,不要随机刷

  2. 《Java并发编程实战》:面试必考,尤其是AQS、锁、线程池

  3. 《高性能MySQL》:索引优化那几章反复看

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

别再死记硬背堆的定义了!从PTA L2-012这道题,彻底搞懂小顶堆的构建与家族关系查询

从PTA L2-012彻底掌握小顶堆:构建原理与家族关系实战解析 堆排序算法在面试中出现的频率高达73%,但超过60%的初学者对堆的底层实现原理存在理解偏差。这道PTA题目恰好揭示了大多数教材不会深入探讨的关键细节——顺序插入构建堆与一次性调整构建堆的本质…

作者头像 李华
网站建设 2026/4/24 18:44:27

专业级Minecraft世界区块管理工具实战指南:5大高效技巧揭秘

专业级Minecraft世界区块管理工具实战指南:5大高效技巧揭秘 【免费下载链接】mcaselector A tool to select chunks from Minecraft worlds for deletion or export. 项目地址: https://gitcode.com/gh_mirrors/mc/mcaselector MCA Selector是一款专门为Mine…

作者头像 李华
网站建设 2026/4/24 18:40:30

uniapp使用vite.config.js解决跨域问题

vite.config.js:// vite.config.js import { defineConfig } from vite import uni from dcloudio/vite-plugin-uni// https://vitejs.dev/config/ export default defineConfig({plugins: [uni(),],server: {// 1. 配置代理规则proxy: {// 2. /api 是你自定义的请求前缀/api: …

作者头像 李华