Technical interview prep

  1. For application development or software engineering roles, most of the companies ask questions related to Algorithms and Data Structures. The best way to practice them is LeetCode (leetcode.com). Practice as many questions as you can. You can filter by the type of algorithm (Dynamic Programming, Greedy, etc), or Data Structures (Tree, Stack, Queue, Hashtable, etc) and get the questions related to these filters. If you purchase access to LeetCode premium, it gives you access to advanced features, like questions asked by a specific company like Amazon or Google, or solutions to coding problems. But even without premium, the basic LeetCode is a wonderful platform to practice coding.

  2. Another great platform to practice coding is HackerRank. Not a lot different from LeetCode. You can use this for supplementary practice after LeetCode.

  3. GeeksForGeeks is an amazing platform to learn and study Algorithms, Data Structures, coding implementations using multiple languages, and frequently asked interview questions based on a company.

  4. Few companies ask System Design questions for university applicants or co-ops and internships. System Design is about how you approach a problem from an architectural perspective. An example question is “How would you design a ride-sharing application like Uber or Lyft?” You need to design a system by laying out the architectural components involved, like Web Server, Databases, Load Balancers, API gateways, Cache servers, Data streams, etc. You should be able to make design choices, explain trade-offs, and identify bottlenecks in your system. A good way to prepare for these types of questions is this industry-standard book: Designing Data-Intensive Applications by Martin Kleppman, https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/

  5. There is another paid course that covers the System Design interviews: Grokking the System Design Interviews https://www.educative.io/courses/grokking-the-system-design-interview. If you are interested, you can buy this course. Otherwise, you can simply look at the topics covered in the course to know what to expect in such an interview, and you can prepare these topics from the internet. There are literally hundreds of YouTube videos and blogs on the web which explain aspects of System Design. You are only limited by your ability to Google them!

  6. Some Java-based interviews focus on multithreading and concurrency. Here are some resources: Concurrency landing page in official Oracle docs: https://docs.oracle.com/javase/tutorial/essential/concurrency/index.html

    Comprehensive concurrency tutorial (long, but awesome): http://tutorials.jenkov.com/java-concurrency/index.html

    Short but not comprehensive tutorial (touches the basics): https://www.vogella.com/tutorials/JavaConcurrency/article.html

  7. Object-Oriented Design is an important aspect of software engineering interviews and needs a good amount of practice. Just Google “object-oriented programming interview questions” and go to any result link to learn about what to expect. This is a good example: https://www.interviewbit.com/oops-interview-questions/

  8. SQL and Database Design are also important areas touched by interviewers for software engineering as well as data science interviews. InterviewBit has a good compilation of database questions: https://www.interviewbit.com/sql-interview-questions. W3Schools (https://www.w3schools.com/sql/default.asp) is an amazing way to revise SQL programming and queries.

  9. Front-end development-based roles tend to focus on HTML, CSS, JavaScript, and maybe a JS framework like React or Angular. Again, W3Schools is a great way to revise HTML, CSS, and JavaScript. Another great place to learn JavaScript is https://javascript.info/. Refer to the official documentation websites of any specific JS frameworks to learn or revise them.

  10. Students targeting Data Analysis and Data Science jobs should practice on Kaggle (kaggle.com). There are hundreds of Python notebooks, competitions, Datasets, and Discussions which can help you practice data analytics, building ML and Deep Learning models, etc. KDNuggets (kdnuggets.com) is a good platform to learn about Data Science too.

  11. Many virtual technical interviews require you to write code in a plain text editor which does not have IDE-like features like auto-complete or syntax highlighting. Students who are habituated to coding inside an IDE find it difficult to write code in a plain text editor because they suffer from the language’s syntax. So be prepared to syntactically correct code. Revise the programming language’s docs to make sure you memorize the syntax. Even though your code is correct logically, you will be penalized if your code is not syntactically correct.

  12. Many on-site technical interviews require you to write code or design a system on a whiteboard. Students habituated to pen-and-paper mode might find it difficult to face a whiteboard-based interview. Get enough preparation at college by booking a private study room at the library and practice whiteboarding.

  13. Some companies, when they conduct virtual interviews, use a collaborative whiteboard application for system design or object-oriented design (UML, sequence diagrams, data flow diagrams, etc), where both you and the interviewer can do the design collaboratively. Get enough practice by using the free Google Draw app https://docs.google.com/drawings/

Last updated

Was this helpful?