java学习反思

本文是关于JAVA学习的深度反思,强调理论与实践结合的重要性。内容涵盖代码规范、架构理解、数据结构与算法、并发包、IO与NIO、虚拟机、类加载机制、内存管理以及计算机系统原理等。作者指出,深入学习一门技术,如Java,而非追求全栈,能带来质的提升。同时,定期博客积累和阅读开源代码也是提升技术认知的关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JAVA学习反思

针对在以理论为背景写出,讲技术做到深度,解放思想

  • 代码的规范
  • 代码架构的理解
  • 数据结构与算法的认知
  • 开源代码的研读
  • 基于计算机系统结构的重新认知
  • 突破卷积内耗
  • 克服未知的陌生恐惧
  • 定期博客积累
  • 从他人的角度认知自己的技术体系

先来看看今天的一些收获

可能要摘录别人的一下文字,请谅解:

  • 主语言本身以及它的高级特性——-认知重塑的重要性

     1)Java的数据结构相关的类实现原理,比如LinkedList,ArrayList,HashMap,TreeMap这一类的。

比如 :

项目价格
1HashMap是不是有序的?
2TreeMap和LinkedHashMap是如何保证它的顺序的?
3还有没有比它更好或者更高效的实现方式?

 2)Java并发包当中的类,它们都有哪些作用,以及它们的实现原理,这些类就是java.concurrent包下面的。
 
 

项目问题
1如果想实现所有的线程一起等待某个事件的发生,当某个事件发生时,所有线程一起开始往下执行的话,有什么好的办法吗?
2可能会说可以用栅栏(Java的并发包中的CyclicBarrier),那么面试官就会继续问你,你知道它的实现原理吗?
3你还知道其它的实现方式吗?
4你觉得这些方式里哪个方式更好?

3)IO包和NIO包中的内容。这部分里面NIO会是重点,IO包大部分都会比较熟悉,因此可能会直接略过,直接问你NIO的内容。
IO包和NIO包的内容相对来说不是很多,首先NIO模型要熟悉,特别是其中的selector一定要非常清楚它的职责和实现原理。其实NIO的核心是IO线程池,一定要记住这个关键点。有的时候,面试官可能也会问你IO包的设计模式(装饰器模式),为什么要这样设计?

 4)Java的虚拟机的内容。这部分主要包括三部分,GC、类加载机制,以及内存。
 

项目问题
1什么时候一个对象会被GC?
2什么要在这种时候对象才会被GC?
3GC策略都有哪些分类?
4这些策略分别都有什么优劣势?都适用于什么场景?
5举个实际的场景,让你选择一个GC策略?为什么?

5)类加载机制的简单连环炮

项目问题
1每个类加载器都加载哪些类?
2类加载之间的父子关系是怎样的?
3什么是双亲委派模型?
4为什么Java的类加载器要使用双亲委派模型?
5你如何自定义自己的类加载器,自己的类加载器和Java自带的类加载器关系如何处理?

6)内存的简单连环炮

序号问题
1内存分为哪几部分,这些部分分别都存储哪些数据?
2一个对象从创建到销毁都是怎么在这些部分里存活和转移的?
3内存的哪些部分会参与GC的回收?
4Java的内存模型是怎么设计的?
5结合内存模型的设计谈谈volatile关键字的作用?

7)比较好的扩展加分项
 1、计算机系统原理。

  2、网络通信协议(TCP/IP,HTTP等)。

  3、数据结构与算法。

  4、著名开源项目的源码。

  5、你自己有很棒的开源项目。

  6、你的个人博客。

“野生”程序员还有一个共性,就是学习曲线和程序员“正规军”会有所不同,前者是从实践到理论,后者是从理论到实践,

8)比较必要的一些书籍

    《Java编程思想》
    《大话设计模式》
    编写优化的书。比如《重构 改善既有代码的设计》,《effective java》。
    《深入理解Java虚拟机》
    《Java并发编程实战》
    《深入理解计算机系统》
    《tcp/ip详解 卷一、二、三》
    《数据结构与算法》

    深入了解Java底层和Java类库(比如并发那本书就是Java并发包java.concurrent的内容),也就是JVM和JDK的相关内容。而且还要更深入的去了解你所使用的框架,方式比较推荐看源码或者看官方文档。

    不要听信那套“不要重复造轮子”的论调,那是公司为了节省时间成本编造出来的。重复造轮子或许对别人没有价值,因为你造的轮子可能早就有了,而且一般情况下你造出来的轮子还没有现存的好。但是对别人没有价值,不代表对你自己没有价值。

  一个造轮子的过程,是一个从无到有的过程。这个过程可以对你进行系统的锻炼,它不仅考察你的编码能力,还考察你的框架设计能力,你需要让你的轮子拥有足够好的扩展性、健壮性。
  

  全栈工程师这个概念,其实是小公司(或者是大公司的小部门)为了节省人力成本,想让程序员干杂活,却又不好意思直说,因此所编造出来得美丽的谎言,可笑可悲的是,一些不知全栈真正含义的程序员,还以自己是全栈为荣,觉得自己跟上了潮流,真的是被人卖了还在帮人数钱。
  

以上文字有摘抄,这是今天看到的一片比较冥醒的文章,之前还是比较闭门造车的思想,觉得做全栈,什么都会一些,会有很多机会,但其实不然,只有在一个技术上有很好的深入,才能从量级上展现优势。同时,在日复一日的工作中,也比较迷茫,到底如何提升技术,很多认知往往停留在比较初级的阶段。

不断提高对自己的认知和深度实力,是一个精神上不懈努力人的追求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值