Hi, Background: I am a backend software engineer (C programmer) with 3+ years of experience in a hardware based start-up located in California. I have decent experience in Java (core Java, not the latest constructs or lambda functions etc) but I have minimum knowledge about databases and distributed systems. Aspiration: I would like to become a software engineer who actually builds pure software products in Java and later move into more advanced/updated areas such as Machine learning. Things that I am doing: Deligent leetcoding Grokking the coding interview - to identify patterns. Feedback from interviews: Latest constructs needed (Java 8) System design knowledge can be better Distributed system knowledge lacking Basics of database need to be strengthened Question: How do I improve on the above? Thank you.
Java 8 language differences are pretty simple (and powerful) in an interview setting: Streams API Lambdas/method handles Default/static methods in interface (extra: now that interface have default methods, how are they different than abstract class still?) java.time API All these can be studied and learned pretty easily
Hi, thank you for the reply. Can you please suggest some object oriented programming references as well.
Dont
Leetcode more deligently. 🥪
Solving leetcode helps but the reason why I have posted this is because interviewers are expecting something more than solving problem. Nevertheless, I will keep working on this aspect too.
Have you considered Front end engineering? Databases and Distributed systems are less important and your LC and algorithm knowledge can get you through the harder parts of the interview
I don’t know...CSS might be more difficult to learn than distributed systems.
I would like to stick to backend as there is so much I can learn, improve and do.
I would say that database and distributed systems is the least of your concerns right now. You need to master writing web services. Best way to get your feet wet would be to work on some api project in springboot or something and host it on aws. You’ll be forced to learn some basic web concepts like dns, load balancers, etc.
That sounds like a plan. Will work on it. I will checkout some open source projects which does the same. Just curious if you have any suggestions.
Pm me. I can point you to some resources
If someone mentions a language in their resume’s title I’m not reading past the title.
Just LC and apply to FAANG. Your system design knowledge can’t really be fixed without experience, though you can try with grokking the system design interview and system design primer. That just means you’ll start at a lower level in FAANG if you can still pass the LC questions. I’d recommend not doing LC in C. Java will be fine, and you can practice lambdas in LC.
Hi, thank you for the reply. Grokking the system design is a great advice. I will look into it. Yeah, I have migrated to Java in LC. Any suggestions about object oriented programming?