众所周知,受疫情影响,互联网迎来了“寒冬”,大厂 HC 骤减,竞争愈发激烈。在这种严峻的就业形势下,对于没有名校光环、相关实习或竞赛经历的“三无”选手而言,上岸大厂后端开发岗位似乎成了一件遥不可及的事情。
但我可以告诉你,这并非不可能。我本人就是一名本科末流 211、硕士中流 985 的电子信息专业学生,非科班、无实习、无比赛经历,最终通过秋招成功上岸了字节跳动的后端开发岗位。
我的 Java 学习始于研究生阶段,在 B 站上陆续学习了 Java 基础、MySQL、JavaWeb、SSM、SpringBoot 等课程,但当时仅仅停留在“会用”的层面,对于底层原理和进阶知识(如索引、事务等)几乎一窍不通。
直到 2022 年 1 月,我才正式开始系统地准备秋招。经过长达大半年的努力,最终拿到了字节、美团、携程等公司的 Offer。虽然数量不多,但对我来说已是心满意足。
回顾我的面试历程,技术面基本上都能顺利通过,很多是折戟在 HR 面或排序环节,例如蚂蚁、OPPO、蔚来等公司。这里必须给大家提个醒:如果有实习机会,一定要去实习。在当前后端开发极度内卷的背景下,当大家的“八股文”水平相当时,企业必然会优先选择有实际项目或实习经验的候选人。我在面试京东时,面试官就曾明确表示,尽管我的基础扎实,但竞争对手多有美团、华为等大厂的实习经历,这让我在竞争中处于劣势。
面试策略:细节决定成败
以下是结合我个人经验总结的一些秋招建议,希望能为大家提供一些思路。
- 简历精炼,实事求是。简历上只写自己真正掌握、能够深入探讨的技术点。我曾将一知半解的 Elasticsearch 写在简历上,结果每次面试都被问得很狼狈,反而成了扣分项,后来果断删掉。
- 投递宜早不宜迟。今年形势是 HC 少,候选人多,后期很可能直接没有面试机会。早投递即使挂了,也还有被其他部门“捞”起来的可能。我投递 Zoom 较晚,二面后公司全面锁了 HC,即使表现再好也无济于事。
- 构建个人知识库。强烈建议大家总结一份属于自己的面试笔记。面试中有大量高频问题,如 synchronized 锁升级、JVM 内存区域、从输入 URL 到页面展示的完整过程等。提前准备好“标准答案”,面试时才能从容应答。
- 以战养战,积累经验。建议大家多面试,不要害怕,初期可以拿中小厂练手。面试本身是一种需要练习的技能,刚开始难免紧张、语无伦次。但随着面试次数增加,你不仅能流畅作答,甚至能引导面试官向你熟悉的领域提问,从而更好地展示实力。对于无法实习的同学,强烈建议参加暑期实习招聘,目的就是熟悉面试流程、查漏补缺,有些公司还会发放秋招直通卡。
- 面试中的应答技巧。遇到不太懂的问题,不要立刻说“不会”。可以先思考一下,或许能想起来。即使真的不会,也可以尝试阐述与之相关的知识。例如,被问到 Redis 字典的底层原理时,如果不会,可以转而聊聊你熟悉的 Java HashMap 原理。对于自己熟悉的知识点,则要主动延伸,不要等面试官追问。比如被问到 HTTP 和 HTTPS 的区别,除了罗列几点不同,还可以主动解释 HTTPS 的安全机制、SSL/TLS 握手过程等。
- 复盘与改进。现在大多是线上面试,可以对自己的面试过程进行录屏,然后认真复盘。一方面是查找知识盲区,另一方面是审视自己在语速、表情、肢体语言和表达逻辑上是否有需要改进的地方。
学习路径:Java 后端核心技术栈拆解
因为我主攻的是 Java 后端,所以下面主要分享这方面的学习经验。
一次典型的面试主要考察三个方面:基础知识、项目经历和算法能力,三者同等重要!
基础知识
这部分涵盖面广,我认为以下几块是重中之重:Java 基础、JVM、Java 并发、MySQL、Redis、计算机网络、操作系统、Spring。我的学习路径通常是先通过 B 站视频入门,再结合经典书籍深入,最后通过博客查漏补缺。
- Java 基础
核心重点是 Java 集合框架,尤其是 HashMap。我没有啃完《Java 核心技术 卷一》,主要依靠阅读源码、博客以及网上流传广泛的面试指南,如 JavaGuide、CS-Notes 等,内容已经足够全面。
- JVM
初学觉得很难,但面试题其实很固定,比如运行时数据区、垃圾回收算法与收集器、类加载过程等。
- 视频:黑马程序员 JVM 完整教程,简短精悍,适合快速入门。
- 书籍:《深入理解 Java 虚拟机 第 3 版》,必读经典,面试知识点基本覆盖。
- Java 并发
面试高频区,如 synchronized 锁升级、volatile 原理、ThreadLocal、线程池等。
- 视频:黑马程序员 JUC 并发编程全套教程,与上面 JVM 教程同一位老师,讲解清晰。
- 书籍:《实战 Java 高并发程序设计》,入门友好,通俗易懂。
- 书籍:《Java 并发编程的艺术》,适合面试拔高。
- MySQL
作为后端开发者,数据库是每天都要打交道的。
- 视频:黑马程序员的 MySQL 入门到精通课程。
- 书籍:《MySQL 是怎么运行的》,从根上理解 MySQL。
- 专栏:极客时间《MySQL 实战 45 讲》。
- Redis
面试题较为固定,如数据结构、持久化、哨兵、缓存异常(击穿、穿透、雪崩)、与 MySQL 数据一致性等。
- 视频:尚硅谷或黑马程序员的 Redis 教程。
- 书籍:《Redis 设计与实现》,理解底层必备。
- 计算机网络
重点掌握 HTTP/HTTPS、DNS、TCP/IP 协议族。
- 视频:计算机网络微课堂,动画演示,直观易懂。
- 书籍:《网络是怎么连接的》,像读小说一样了解网络全貌。
- 博客:小林 coding 的《图解网络》,应付秋招足矣。
- 操作系统
我被问得不多,主要是虚拟内存、进程调度算法等概念。
- 视频:哈工大李治军老师的操作系统课程。
- 书籍:《操作系统导论》(OSTEP),比《现代操作系统》易读得多,GitHub 有中文翻译版。
- Spring
Java 开发者的看家框架。
- 视频:黑马程序员的 Spring 底层原理课。
- 视频:尚硅谷雷丰阳老师的 Spring 注解驱动教程,内容很干,能极大提升内功。
- 其他
- 消息队列:对 MQ 的考察在增多。我学的 RabbitMQ 较简单,但业界 Kafka 更流行。两者我都通过尚硅谷的 SpringCloud 综合课程进行了学习。
- 设计模式:后端内卷的体现。不必全学,重点掌握单例、代理、工厂等几个常考模式即可。
- 场景题/系统设计:开放性问题,考察知识全面性和 系统设计能力。我提前准备了如秒杀、短链生成等常见场景的思路,并思考如何将其引导到自己熟悉的 MySQL、Redis 等技术点上。
- 海量数据处理与智力题:偶尔出现。我通过牛客面经搜集了常见题目(如赛马、过桥问题),并百度了解决方案。
项目经历
没有实习经历,项目这块是我的短板。再次强调,能实习一定要去实习!
我的简历上只有两个项目:一个是牛客网的“仿牛客论坛”项目,另一个是研究生的横向课题(与后端关系不大,基本没人问)。面试官的兴趣点几乎全在“仿牛客论坛”上。
这个项目技术栈丰富(Spring Boot, Redis, Kafka/RabbitMQ, Elasticsearch 等),非常适合练手。我在跟做完后,主动对它进行了“重构”:
- 将消息队列从 Kafka 换成了我更熟悉的 RabbitMQ。
- 使用 Spring Security + JWT 重构了登录认证模块。
- 与实验室同学合作,重构出了一个前后端分离的版本。
建议大家在做完项目后,也思考如何用新学的知识去改进它。同时,提前准备好项目的介绍话术,想清楚项目的亮点、难点(如果实在没有,就说通过项目学到了哪些具体技术,比如如何用 Redis 的哪种数据结构解决了什么问题)。
算法能力
近年来,算法已成为后端面试的“敲门砖”,几乎每场技术面都至少有一道手撕代码题。
我的路径是:先通过《算法(第 4 版)》建立基础认知,然后开始在 LeetCode 上刷题,总计约 200 道,核心是 LeetCode Hot 100 和 《剑指 Offer》。期间也学习了“代码随想录”总结的解题套路。
Hot 100 是重中之重,很多面试题都源于此。我整个秋招期间将 Hot 100 刷了 3 遍,《剑指 Offer》刷了 2 遍。到后期,像快排这种基础算法,几分钟就能无脑手写出来。
核心心法:笔记与坚持
在整个备战过程中,我认为最重要的一件事就是 做笔记。后端知识体系庞杂,不经常回顾很容易遗忘。我累积了超过二十万字、三百多页的笔记。

别人的笔记可能不全、晦涩或有错误,但自己的笔记是为自己量身定制的,理解起来最快,复习效率最高。我会定期(甚至“背诵”)复习笔记,并随着理解的深入不断重构和优化它。

最后,心态是关键。校招是一场持久战,会遇到很多挫折和等待。不要放弃任何机会,认真准备每一次面试,及时复盘每一次失败。你的努力,终会在合适的时机得到回报。
希望这份来自一名普通“三无”选手的经历,能为你正在准备的 面试求职 之路带来一些切实的参考和信心。