如何准备面试?(完结)
所谓临阵磨枪,不快也光。更何况提前准备好面试呢!
如果提前准备好,那自然面试的成功率也会提高一大截,相应的,我们就会拿到更好的 offer、更高的起薪,这对以后的职业发展非常有利。
“面试造火箭,工作拧螺丝”已经成为常态,也就是说,尽管工作后很有可能之前准备的一些技能点、八股文完全用不到,但仍然要在面试前花心思去准备。
计算机专业经过这些年的发展,知识面已经变得又宽又深了,很多时候,一个应届生,在面试的时候会被问到有没有三高(高并发、高性能、高可用)的经验,离谱,确实离谱(😂)!
但筛选一个合格的候选人的成本确实在变得越来越昂贵,因为涌入这个行业的人实在是太多了。作为求职者,要做的第一步就是:接受它、拥抱它,毕竟打铁还需自身硬,先把自己搞强一点再说。
- 八股文要不要背?当然要背!
- 项目要不要搞?当然要搞!
- LeetCode 要不要刷?当然要刷!
- 操作系统、计算机组成原理、计算机网络这些枯燥的计算机基础知识到底要不要学?当然要学!
接下来,就来追随二哥的脚步,看看如何准备面试吧。
第一步,尽早确定自己的求职方向
计算机专业要学的内容浩如烟海,如果全部去学,肯定时间不够、精力不够,所以我们要先确定好自己的求职方向,做到有的放矢。
社招
下图是 boss 直聘上软通动力的 Java 岗(社招)招聘要求,之所以选择软通而不是阿里,是因为我们可以先从要求低的做起,不至于目标定的太高,失去信心。来看一下该岗位的要求和加分项,就知道自己该学什么了。

1)扎实的 Java 基本功
包括 Java 概述、语法基础、数组&字符串、面向对象、集合框架、IO、异常处理、常用工具类、Java 新特性、网络编程、NIO、并发编程、JVM 等等,也就是《Java 程序员进阶之路》开源知识库中 Java 核心的这部分内容。

你可以直接到《二哥的 Java 进阶之路》上刷这些内容,然后通过《面渣逆袭(戳)》的 Java 基础篇、Java 集合框架篇、Java 并发编程篇、Java 虚拟机篇来检验学习成果。

球友们可以戳这个链接🔗 下载 PDF 版本,我已经为大家准备好了。
2)掌握主流的开发框架
传统企业开发要求安全、稳定,比如政府机关、企业 OA、ERP 等管理系统,常用的框架是:Struts1/2+Spring+SpringMVC+Hibernate/MyBatis/Servlet, 这些老旧框架非常不易更新扩展。那进入传统企业工作的球友也容易学不到技术,尤其是新人,往往会感觉非常痛苦。
互联网企业开发要求高并发、高可用、易扩展,尤其是交互系统、支付系统、采购系统等等,互联网企业往往会对核心业务进行解耦拆分,从而实现灵活组装,极大提升业务的可复用性。
常用的框架不会只局限于 SpringMVC、MyBatis、Spring Boot,往往会和微服务、分布式等结合起来用。我会在下下一小节中一一列举。
3)熟悉微服务和分布式
早期的软件,所有功能都写在一起,这是单体架构(monolithic software),随着功能的增加,单体架构就会越来越复杂,所有的功能耦合在一起,互相影响,哪怕只修改一行代码,整个软件都要重新构建和部署,所以维护成本会越来越高。
为了解决这些问题,就必须得打破代码的耦合,拆分单体架构,将软件拆分为一个个独立的功能单元。于是就诞生了“面向服务的架构”(service-oriented architecture,简称 SOA)。
所谓的服务(service),就是在后台不间断运行、提供某种功能的一个程序。每个服务都是独立的功能单元,承担不同的功能,服务之间通过通信协议连在一起。
和单体架构不同,面向服务的架构默认运行在不同服务器上,每台服务器提供一种服务,多态服务器共同组成一个完整的网络应用。这样做有很多优点:
- 每种服务功能单一,相当于一个小型软件,便于开发和测试。
- 每种服务独立运行,提高了可靠性。
- 不同服务可以单独开发和部署,便于升级。
- 扩展性好,可以非常容易地加机器、加功能,承受高负载。
2014 年,Docker 的出现彻底改变了软件开发的面貌,它让程序运行在容器中,每个容器可以分别设定运行环境,并且只占用非常少的系统资源。
这样就带来了一个极大的好处,“面向服务的架构”不再每个服务占用一台服务器,而是占用一个容器。爽啊,只用一台服务器就实现了面向服务的架构,这在以前是做不到的。这种实现方式就叫做微服务。

依然使用“服务”作为功能单元,但变成了轻量级实现,不需要新增服务器,只需要新建一个容器(一个进程),所以就叫“微服务”了。
那分布式和微服务是一样的吗?
微服务是一种架构,分布式通常被称为分布式系统、分布式计算或者分布式数据库,微服务架构是一种分布式系统,因为它会将应用分解为单独的组件或者“服务”。例如,微服务架构可能具有与业务功能(支付、用户、产品等)相对应的服务,这正符合分布式系统的定义:分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。
分布式系统旨在消除系统的瓶颈或者中心故障点。分布式系统的节点提供了冗余能力,任何节点出现故障,其他节点都会准备好接管和替换故障节点,由于节点能够轻松地进行水平和垂直扩展,因此稳定性得到了极大的提升。如果系统的负载较大,可以添加额外的节点来帮助消化负载,也可以通过提高单个节点的容量来应对大量负载。
当然了,任何事情都不是尽善尽美的,分布式系统有很多优点,但同时也带来了复杂性,维护的成本也会随之提升。

4)加分项
如果懂支付、IOT、Netty、nacos、Zookeeper、Apollo、kafaka、rocketmq、redis、skywalking 等相关技术,待遇肯定也会更高更好。那下面我用这张技术架构图来整体描绘下后端开发涉及的技术栈。

再用文字版描述/增加一些技术栈,方便球友们做笔记。
- 构建工具:后端(Maven、Gradle)、前端(Webpack、Vite)
- 单元测试:Junit
- 开发框架:SpringMVC、Spring、Spring Boot
- Web 服务器:Tomcat、Caddy、Nginx
- 微服务:Spring Cloud
- 数据层:JPA、MyBatis、MyBatis-Plus
- 模板引擎:thymeleaf
- 容器:Docker(镜像仓库服务Harbor、图形化工具Portainer)、k8s、Podman
- 分布式 RPC 框架:Dubbo
- 消息队列:Kafka(图形化工具Eagle)、RocketMQ、RabbitMQ、Pulsar
- 持续集成:Jenkins、Drone
- 压力测试:Jmeter
- 数据库:MySQL(数据库中间件Gaea、同步数据canal、数据库迁移工具Flyway)
- 缓存:Redis(增强模块RedisMod、ORM框架RedisOM)
- nosql:MongoDB
- 对象...
未能定位到原文的划线
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
1. 微信扫右侧的优惠券加入知识星球
2. 解锁星球的实战项目教程和源码: 项目源码+教程获取
真诚点赞 诚不我欺
回复