---
url: /doc/Java面试指北/9yzao0st/index.md
---
# 练级攻略篇

欢迎阅读\*\*「练级攻略」\*\*相关的文章，这个系列主要内容一些有助于个人成长的经验分享。

## 内容概览

* \[x] [如何成为一个合格的程序员？](https://www.yuque.com/snailclimb/mf2z3k/tm6xk3)
* \[x] [如何快速提高编程能力？](https://www.yuque.com/snailclimb/mf2z3k/iwirmw)
* \[x] [如何快速上手一个新项目？](https://www.yuque.com/snailclimb/mf2z3k/dbhn2f)
* \[x] [如何有效地提高工作效率？](https://www.yuque.com/snailclimb/mf2z3k/ilut9e)
* \[x] [如何更高效地自学编程？](https://www.yuque.com/snailclimb/mf2z3k/imaxdd)
* \[x] [如何快速学习新技术？](https://www.yuque.com/snailclimb/mf2z3k/cpo8gd)
* \[x] [大厂招聘更看重什么能力？](https://www.yuque.com/snailclimb/mf2z3k/sg31f0)

## 常见问题

### 如何提高技术深度？

> <https://t.zsxq.com/13Ab1yRwo>

追求 T 型发展是必然的，但绝大部分人往往容易忽略掉深度，比如在学习某个框架的时候只注重应用而不关注底层原理，学习某个知识点的时候蜻蜓点水，对于业务需求的理解思考不够，遇到问题之后不知道如何解决。

可以看到，深度的关联到的概念非常多。对于面试来说，深度更倾向于指的是你对某个知识点的掌握程度，比如连环炮式的提问你能够应对多少。有水平的面试官通常不会对一个知识点蜻蜓点水，他会问很多关于这个知识点的问题，尤其是大厂面试。比如索引连环炮：

1. 为什么索引能提高查询速度?
2. 聚集索引和非聚集索引的区别？非聚集索引一定回表查询吗?
3. 索引这么多优点，为什么不对表中的每一个列创建一个索引呢？(使用索引一定能提高查询性能吗?)
4. 索引底层的数据结构了解么？Hash 索引和 B+树索引优劣分析
5. B+树做索引比红黑树好在哪里？
6. 最左前缀匹配原则了解么？
7. 什么是覆盖索引
8. 如何查看某条 SQL 语句是否用到了索引？

并且，问到了索引，可能还会问一些索引相关的知识点，比如 SQL 优化方法。

从面试角度来说，提升深度的方法其实很简单，就是要深入研究学习重要的知识点，多多思考总结，将自己学习到的知识点串联起来。

### 学习新技术容易忘记怎么办？

> <https://t.zsxq.com/12vTGXkee>

这其实挺正常的，正确的学习方法和及时的复习才是解决这个问题关键。

复习比较好的方式还是看官方文档。如果遇到官方文档介绍不清楚的点，再去搜索对应的博客或者视频看即可。书籍也可以，但书籍更适合那些理论性较强的知识比如数据库，框架类更新比较快，又比较重实战，很难找到合适的书籍。更好的复习方式还是要多使用，用的多了之后，自然就记住了。

在学习框架使用的时候，没有太大必要花大量时间的整理做笔记贴代码，意义不大。忘记了随时查文档，你只需要记住关键词即可，比如 Spring Boot+ Redis、Spring Boot+ RestTemplate 。理论性的东西，尽量多找一些比较好的博客看，可以简单整理一下笔记，用自己的话去理解一遍，效果会更好一些。

对于重要的实战性知识点比如框架应用、中间件整合，尽量还是要去实践一下。学习编程，不动手实践那都是扯淡。如果自己比较喜欢做项目的话，可以通过项目实战的方式去实践，这样效果会比单纯写 Demo 要好很多。

一定不要养成看视频不动手的习惯，被动接受，这种学习效果是最差的。

还要学会将这个技术和自己之前学到的技术建立连接，形成一个网络。

最后，提醒一下：学习过程中没弄懂的知识点一定要尽快解决。如何解决？首选百度/Google，通过搜索引擎解决不了的话就找身边的朋友或者网上认识的一些人。

### 程序员有哪些值得考的证书？

有球友问到有哪些适合程序员考的证书，这里简单总结一下，可以作为参考：[有哪些适合程序员拿的高含金量证书？](https://t.zsxq.com/pPwty) 。

### 如何准备软考？

阿里云开发者发了一篇高级系统架构设计师的考试备战攻略，可以看看，学习一下备考思路：[临时抱佛脚必看｜一个月速通高级系统架构设计师！（低分飘过版）](https://mp.weixin.qq.com/s/Ts3KQloKrFK_9y1MAZDbTg) 。还有这篇也看看： [软考复盘：我的一些复习经验分享](https://www.cnblogs.com/edisonchou/p/edc_ruankao_system_architect_experience.html) ，可行性较强，里面提到了作者用到的一些资料、备考时间规划、备考心得等干货。

个人不太建议为了准备软考而选择去报班，真不如自己自学。当然了，你也可以去网上找一些培训班的教学视频看看，资料还是挺多的。

\*\*软考有用吗？\*\*对于绝大部分互联网企业来说，软考证书确实没用。不过，软考证书在国企评工程师职称和一些城市积分落户或者人才判定的时候还是有一些作用的，这也是绝大部分人选择软考的原因。

## 建议

### 构建知识组合并对知识组合做定期投资

《程序员修炼之道》这本书提到了一个知识组合的概念，并且，这本书还建议我们构建知识组合并对知识组合做定期投资。

**什么是知识组合？** 我们喜欢把程序员所知道的关于计算的所有方面、他们所工作的应用程序领域以及他们的所有经验作为他们的知识组合。管理知识组合与管理金融组合非常相似：

1. 认真的投资者把定期投资作为一种习惯。
2. 多样化是长期成功的关键。
3. 聪明的投资者在保守投资和高风险、高回报投资之间保持平衡。
4. 投资者试图低买高卖以获得最大回报。
5. 投资组合应定期审查和重新平衡。

如果你不知道添加什么内容到自己的知识组合中，这里有一些建议：

1. **每年学习一门新语言**：多学习几种不同的解决方法，能帮助自己拓宽思维，避免陷入陈规。
2. **每月读一本技术书** : 虽然网络上有大量的短文和偶尔可靠的答案，但深入理解还是需要去读长篇的书。
3. **非技术书籍也要读** ：你的生活不应该只要技术，你也要和人打交道，你也要生存。
4. **上课** ：大学公开课或者网上的一些有趣的课程，亦或是一些公开的技术演讲......。
5. **交流** ：加入一些技术交流组织或者技术交流群。
6. **尝试不同的环境** ：如果你只在 Windows 下工作，那么就花点时间在 Linux 上。如果你只使用简单的编辑器和 Makefile，那就试试最新的炫酷复杂的 IDE，反之亦然。
7. **与时俱进** ：学习一下你的技术栈之外的其他技术，即使你可能不会在项目中使用到它们。学习的过程将会扩展你的思维，很可能为你打开一扇全新的大门。

为此你需要 ：

1. **充分安排自己的时间** ：时间总是不够用的。所以你需要提前准备好，确保在无聊的时候有事可做。
2. **要有批判性思维** ：批判性地思考读到的和听到的东西。你需要确保组合中的知识是精准的。这个会在后面详细讲到。

### 减少抱怨，改变自己

对当前的工作不满意？那就换一个工作！

对当前的项目组不满意？那就换一个项目组！

对自己的技术不满意，那就提高自己的技术！

想远程工作？如果你的公司不同意，就去找一个可以远程工作的公司。

**人生如水，人只能去适应环境，如果不能改变环境，就改变自己** 。

## 文章精选

下面这些是我精选的一些文章，每一篇都非常值得细读揣摩：

* [从业 18 年，我总结了 9 个最有价值的经验 - InfoQ](https://www.infoq.cn/article/DUSi0kwDtUZhspcJVg8l) :   放下自负、语言只是工具、编程不是要记下所有东西、终身学习、代码要解决问题而非完美、先让代码起作用之后再优化、项目最后的 10%往往要花费 90%的时间、写过一次以上的代码，需要进行抽象。
* [工作 7 年，我的 10 条经验总结 - 阿里技术](https://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA==\&mid=2247503988\&idx=1\&sn=262694ac8710e97d517344af38a72590\&chksm=e92aed7bde5d646dc6b4f2fce37c27f2630eb4cb66c841927382f4bff5a44b8a7a27ea94b960\&scene=21#wechat_redirect) ：独立思考、总结沉淀、知行合一......。
* [我在滴滴和头条的两年后端研发工作经验分享！ - syntax\_error](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==\&mid=2247486873\&idx=2\&sn=025da38db2d53c626287293075743e41\&chksm=cea24252f9d5cb440f3510192d15319eded001a1547050be9f4e68c4a7b40429ecc00377c117\&token=168551479\&lang=zh_CN#rd)：学会深入思考，总结沉淀、积极学习，保持技术热情、主动承担，及时交流反馈、提升自己的软素质能力......。
* [程序员应该避免的一些错误 - InfoQ](https://www.infoq.cn/article/DX5RoYIDKWhgxmRgaV5J) ：低估工作量、不写测试、眼高手低，缺少训练、过于自信......。

> 更新: 2024-07-14 20:07:11\
> 原文: <https://www.yuque.com/snailclimb/mf2z3k/mm4nm6>
