**资料合集 JAVA**
相关链接 #
资料合集 JAVA
资料合集 Kubernetes
资料合集 其他
JAVA #
应用 #
Java 有 Netty,有 Hadoop,有 Spring,有 Quarkus,这涉及的领域就有网络 /通讯 /大数据 /Web/云原生了,而且还不算有个天下无敌的 JVM,还有上面依托的 Kotlin,Scala 之类的,真就应用场景有限呗?
滴滴和字节内部实际还有大量 Java 系统 而且字节内部还有大量用 Python 做线上场景的服务,有钱任性机器随便堆,还能跑的很好,这是别人无法复制的成功。
不知道是不是用了 Go 的公司都没办法统一技术栈 但是用了 Java 的公司几乎不会出现 Go 做业务系统的情况 这里只说业务系统,底层基础建设语言几乎没法选择(比如 agent 用 go 实现,容器用 go,kv 用 C++/go,大数据是 Java/Scala )
语法 #
需求 #
SpringBoot+SpringMVC+Mybatis+数据库 sql,这几个会了,就能干活了
一年的话。
数据一致性、JVM,HashMap,JUC 需要有较深的理解。
三高了解一点。
再来点 RPC 、几个中间件应该就可以了(有自己的理解与认知)
过去几年的三份工作正好是 C++/GO 转 JAVA 然后再转 C++/GO
需要找 JAVA 开发的公司基本上都会把 java 的问题问的很透彻,JVM 规范,实现,GC 的优化,各种 collection 的实现,concurrent 包里面的实现等等
然后还会问 Spring 框架的细节,启动的过程,生命周期,基本概念
网上阿里的面试题也是一大堆,你可以参考
另一边 GO 的面试相对与 JAVA 面试底层,架构方面的内容会多一点,至少我没有碰到过有人问我 GO 的协程的实现原理,或者逃逸分析
本质上讲是因为 GO 发展时间短,也乐于接受各种语言转过来的面试者,就业市场上不像 JAVA 那么饱和,所以可以面试的时候问那种问题
不知道你对 JAVA 哪部分感兴趣?就我呆过的地方来说,可能中台中间件太过于强大,而且是 B 端业务,所以使用 JAVA 的那两年主要提升更多的是架构的理解与领域模型相关的能力
不太清楚你现在工作内容具体什么样,有没有钻研的空间,不过等你工作 3-5 年如果想去大厂的话,算法是必不可少的,不过平时工作中对于架构的学习,反思,中间件的实现,业务上的举一反三这些都很有帮助
Spring #
就内容容量而言,spring boot 属于 app 级的容量。ssm 属于体系级的容量 学完 app 级的东西可以做 toy app,但是无法为 “巨型 app” 排错 它需要体系级的容量的知识与经验
app 级的东西其实应该在至少了解一遍体系级的东西之后再接触(否则各种 hands on 的 tutorial 即使跑起来了 你的感性认识只停留在环境搭建与排错了,折腾半天 实则在 app 级的评判标准之下是成功通关,在体系级的评判之下是连没门都没入)。app 级的东西其实应该是学完 ssm 之后再碰也无妨,若先跑起 spring boot 最后还是得学:无它,因为你的工作岗位里你天天打交道的是 “巨型 app”
设计模式 #
任何设计模式、设计原则、AOP 、IoC 都是为了使项目高内聚、低耦合(解耦合 decouple)。
面向对象五大基本原则:
单一职责原则
开放封闭原则( OCP )
里氏替换原则( LSP )
接口隔离原则
依赖倒置原则
所有设计模式都是为了实现这五原则
大话设计模式(入门),然后是直接看代码,一般是比较大的项目的代码。或者自己写复杂一点的工程。过几年再看 GoF 那本。
时空乱流记录