├── 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: `, , ,