真正的精通Java是种什么样的境界?

作为一名软件开发者,要追求的,应该是不断地提升自己分析问题把握事物关键点,实事求是地给出切实可行且能“一剑封喉”的优雅解决方案的能力,再提升一点境界,就是要不断提升自己创新的能力(即创造新东西、提出新思路、解决新问题的能力)。 我个人认为,花费大量的时间去"精通"某种语言、某个平台和某些工具,其实是本末倒置。所以,不要追这种"精通”,看上去学富五车很牛逼,其实孔乙己一个罢了。 ----------北京理工大学 计算机学院讲师金旭亮 不知道什么样算“真正的”精通Java。答主编程不少年了,几年前还在 FLAG 工作时 peer review top 10% 的水平,所以厚颜自称较熟练吧。总结下自己现在的状态。(不限于Java,现在工作用Java + Scala + TypeScript,私人项目用 Java + Kotlin, 之前 c++ 什么也写过一堆,对大多语言都通用)。

还是会查API,会去谷歌/StackOverflow。Java生态系统很大,如果用到第三方库,特别如Spring之类要点极多且每版都会调整。强记API不是做不到,实在是没有意义。需要记得每个库都有哪些主要类,每个类提供哪些方向的功能。具体参数,及表现细节依靠查文档。 知道 JDK 内部大致是怎么实现的,能躲开绝大部分明雷。至于一眼看出Byte Code,抱歉做不到。代码调优靠Profiler,纯手动调优不推荐。 一遍编译无Bug做不到,且没有必要。编译器的最大的作用就是查缺补漏,靠人工去一个个文件排查不是不能,实在是浪费时间。一般写码流程如下: 先定大致方向,写初稿。 觉得写差不多了就开始敲编译,靠报错把最后不编译的部分修完。 编译过了就跑测试,看看有没有Break现有功能。 把现有的break修完开始写新测试。这是找Bug的主要过程,通过测试找Bug比靠脑力排查有效率的多。因为你只要写什么样的情况期待什么样的输出。出现意想不到的结果靠Debugger来排查哪里想叉了。 写测试的同时一般会对API设计有新的想法,依靠已写的测试做一两轮Refactoring。 多写多试多改,靠测试把Bug挤完。当别人还在纠结怎么设计完美API怎么一遍写完无Bug时,我们已经改完几稿趟完一堆暗雷可以提交了。 这流程还有好处是测试比较全,写出的东西不会轻易被别人Break。 会把复杂的问题简单化。经常会有新人向我吐槽,隔壁大神好牛,代码美如画,各种技术吊炸天,可惜看不完全懂。不像你的代码,从头到尾简简单单好像也没什么特别绕的东西,写出来就是能用。有经验的程序员会知道项目里大部分同事都是平均水平,你如果挖空心思写出的牛掰代码,可能很多人看不懂,维护起来一定会出错。如何封装复杂的逻辑,用简单的接口藏起烧脑的内容,是程序员走向成熟的标志。 知道Eco System里都有什么开源选择, 不必要的轮子不要造,该造的时候能提供充分的理由说明为什么现有的开源不能满足,必须自己来。 不迷信大开源/大公司项目。使用第三方库会去看源代码,看哪里写的好哪里写的不理想。哪怕Java语言本身也有不少设计缺陷 (Criticism of Java),参考别人的经验教训,认识到现有工具的不足,在自己设计时避免同样的错误。 同意ClevelandAlto说的,认识语言的优缺点,选择正确的工具。不适合用Java时候不要用Java。 一个程序员学习平台分享给你们,让你在实践中积累经验掌握原理。主要方向是JAVA工程师。如果你想拿高薪,想突破瓶颈,想跟别人竞争能取得优势的,想进BAT但是有担心面试不过的,可以加我的Java学习交流群:282711949。

注:加群要求

1、大学学习的是Java相关专业,毕业后面试受挫,找不到对口工作可以

2、在公司待久了,现在过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的

3、参加过线下培训后,知识点掌握不够深刻,就业困难,想继续深造

4、已经在Java相关部门上班的在职人员,对自身职业规划不清晰,混日子的

5、有一定的C语言基础,接触过java开发,想转行的

小号勿扰,不喜勿加

作者:闲人尚文

来源:知乎

精通Java的标准可以有不同的解释,但通常可以通过以下几个方面来评估一个人是否精通Java: 1. 语言基础:精通Java的人应该对Java的语法和基本概念非常熟悉,并能够灵活运用。他们应该了解类、对象、继承、多态、异常处理等核心概念,并能够正确地使用它们。 2. 面向对象设计:精通Java的人应该具备良好的面向对象设计思想和实践经验。他们应该能够设计和实现合理的类和对象结构,使用封装、继承、多态等概念来构建可复用、可扩展的代码。 3. 数据结构和算法:精通Java的人应该熟悉各种常见的数据结构和算法,并能够选择和应用适当的数据结构和算法解决问题。他们应该了解数据结构的特点和性能,并能够进行算法的时间复杂度和空间复杂度分析。 4. 并发编程:精通Java的人应该了解并发编程的概念和原理,并能够使用Java提供的并发工具(如线程、锁、并发集合等)编写高效可靠的多线程代码。他们应该了解线程安全性、死锁、线程池等并发编程中的常见问题。 5. Java标准库和框架:精通Java的人应该熟悉Java标准库和常用框架(如集合框架、IO、网络编程、数据库访问等),并能够熟练使用它们进行开发。他们应该了解这些库和框架的特性和用法,以及最佳实践。 6. 测试和调试:精通Java的人应该具备良好的测试和调试能力。他们应该能够编写有效的单元测试和集成测试,并能够使用调试工具来分析和解决代码中的问题。 7. 设计模式:精通Java的人应该熟悉常见的设计模式,并能够将其应用于实际项目中。他们应该了解各种设计模式的原理、优缺点和适用场景,并能够根据需要选择和实现适当的设计模式。 需要注意的是,精通Java并不仅仅是掌握语言本身,还包括实际项目经验、良好的编码习惯、团队合作能力等方面。以上提到的标准只是一个参考,具体的标准可能因个人经验和需求而有所不同。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值