I was wondering if the guys who do this "spring, hibernate, XML, REST, Servlet" kind of development really need to know data structures, algorithms and design patterns very well and if they encounter
them frequently on the job.
I wanted to know what kind of Data structures and algorithms are most commonly used in Java EE programming. More importantly, does one encounter algorithms frequently in EE ?
What are the most commonly used design patterns used in EE ?
Bear Bibeault wrote:Why do you think that it would be different from any other type of Java programming? What other types of programming are you thinking about that you are comparing against?
Okay this might be very naive. I am under the impression that Java EE jobs would only require application of data structures, ie using them in your code instead of creating/implementing old or new types of data structures.
As regards algorithms, I am not sure if EE developers would ever need them. Probably the people who do things like image processing, search technologies, parallel processing and such would need to be experts in algorithms
and would make use of them a lot in their job.
Can you give me some examples of Java EE programming which involve a lot of data structures and algorithms ?
I think there's some confusion in this topic because the terms "data structure" and "algorithm" are not clearly defined. When it comes down to it, code is nothing BUT algorithms and data structures.
Whether the data structures are primitive, complex, language-defined or user-defined is another matter. With respect to Java you could say that most classes are data structures (which happen to have methods to go with them). So you need a good understanding of what's out there, what's not out there, why the stuff that's out there works the way it does, etc.
As regards algorithms, when arulk says he rarely comes across them, that uses a non-standard definition of algorithms - maybe he means standard algorithms for sorting or something like that (which, indeed, you probably won't have to implement). But really any code you write implements an algorithm, so being able to design them is an important skill. Studying standard algorithms can help you learn that skill.