---
url: /doc/Java面试指北/kmosn4md/index.md
---
# 如何介绍项目经历更容易获得面试官的青睐？

> 整理完善自：https://juejin.cn/post/7017732278509453348

在面试过程中，通常经过简单寒暄后，面试官会先让应聘者进行自我介绍，然后询问简历中所列的项目，并要求介绍相关项目经验。常见的问法是：“请谈一下你最近的（或感觉不错的）一个项目。”

很多人在面试前缺乏对项目经验的认真准备，导致无法回答面试官的追问，甚至不能清晰地介绍自己的项目经验。

本文将从“前期准备”和“面试技巧”两大层面进行介绍，帮助应聘者了解如何准备面试时的项目经历介绍。当然，每个人的情况可能不同，没有最佳的方法，只有更适合自己的方式，需要根据个人实际情况进行选择。

## 前期分析

### 知己知彼百战不殆

如果想在面试中打动面试官，那么你就必须了解他到底想从你口中了解到什么，哪些信息是他所关心的。

在面试前准备项目介绍时，不要害怕。面试官对你的项目了解有限，只能根据你的描述去推测你的工作经历。因此，你对项目的熟悉程度要远远超过面试官。面试官希望了解你负责的功能模块，以及在项目中所使用的技术栈等信息，所以你需要从自己的介绍中深入挖掘技术点，以展示你对项目及技术的了解深度。

在介绍项目时，要让面试官相信这个项目与你有密切的关系，你负责的功能是项目中最为重要的部分之一。一定要展现出自信，通过充分地准备，清晰地表达自己的想法，展现自己的专业精神，这样你就会给面试官留下比较好的印象。

心态上准备好了，那么就要分析面试官想要考察什么呢？

* **项目基本情况**：考察你对项目的了解比如项目技术栈、架构、数据库表设计等等。
* **表达能力**。考察表达及逻辑思维能力，看面试者能不能在几分钟就跟一个完全没有参与过项目的人讲清楚这个项目。
* **技术能力**：根据你的项目经历来提一些技术问题考察你。举个例子，你的项目经历使用了 Redis 来做缓存和限流，那面试官可能就问你一些 Redis 和限流相关的技术问题比如 Redis 持久化机制、Redis 性能优化、限流算法等等。
* **个人职责**。你在项目中中承担了什么角色，做了什么工作。
* **解决问题能力**。一般都会问项目难点，其实就是想知道当你遇到技术或业务难点，是如何思考并解决问题的。
* **项目复盘及经验总结能力**。哪里是自己觉得做的成功的，哪里觉得没做好的，是否还有继续优化的空间。自己所做的项目对个人能力有哪些提升。

### 熟能生巧，对答自如

首先是需要有个充足的准备，写项目经验一定要写自己熟悉的，因为面试官就会根据你写的项目经验提问。在面试前，就要在脑子里过一遍这个项目，准备好说辞，面试的时候自信点。讲清楚这个项目是满足什么需求的，开发过程中遇到哪些困难，自己怎么解决这些困难的。如果你经过充分准备，面试中也能答的很好，那面试官好感度就会增加，相反，如果面试中说的磕磕绊绊，那么可信度就会低了。

### 明确目标，控盘引导

在面试前，你需要明确自己的面试目的，就是通过面试，争取拿到 Offer 。

最保守的方式就是在自己介绍项目的时候要么就是以面试官为主导，回答很简单，就是面试官问你一句你答一句。这会让面试官失去想了解你的信心，其次也会让自己错失表现自己，凸显重点思想的机会。做好防守虽然也是一种取胜的方式，但并非上策，很容易丢分。

讲自己简历中所列的项目一定要很清晰明了有逻辑，埋下后续可能会提问到的技术点，也给面试官留下一个好印象。如果项目经验介绍的好，有逻辑和引导力，那么就会给自己带来以下两点明显的好处：

1. 给面试官带来的第一印象好，会让面试官感觉该候选人表述能力较强。
2. 一般来说，面试官会根据候选人介绍的项目背景来提问题，假设面试时会问 10 个问题，那么至少有 5 个问题会根据候选人所介绍的项目背景来问，候选人如果说的好，那么就可以很好地引导面试官去问后继问题，这就相当于把提问权完全交由自己控制了。

如果你的工作经验比面试官还丰富的话，甚至还可以控制整个面试流程，甚至遇到 Nice 的面试官的话会以讨论的方式进行沟通。

|                      | 应聘者                                                                   | 面试官                                           |
| -------------------- | ------------------------------------------------------------------------ | ------------------------------------------------ |
| 对项目及技能了解程度 | 很了解                                                                   | 只能听你说，只能根据你说的内容做出判断           |
| 面试过程中的职责     | 在很短的时间内防守成功即可                                               | 如果不能全面了解，找不到你薄弱的地方就代表你做过 |
| 准备时间             | 面试前你有充足的时间准备                                                 | 一般在面试前用 30 分钟阅读你的简历               |
| 沟通过程             | 你可以出错，但别出关键性的错误                                           | 不会太为难你，除非你太差                         |
| 技巧                 | 表达要有逻辑性，引导面试官提问，也可以从网上找其实就问些通用的有规律的问 | 足够多的面试题                                   |

既然面试官无法了解你的底细，那么他们怎么来验证你的项目经验和技术？下面总结了一些常用的提问方式。

| 提问方式                                                                                             | 目的                                                                 |
| ---------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| 让你描述工作经验和项目（极有可能是最近的），说的是否和简历上一致                                     | 看看你看你是否真的做过这些项目                                       |
| 看你简历上项目里用到的技术，比如框架、数据库，然后针对这些技术提些基本问题                           | 还是验证你是否做过项目，同时看你是否了解这些技术，为进一步提问做准备 |
| 针对某个项目，不断深入地问一些技术上的问题，或者从不同侧面问一些技术实现，看你前后回答里面是否有矛盾 | 深入核实你的项目细节                                                 |
| 针对某技术，问些项目里一定会遇到的问题，比如候选人说做过数据库，那么就会问索引方面的问题             | 通过这类问题，核实候选人是否真的有过项目经验（或者还仅仅是学习经验） |

## 面试技巧

内容上要对项目进行以下拆分，思考并进行总结，并试着口语化讲出来。

1. **项目描述**。用通俗易懂且简洁的方式简述项目，阐述整个项目及其背景、规模，不要有太多的技术词汇。
2. **项目模块**。2-3 分钟的流程介绍，详细的列出项目实现的功能，各个模块，整个过程，大概思路。
3. **项目技术栈**。说出项目实现的技术栈和架构，能说出项目的不寻常之处，比如采用了某项新技术，采用了某个架框等，简要说明技术选型。
4. **候选人的角色及责任**。说出你在项目中的责任，所涉及的功能模块，运用的技术，碰到的难题、代码细节，技术点、应对措施。
5. **项目总结，待优化点**。

方法上可以使用万能的 STAR 原则

* Situation（背景）：做这个项目的背景是什么，比如这是个人项目还是团队项目，为什么需要做这个 项目，你的角色是什么，等等。
* Target（目标）：该项目要达成的目标是什么？为了完成这个目标有哪些困难？
* Action（行动）：针对所要完成目标，你做了哪些工作？如何克服了其中一些困难？
* Result（结果）：项目最终结果如何？有哪些成就？有哪些不足之处可以改进？

除了项目所取得的成绩之外，候选人还可以说明自己做完项目的感受，包括项目中哪些环节做的不错，哪些环节有提高的空间，自己在做这个项目中有何收获等。

无论是介绍自己的 IT 产品开发经历，还是在其他公司的实习项目经历，候选人都可以运用 STAR 法则来具体说明，轻松表现出自己分析阐述问题的清晰性、条理性和逻辑性。

但面试前如下的一些情况还是需要多加注意的。

1. **回答很简单**。问什么答什么，往往就一句话回答。如果你日常回答别人的问题或者之前面试中出现过类似情况就要有所改善了。这里应该将你知道的说出来，重点突出跟问题相关的思想、框架或技术点等。
2. **扯闲篇，大忌**。说少了太过于简短没有互动不好，自来熟，回答问题没有重点，没有逻辑，乱说一通也是大忌。会让面试官感觉你思路混乱，抓不到重点，只是拿其他方面的东西东拼西凑。
3. **说的太过流利**，也未必就是好事。虽然面试有所准备在面试官看来是好事，但是机械的准备好答案去背诵，主观上给人一种你并没有理解这个问题，只是靠记忆知道答案，后续面试官的问题也会相应的加大难度。这方面改善建议是适当停顿，做思考状，边思考边说，过程中同面试官有个眼神上的互动。
4. **有的放矢的介绍技术细节**。不要一次性过多的介绍技术细节，技术面点到为止，等面试官来问。因为面试官通常都有自己的面试节奏。所以技术点等着问的时候再多聊，可以先事先埋下技术点引导着面试官继续追问。
5. **主动介绍项目亮点**。因为面试官没有义务挖掘你的亮点，所以这就需要自己主动提。遇到不会的问题，就如实说这个技术点不会。或者半懂也可以直接说。甚至可以谈谈自己的见解。把自己了解的说说。

## 项目准备

### 准备项目的各种细节

一般来说，在面试前，大家应当准备项目描述的说辞，自信些，因为这部分你说了算，流利些，因为你经过充分准备后，可以知道你要说些什么。而且这些是你实际的项目经验（不是学习经验，也不是培训经验），那么一旦让面试官感觉你都说不上来，那么可信度就很低了。

不少人是拘泥于“项目里做了什么业务，以及代码实现的细节”，这就相当于把后继提问权直接交给面试官。下表列出了一些不好的回答方式。

| 回答方式                                                                                                                                  | 后果                                                                                                                                 |
| ----------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| 我在 XX 软件公司做了 XX 门户网站项目，这个项目做到了 XX 功能，具体是 XX 和 XX 模块，各模块做了 XX 功能，客户是 XX，最后这个项目挣了 XX 钱 | 面试官可能会直接打断，因为业务需求面试官不需要了解，他会直接问你项目里的技术                                                         |
| 在毕业设计的时候（或者在读书的时候，在学习的时候，在 XX 培训学校，在 XX 实训课程中）                                                      | 面试官可能会直接打断，提问你这个是否是商业项目，如果不是，你有没有其他的商业经验。如果没商业项目经验，除非是校招，否则就直接结束面试 |
| 描述项目时，一些关键要素（比如公司、时间、所用技术等）和简历上的不匹配                                                                    | 面试官会深究这个不一致的情况，如果是简历造假，那么可能直接中断面试，如果真的是笔误，那么就需要提供合理的解释                         |

在避免上述不好的回答的同时，大家可以按下表所给出的要素准备项目介绍。如果可以，也请大家准备一下用英语描述。

| 要素                                                                                                                                                                                                                    | 样式                                                                                                                                                                                                                                                                             |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 控制在 1 分钟里面，讲出项目基本情况，比如项目名称，背景，给哪个客户做，完成了基本的事情，做了多久，项目规模多大，用到哪些技术，数据库用什么，然后酌情简单说一下模块。重点突出背景，技术，数据库和其他和技术有关的信息。 | 我在 XX 公司做了 XX 外汇保证金交易平台，客户是 XX 银行，主要完成了挂盘，实盘成交，保证金杠杆成交等功能，数据库是 Oracle，前台用到 JS 等技术，后台用到 Java 的 SSH，几个人做了 X 个月。不需要详细描述各功能模块，不需要说太多和业务有关但和技术无关的。如果面试官感兴趣，等他问。 |
| 要主动说出你做了哪些事情，这部分的描述一定需要和你的技术背景一致。                                                                                                                                                      | 我做了外汇实盘交易系统，挂单成交系统，XXX 模块，做了 X 个月                                                                                                                                                                                                                      |
| 描述你在项目里的角色                                                                                                                                                                                                    | 我主要是做了开发，但在开发前，我在项目经理的带领下参与了业务调研，数据库设计等工作，后期我参与了测试和部署工作。                                                                                                                                                                 |
| 可以描述用到的技术细节，特别是你用到的技术细节，这部分尤其要注意，你说出口的，一定要知道，因为面试官后面就根据这个问的。你如果做了 5 个模块，宁可只说你能熟练说上口的 2 个。                                            | 用到了 Java 里面的集合，JDBC...等技术，用到了 Spring MVC 等框架，用技术连接数据库。                                                                                                                                                                                              |
| 这部分你风险自己承担，如果可以，不露声色说出一些热门的要素，比如 Linux，大数据，大访问压力等。但一旦你说了，面试官就会直接问细节。                                                                                      | 这个系统里，部署在 Linux 上，每天要处理的数据量是 XX，要求是在 4 小时，1G 内存是的情况下处理完 5 千万条数据。平均访客是每分钟 XXX。                                                                                                                                              |

### 不露痕迹地说出面试官爱听的话

在项目介绍的时候（当然包括后继的面试），面试官其实很想要听一些关键点，只要你说出来，而且回答相关问题比较好，这绝对是加分项。我在面试别人的时候，一旦这些关键点得到确认，我是绝对会在评语上加上一笔的。

下面列些面试官爱听的关键点和对应的说辞。

| 关键点                                                   | 说辞                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| :------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 能考虑到代码的扩展性，有参与框架设计的意识               | 我正在开发的 XX 保险项目采用了 Spring Boot、Spring Security 和 Mybatis 这些技术栈，并且使用了 PostgreSQL 作为数据库，Redis 作为缓存。在项目开发过程中，我与技术 Leader 一起设计了整个网站架构，并参与了项目以及 CI/CD 的搭建。为了提高代码可维护性，我们在连接数据库时采用了 DAO 模式，将 SQL 语句封装到 DAO 层中。这样做的好处是，当需要扩展功能模块时，只需要修改 DAO 层的代码，而不用修改其他层的代码，大大降低了修改代码的工作量。 |
| 有调优意识，能通过 监控发现问题点，然 后解决             | 在开发阶段，我就注意到内存的性能问题和 SQL 运行的时间问题，在压力测试阶段，我会通过 xx 工具来监控内存和数据库，发现待提升的代码点，然后通过查资料来优化。最后等项目上线后，我们会部署监控系统，一旦发现内存和数据库问题， 我们会第一时间解决。                                                                                                                                                                                         |
| 动手能力很强，肯干活，会的东西比较多，团队合作精神比较好 | 在项目里，我不仅要做开发的工作，而且需要自己测试，需要自己根据一些日志的输出到数据库或 Java 端去 debug,当我开好一个模块时，需要自己部署到 Linux 上测试。 或者，一旦遇到问题，如果是业务方面的，我会及时和项目经理沟通，如果是技术方面的，我会自己查资料，如果是测试方面的，我会及时和测试的人沟通。                                                                                                                                    |
| 责任心比较强，能适应大压力的环境                         | 被问“你如果在项目里遇到问题怎么办？”回答：遇到问题我先查资料，如果实在没法解决，不会拖，会及时问相关的人，即使加班，也会在规定的时间内解决。                                                                                                                                                                                                                                                                                           |
| 有主见，能不断探索新的知识                               | 在项目里，我会在保证进度的前提下和项目经理说我的想法，提出我的解决方案。 在开发过程中，我会先思考一下，用一种比较好的方式，比如效率最高的方法实现。 另外你要找机会说出：平时我会不断看一些新技术（比如微服务、服务网格)，会不断深入了解一些框架和技术的实现底层。                                                                                                                                                                      |

### 一旦有低级错误，可能会直接出局

面试过程中有些方面你是绝对不能出错，所以你在准备过程中需要尤其注意如下的因素。下面列了些会导致你直接出局的错误回答。

| 错误类型                                                                                                                                         | 导致的后果                                                                             |
| ------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- |
| 项目经历中写了自己开发某个模块，结果面试官一问细节自己就不会了                                                                                   | 会让面试官怀疑这个项目的真实性，怀疑这个功能模块到底是不是你做的，怀疑你有没有认真开发 |
| 项目经历涉及到的一些知识点没有学习明白比如项目用了 Redis，但面试官问你 Redis 相关的问题你回答的不好                                              | 会让面试官觉得你的技术能力较差                                                         |
| 简历上的技能描述和回答出来的明显不一致，比如明明是只会简单的 Linux 使用,但吹得天花乱坠                                                           | 会让面试官觉得你这人不诚实，对待技术不认真，对自己没有清晰的认识                       |
| 技术问题回答不清楚，模棱两可（如果在面试中遇到自己不擅长或不了解的技术问题时，需要诚实地承认自己的不足或原因，然后展示自己解决问题的方法和思路） | 会让面试官怀疑你的专业性                                                               |

## 注意事项

### 避免拿别人的项目直接用

很多初级阶段的同学们，可能并没有实际的商业项目，或者所做过的项目类型有限，就直接从网上找项目当做自己的项目，直接使用是断不可取的，但是如果你仿造别人的项目自己去尝试着将功能实现，有自己的新得体验，这样在做的过程中也可以对项目中的功能点和技术栈有进一步的了解，不至于在面试的时候，磕磕巴巴，甚至将项目时间都搞错。

### 避免低级错误

很多基础相关的低级错误一定要杜绝，如果被问到熟悉知识点就多答，不熟悉就直接说不熟悉。每个人都有自己擅长的点也有不擅长的。

另外就是可以引导一些话题，不要自说自话。很多人会一直很激进的表达自己，反而显得强势。有的面试者被问到数据库相关内容，他不仅回答数据库，还会把大数据处理技术全部都说出来。其实点到为止最好，面试官感兴趣会继续问，但是你一直主导话题，会减分。

这里要说的是，不要把不是自己做的项目说成是自己做的，自己不是核心负责人说成是负责人，即使你对项目很熟悉了解，像我们一线起来的面试官，问几个问题就很清楚你实际参与了多少了，只是大部分不会明说而已，反而起到反效果。

## 总结

首先我要劝大家，认真对待每一次面试。既然知道自己要参加面试，就在家自己模拟一下面试。自己提前准备一下自己的项目描述，不要到了面试的时候去打磕巴。但是如果你参加面试的时候实在紧张了，磕巴了不要慌。深呼吸尝试让自己放松，一般面试官也会给些提示帮助你回答的。

两句话，第一，面试前一定要准备，第二，本文给出是的方法，不是教条，大家可以按本文给出的方向结合自己的项目背景做准备，而不是死记硬背本文给出的一些说辞。

> 更新: 2023-06-27 23:03:02\
> 原文: <https://www.yuque.com/snailclimb/mf2z3k/hlxtez9yy1hfc2y1>
