Effective Java 2nd Edition gave a ton of insight into how the language works and is meant to be used. Just understanding how/where certain data types should be used and their intended function improved my ability to refactor and optimize code by an order of magnitude.
Be hungry for and appreciative of feedback.
Get code reviews early and often.
Make small changes with accompanying unit tests.
Favor readability over clever tricks.
Work your way through Effective Java: https://www.amazon.com/Effective-Java-3rd-Joshua-Bloch/dp/0134685997
Work your way through Concurrency In Practice: https://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601
Have fun and keep learning! :)
It is a best-practice; by default java compares objects by reference, not 'by content'. That said, two objects representing the same logical entity (e.g. Order) are different objects instances (different reference in memory), but represent the same entity e.g. in DB (they have the same ID). Assume the following: equals and hashCode is *not* overriden. You read the same value by id from a DB using jdbc and put them into a HashSet. As these have different references there will by 2 items in a set. Do the same but override equals and hashCode to reflect the content of the object. The set will have only one item. Why and when this is important: if your system (application) relies on subsystem that manages identity of entities (e.g. SQL DB where you use IDs) and do *NOT* rely on actual object identities -- and this is pretty much common for most applications that use external storage (e.g. SQL).
Why to do it for *all* objects: assume we have 2 classes A and B, where A contains a collection of Bs . A has overriden equals and hashCode and compares with another A ; it also has to compare collection of Bs. How ever, collections of Bs will *only* be equal if all Bs are identical -- the same references but not values.
If you happen to use hibernate overriding equals and hashCode is a must IMHO as hibernate will rely on equality by content, not reference.
​
Good read (required :-) ) on the topic:https://www.amazon.co.uk/Effective-Java-Joshua-Bloch/dp/0134685997/ref=dp_ob_title_bk
i find Effective Java ( https://www.amazon.com/Effective-Java-3rd-Joshua-Bloch/dp/0134685997 ) a great book to have. i also enjoyed https://www.amazon.com/Java-SE8-Really-Impatient-Course/dp/0321927761.
Since you're talking from the point of an experienced programmer, instead of someone learning to program, I'd recommend Effective Java by Joshua Bloch. It kind of assumes a certain familiarity with the language, and is a little dated, but working through this will give you a solid basis for the language and platform.
Having worked with a lot of stream processing, the stuff you need to watch out for are typically the topics in section 3 (methods common to all objects), but just being aware of most of the other topics can save a whole lot of time when it comes to debugging.
I’m surprised I didn’t see this already. But this is usually the go to for beginners since it covers most and explains it well and on a low level which is great for understanding. It’s called head first design patterns. https://www.amazon.de/First-Design-Patterns-Brain-Friendly/dp/0596007124
Not necessarily what you are asking for, but here are some free Java books - also has more than just Java.
For an amazon link, Head First Java.
And Head First Design Patterns is a perfect follow up.
I like Head First Java as an intro:
Before you learn selenium, I can recommend Headfirst Java . This will make you comfortable with the basics and it will help you follow the videos better.
Are you just watching the video or trying to implement what the video says? I will recommend getting your hands dirty as you go through the videos.
If you can find a partner who is interested in learning these stuff, it can also do magic. It may be your colleagues or someone from here.
You are on the right track. Just keep yourself motivated by applying my tips.
I read a half dozen algo books years ago when learning. Mastery came slowly for be, but it was a fun process. My favorite for beginners is this one by Lafore. My favorite overall is The Algorithm Design Manual by Skiena.
Lots of trial and error. Those of us who started programming before the Web was a thing (or at least before it was full of lots of good resources) had to learn through trial and error. If we were lucky we had relevant books and magazines. Those books do still exist by the way -- don't sleep on them! For example, if you're a Java programmer, I can definitely recommend Effective Java (it's canon at Google, if that helps as an endorsement).
I second this. It helps immensley with getting the feel of what type of questions are on the exam. Also the OCA study guide.
A book on concurrency/multithreading in your backend language of choice.
For example, I mostly work in C++ and Java so here are some books I have in my book shelf:
https://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601
https://www.amazon.com/C-Concurrency-Action-Anthony-Williams-dp-1617294691/dp/1617294691/
Oh, the whole book is super cringey, but that's the point.
The methodology of the book is that this format will actually help you learn, instead of just stroke the ego of the author by writing super complex sentences. Amazon has the first pages of the book you can read. Start at xxv.
It is the ONLY textbook I read cover-to-cover in college.
>I was wondering what specific languages (for coding), automation tools, or any other skills I should focus in on?
If you are new to coding, I'll recommend Java to start with. For beginners , this book helps a lot to get around the basics.
Considering Automation tools, you can start with Selenium. It is a browser automation tool.
>I currently work with mobile iOS and I would really love to improve my skillset, but I have trouble knowing if im on the right path
iOS has a native framework for UI Test Automation. You can invest time on this, if you want to be specialised on it.
As a general note, I would suggest you to get fairly comfortable with one of the popular languages (Java, Python etc.) first and then explore the automation tools. Because at the end of the day, if you don't have good knowledge in the language, it will be tough to read and write code.
You are on the right path, now you just need to start learning. There is hell lot of resources out there in the internet to help you. All the best.
Your right the udacity course does suck, I had some issues with C169 because Java is a lot more difficult to me at least than Python.
I used the following sources and stuff made a lot more sense! I passed the OA with a 73% not great but still a pass. Also the performance assessment took me about a week.
First I went through this https://learnjavathehardway.org/
Then I read this book http://www.amazon.com/Head-First-Java-2nd-Edition/dp/0596009208
Lastly I did the Java course on Codecademy
Hope this helps!
regex are well worth the time to learn, useful in just about any language you use and very powerful.
Here is a good read that is kind of the defacto regex book. mastering regex
> Laravel is a PHP-exclusive framework, making its use of the word wrong.
FTFY.
Seriously, there's a reason why we use common terminology in engineering. Imagine the look a mechanic would give you when you suggest that your steering wheel needs an oil change.
Design patterns share a name (and in general, naming conventions exist) so that any SW engineer can look at something and know roughly what it does, or quickly describe a component without walking through the implementation.
OP - I like this book for learning about design patterns. It's not perfect and java-heavy, but overall gets the terminology right and has decent examples.
Wikipedia can go surprisingly far here, too. Each of the five pieces of SOLID design have their own article, Dependency Inversion included. That specifically tends to have over-complicated phrasing and examples. It basically means keep new
outside of your class definition, and instead accept an object of the same type as an argument.
1) Indeed, super.clone() is possible within a class. Still, unless the clone method is overridden by the class, it's not externally accessible.
2) Nothing. Effective Java (see here) has a whole item dedicated to the clone method. Try to get your hand on it. Here's a passage from the book.
> So what does Cloneable do, given that it contains no methods? It determines the behavior of Object’s protected clone implementation: if a class implements Cloneable, Object’s clone method returns a field-by-field copy of the object; otherwise it throws CloneNotSupportedException. This is a highly atypical use of interfaces and not one to be emulated. Normally, implementing an interface says something about what a class can do for its clients. In the case of Cloneable, it modifies the behavior of a protected method on a superclass.
I've been programming in Java for a few years. I can't remember the last time I overrode Object's clone method. Copy constructors have always been a better alternative.
You’re not screwed at all. This is within your reach. Practice writing Java by writing some of your previous projects in it. This is probably the best book on Java: https://www.amazon.com/Effective-Java-Joshua-Bloch/dp/0134685997
Here’s an interview with the author that will give you a sense of the book: https://www.oracle.com/technical-resources/articles/javase/bloch-effective-08-qa.html
Wouldn’t recommended this at all. Agree with the other person. It’s not a good book for teaching and understanding more of high level refresher with a lot of questions. I personally don’t like the style it teaches and it assumes too much.
For learning the basics of the data structures I found this book really good, explained things very clearly.
https://www.amazon.co.uk/Data-Structures-Algorithms-Robert-Lafore/dp/0672324539
I think you will not find that big picture in the school books. Maybe read "Effective Java" [0] or browse news.ycombinator.com, depending on the kind of picture you feel you are missing.
[0] https://www.amazon.com/Effective-Java-Joshua-Bloch/dp/0134685997/
You could use a "regular expression" to extract the text, but you will have to learn regexes, and that is involved, and a gateway to harder things like Perl and shell, and likely to ruin your life.
You could extract the text with a Run JavaScript action, but you'll need to learn JavaScript and the HTML DOM which has its own, slightly more hip, perils. This approach probably makes the most sense.
I haven't read that one but the Heads First Design Patterns sits on my table for easy reference https://www.amazon.com/Head-First-Design-Patterns-Brain-Friendly/dp/0596007124/ref=mp_s_a_1_3?adgrpid=58930408954&gclid=CjwKCAjw7eSZBhB8EiwA60kCW7u-H0qzAlCpN07VttNCg33d39bZ-vP5-gx1gBKR6a2dn2o1HlGNQhoC4FgQAvD_BwE&hvadid=274706083835&hvd...
I would recommend learning the fundamentals before getting into data patterns because they are based on OOP and if you are having trouble with interfaces or polymorphism, it's going to be hard to learn everything at once
Try and learn common OOP design patterns.
I suggest the book Head First Design Patterns. It goes through the common design patterns, how it might apply to real world solutions, and gives implementation examples in Java.
I would say one thing that differentiates juniors and seniors is the ability to design solutions. For me, learning design patterns took me to the next level.
I highly suggest the book Head First Design Patterns. It goes through the common design patterns, how it might apply to real world solutions, and gives implementation examples in Java.
There is a new version of Head First Java which is a very good start if you are looking for a book: https://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208
https://testautomationu.applitools.com/java-programming-course/ is also very interesting which is an online course
It's multiple choice with pretty specific and deep drilling questions that no one on their right mind would usually know from the top of their head and instead just look up the documentation.
There are study guides and practice tests like OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808. https://www.amazon.com/dp/1118957407/ref=cm_sw_r_awdo_C3GDWA54W6X9DN356V78
There are also seminars that prepare explicitly for the certification exams.
I learnt java from this book 'Head first Java'. my favourite book till date. the way this book is designated is quite different from traditional book formats. best for beginners.