- [程序员修炼之路](#程序员修炼之路)
- [学习/编程好习惯](#学习编程好习惯)
- [正确提问](#正确提问)
- [健康生活](#健康生活)
- [高效搜索](#高效搜索)
- [解决 bug](#解决-bug)
- [善于总结](#善于总结)
- [写博客](#写博客)
- [多用 Github](#多用-github)
- [实践](#实践)
- [注意代码规范](#注意代码规范)
- [其他](#其他)
- [沟通能力](#沟通能力)
- [如何提升个人影响力](#如何提升个人影响力)
- [面试必知](#面试必知)
- [如何获取大厂面试机会?](#如何获取大厂面试机会)
- [面试的时候应该穿什么?](#面试的时候应该穿什么)
- [面试前有哪些需要注意的地方?](#面试前有哪些需要注意的地方)
- [怎么自我介绍比较好?](#怎么自我介绍比较好)
- [如何介绍自己的项目?](#如何介绍自己的项目)
- [如果面试官问"你有什么问题问我吗?"时,你该如何回答](#如果面试官问你有什么问题问我吗时你该如何回答)
- [面试官问你的优点是什么,应该如何回答?](#面试官问你的优点是什么应该如何回答)
- [面试官问你的缺点是什么,应该如何回答?](#面试官问你的缺点是什么应该如何回答)
- [面试官问期望薪资时,应该如何回答?](#面试官问期望薪资时应该如何回答)
- [如何写出更优秀的代码](#如何写出更优秀的代码)
- [Java](#java)
- [作为 IT 行业的过来人,你有什么话想对后辈说的?](#作为-it-行业的过来人你有什么话想对后辈说的)
# 程序员修炼之路
## 学习/编程好习惯
养成一个学习习惯和编程习惯真的太重要了,一个好习惯的养成真的对后面的学习有很大帮助。说实话我自己当初在这方面吃了不少亏,很多比较好的习惯我也是后面自己才慢慢发现,所以这里想着重给大家说一下有哪些好的学习和编程习惯。
### 正确提问
我们平时任何时候都离不开提问特别是初学的时候,但是真正知道如何正确的提问的人很少。问别人问题前不要来一句“在吗”,你说你问了在吗我是回复好还是不回复好呢 ?不要让别人给你发 32 位的 JDK,除非你是喜欢那个人。
更多关于如何提问的内容,详见 github 上开源版『提问的智慧』 <https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md>,抽时间看一下,我想看完之后应该会有很多收获。
更多内容可以查看我的这篇原创文章:[如何提问](docs/how-to-ask.md "如何提问")
### 健康生活
我一直觉得这一方面是最重要的,我想很多人和我一样会无意识间忽略它,等到真的身体不舒服了,你才开始意识到健康生活的重要性。
1. 除非万不得已,不要熬夜了。熬夜的危害就不用多说了,秃头加内分泌失调,你懂得!
2. 看电脑 45 分钟之后,起来走 5 分钟,看看远方放松一下。不要觉得这 5 分钟浪费时间,相反,这 5 分钟可能为你带来更大的效率提升。
3. 可以考虑买一个电脑架子,保护好自己脊椎的同时,办公体验也会提升很多。
4. 可以下载一个护眼宝,感觉可以护眼模式挺棒的,非常适合我们这种需要经常盯着电脑的人使用,强烈安利。
### 高效搜索
尽量用 google 查找技术资料以及自己在学习中遇到的一些问题。
### 解决 bug
程序遇到问题先在 stackoverflow 找找,大部分别人已经遇到过了。如果上面没有的话,再考虑其他解决办法。实在解决不了的话,再去问你觉得有能力帮你解决的人(注意描述好自己的问题,不要随便截一个 Bug 图)。
### 善于总结
学习完任何一门知识后,你可能当时看视频感觉老师讲的挺容易懂的。但是,过几天后你发现你忘的一干二净,别人问你一个类似的问题,你一点思路都没有。所以,我推荐你学完一门知识后不光要及时复习,还要做好总结,让知识形成一个体系。另外,你可以假想自己要给别人讲这个知识点,你能不能把这个知识点讲清楚呢?如果不能,说明你对这个知识点还没有彻底了解。这也就是人们经常说的费曼学习技巧。
总结的方式:
1. 有道云笔记、OneNote......这类专门用来记录笔记的软件上;
2. 思维导图;
3. 通过写博客输出。可以考虑自己搭建一个博客(hexo+GithubPages 非常简单),你也可以在简书、掘金......等等技术交流社区写博客。Markdown 格式参考:<https://github.com/sparanoid/chinese-copywriting-guidelines> 中文文案排版指北:<https://github.com/sparanoid/chinese-copywriting-guidelines>
### 写博客
写博客有哪些好处:
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 "https://github.com/alibaba/p3c/blob/master/阿里巴巴Java开发手册(详尽版).pdf")
- Google Java 编程风格指南:<http://www.hawstein.com/posts/google-java-style.html>
- Effective Java 第三版中文版: <https://legacy.gitbook.com/book/jiapengcai/effe