在为一家公司进行面试时,我与那些向我展示了我需要熟悉的产品的大代码库的人进行了编程。以下是该项目的一些特点:
总而言之,它是一个典型的,而不是一贯开发的企业Java应用程序。
关于我:我是一名经验丰富的Java程序员,但我对Spring / Java没有多少经验。我确实很了解Web应用程序并完成了一些Rails开发。
在某种程度上,接受这项工作可能是一个倒退。但我需要这份工作。所以,我有一个非常具体的问题。我该怎么办呢?我应该如何提出问题,了解问题的细节,以便我能够有效地进行错误修复和功能开发?我见过this generic thread,,但我想了解具体情况(可操作的项目)w.r.t.这个环境(使用Spring / JPA / Hibernate进行Java Web开发)(虽然原则可能保持不变)。
答案 0 :(得分:0)
答案很大程度上取决于他们的架构。如果他们试图保持一个单一的线程,不可变的简单架构,那么你就是金色的。如果他们采用严重的异步事件驱动模型,那么你的生活就会变得更难,因为那些更难以完全推理。至于Spring / JPA / Hibernate,如果他们在域建模方面做得不错,那么hibernate / jpa部分基本上并不重要。这是JPA / Hibernate的重点,它应该抽象几乎所有主要细节,你应该处理像POJO这样的东西。如果他们没有做好工作,那么你将再做更多的工作。说实话,一旦你掌握了Spring的基础知识,通常很容易在程序中推理。
我所处理的大多数春天的东西通常很容易被思考。基本上你寻找自动装配(或任何他们使用注入他们的豆)。这告诉你谁依赖谁。如果你进入斯普林斯更复杂的功能(编织,AOP等......)。事情变得越来越困难,因为你必须非常了解Spring何时会实际执行代码。
其他可能更复杂的领域是app容器和Spring之间的交互。再次不知道他们的使用情况以及他们如何使用它我不能提供很多细节。
TL; DR;如果他们设计得很好,并且保持不必要的复杂性,你就可以了。如果他们没有花费大量时间来调试程序的实际流程来解决问题。从来没有见过这种情况的捷径。