Ask HN: What's the best way to quickly get up to speed on Java?
A company that I've been looking to join is using exclusively Java for the systems I'd be working with. I've used Java academically once or twice, but I'm mostly used to working in Python and C#.
What are the Java essentials that I should be familiar with before interviewing? What do I need to know about working with Java at scale? Are there any good prep resources I can look into?
3 comments
[ 2.5 ms ] story [ 18.0 ms ] threadAlso, check out the Google Java style guide. It's a nice point-of-reference, but don't get too hung up on their conventions.
That's pretty generic advice. There is probably a better resource specific to what you'll be doing.
EDIT: I'm still just a college student, but I have done a few Java-based internships. My advice probably won't be all that helpful if your senior developer, or doing some super low-level stuff.
At one point in my career, I had to evaluate Java as a potential base language for a new software product family my company was planning to develop. It was early days for Java, so little was known about it in our developer community. Early days also made the Internet far from useful as an information source. We were a Microsoft C / Visual FoxPro shop at that time, but needed much better support for Internet communications than was easily found in those parishes. As well, the possibility of automated memory management was a blessing after our grossly drawn-out foray into C++ design and debugging on another project.
The company bought me one of the “Learn <Programming Language> in 24 Hours / 14 Days” style of books and I sat down at my desk Monday morning. With a paper notebook to one side, I started with Chapter 1 and just motored my way through, taking notes like I was in class and doing paper exercises where possible. We had no Java compiler yet, but the book was a useful hand-holder. In three working days I had finished the book, and was ready to discuss Java intelligently, program with it tentatively, and recommend it as a “possible” for our project.
We obtained the Java development environment and with the recent book-learning I was able to test-build some planned features from our new product quite quickly – far quicker than in C++, the nearest object-oriented equivalent we had experience with. But Java’s then-terrible run-time performance knocked it out of the competition and we ended up continuing with C++, incurring all the pain we already dreaded as well as shiny new pain when we got further into the depths of native Windows development.
The major point I wanted to make about the “Learn X in 24 Hours” book approach is that it made me a just-in-time Java expert for at least a few weeks. The instructional material was very well organized. Easy topics could be skipped (operator precedence), and hard ones pounded into submission (thread communications). The purpose of this style of book is to introduce every feature of the language, so when I finished I was up-to-date on the current state of the art, even though many of the items of knowledge were not useful afterwards (AWT and Swing, dang it!).
This benefit may apply to your situation by giving you an organized and rapid way to recap your existing knowledge of Java. You’ll be able to skip more than I did, as you have already been introduced to the language. But you’ll also be re-exposed to elements you may not have focused on the first time you learnt Java, perhaps programmatic control of garbage collection, RMI (remote method invocation), or servlets. Interview questions often lurk in the language’s darker corners, but you’ll be less likely to be caught flat-footed if you’ve worked through all the chapters recently.
Using the book, as opposed to getting pretty much the same information from the Internet, gives you a sequenced, tutorial-like stream of information. Nothing is under-explained, everything important is touched on, exercises help fix concepts in memory, and there are no kittens to look at. The fat book will appear daunting, but in my experience it’s just a few days work to push through one (on the corner of my desk, I have Java 8 In Action[1] awaiting the same push!). A second-hand programming-language book is also as cheap as a cup of coffee, and equally widely available – usually from the local charity store, where they pile up like last year’s unwanted fashion apparel, or from one of Amazon’s used-book vendors
I think the time / benefit quotient for the tutorial book approach is far better than for the “I’ll just fire up Google and learn the few things I need”. I recently had the experience of trying to evaluate Docker using the vast interwebs as an information source (four months o...