Preperation repository with concise resources for modern day requirements of Software Engineering Interviews. It contains Specific Details to clear Techincal Rounds for good product based organizations.
The topics and depth of those topics are planned keeping 2-months preperation time in mind. You will definitely need strong background from each sub-section in order to achieve this. This repository will act as a great refresher course for short period preperation.
All the specified projects must be prepared with in-depth analysis. Prepare a table for projects as columns and the following questions as rows. And keep in mind the implementation details of the project i.e. you might be asked to write snippets of codes from project. List of topics to be prepared :
- Scope & Impact of your project.
- What you have done extra or was able to achieve. (Quantified analysis much better !!)
- Challenges faced and reflections i.e. mistakes, failures.
- Technologies used, code implementation, trade-offs.
- Deployment, Finished state, future extensions like scalability etc.
- 1st Month : Maximum coding practice and algorithmic analysis of them. Along, with minor work other sub-sections mentioned below. Must be able to complete all basics of coding in first month.
- 2nd Month : Company oriented preperation of topics and coding question practice. Preferred way, pick top 6 companies for which you will be eligible for application.
- 1-Week before interview : Revise flash-cards. Tailor resume accordingly. Brush-up basics of your project and never leave practising coding till the end.
These sub-sections are decided on the basis of latest requirements in current Software Developer interviews with few new topics added which are equally important when it comes to technical interview along with standard conventional topics.
- Languages to work With : Java, C/C++ and Python. Memory management and advantages of using each language with common Collections, libraries used in that language.
- Data Structures : Inner workings of data-structures with common complexities involved in it. Application specific usage of these data structures.
- Algorithms : Different paradigms and standard text-book algorithms will come in handy. Runtimes, limitations, classes & other detailed information is required. No pseudocodes, with each algorithm learned coding & different implementations related to it must also be understood.
- System Design : Basic OO-design, scalable implementations, design choices. Distributed designs, service-oriented architectures, map-reduce, distributed caching, load balancing.
- OS : All the basics of operating systems with memory management, processes, threads, synchronization, paging, and multithreading as a must.
- Networking : Basic network models, All the important protocols, basic practical numericals. Can be asked implement your own protocol.
- AI/ML : Basic search methods in AI, knowledge representation etc. All the basic models in ML with proper trade-offs. Learning functions/rates, activation functions etc. basic things.
Here is a standard approach that you must follow to approach a code during whiteboard coding in technical interview. Also, below another approach for faster practical coding is mentioned for clearing coding round.
- Understand & Listen : Example is sorted or unsorted array given initially, array with non-negative values, self-balancing trees etc. being given as initial condition.
- Test Cases & Examples : Add test cases to check general, base, edge first and the error cases in the end, if any cases is missed.
- Give Brute Force : Provide brute algorithm & tell its space plus time complexity. But, check the accuracy of method and still don't start to code yet.
- Analysis of Brute : To provide efficient algorithm, identify the bottleneck in the process. After this remove the unnecessary & duplicated work to achieve optimum solution. Always check for errors, base cases. Also, writing a general solution(ex. for a N x N matrix) shows greater understanding of concept.
Last steps are to implement & test the final optimized code.
- Reduce time in first two steps to minimum, it can be done by keeping few questions from each topic in your cache memory. Write any satisfactory code( not a brute one, but doesn't have to be best solution either) and test it for submission.
- Generally, in this round repeated questions are asked. Company specific preperation is great to start with.
- Remember collections and libraries that are allowed to be used in questions & use them.
- Learn to write code in modules as only methods will asked to be implemented. Let's say for question of trees, linked lists.
- New detailed preperation topics will be added for each sub-section.
- Flash-cards for each sub-section will be added.
- Url of resources will soon be added with descriptive analysis of topics.
- Repository is planned to be shifted to github-pages with jekyll framework for an easy conversion for web-page format to increase readability.