diff --git a/README.md b/README.md index 443e71c6e5e0c71a9fff3a245a989a52057b7f2f..c808c9257d1c0570f22a78b20729e6bea1f4fb9e 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@

Sponsor

- +

@@ -238,6 +238,7 @@ ## Java学习常见问题汇总 - [Java学习路线和方法推荐](docs/questions/java-learning-path-and-methods.md) +- [Java培训四个月能学会吗?](docs/questions/java-training-4-month.md) ## 工具 diff --git a/docs/questions/java-learning-path-and-methods.md b/docs/questions/java-learning-path-and-methods.md index 5278fbb33e8c16b3c6da6cd59814d3455e7d2ba8..1d9cf4dbc48ad03213b10cd70d50d052fb786442 100644 --- a/docs/questions/java-learning-path-and-methods.md +++ b/docs/questions/java-learning-path-and-methods.md @@ -31,9 +31,9 @@ 学习完之后可以看一下下面这几篇文章,检查一下自己的学习情况: -- **[Java 基础知识回顾](../java/Java基础知识.md "Java 基础知识回顾")** -- **[Java 基础知识疑难点/易错点](../java/Java疑难点.md "Java 基础知识疑难点/易错点")** -- **[一些重要的 Java 程序设计题](../java/Java程序设计题.md "一些重要的Java程序设计题")** +- **[Java 基础知识回顾](https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/Java%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.md)** +- **[Java 基础知识疑难点/易错点](https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/Java%E7%96%91%E9%9A%BE%E7%82%B9.md)** +- **[一些重要的 Java 程序设计题](https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/Java%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E9%A2%98.md)** 检测一下自己的掌握情况,这 34 个问题都时 Java 中比较重要的知识点,最重要的是在 Java 后端面试中的出场率非常高。 @@ -67,12 +67,12 @@ 另外,推荐看一下下面这几篇文章: -- **[Java 并发基础常见面试题总结](../java/Multithread/JavaConcurrencyBasicsCommonInterviewQuestionsSummary.md "Java 并发基础常见面试题总结")** -- **[Java 并发进阶常见面试题总结](../java/Multithread/JavaConcurrencyAdvancedCommonInterviewQuestions.md "Java 并发进阶常见面试题总结")** -- [并发容器总结](../java/Multithread/并发容器总结.md "并发容器总结") -- [乐观锁与悲观锁](../essential-content-for-interview/面试必备之乐观锁与悲观锁.md "乐观锁与悲观锁") -- [JUC 中的 Atomic 原子类总结](../java/Multithread/Atomic.md "JUC 中的 Atomic 原子类总结") -- [AQS 原理以及 AQS 同步组件总结](../java/Multithread/AQS.md "AQS 原理以及 AQS 同步组件总结") +- **[Java 并发基础常见面试题总结](https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/Multithread/JavaConcurrencyBasicsCommonInterviewQuestionsSummary.md)** +- **[Java 并发进阶常见面试题总结](https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/Multithread/JavaConcurrencyAdvancedCommonInterviewQuestions.md)** +- [并发容器总结](https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/Multithread/%E5%B9%B6%E5%8F%91%E5%AE%B9%E5%99%A8%E6%80%BB%E7%BB%93.md) +- [乐观锁与悲观锁](https://github.com/Snailclimb/JavaGuide/blob/master/docs/essential-content-for-interview/%E9%9D%A2%E8%AF%95%E5%BF%85%E5%A4%87%E4%B9%8B%E4%B9%90%E8%A7%82%E9%94%81%E4%B8%8E%E6%82%B2%E8%A7%82%E9%94%81.md) +- [JUC 中的 Atomic 原子类总结](https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/Multithread/Atomic.md) +- [AQS 原理以及 AQS 同步组件总结](https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/Multithread/AQS.md) ### step 3(可选):操作系统与计算机网络 @@ -104,19 +104,19 @@ 下面这些 MySQL 相关的文章强烈推荐你看看: -- **[【推荐】MySQL/数据库 知识点总结](../database/MySQL.md "【推荐】MySQL/数据库 知识点总结")** -- **[阿里巴巴开发手册数据库部分的一些最佳实践](../database/阿里巴巴开发手册数据库部分的一些最佳实践.md "阿里巴巴开发手册数据库部分的一些最佳实践")** -- **[一千行 MySQL 学习笔记](../database/一千行MySQL命令.md "一千行MySQL学习笔记")** -- [MySQL 高性能优化规范建议](../database/MySQL高性能优化规范建议.md "MySQL高性能优化规范建议") -- [数据库索引总结](../database/MySQL%20Index.md "数据库索引总结") -- [事务隔离级别(图文详解)](../database/事务隔离级别(图文详解 "事务隔离级别(图文详解 "事务隔离级别(图文详解)")").md) -- [一条 SQL 语句在 MySQL 中如何执行的](../database/一条sql语句在mysql中如何执行的.md "一条SQL语句在MySQL中如何执行的") +- **[【推荐】MySQL/数据库 知识点总结](https://github.com/Snailclimb/JavaGuide/blob/master/docs/database/MySQL.md)** +- **[阿里巴巴开发手册数据库部分的一些最佳实践](https://github.com/Snailclimb/JavaGuide/blob/master/docs/database/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E5%BC%80%E5%8F%91%E6%89%8B%E5%86%8C%E6%95%B0%E6%8D%AE%E5%BA%93%E9%83%A8%E5%88%86%E7%9A%84%E4%B8%80%E4%BA%9B%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.md)** +- **[一千行 MySQL 学习笔记](https://github.com/Snailclimb/JavaGuide/blob/master/docs/database/%E4%B8%80%E5%8D%83%E8%A1%8CMySQL%E5%91%BD%E4%BB%A4.md)** +- [MySQL 高性能优化规范建议](https://github.com/Snailclimb/JavaGuide/blob/master/docs/database/MySQL%E9%AB%98%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E8%A7%84%E8%8C%83%E5%BB%BA%E8%AE%AE.md) +- [数据库索引总结](https://github.com/Snailclimb/JavaGuide/blob/master/docs/database/MySQL%20Index.md) +- [事务隔离级别(图文详解)](https://github.com/Snailclimb/JavaGuide/blob/master/docs/database/%E4%BA%8B%E5%8A%A1%E9%9A%94%E7%A6%BB%E7%BA%A7%E5%88%AB(%E5%9B%BE%E6%96%87%E8%AF%A6%E8%A7%A3).md) +- [一条 SQL 语句在 MySQL 中如何执行的](https://github.com/Snailclimb/JavaGuide/blob/master/docs/database/%E4%B8%80%E6%9D%A1sql%E8%AF%AD%E5%8F%A5%E5%9C%A8mysql%E4%B8%AD%E5%A6%82%E4%BD%95%E6%89%A7%E8%A1%8C%E7%9A%84.md) ### step 6:常用工具 1. **Maven** :建议学习常用框架之前可以提前花半天时间学习一下**Maven**的使用。(到处找 Jar 包,下载 Jar 包是真的麻烦费事,使用 Maven 可以为你省很多事情)。 -2. **Git** :基本的 Git 技能也是必备的,试着在学习的过程中将自己的代码托管在 Github 上。([Git 入门](../tools/Git.md "Git入门")) -3. **Docker** :学着用 Docker 安装学习中需要用到的软件比如 MySQL ,这样方便很多,可以为你节省不少时间。([Docker 入门](../tools/Docker.md "Docker 入门")) +2. **Git** :基本的 Git 技能也是必备的,试着在学习的过程中将自己的代码托管在 Github 上。([Git 入门](https://github.com/Snailclimb/JavaGuide/blob/master/docs/tools/Git.md)) +3. **Docker** :学着用 Docker 安装学习中需要用到的软件比如 MySQL ,这样方便很多,可以为你节省不少时间。([Docker 入门](https://github.com/Snailclimb/JavaGuide/blob/master/docs/tools/Docker.md)) ### step 7:常用框架 diff --git a/docs/questions/java-training-4-month.md b/docs/questions/java-training-4-month.md new file mode 100644 index 0000000000000000000000000000000000000000..fe40c4dc305514afa6c82bb6eb3cdffd308fdd96 --- /dev/null +++ b/docs/questions/java-training-4-month.md @@ -0,0 +1,104 @@ +问题描述: + +> 最近在北京华软科技公司看到一个招聘,去咨询了人事部,他说培训四个月就能上岗,并且不要学费,上岗后再每还1000元,还一年,这个可靠吗?本人高中毕业,四个月能学会吗?谢谢了!!! + +下面是正文: + +一般说不要学费,上岗后每月再还1000元这种十有八九都不靠谱,就算你把合同看的再仔细,别人也总有各种办法去刁难你。 + +另外,目前的互联网行业已经完全不是它刚开始盛行的样子了。在互联网爆火🔥的初期,你可能会简单用一下语言就能找到一个不错的工作。那时候,即使是没有学历支撑直接从培训班出来的基本也都找到了还算是不错的工作。但是,现在已经完全不一样了。我觉得主要可以从以下几个方面讲: + +1. **没有学历支撑,直接从培训班出来的找工作会很难,甚至找不到**; +2. **面试的难度可以说一年比一年难,学的人越来越多,和你竞争的也越来越多,特别是像面试阿里、腾讯、字节跳动这样的大厂,你可能要和更多人去竞争。“面试造火箭,入职拎螺丝”想想也是正常,毕竟这么多人去竞争那少数的 offer,如果不难点的话,区分度就没那么明显了**; +3. 学习计算机专业的越来越多,和你竞争的也越来越多,需求就那么一些,人多了之后,平均工资水平以后应该不会和其他行业差别这么大。但是,我个人感觉技术厉害的还是会很吃香。只是,普通的程序员的工资可能比不上前几年了。 + +**养成一个学习习惯和编程习惯真的太重要了,一个好习惯的养成真的对后面的学习有很大帮助。** 说实话我自己当初在这方面吃了不少亏,很多比较好的习惯我也是后面自己才慢慢发现,所以这里想着重给大家说一下有哪些好的学习和编程习惯。另外,**不要在意自己会多少框架,真的没有一点用!** + +下面是一些我觉得还不错的编程好习惯,希望对大家有帮助。 + +## 编程好习惯推荐 + +> **下面这些我都总结在了 Github 上,更多内容可以通过这个链接查看:https://github.com/Snailclimb/programmer-advancement。** + +### 正确提问 + +我们平时任何时候都离不开提问特别是初学的时候,但是真正知道如何正确的提问的人很少。问别人问题前不要来一句“在吗”,你说你问了在吗我是回复好还是不回复好呢 ?不要让别人给你发 32 位的JDK,除非你是喜欢那个人。 + +更多关于如何提问的内容,详见 github 上开源版『提问的智慧』 ,抽时间看一下,我想看完之后应该会有很多收获。 + +更多内容可以查看我的这篇原创文章:[如何提问](docs/how-to-ask.md) + +### 健康生活 + +我一直觉得这一方面是最重要的,我想很多人和我一样会无意识间忽略它,等到真的身体不舒服了,你才开始意识到健康生活的重要性。 + +1. 除非万不得已,不要熬夜了。熬夜的危害就不用多说了,秃头加内分泌失调,你懂得! +2. 看电脑45分钟之后,起来走5分钟,看看远方放松一下。不要觉得这5分钟浪费时间,相反,这5分钟可能为你带来更大的效率提升。 +3. 可以考虑买一个电脑架子,保护好自己脊椎的同时,办公体验也会提升很多。 +4. 可以下载一个护眼宝,感觉可以护眼模式挺棒的,非常适合我们这种需要经常盯着电脑的人使用,强烈安利。 + +### 高效搜索 + +尽量用 google 查找技术资料以及自己在学习中遇到的一些问题。 + +### 解决 bug + +程序遇到问题先在 stackoverflow 找找,大部分别人已经遇到过了。如果上面没有的话,再考虑其他解决办法。实在解决不了的话,再去问你觉得有能力帮你解决的人(注意描述好自己的问题,不要随便截一个Bug 图)。 + +### 善于总结 + +学习完任何一门知识后,你可能当时看视频感觉老师讲的挺容易懂的。但是,过几天后你发现你忘的一干二净,别人问你一个类似的问题,你一点思路都没有。所以,我推荐你学完一门知识后不光要及时复习,还要做好总结,让知识形成一个体系。另外,你可以假想自己要给别人讲这个知识点,你能不能把这个知识点讲清楚呢?如果不能,说明你对这个知识点还没有彻底了解。这也就是人们经常说的费曼学习技巧。 + +总结的方式: + +1. 有道云笔记、OneNote......这类专门用来记录笔记的软件上; +2. 思维导图; +3. 通过写博客输出。可以考虑自己搭建一个博客(hexo+GithubPages非常简单),你也可以在简书、掘金......等等技术交流社区写博客。Markdown 格式参考: 中文文案排版指北: + +### 写博客 + +写博客有哪些好处: + +1. 对知识有更加深的认识,让自己的知识体系更加完整; +2. 督促自己学习; +3. 可能会带来不错的经济收入; +4. 提升个人影响力; +5. 拥有更多机会; +6. ...... + +**总的来说,写博客是一件利己利彼的事情。你可能会从中收获到很多东西,你写的东西也可能对别人也有很大的帮助。但是,写博客还是比较耗费自己时间的,你需要和工作做好权衡。** + +**分享是一种美德,任何行业都不是靠单打独斗的,写博客、写好博客是一个程序员很好的习惯。我为人人,人人为我!** + +更多内容可以查看我的这篇原创文章:[我为什么推荐你写博客?](./docs/我为什么推荐你写博客.md) + +### 多用 Github + +没事多去Github转转,如果有能力可以参与到一些开源项目中。多看看别人开源的优秀项目,看看别人的代码和设计思路,看的多了,你的编程思想也会慢慢得到提升。除了这些优秀的开源项目之外,Github上面还有很多不错的开源文档、开源资料什么的,我觉得对我们平时学习都挺有帮助。Github用得好还能装一下,毕竟人家还是一个全英文网站,咳咳咳。 + +### 实践 + +多去实践,将学到的东西运用到实际项目中去。很多人都找我抱怨过没有实际项目让自己去做,怎么能有项目经验呢?如果实在没有实际项目让你去做,我觉得你可以通过下面几种方式: + +1. 在网上找一个符合自己能力与找工作需求的实战项目视频或者博客跟着老师一起做。做的过程中,你要有自己的思考,不要浅尝辄止,对于很多知识点,别人的讲解可能只是满足项目就够了,你自己想多点知识的话,对于重要的知识点就要自己学会去往深出学。 +2. Github或者码云上面有很多实战类别项目,你可以选择一个来研究,为了让自己对这个项目更加理解,在理解原有代码的基础上,你可以对原有项目进行改进或者增加功能。 +3. 自己动手去做一个自己想完成的东西,遇到不会的东西就临时去学,现学现卖。 + +### 注意代码规范 + +从学习编程的第一天起就要养成不错的编码习惯,包、类、方法的命名这些是最基本的。 + +推荐阅读: + +- 阿里巴巴Java开发手册(详尽版)[https://github.com/alibaba/p3c/blob/master/阿里巴巴Java开发手册(详尽版).pdf](https://github.com/alibaba/p3c/blob/master/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4Java%E5%BC%80%E5%8F%91%E6%89%8B%E5%86%8C%EF%BC%88%E8%AF%A6%E5%B0%BD%E7%89%88%EF%BC%89.pdf) +- Google Java编程风格指南: +- Effective Java第三版中文版: + +### 沟通能力 + +程序员也离不开沟通。你可能需要与客户交流需求,还要和同事交流项目问题,还有可能定期需要向领导汇报项目进展情况。所以,我觉得不错的沟通能力也是一个优秀的程序员应该有的基本素质。 + +## 学习方法和学习路线推荐 + +推荐查看我的这篇文章[《可能是最适合你的Java学习方法和路线推荐》](https://github.com/Snailclimb/JavaGuide/blob/master/docs/questions/java-learning-path-and-methods.md),文中提到的学习路线以及方法是笔主根据个人学习经历总结改进后得出,我相信照着这条学习路线来你的学习效率会非常高。 +