├── LICENSE └── README.md /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Ankit Bansal 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Computer science foundation/ Interview preparation/ Junior to Senior Developer 2 | Contains almost all topics for Interview Preparation for a full stack developer or frontend engineer or backend developer or to become a junior to senior developer 3 | Consolidated place to prepare for tech interviews(Currently adding all topic's name and then will add the contents). 4 | 5 | **Table of contents** 6 | - [General Topics](#general-topics) 7 | * [DS Algo](#ds-algo) 8 | * [OOPS](#oops) 9 | * [Principles](#principles) 10 | * [Clean Code](#clean-code) 11 | * [Design Patterns](#design-patterns) 12 | * [Object Oriented Design](#object-oriented-design) 13 | * [System Design](#system-design) 14 | - [Frontend](#frontend) 15 | * [General ui questions](#general) 16 | * [Js](#js) 17 | * [HTML](#html) 18 | * [CSS](#css) 19 | - [Backend](#backend) 20 | * [Java](#java) 21 | * [Spring](#spring) 22 | + [Spring Core](#spring-core) 23 | + [Spring Web MVC](#spring-web-mvc) 24 | + [Spring Boot](#spring-boot) 25 | + [Spring Aspect-Oriented Programming (AOP)](#spring-aspect-oriented-programming--aop-) 26 | + [Spring 5](#spring-5) 27 | * [Database Connectivity - JDBC, Spring JDBC & JPA, Hibernate](#database-connectivity---jdbc--spring-jdbc---jpa--hibernate) 28 | * [Unit Testing](#unit-testing) 29 | - [Web Services](#web-services) 30 | * [SOAP Web Services](#soap-web-services) 31 | * [RESTful Web Services](#restful-web-services) 32 | - [Databases](#databases) 33 | * [MongodDB](#mongoddb) 34 | * [MySQL](#mysql) 35 | - [Microservices](#microservices) 36 | * [Apache Kafka](#apache-kafka) 37 | * [Docker](#docker) 38 | * [Kubernetes](#kubernetes) 39 | * [Redis](#redis) 40 | * [Akka](#akka) 41 | * Netflix Stack 42 | * Discovery Server - Eureka 43 | * Client Side Load Balancer - Ribbon 44 | * API Gateway - Zuul 45 | * Circuit Breakers/Resilience/Fault tolerance - Hystrix 46 | - Others 47 | * OAuth2 48 | * SSL 49 | * JWT 50 | - [Questions to Ask after interview](#questions-to-ask-after-interview) 51 | - [Open source contributions](#open-source-contributions) 52 | 53 | Table of contents generated with markdown-toc 54 | 55 | ## General Topics 56 | ### DS Algo 57 | [Codechef DS certification and preparation path with required links](https://www.codechef.com/certification/data-structures-and-algorithms/prepare#foundation) 58 | * Asymptotic analysis (Big-O notation) 59 | Basic Data Structures: 60 | * Arrays, 61 | * Strings, 62 | * Stacks, 63 | * Queues, 64 | * Trees, 65 | * Graphs 66 | * Basic math operations (addition, subtraction, multiplication, division, exponentiation) 67 | * Sqrt(n) primality testing 68 | * Euclid’s GCD Algorithm 69 | * Basic Recursion 70 | * Greedy Algorithms 71 | * Basic Dynamic Programming 72 | * Naive string searching 73 | * O(n logn) Sorting 74 | * Binary Searching 75 | * Divide and Conquer 76 | 77 | [Standford Algorithms Playlist 1](https://www.youtube.com/playlist?list=PLXFMmlk03Dt7Q0xr1PIAriY5623cKiH7V) 78 | [Standford Algorithms Playlist 2](https://www.youtube.com/playlist?list=PLXFMmlk03Dt5EMI2s2WQBsLsZl7A5HEK6) 79 | [Sample DS Interview questions](https://www.toptal.com/algorithms/interview-questions) 80 | [Geeks for Geeks for almost all types of algorithms example in the world](https://www.geeksforgeeks.org/) 81 | 82 | ### OOPS 83 | * Object 84 | * Class 85 | * Inheritance 86 | * Polymorphism 87 | * Abstraction 88 | * Encapsulation 89 | * Object-Oriented design: 90 | * Coupling 91 | * Cohesion 92 | * Association 93 | * Aggregation 94 | * Composition 95 | 96 | [OOPs concept theory](https://www.javatpoint.com/java-oops-concepts) 97 | [Characteristics of good OOD ](https://www.geeksforgeeks.org/characteristics-of-good-object-oriented-design/) 98 | 99 | ### Principles 100 | * [SOLID](https://en.wikipedia.org/wiki/SOLID) 101 | 1. **S**ingle Responsibility 102 | 2. **O**pen/Closed 103 | 3. **L**iskov Substitution 104 | 4. **I**nterface Segregation 105 | 5. **D**ependency Inversion 106 | * YAGNI “You Aren’t Gonna Need It” 107 | * KISS “Keep It Simple, Stupid” 108 | * DRY "Dont Repeat Yourself" 109 | 110 | ### Clean Code 111 | -- **Gist link** -- https://gist.github.com/bansalankit92/6119c4f7fabe11b7a174a99f5a7bb376 112 | * [General rules](https://gist.github.com/bansalankit92/6119c4f7fabe11b7a174a99f5a7bb376#general-rules) 113 | * [Names rules](https://gist.github.com/bansalankit92/6119c4f7fabe11b7a174a99f5a7bb376#names-rules) 114 | * [Functions rules](https://gist.github.com/bansalankit92/6119c4f7fabe11b7a174a99f5a7bb376#functions-rules) 115 | * [Comment rules](https://gist.github.com/bansalankit92/6119c4f7fabe11b7a174a99f5a7bb376#comment-rules) 116 | * [Formatting / Source code structure](https://gist.github.com/bansalankit92/6119c4f7fabe11b7a174a99f5a7bb376#formatting---source-code-structure) 117 | * [Classes and Objects](https://gist.github.com/bansalankit92/6119c4f7fabe11b7a174a99f5a7bb376#classes-and-objects) 118 | * [Objects/Data structures/POJO](https://gist.github.com/bansalankit92/6119c4f7fabe11b7a174a99f5a7bb376#objects-data-structures-pojo) 119 | * [Exceptions/ Error Handling](https://gist.github.com/bansalankit92/6119c4f7fabe11b7a174a99f5a7bb376#exceptions--error-handling) 120 | * [Tests rules](https://gist.github.com/bansalankit92/6119c4f7fabe11b7a174a99f5a7bb376#tests) 121 | * [Design rules](https://gist.github.com/bansalankit92/6119c4f7fabe11b7a174a99f5a7bb376#design-rules) 122 | * [Understandability tips](https://gist.github.com/bansalankit92/6119c4f7fabe11b7a174a99f5a7bb376#understandability-tips) 123 | * [Refactor](https://gist.github.com/bansalankit92/6119c4f7fabe11b7a174a99f5a7bb376#refactor) 124 | * [Code smells](https://gist.github.com/bansalankit92/6119c4f7fabe11b7a174a99f5a7bb376#code-smells) 125 | 126 | ### Design Patterns 127 | -- Design patterns are typical solutions to common problems in software design. Each pattern is like a blueprint that you can customize to solve a particular design problem in your code. 128 | 129 | * **Creational patterns** provide object creation mechanisms that increase flexibility and reuse of existing code. 130 | * [Factory Method](https://refactoring.guru/design-patterns/factory-method) 131 | * [Abstract Factory Method](https://refactoring.guru/design-patterns/abstract-factory) 132 | * [Builder](https://refactoring.guru/design-patterns/builder) 133 | * [Prototype](https://refactoring.guru/design-patterns/prototype) 134 | * [Singleton](https://refactoring.guru/design-patterns/singleton) 135 | 136 | * **Structural patterns** explain how to assemble objects and classes into larger structures, while keeping the structures flexible and efficient. 137 | * [Adapter](https://refactoring.guru/design-patterns/adapter) 138 | * [Bridge](https://refactoring.guru/design-patterns/bridge) 139 | * [Composite](https://refactoring.guru/design-patterns/composite) 140 | * [Decorator](https://refactoring.guru/design-patterns/decorator) 141 | * [Facade](https://refactoring.guru/design-patterns/facade) 142 | * [Flyweight](https://refactoring.guru/design-patterns/flyweight) 143 | * [Proxy](https://refactoring.guru/design-patterns/proxy) 144 | 145 | * **Behavioral patterns** take care of effective communication and the assignment of responsibilities between objects. 146 | * [Chain Of Responsibility](https://refactoring.guru/design-patterns/chain-of-responsibility) 147 | * [Command](https://refactoring.guru/design-patterns/command) 148 | * [Iterator](https://refactoring.guru/design-patterns/iterator) 149 | * [Mediator](https://refactoring.guru/design-patterns/mediator) 150 | * [Memento](https://refactoring.guru/design-patterns/memento) 151 | * [Observer](https://refactoring.guru/design-patterns/observer) 152 | * [State](https://refactoring.guru/design-patterns/state) 153 | * [Strategy](https://refactoring.guru/design-patterns/strategy) 154 | * [Template Method](https://refactoring.guru/design-patterns/template-method) 155 | * [Visitor](https://refactoring.guru/design-patterns/visitor) 156 | 157 | ### Object Oriented Design 158 | 159 | **Object-Oriented Design and UML** 160 | 161 | * Object-Oriented Basics 162 | * OO Analysis and Design 163 | * What is UML? 164 | * Use Case Diagrams 165 | * Class Diagram 166 | * Sequence diagram 167 | * Activity Diagrams 168 | 169 | **Object Oriented Design Case Studies** 170 | * Design a Library Management System 171 | * Design a Parking Lot 172 | * Design Amazon - Online Shopping System 173 | * Design Stack Overflow 174 | * Design a Movie Ticket Booking System 175 | * Design an ATM 176 | * Design an Airline Management System 177 | * Design Blackjack and a Deck of Cards 178 | * Design a Hotel Management System 179 | * Design a Restaurant Management system 180 | * Design Chess 181 | * Design an Online Stock Brokerage System 182 | * Design a Car Rental System 183 | * Design LinkedIn 184 | * Design Cricinfo 185 | * Design Facebook - a social network 186 | 187 | ### System Design 188 | 189 | **Design Baics** 190 | * Concurrency 191 | * CAP Theorem 192 | * Load Balancing 193 | * Consistent Hashing 194 | * Caching 195 | * Indexes 196 | * Proxies 197 | * SQL vs. NoSQL 198 | * Data Partitioning 199 | * Data Replication 200 | * Horizontal vs Vertical Scaling 201 | * Map Reduce 202 | * Long-Polling vs WebSockets vs Server-Sent Events 203 | 204 | **Design Problems** 205 | * Design Full Text Search 206 | * Design Lift/Elevator 207 | * Design Coffee Vending machine 208 | * Design Parking System 209 | * Design a URL Shortening service like TinyURL 210 | * Design Quartz Scheduler 211 | * Design a Web Crawler 212 | * Design Pastebin 213 | * Design Push notification. 214 | * Design Instagram 215 | * Design Dropbox/Google drive 216 | * Design Facebook Messenger 217 | * Design Twitter 218 | * Design Youtube or Netflix 219 | * Design Movie ticket system(BookMyShow) 220 | * Design Typeahead Suggestion 221 | * Design an API Rate Limiter 222 | * Design Event Management System 223 | * Design Twitter Search 224 | * Design Facebook’s Newsfeed 225 | * Design Yelp or Nearby Friends 226 | * Design Uber backend 227 | * Other famous platforms like Quora, UberEats, Reddit, Hackerrank 228 | 229 | Read: 230 | https://gist.github.com/vasanthk/485d1c25737e8e72759f 231 | http://highscalability.com/ 232 | Video: 233 | https://www.youtube.com/watch?v=ZgdS0EUmn70 234 | 235 | ## Frontend 236 | ### General 237 | 238 | * What did you learn yesterday/this week? 239 | * What excites or interests you about coding? 240 | * What is a recent technical challenge you experienced and how did you solve it? 241 | * When building a new web site or maintaining one, can you explain some techniques you have used to increase performance? 242 | * Can you describe some SEO best practices or techniques you have used lately? 243 | * Can you explain any common techniques or recent issues solved in regards to front-end security? 244 | * What actions have you personally taken on recent projects to increase maintainability of your code? 245 | * Which version control systems are you familiar with? 246 | * Can you describe your workflow when you create a web page? 247 | * If you have 5 different stylesheets, how would you best integrate them into the site? 248 | * Can you describe the difference between progressive enhancement and graceful degradation? 249 | * How would you optimize a website's assets/resources? 250 | * What does CORS stand for and what issue does it address? 251 | * Do you have any pet projects? What kind? 252 | * Explain your current project with data flow architecture, file structure,...? 253 | 254 | ### Js 255 | **Basics** 256 | * JavaScript Fundamentals 257 | * Code quality 258 | * Objects: (this, GC, new) 259 | * Data types and DS 260 | * Advanced working with functions (Closures, NFE, call/apply) 261 | * Object properties configuration 262 | * Prototypes, inheritance 263 | * Classes 264 | * Error handling 265 | * Promises, async/await, callbacks 266 | * Generators, advanced iteration 267 | * Modules 268 | 269 | **Advanced** 270 | * Browser: Document, Events, Interfaces 271 | * Frames and windows 272 | * Binary data, files 273 | * Network requests - websockets/http 274 | * Storage and IndexDB 275 | * Animation 276 | * Web components 277 | * Regular expressions 278 | * Web workers 279 | * Caching API 280 | * Accessibility 281 | 282 | **New features** 283 | * ES2015 284 | * ES6 285 | * ES7 286 | 287 | [JavaScript Concepts JavaScript Professionals Must Know Well](http://javascriptissexy.com/16-javascript-concepts-you-must-know-well/) 288 | ### HTML 289 | * What were some of the key goals and motivations for the HTML5 specification? 290 | * What are some of the key new features in HTML5? 291 | * What are “web workers”? 292 | * How do you indicate the character set being used by an HTML5 document? How does this differ from older HTML standards? 293 | * Discuss the differences between an HTML specification and a browser’s implementation thereof. 294 | * Briefly describe the correct usage of the following HTML5 semantic elements: `
,
,
,