Saturday, May 11, 2019

Securing Your First Job in Software 6: The Technical Interview

This post is part of a short series on actionable steps in acquiring your first developer job, which I utilized in 2018 to become a Software Development Engineer with a major cybersecurity company.

Congratulations! If you've followed the suggestions in my original post and first five in this series, then you likely have all the information, tools, and confidence you need to make it to an interview. Now you just need to kick some ass. But unlike many other fields, the technical field has one last small hurdle to overcome and own: the technical interview.

Practical Interview Prep

Here's what you should be doing before every interview to prepare your technical skills:

  1. Print out the job description
  2. Go through line by line and highlight or underline everything that you're even slightly unsure about
  3. Research each of those tools or concepts, and take notes on a blank sheet of paper
  4. Consider creating a small project that utilizes what you researched
  5. Review your notes until you feel confident explaining them during the interview

Cracking the Coding Interview

My tips in this area will only take you so far, but I have a suggestion if you want to upgrade your skills to the elite level: buy this book. This was written by Gayle Laakmann McDowell, who has worked as a software engineer at Google, Microsoft, and Apple, and has insights into the hiring practices of other top tech companies like Amazon as well. She has tips on what to learn before applying to jobs, what the process will look like at each of the top tech companies, how to approach coding questions, how to create a resume that stands out, what questions you should expect to be asked, how to handle job offers, and even a two-page sample preparation road map. And that's just the introduction. Totally worth it.

Technical Interview Sample Questions

These are all the questions that I recall being asked during technical interviews. Your questions are almost guaranteed to be different, but this should give you some sense of what you're expected to know as an entry-level developer.

  1. A provided code snippet that I was asked to "explain at a high level"
  2. A business scenario that I was asked to depict in an entity relation diagram (not the relationships or attributes, just core entities and how they relate to each other)
  3. A question about whether a specific language can utilize public/private access control for classes and functions
  4. A question about files that are generated after compiling
  5. A question about lambda functions
  6. A scenario that involved coming up with a class of my choice in a specific language, with a constructor and two methods to operate on the object, from scratch on the whiteboard in front of three senior engineers (not my strong suit)
  7. A question about generics
  8. A question about caching data to avoid excessive DB transactions
  9. A question about overriding/overloading
  10. A question about passing arguments
  11. Multiple questions about threads
  12. A question about serializing a class
  13. Multiple questions about maven and pom.xml file contents
  14. A question about wrappers
  15. A question about constructor types
  16. A question about singleton classes
  17. A question about polymorphism
  18. A question about interfaces and abstract classes
  19. Multiple questions about relation indices
  20. A question about storing passwords in variables
  21. A question about string immutability
  22. A question about wait and notify methods
  23. A question about hash maps vs. hash tables
  24. A question about the final keyword in Java
  25. A question about the lifecycle of a Spring bean factory
  26. A question about abstract classes vs interfaces
  27. A question about loops
  28. A question about OOP vs. scripting
  29. A question about using Spring
  30. A programming task to complete a LinkedList
  31. A question about Docker uses
  32. A question about asymmetric vs. symmetric cryptography
  33. A question about asynchronous programming
  34. A question about lists vs. sets
  35. A question about Spring Boot vs. Spring (Core)
  36. A question about Spring annotation differences
  37. A question about creating and using a Spring bean
  38. A question about hash map restrictions
  39. A question about the maven clean command
  40. A question about using JPA in Spring
  41. A question about accessing databases using Spring
  42. A question about Spring bean scopes
  43. A question about Spring Security
  44. A question about Angular vs AngularJS
  45. A question about creating a Dockerfile from scratch

Remember, the only job security in the modern era is having the skills to be re-hired. Godspeed, applicants!!!

Read on: 7: Ask Your Value Questions

Other posts in this series:
Securing Your First Job in Software 1: Register New Contact Info
Securing Your First Job in Software 2: Update Your Resume
Securing Your First Job in Software 3: Practice Your Pitch
Securing Your First Job in Software 4: On Recruiters
Securing Your First Job in Software 5: Optimize Your Online Search Securing Your First Job in Software 7: Ask Your Value Questions

No comments:

Post a Comment