{"id":15043160,"url":"https://github.com/sunilsoni/interviewnotes","last_synced_at":"2025-08-20T16:31:34.532Z","repository":{"id":51008599,"uuid":"350449771","full_name":"sunilsoni/interviewnotes","owner":"sunilsoni","description":"All are realtime interview questions and answers. I am adding more on daily basis whenever I am getting time.","archived":false,"fork":false,"pushed_at":"2024-03-12T10:32:07.000Z","size":15749,"stargazers_count":114,"open_issues_count":0,"forks_count":68,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-07T17:53:46.583Z","etag":null,"topics":["angular","aws","aws-s3","design-patterns","interview-notes","interview-questions","java-8","kafka","maven","microservices","mongodb","multithreading","object-oriented-programming","oop"],"latest_commit_sha":null,"homepage":"https://sunilsoni.github.io/interview-notes/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sunilsoni.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-22T18:32:26.000Z","updated_at":"2025-02-04T07:32:31.000Z","dependencies_parsed_at":"2024-10-12T15:40:44.660Z","dependency_job_id":"7a9469f8-f141-49e6-b8c1-e1d3e0da3eb7","html_url":"https://github.com/sunilsoni/interviewnotes","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sunilsoni/interviewnotes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunilsoni%2Finterviewnotes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunilsoni%2Finterviewnotes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunilsoni%2Finterviewnotes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunilsoni%2Finterviewnotes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sunilsoni","download_url":"https://codeload.github.com/sunilsoni/interviewnotes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunilsoni%2Finterviewnotes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271349503,"owners_count":24744285,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-20T02:00:09.606Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","aws","aws-s3","design-patterns","interview-notes","interview-questions","java-8","kafka","maven","microservices","mongodb","multithreading","object-oriented-programming","oop"],"created_at":"2024-09-24T20:48:39.079Z","updated_at":"2025-08-20T16:31:33.442Z","avatar_url":"https://github.com/sunilsoni.png","language":null,"readme":"# Interview Notes\n\nInterview questions and answers\n\n# Object-oriented programming(OOPS)\n\n  - [OOPS](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#object-oriented-programmingoops)\n    * [Abstraction](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#abstraction)\n    * [Encapsulation](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#encapsulation)\n    * [Polymorphism](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#polymorphism)\n    * [Abstract Class](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#abstract-class)\n    * [Does Abstract class have constructor?](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#does-abstract-class-have-constructor)\n    * [Abstract class Vs Interface](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#abstract-class-vs-interface)\n    * [What to choose – interface or abstract class](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#what-to-choose--interface-or-abstract-class)\n    * [Why Java 8 has introduced default methods?](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#why-java-8-has-introduced-default-methods)\n    * [Why Java 8 has introduced static methods?](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#why-java-8-has-introduced-static-methods)\n    * [Why Java does not allow multiple inheritance?](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#why-java-does-not-allow-multiple-inheritance)\n    * [Method Overloading and Overriding](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#method-overloading-and-overriding)\n      * [Method Overloading](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#method-overloading)\n      * [Rules for Method Overloading](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#rules-for-method-overloading)\n      * [Method Overriding](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#method-overriding)\n      * [Rules for Method Overriding](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#rules-for-method-overriding)\n    * [Association](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#association)\n    * [Aggregation](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#aggregation)\n    * [Composition](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#composition)\n    * [Association vs. Aggregation vs. Composition](https://github.com/sunilsoni/interview-notes/blob/main/oop/oops.md#association-vs-aggregation-vs-composition)\n\n# Java\n  - [Basic](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md)\n\n    * [Java 8](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#java-8)\n      * [Java 8 Features](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#java-8-features)\n      * [New features](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#new-features)\n      * [Lambda Expressions](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#lambda-expressions)\n      * [Lambda Expressions](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#lambda-expressions)\n        1. [Examples of lambda expressions](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#examples-of-lambda-expressions)\n        1. [Why use Lambda Expression](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#why-use-lambda-expression)\n        1. [Lambda Expressions Syntax](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#java-lambda-expression-syntax-)\n        1. [Lambda Expressions Examples](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#lambda-expressions-examples)\n      * [Stream](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#stream)\n        * [Stream features](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#stream-features)\n      * [Intermediate and Terminal operations](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#intermediate-and-terminal-operations)\n        * [Intermediate vs Terminal operations](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#intermediate-vs-terminal-operations)\n        * [Intermediate Operations](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#intermediate-operations)\n        * [Terminal Operations](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#terminal-operations-)\n\n      * [Functional Interface](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#functional-interface)\n        * [Custom Functional Interface](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#custom-functional-interface)\n        * [Predefined Functional Interfaces](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#predefined-functional-interfaces)\n        * [Predicate](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#predicate)\n        * [Function](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#function)\n        * [Supplier](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#supplier)\n        * [Consumer](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#consumer)\n        * [BiFunction](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#bifunction)\n        * [BiConsumer](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#biconsumer)\n      * [Method References](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#method-references)\n        * [Method References Types](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java8.md#method-references-types)\n      * [Test](https)\n    * [Why String is Immutable?](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#why-string-is-immutable)\n    * [StringBuffer and StringBuilder](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#stringbuffer-and-stringbuilder)\n    * [equals and hashcode contract](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#equals-and-hashcode-contract)\n    * [Comparable and Comparator interfaces](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#comparable-and-comparator-interfaces)\n      * [Comparable vs Comparator](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#comparable-and-comparator)\n    * [static keyword](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#static-keyword)\n    * [Shallow Copy and Deep Copy](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#shallow-copy-and-deep-copy)\n    * [Serialization and De-serialization](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#serialization-and-de-serialization)\n    * [Serialization scenarios with Inheritance](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#serialization-scenarios-with-inheritance)\n    * [How to make a class Immutable?](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#how-to-make-a-class-immutable)\n    * [Class loaders in Java](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#class-loaders-in-java)\n    * [Garbage Collector](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#garbage-collector)\n      * [How does the garbage collector work?](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#how-does-the-garbage-collector-work)\n      * [Types of garbage collectors](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#types-of-garbage-collectors)\n      * [Garbage Collection and types of Garbage Collectors](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#garbage-collection-and-types-of-garbage-collectors)\n      * [final, finally and finalize()](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#final-finally-and-finalize)\n    * [String, StringBuffer, StringBuilder](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#string-stringbuffer-stringbuilder)\n    * [Reflection](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#reflection)\n    * [Exceptions](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#exceptions)\n      * [Checked and Unchecked Exception](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#checked-and-unchecked-exception)\n      * [Custom exception](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#custom-exception)\n      * [OutOfMemoryError](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#outofmemoryerror)\n    * [Generics](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#generics-in-java)\n      * [Benefits of Generics](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#benefits-of-generics)\n      * [Collection Framework examples for Generics.](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#collection-framework-examples-for-generics)\n      * [Type Parameter Naming Conventions](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#type-parameter-naming-conventions)\n      * [Multiple Type Parameters](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#multiple-type-parameters)\n    * [Immutable object](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#immutable-object)\n      * [Benefits of immutable objects](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#benefits-of-immutable-objects)\n      * [Immutable Class](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#immutable-class)\n      * [Wrong way to write an immutable class](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#wrong-way-to-write-an-immutable-class)\n      * [Right way to write an immutable class](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#right-way-to-write-an-immutable-class)\n    * [Pass by reference and Pass by value](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#pass-by-reference-and-pass-by-value)\n    * [Shallow cloning and Deep cloning](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#shallow-cloning-and-deep-cloning)\n    * [Instance variable and a Static variable](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#instance-variable-and-a-static-variable)\n    * [Local variables vs Instance and static variables](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#local-variables-vs-instance-and-static-variables)\n    * [Access Modifiers](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#access-modifiers)\n    * [Volatile keyword](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#volatile-keyword)\n    * [synchronized vs volatile](https://github.com/sunilsoni/interview-notes/blob/main/Java/basic/java-basics.md#synchronized-vs-volatile)\n    * [Test](https)\n  - [Collection Framework](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#collection-framework)\n\n    * [ArrayList](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#arraylist)\n      * [Accessing elements](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#accessing-elements)\n      * [Removing elements](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#removing-elements)\n      * [Iterating over an ArrayList](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#iterating-over-an-arraylist)\n      * [Searching for elements in an ArrayList](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#searching-for-elements-in-an-arraylist)\n      * [Sorting an ArrayList](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#sorting-an-arraylist)\n    * [HashMap](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#hashmap)\n      * [HashMap Internal working](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#hashmap-internal-working)\n      * [Sort Map By Value Example](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/datastructure/Map/SortMapByValueExample.java)\n      * [How put() method of HashMap works internally](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#how-put-method-of-hashmap-works-internally)\n      * [How  HashMap get() method works internally](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#how--hashmap-get-method-works-internally)\n      * [When null Key is inserted in a HashMap](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#when-null-key-is-inserted-in-a-hashmap)\n      * [HashMap implementation changes in Java 8](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#hashmap-implementation-changes-in-java-8)\n      * [Interal working of put() and get() methods of HashMap](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#interal-working-of-put-and-get-methods-of-hashmap-)\n      * [HashMap collisions](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#hashmap-collisions)\n    * [equals and hashCode method in HashMap when the key is a custom class](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#equals-and-hashcode-method-in-hashmap-when-the-key-is-a-custom-class)\n    * [Concurrent HashMap](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#concurrent-hashmap)\n      * [ConcurrentHashMap vs Synchronized HashMap](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#concurrenthashmap-vs-synchronized-hashmap)\n    * [HashSet class](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#hashset-class)\n    * [TreeMap](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#treemap)\n    * [TreeSet](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#treeset)\n    * [fail-safe and fail-fast iterators](https://github.com/sunilsoni/interview-notes/blob/main/Java/collection/collection-framework.md#fail-safe-and-fail-fast-iterators)\n  - [Multi threading](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#multi-threading)\n\n    * [Life Cycle of a Thread](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#life-cycle-of-a-thread)\n    * [Creating a Thread](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#creating-a-thread)\n    * [Life Cycle of a Thread](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#life-cycle-of-a-thread)\n    * [Creating a Thread](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#creating-a-thread)\n    * [Difference between Runnable vs Thread](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#difference-between-runnable-vs-thread)\n    * [synchronized keyword](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#synchronized-keyword)\n    * [static synchronization](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#static-synchronization)\n    * [What does join() method?](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#q-what-does-join-method)\n    * [Deadlock](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#deadlock)\n    * [How to avoid deadlock?](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#how-to-avoid-deadlock)\n    * [What will happen if I directly call the run() method and not the start() method to execute a thread?](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#what-will-happen-if-i-directly-call-the-run-method-and-not-the-start-method-to-execute-a-thread)\n    * [Once a thread has been started can it be started again?](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#once-a-thread-has-been-started-can-it-be-started-again)\n    * [Why wait, notify and notifyAll methods are defined in the Object class instead of Thread class?](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#why-wait-notify-and-notifyall-methods-are-defined-in-the-object-class-instead-of-thread-class)\n    * [Why wait(), notify(), notifyAll() methods must be called from synchronized block?](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#why-wait-notify-notifyall-methods-must-be-called-from-synchronized-block)\n    * [wait() vs sleep() methods](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#wait-vs-sleep-methods)\n    * [Executor Framework](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#executor-framework)\n      * [High level concurrency features Executor framework](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#high-level-concurrency-features-executor-framework)\n      * [Executor Interface](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#executor-interface)\n      * [ExecutorService Interface](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#executorservice-interface)\n      * [ExecutorService Interface Examples](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#executorservice-interface-examples)\n      * [Different Between execute() and submit() Methods](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#different-between-execute-and-submit-methods)\n      * [ScheduledExecutorService Interface](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#scheduledexecutorservice-interface)\n      * [Future Interface](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#future-interface)\n      * [Executor Framework-2](https://github.com/sunilsoni/interview-notes/blob/main/Java/multi-threading/multi-threading.md#executor-framework-2)\n\n# Data Structures and Algorithms\n\n* [Lists](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#lists)\n  * [ArrayList](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#arraylist)\n  * [LinkedList](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#linkedlist)\n  * [Stack](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#stack)\n  * [Vector](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#vector)\n  * [CopyOnWriteArrayList](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#copyonwritearraylist)\n  * [Collections.synchronizedList](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#collectionssynchronizedlist)\n* [Sets](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#sets)\n  * [HashSet](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#hashset)\n    * [LinkedHashSet](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#linkedhashset)\n    * [TreeSet](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#treeset)\n    * [ConcurrentSkipListSet](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#concurrentskiplistset)\n    * [CopyOnWriteArraySet](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#copyonwritearrayset)\n    * [EnumSet](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#enumset)\n* [Maps](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#maps)\n  * [HashMap](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#hashmap)\n  * [HashMap implementation details](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#hashmap-implementation-details)\n  * [LinkedHashMap](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#linkedhashmap)\n  * [Hashtable](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#hashtable)\n  * [ConcurrentHashMap](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#concurrenthashmap)\n  * [TreeMap](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#treemap)\n  * [ConcurrentSkipListMap](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#concurrentskiplistmap)\n* [Queues](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#queues)\n  * [LinkedList](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#linkedlist-1)\n  * [ArrayBlockingQueue](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#arrayblockingqueue)\n  * [LinkedBlockingQueue](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#linkedblockingqueue)\n  * [ConcurrentLinkedQueue](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#concurrentlinkedqueue)\n  * [Deque classes](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#deque-classes)\n  * [PriorityQueue](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#priorityqueue)\n  * [PriorityBlockingQueue](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#priorityblockingqueue)\n  * [DelayQueue](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#delayqueue)\n  * [SynchronousQueue](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#synchronousqueue)\n* [equals and hashCode](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#equals-and-hashcode)\n* [Hierarchy and classes](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/data-structure.md#hierarchy-and-classes)\n\n\n* [Frequently asked](https)\n  * [Stack](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/datastructure/Stack/Stack.java)\n  * [CustomStack](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/datastructure/Stack/CustomStack.java)\n  * [LinkedListStack](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/datastructure/Stack/LinkedListStack.java)\n  * [LinkedListReversal](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/linkedlist/LinkedListReversal.java)\n  * [MyLinkedList](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/linkedlist/MyLinkedList.java)\n  * [PrimesPrimeChecker](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/prime/PrimeChecker.java)\n  * [RemoveDuplicateFromString](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/misc/RemoveDuplicateFromString.java)\n  * [Palindrome](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/misc/Palindrome.java)\n  * [FindLargestThree](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/misc/FindLargestThree.java)\n  * [FibonacciSeries](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/misc/FibonacciSeries.java)\n  * [BalancedBracketsUsingString](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/misc/BalancedBracketsUsingString.java)\n  * [BalancedBracketsUsingDeque](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/misc/BalancedBracketsUsingDeque.java)\n  * [Anagram](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Problems.md#anagram)\n    * [Problem analysis](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Problems.md#problem-analysis)\n    * [Code implementation (sorting)](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Problems.md#code-implementation-sorting)\n    * [Code implementation (hash)](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Problems.md#code-implementation-hash)\n  * [Anagrams](https://github.com/sunilsoni/interview-notes-code/tree/master/src/main/java/com/interview/notes/code/anagram)\n    * [Anagrams](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/anagram/Anagrams.java)\n    * [ValidAnagram](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/anagram/ValidAnagram.java)\n    * [PrintAnagramTogether](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/anagram/PrintAnagramTogether.java)\n    * [AnagramOfFirstAsSubstring](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/anagram/AnagramOfFirstAsSubstring.java)\n    * [GroupAnagramsTogether](https://github.com/sunilsoni/interview-notes-code/blob/master/src/main/java/com/interview/notes/code/anagram/GroupAnagramsTogether.java)\n  \n  * [Find the median of two positively ordered arrays](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Problems.md#find-the-median-of-two-positively-ordered-arrays)\n    * [What is the median of an array](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Problems.md#what-is-the-median-of-an-array)\n    * [Problem analysis](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Problems.md#problem-analysis-1)\n    * [Code](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Problems.md#code)\n    * [Code (Brute Force approach)](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Problems.md#code-brute-force-approach)\n  * [Subarray Sum Equals K](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Problems.md#subarray-sum-equals-k)\n    * [Problem analysis](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Problems.md#problem-analysis-2)\n    * [Code - Optimization by Hashmap](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Problems.md#code---optimization-by-hashmap)\n    * [Code - Brute Force approach](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Problems.md#code---brute-force-approach)\n\n\n* [Data Types](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Data-Types.md#data-types)\n  * [System-defined data types (Primitive data types)](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Data-Types.md#system-defined-data-types-primitive-data-types)\n  * [User defined data types](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Data-Types.md#user-defined-data-types)\n* [Data Structures](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Data-Types.md#data-structures)\n  * [Linear data structures](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Data-Types.md#linear-data-structures)\n  * [Non – linear data structures](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Data-Types.md#non--linear-data-structures)\n  * [Commonly Used Rates of Growth](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Data-Types.md#commonly-used-rates-of-growth)\n  * [Arrays](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Data-Types.md#arrays)\n    * [Advantages of Arrays](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Data-Types.md#advantages-of-arrays)\n    * [Disadvantages of Arrays](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Data-Types.md#disadvantages-of-arrays)\n    * [Dynamic Arrays](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Data-Types.md#dynamic-arrays)\n      \n  * [Linked List](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Data-Types.md#linked-list)\n      * [Advantages of Linked List](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Data-Types.md#advantages-of-linked-lists)\n      * [Disadvantages of Linked List](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Data-Types.md#disadvantages-of-linked-lists)\n      * [Comparison of Linked Lists with Arrays \u0026 Dynamic Arrays](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Data-Types.md#comparison-of-linked-lists-with-arrays--dynamic-arrays)\n      * [Test](https)\n* [Sorting](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#sorting)\n  * [Bubble Sort](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#bubble-sort)\n    * [Implementation](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#implementation)\n    * [Performance](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#performance)\n  * [Selection Sort](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#selection-sort)\n    * [Implementation](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#implementation-1)\n    * [Performance](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#performance-1)\n  * [Insertion Sort](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#insertion-sort)\n    * [Advantages](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#advantages-1)\n    * [Algorithm](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#algorithm-1)\n    * [Implementation](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#implementation-2)\n    * [Example](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#example)\n    * [Analysis](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#analysis)\n    * [Performance](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#performance-2)\n    * [Comparisons to Other Sorting Algorithms](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#comparisons-to-other-sorting-algorithms)\n  * [Shell Sort](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#shell-sort)\n    * [Implementation](https)\n    * [Performance](https)\n  * [Merge Sort](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#merge-sort)\n    * [Implementation](https)\n    * [Performance](https)\n  * [Heap Sort](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#heap-sort)\n    * [Implementation](https)\n    * [Performance](https)\n  * [Quicksort](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#quicksort)\n    * [Implementation](https)\n    * [Performance](https)\n  * [Tree Sort](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#tree-sort)\n    * [Implementation](https)\n    * [Performance](https)\n  * [Comparison of Sorting Algorithms](https://github.com/sunilsoni/interview-notes/blob/main/ds-algo/Sorting.md#comparison-of-sorting-algorithms)\n  * [Test](https)\n  * [Test](https)\n  * [Test](https)\n  * [Test](https)\n  * [Test](https)\n  \n# Spring\n\n- [Spring](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#spring)\n  * [Dependency Injection](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#dependency-injection)\n    * [Types of Dependency Injection](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#types-of-dependency-injection)\n    * [Constructor-based DI](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#constructor-based-di-)\n    * [Setter-method injection](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#setter-method-injection)\n    * [Constructor Vs Setter injection ](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#constructor-vs-setter-injection)\n  * [BeanFactory and ApplicationContext](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#beanfactory-and-applicationcontext)\n  * [Spring Bean life-cycle](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#spring-bean-life-cycle)\n  * [Spring Bean Scopes](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#spring-bean-scopes)\n    * [What happens when we inject a prototype scope bean in a singleton scope bean?](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#what-happens-when-we-inject-a-prototype-scope-bean-in-a-singleton-scope-bean)\n    * [How to inject a prototype scope bean in a singleton scope bean?](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#how-to-inject-a-prototype-scope-bean-in-a-singleton-scope-bean)\n    * [Stereotype Annotations](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#stereotype-annotations)\n    * [@Controller vs @RestController annotation](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#controller-vs-restcontroller-annotation:)\n    * [@Qualifier annotation](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#qualifier-annotation)\n    * [@Transactional annotation](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#transactional-annotation)\n    * [@ControllerAdvice annotation](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#controlleradvice-annotation)\n    * [@Bean annotation](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#bean-annotation)\n    * [@Component vs @Bean annotation](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#component-vs-bean-annotation)\n    * [Spring Boot Security using OAuth2 with JWT](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#spring-boot-security-using-oauth2-with-jwt)\n    * [OAuth2 Terminology](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#oauth2-terminology)\n    * [Json Web Token(JWT)](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#json-web-tokenjwt)\n    * [Spring Boot Rest Authentication with JWT Token Flow](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#spring-boot-rest-authentication-with-jwt-token-flow)\n  * [Web server vs  application server](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring.md#web-server-and--application-server)\n  * [Spring Transaction Management](https://github.com/sunilsoni/interview-notes/blob/main/spring/Spring-Transaction-Management.md#spring-transaction-management)\n    * [Global Transactions](https://github.com/sunilsoni/interview-notes/blob/main/spring/Spring-Transaction-Management.md#global-transactions)\n    * [Local Transactions](https://github.com/sunilsoni/interview-notes/blob/main/spring/Spring-Transaction-Management.md#local-transactions)\n    * [Programmatic Approach:](https://github.com/sunilsoni/interview-notes/blob/main/spring/Spring-Transaction-Management.md#programmatic-approach)\n    * [Declarative Approach (@Transactional)](https://github.com/sunilsoni/interview-notes/blob/main/spring/Spring-Transaction-Management.md#declarative-approach-transactional)\n    * [propagation](https://github.com/sunilsoni/interview-notes/blob/main/spring/Spring-Transaction-Management.md#propagation)\n    * [isolation](https://github.com/sunilsoni/interview-notes/blob/main/spring/Spring-Transaction-Management.md#isolation)\n    * [readOnly](https://github.com/sunilsoni/interview-notes/blob/main/spring/Spring-Transaction-Management.md#isolation)\n    * [timeout](https://github.com/sunilsoni/interview-notes/blob/main/spring/Spring-Transaction-Management.md#isolation)\n\n# Spring Annotations\n\n- [@Autowired](https://github.com/sunilsoni/interview-notes/blob/main/spring/annotations.md#autowired)\n- [@Inject vs @Autowired](https://github.com/sunilsoni/interview-notes/blob/main/spring/annotations.md#inject-vs-autowired)\n- [Component Scanning](https://github.com/sunilsoni/interview-notes/blob/main/spring/annotations.md#component-scanning)\n- [@ComponentScan](https://github.com/sunilsoni/interview-notes/blob/main/spring/annotations.md#componentscan)\n  - [@ComponentScan Without Arguments](https://github.com/sunilsoni/interview-notes/blob/main/spring/annotations.md#componentscan-without-arguments)\n  - [@ComponentScan With Arguments](https://github.com/sunilsoni/interview-notes/blob/main/spring/annotations.md#componentscan-with-arguments)\n  - [@ComponentScan with Exclusions](https://github.com/sunilsoni/interview-notes/blob/main/spring/annotations.md#componentscan-with-exclusions)\n  - [@ComponentScan in a Spring-Boot application](https://github.com/sunilsoni/interview-notes/blob/main/spring/annotations.md#componentscan-in-a-spring-boot-application)\n- [Difference between @Component, @Repository \u0026 @Service annotations?](https://github.com/sunilsoni/interview-notes/blob/main/spring/annotations.md#difference-between-component-repository--service-annotations)\n  - [@Repository](https://github.com/sunilsoni/interview-notes/blob/main/spring/annotations.md#repository)\n  - [@Service](https://github.com/sunilsoni/interview-notes/blob/main/spring/annotations.md#service)\n  - [@Controller](https://github.com/sunilsoni/interview-notes/blob/main/spring/annotations.md#controller)\n  - [Test](https)\n\n# Spring MVC\n\n- [Spring MVC](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#spring-mvc)\n- [Spring MVC flow](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#spring-mvc-flow)\n- [Spring Web Annotations](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#spring-web-annotations)\n  * [@RequestMapping](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#requestmapping)\n  * [@RequestBody](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#requestbody)\n  * [@PathVariable](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#pathvariable)\n  * [@RequestParam](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#requestparam)\n  * [@ResponseBody](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#responsebody)\n  * [@ExceptionHandler](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#exceptionhandler)\n    * [@ResponseStatus](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#responsestatus)\n  * [@Controller](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#controller)\n  * [@RestController](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#restcontroller)\n  * [@ModelAttribute](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#modelattribute)\n  * [@CrossOrigin](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#crossorigin)\n  * [Scheduler in cluster environment or run on multiple instances](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#scheduler-in-cluster-environment-or-run-on-multiple-instances)\n    * [Spring Scheduled Task running in clustered environment with ShedLock](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#spring-scheduled-task-running-in-clustered-environment-with-shedlock)\n    * [Configuration](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#configuration)\n    * [Creating Tasks](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#creating-tasks)\n    * [Spring](https)\n    * [Execute a Quartz Job only once in a multi-instance environment](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-mvc.md#execute-a-quartz-job-only-once-in-a-multi-instance-environment)\n\n# Spring Boot\n\n- [Spring Boot](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#spring-boot)\n- [Spring Boot Primary Goals](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#spring-boot-primary-goals)\n- [Running Spring boot app at different port on server startup](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#running-spring-boot-app-at-different-port-on-server-startup)\n- [Key Spring Boot features](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#key-spring-boot-features)\n- [Spring Boot Starters ](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#spring-boot-starters)\n- [Spring Boot Autoconfiguration ](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#spring-boot-autoconfiguration)\n- [Easy-to-Use Embedded Servlet Container Support ](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#easy-to-use-embedded-servlet-container-support)\n- [Spring Boot Annotations](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#spring-boot-annotations)\n  - [@SpringBootApplication](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#springbootapplication)\n    - [@EnableAutoConfiguration](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#enableautoconfiguration)\n    - [@ConditionalOnClass and @ConditionalOnMissingClass](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#conditionalonclass-and-conditionalonmissingclass)\n    - [@ConditionalOnBean and @ConditionalOnMissingBean](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#conditionalonbean-and-conditionalonmissingbean)\n    - [@ConditionalOnProperty](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#conditionalonproperty)\n    - [@ConditionalOnResource](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#conditionalonresource)\n    - [@ConditionalOnWebApplication and @ConditionalOnNotWebApplication](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#conditionalonwebapplication-and-conditionalonnotwebapplication)\n    - [@ConditionalExpression](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#conditionalonwebapplication-and-conditionalonnotwebapplication)\n    - [@Conditional](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#conditional)\n  - [Spring Boot Actuator](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#spring-boot-actuator)\n    - [pring-boot-actuator maven dependency](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#spring-boot-actuator-maven-dependency)\n    - [Predefined Endpoints](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#predefined-endpoints)\n    - [/info Endpoint](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#info-endpoint)\n    - [/metrics Endpoint](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#metrics-endpoint)\n    - [Custom Endpoint](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#custom-endpoint)\n- [Building an Application with Spring Boot](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#building-an-application-with-spring-boot)\n  - [Starting with Spring Initializer](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#starting-with-spring-initializer)\n  - [Create a Simple Web Application](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#create-a-simple-web-application)\n  - [Create an Application class](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#create-an-application-class)\n  - [Run the Application](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#run-the-application)\n  - [Add Unit Tests](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#add-unit-tests)\n  - [Add Production-grade Services](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#add-production-grade-services)\n- [Spring Boot CRUD Web Application with Thymeleaf, Spring MVC, Spring Data JPA, Hibernate, MySQL](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#spring-boot-crud-web-application-with-thymeleaf-spring-mvc-spring-data-jpa-hibernate-mysql)\n    - [Create Spring Boot Project](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#create-spring-boot-project)\n    - [Maven Dependencies](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#maven-dependencies)\n    - [Configure and Setup MySQL Database](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#configure-and-setup-mysql-database)\n    - [Model Layer - Create JPA Entity](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#model-layer---create-jpa-entity--)\n    - [Repository Layer](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#repository-layer---employeerepositoryjava)\n    - [Service Layer](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#service-layer)\n    - [Controller Layer](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#controller-layer---employeecontrollerjava)\n    - [View Layer: Thymeleaf](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#view-layer-thymeleaf)\n    - [Run Spring application and demo](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#run-spring-application-and-demo)\n    - [ Unit Testing REST APIs](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#unit-testing-rest-apis)\n    - [ CrudRepository vs. JpaRepository](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-boot.md#crudrepository-vs-jparepository)\n\n\n    \n\n# Spring AOP(Aspect Oriented Programming)\n - [Spring AOP(Aspect Oriented Programming)](https://github.com/sunilsoni/interview-notes/blob/main/spring/spring-aop.md#spring-aop)\n\n# HTTP methods overview\n\n- [HTTP methods overview](https://github.com/sunilsoni/interview-notes/blob/main/misc/http.md#http-methods-overview)\n  - [Idempotency in HTTP](https://github.com/sunilsoni/interview-notes/blob/main/misc/http.md#idempotency-in-http)\n  - [Safe Methods](https://github.com/sunilsoni/interview-notes/blob/main/misc/http.md#safe-methods)\n  - [Why DELETE method is defined as idempotent](https://github.com/sunilsoni/interview-notes/blob/main/misc/http.md#why-delete-method-is-defined-as-idempotent)\n  - [Why PATCH method is not idempotent](https://github.com/sunilsoni/interview-notes/blob/main/misc/http.md#why-patch-method-is-not-idempotent)\n  - [Why is PUT idempotent?](https://github.com/sunilsoni/interview-notes/blob/main/misc/http.md#why-is-put-idempotent)\n\n\n\n\n\n# HTTP Status Codes\n\n- [HTTP Status Codes](https://github.com/sunilsoni/interview-notes/blob/main/spring/http-Verbs.md#http-status-codes )\n  - [1×× Informational](https://github.com/sunilsoni/interview-notes/blob/main/spring/http-Verbs.md#1-informational)\n  - [2×× Success](https://github.com/sunilsoni/interview-notes/blob/main/spring/http-Verbs.md#2-success)\n\n    - [200 OK](https://github.com/sunilsoni/interview-notes/blob/main/spring/http-Verbs.md#2-success)\n    - [201 Created](https://github.com/sunilsoni/interview-notes/blob/main/spring/http-Verbs.md#2-success)\n    - [202 Accepted](https://github.com/sunilsoni/interview-notes/blob/main/spring/http-Verbs.md#2-success)\n    - [204 No Content](https://github.com/sunilsoni/interview-notes/blob/main/spring/http-Verbs.md#2-success)\n    - [205 Reset Content](https://github.com/sunilsoni/interview-notes/blob/main/spring/http-Verbs.md#2-success)\n  - [3×× Redirection](https://github.com/sunilsoni/interview-notes/blob/main/spring/http-Verbs.md#3-redirection)\n\n    - [300 Multiple Choices](https://github.com/sunilsoni/interview-notes/blob/main/spring/http-Verbs.md#3-redirection)\n  - [4×× Client Error](https://github.com/sunilsoni/interview-notes/blob/main/spring/http-Verbs.md#4-client-error)\n  - [5×× Server Errorl](https://github.com/sunilsoni/interview-notes/blob/main/spring/http-Verbs.md#5-server-error)\n\n# Hibernate\n\n- [Hibernate](https://github.com/sunilsoni/interview-notes/blob/main/hibernate/hibernate.md)\n  * [JPA vs Hibernate](https://github.com/sunilsoni/interview-notes/blob/main/hibernate/hibernate.md#jpa-vs-hibernate)\n  * [@Entity annotation](https://github.com/sunilsoni/interview-notes/blob/main/hibernate/hibernate.md#entity-annotation)\n  * [@Id \u0026 @GeneratedValue](https://github.com/sunilsoni/interview-notes/blob/main/hibernate/hibernate.md#id--generatedvalue)\n  * [get() and load() methods of Hibernate Session](https://github.com/sunilsoni/interview-notes/blob/main/hibernate/hibernate.md#get-and-load-methods-of-hibernate-session)\n  * [Session and SessionFactory](https://github.com/sunilsoni/interview-notes/blob/main/hibernate/hibernate.md#session-and-sessionfactory)\n  * [First Level and Second Level Cache](https://github.com/sunilsoni/interview-notes/blob/main/hibernate/hibernate.md#first-level-and-second-level-cache)\n  * [Test](https)\n\n# Angular\n\n- [Single-page application(SPA) vs. Multiple-page application(MPA)](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#single-page-applicationspa-vs-multiple-page-applicationmpa)\n  - [Single-page application(SPA)](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#single-page-application)\n  - [Pros of the Single-Page Application](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#pros-of-the-single-page-application)\n  - [Cons of the Single-Page Application](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#cons-of-the-single-page-application)\n  - [Multiple-page application(MPA)](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#multiple-page-applicationmpa)\n  - [Pros of the Multiple-Page Application](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#pros-of-the-multiple-page-application)\n  - [Cons of the multiple-page application](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#cons-of-the-multiple-page-application)\n- [Angular](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md)\n  * [AngularJS vs Angular](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#angularjs-vs-angular)\n      * [AngularJS](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#a-angularjs)\n      * [Angular](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#b-angular)\n      * [Why Angular](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#why-angular)\n        * [Components](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#components)\n        * [Templates](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#templates)\n        * [Dependency injection](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#dependency-injection)\n        * [Angular Routing and Navigation](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#angular-routing-and-navigation)\n    * [Angular Module](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#angular-module)\n    * [Bootstrapping Module](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#bootstrapping-module)\n    * [JIT vs AOT compilation](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#jit-vs-aot-compilation)\n    * [Advantages of AOT](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#advantages-of-aot)\n    * [What are the ways to control AOT compilation?](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#what-are-the-ways-to-control-aot-compilation)\n    * [How to optimize loading large data in angular?](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#how-to-optimize-loading-large-data-in-angular)\n    * [How an Angular application gets started or loaded?](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#how-an-angular-application-gets-started-or-loaded)\n    * [Angular Services](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-services.md#angular-services)\n    * [What is Interpolation](https://github.com/sunilsoni/interview-notes/blob/main/angular/Angular.md#what-is-interpolation)\n    * [Angular Routing and Navigation](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-routing.md#1-angular-routing-and-navigation)\n    * [Angular Component](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-components.md)\n      * [What Is an Angular Component?](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-components.md#what-is-an-angular-component)\n        * [Template](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-components.md#template)\n        * [Class](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-components.md#class)\n        * [Component Metadata](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-components.md#component-metadata)\n      * [Communication Between Components](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-components.md#communication-between-components)\n        * [Parent to Child](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-components.md#communication-between-components)\n        * [Child to Parent](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-components.md#communication-between-components)\n        * [Child to Parent](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-components.md#communication-between-components)\n        * [Unrelated Components](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-components.md#communication-between-components)\n    * [Angular Directive](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-directive.md)\n      * [Components Directives](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-directive.md#components-directives)\n      * [Structural Directives](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-directive.md#structural-directives)\n      * [Attribute Directives](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-directive.md#attribute-directives)\n      * [How to Create Custom Directives?](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-directive.md#how-to-create-custom-directives)\n      * [Structural Directive vs Attribute Directive](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-directive.md#structural-directive-vs-attribute-directive)\n      * [Component vs Directive](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-directive.md#component-vs-directive)\n    * [Angular Pipes](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-pipes.md)\n      * [Syntax to use Pipes in Angular Application](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-pipes.md#syntax-to-use-pipes-in-angular-application)\n      * [Types of Pipes in Angular](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-pipes.md#types-of-pipes-in-angular)\n        * [1. Built-in Pipes](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-pipes.md#1-built-in-pipes)\n        * [2.Custom Pipes](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-pipes.md#2custom-pipes)\n      * [Parameterized Pipe](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-pipes.md#parameterized-pipe)\n      * [Custom Pipe](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-pipes.md#custom-pipe)\n      * [Pure vs Impure Pipe](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-pipes.md#pure-vs-impure-pipe)\n    * [Angular Data Binding](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-data-binding.md)\n      * [1. Interpolation](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-data-binding.md)\n      * [2. Property binding](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-data-binding.md)\n      * [3. Event binding](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-data-binding.md)\n      * [4. Two-way data binding](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-data-binding.md)\n    * [Angular Lazy Loading](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-lazy-loading.md)\n    * [Angular Lifecycle Hooks](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-lifecycle-hooks.md#angular-lifecycle-hooks)\n      * [ngOnChanges](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-lifecycle-hooks.md#angular-lifecycle-hooks)\n      * [ngOnInit](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-lifecycle-hooks.md#angular-lifecycle-hooks)\n      * [ngDoCheck](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-lifecycle-hooks.md#angular-lifecycle-hooks)\n      * [ngAfterContentInit](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-lifecycle-hooks.md#angular-lifecycle-hooks)\n      * [ngAfterContentChecked](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-lifecycle-hooks.md#angular-lifecycle-hooks)\n      * [ngAfterViewInit](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-lifecycle-hooks.md#angular-lifecycle-hooks)\n      * [ngAfterViewChecked](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-lifecycle-hooks.md#angular-lifecycle-hooks)\n      * [ngOnDestroy](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-lifecycle-hooks.md#angular-lifecycle-hooks)\n      * [constructor() vs ngOnInit()](https://github.com/sunilsoni/interview-notes/blob/main/angular/angular-lifecycle-hooks.md#constructor-vs-ngoninit)\n    * [RxJS](https://github.com/sunilsoni/interview-notes/blob/main/angular/RxJS.md#rxjs)\n      * [Utility functions provided by RxJS](https://github.com/sunilsoni/interview-notes/blob/main/angular/RxJS.md#utility-functions-provided-by-rxjs)\n      * [RxJS Operator](https://github.com/sunilsoni/interview-notes/blob/main/angular/RxJS.md#rxjs-operator)\n      * [What is subscribing](https://github.com/sunilsoni/interview-notes/blob/main/angular/RxJS.md#what-is-subscribing)\n      * [Observable](https://github.com/sunilsoni/interview-notes/blob/main/angular/RxJS.md#observable)\n      * [Observer](https://github.com/sunilsoni/interview-notes/blob/main/angular/RxJS.md#observer)\n      * [Error handling in observables](https://github.com/sunilsoni/interview-notes/blob/main/angular/RxJS.md#error-handling-in-observables)\n      * [Observable creation functions](https://github.com/sunilsoni/interview-notes/blob/main/angular/RxJS.md#observable-creation-functions)\n      * [What will happen if you do not supply handler for observer?](https://github.com/sunilsoni/interview-notes/blob/main/angular/RxJS.md#what-will-happen-if-you-do-not-supply-handler-for-observer)\n      * [Promise vs Observable](https://github.com/sunilsoni/interview-notes/blob/main/angular/RxJS.md#promise-vs-observable)\n      * [Async Pipe](https://github.com/sunilsoni/interview-notes/blob/main/angular/RxJS.md#async-pipe)\n      * [HttpClient](https://github.com/sunilsoni/interview-notes/blob/main/angular/RxJS.md#httpclient)\n        * [Error handling](https://github.com/sunilsoni/interview-notes/blob/main/angular/RxJS.md#error-handling)\n\n# Design Patterns\n\n- [Design Patterns](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/design-pattern.md)\n  - [Creational Design Patterns](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/creational-design-pattern.md)\n    * [Simple Factory](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/creational-design-pattern.md#-simple-factory)\n    * [Factory Method](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/creational-design-pattern.md#-factory-method)\n    * [Abstract Factory](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/creational-design-pattern.md#-abstract-factory)\n    * [Builder](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/creational-design-pattern.md#-builder)\n    * [Prototype](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/creational-design-pattern.md#-prototype)\n    * [Singleton](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/creational-design-pattern.md#-singleton)\n    * [singleton class vs a static class](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/creational-design-pattern.md#singleton-class-vs-a-static-class)\n    - [Structural Design Patterns](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/structural-design-pattern.md)\n      * [Adapter](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/structural-design-pattern.md#-adapter)\n      * [Bridge](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/structural-design-pattern.md#-bridge)\n      * [Composite](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/structural-design-pattern.md#-composite)\n      * [Decorator](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/structural-design-pattern.md#-decorator)\n      * [Facade](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/structural-design-pattern.md#-facade)\n      * [Flyweight](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/structural-design-pattern.md#-flyweight)\n      * [Proxy](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/structural-design-pattern.md#-proxy)\n    - [Behavioral Design Patterns](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/behavioral-design-pattern.md)\n      * [Chain of Responsibility](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/behavioral-design-pattern.md#-chain-of-responsibility)\n      * [Command](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/behavioral-design-pattern.md##-command)\n      * [Iterator](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/behavioral-design-pattern.md##-iterator)\n      * [Mediator](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/behavioral-design-pattern.md##-mediator)\n      * [Memento](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/behavioral-design-pattern.md##-memento)\n      * [Observer](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/behavioral-design-pattern.md##-observer)\n      * [Visitor](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/behavioral-design-pattern.md##-visitor)\n      * [Strategy](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/behavioral-design-pattern.md##-strategy)\n      * [State](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/behavioral-design-pattern.md##-state)\n      * [Template Method](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/behavioral-design-pattern.md##-template-method)\n\n* [Designing a Java/J2EE application](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/design-pattern.md#designing-a-javaj2ee-application)\n\n  * [Create a tiered architecture](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/design-pattern.md#create-a-tiered-architecture)\n  * [Create a data model](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/design-pattern.md#create-a-data-model)\n  * [Create a design model](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/design-pattern.md#create-a-design-model)\n  * [Design considerations when decomposing business use cases into relevant classes](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/design-pattern.md#design-considerations-when-decomposing-business-use-cases-into-relevant-classes)\n  * [Vertical slicing](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/design-pattern.md#vertical-slicing)\n  * [Ensure the system is configurable](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/design-pattern.md#ensure-the-system-is-configurable)\n  * [Design considerations during design, development and deployment phases](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/design-pattern.md#design-considerations-during-design-development-and-deployment-phases)\n* [Identifying performance and/or memory issues in your Java/J2EE application](https://github.com/sunilsoni/interview-notes/blob/main/design-pattern/design-pattern.md#identifying-performance-andor-memory-issues-in-your-javaj2ee-application)\n\n# Microservices\n\n  - [Microservices](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md)\n    * [SOA(Service-oriented architecture) vs Microservices](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#soaservice-oriented-architecture-vs-microservices)\n    * [Advantages of Microservices Architecture](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#advantages-of-microservices-architecture)\n    * [Disadvantages of Microservices](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#disadvantages-of-microservices)\n    * [Challenges of Microservices Architecture](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#challenges-of-microservices-architecture)\n    * [Gateway](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#gateway)\n    * [Microservices Monitor](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#microservices-monitor)\n    * [Microservices vs Monolithic Architecture](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#microservices-vs-monolithic-architecture)\n    * [How does Microservice Architecture work?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#how-does-microservice-architecture-work)\n    * [Communicating Between Microservices](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#communicating-between-microservices)\n    * [SOAP vs REST](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#soap-vs-rest)\n    * [Eureka Naming Server](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#eureka-naming-server)\n    * [Zuul](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#zuul)\n    * [Zipkin](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#zipkin)\n    * [Versioning of microservices](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#versioning-of-microservices)\n    * [How to send custom business errors or exceptions from a RESTful microservice to client application?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#how-to-send-custom-business-errors-or-exceptions-from-a-restful-microservice-to-client-application)\n    * [What are best practices for microservices architecture?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#what-are-best-practices-for-microservices-architecture)\n    * [Microservices caching](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#microservices-caching)\n    * [SOLID (solid design principles)](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#solid-solid-design-principles)\n    * [How frequent a microservice be released into production?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#how-frequent-a-microservice-be-released-into-production)\n    * [How to achieve zero-downtime during the deployments?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#how-to-achieve-zero-downtime-during-the-deployments)\n\n      * [Blue-green deployment](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#blue-green-deployment)\n    * [How to slowly move users from older version of application to newer version?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#how-to-slowly-move-users-from-older-version-of-application-to-newer-version)\n    * [How will you monitor fleet of microservices in production?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#how-will-you-monitor-fleet-of-microservices-in-production)\n    * [How will you troubleshoot a failed API request that is spread across multiple services?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#how-will-you-troubleshoot-a-failed-api-request-that-is-spread-across-multiple-services)\n    * [What are different layers of a single microservice?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#what-are-different-layers-of-a-single-microservice)\n    * [Spring Cloud](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#spring-cloud)\n    * [application.yml vs bootstrap.yml](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#applicationyml-vs-bootstrapyml)\n    * [Netflix Eureka Server : implement service discovery in microservices architecture](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#netflix-eureka-server--implement-service-discovery-in-microservices-architecture)\n\n      * [Netflix Eureka Server](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#netflix-eureka-server)\n      * [Consul Server](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#consul-server)\n      * [How does Eureka Server work?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#how-does-eureka-server-work)\n    * [Externalize configuration in a distributed system](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#externalize-configuration-in-a-distributed-system)\n    * [@RefreshScope : Refresh configuration changes on the fly in Spring Cloud environment](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#refresh-configuration-changes-on-the-fly-in-spring-cloud-environment)\n    * [Achieve client side load balancing in Spring Microservices using Spring Cloud](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#achieve-client-side-load-balancing-in-spring-microservices-using-spring-cloud)\n    * [client side load-balancer Ribbon in your microservices architecture](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#client-side-load-balancer-ribbon-in-your-microservices-architecture)\n    * [Use both LoadBalanced as well as normal RestTemplate object in the single microservice](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#use-both-loadbalanced-as-well-as-normal-resttemplate-object-in-the-single-microservice)\n    * [Use of Eureka for service discovery in Ribbon Load Balancer](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/micro-services.md#use-of-eureka-for-service-discovery-in-ribbon-load-balancer)\n    * [Managing transactions](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Transactions.md#managing-transactions)\n\n      * [ACID Transactions](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Transactions.md#acid-transactions)\n      * [What is a distributed transaction?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Transactions.md#what-is-a-distributed-transaction)\n      * [Two-phase commit (2pc) pattern](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Transactions.md#two-phase-commit-2pc-pattern)\n      * [Benefits of using 2pc](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Transactions.md#benefits-of-using-2pc)\n      * [Disadvantages of using 2pc](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Transactions.md#disadvantages-of-using-2pc)\n      * [Saga pattern](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Transactions.md#saga-pattern)\n      * [Advantages of the Saga pattern](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Transactions.md#advantages-of-the-saga-pattern)\n      * [Disadvantages of the Saga pattern](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Transactions.md#disadvantages-of-the-saga-pattern)\n      * [Test](Test)\n      * [Test](Test)\n    * [Security in Microservices](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#security-in-microservices)\n\n      * [Why Basic Authentication is not suitable in Microservices Context?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#why-basic-authentication-is-not-suitable-in-microservices-context)\n      * [Why OAuth2?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#why-oauth2)\n      * [OAuth2 Roles](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#oauth2-roles)\n      * [OAuth 2.0 grant types (OAuth flows)](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#oauth-20-grant-types-oauth-flows)\n      * [When shall I use resource owner credentials?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#when-shall-i-use-resource-owner-credentials)\n      * [When shall I use Authorization Code grant?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#when-shall-i-use-authorization-code-grant)\n      * [When shall I use client credentials?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#when-shall-i-use-client-credentials)\n      * [OAuth2 and Microservices](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#oauth2-and-microservices)\n      * [What is JWT?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#what-is-jwt)\n      * [What are use cases for JWT?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#what-are-use-cases-for-jwt)\n      * [How does JWT looks like?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#how-does-jwt-looks-like)\n      * [What is AccessToken and RefreshToken?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#what-is-accesstoken-and-refreshtoken)\n      * [How to use a RefreshToken to request a new AccessToken?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#how-to-use-a-refreshtoken-to-request-a-new-accesstoken)\n      * [How to call the protected resource using AccessToken?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#how-to-call-the-protected-resource-using-accesstoken)\n      * [Can a refreshToken be never expiring? How to make refreshToken life long valid?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#can-a-refreshtoken-be-never-expiring-how-to-make-refreshtoken-life-long-valid)\n      * [Generate AccessToken for Client Credentials.](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#generate-accesstoken-for-client-credentials)\n      * [Why there is no RefreshToken support in Oauth2 Client Credentials workflow?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#why-there-is-no-refreshtoken-support-in-oauth2-client-credentials-workflow)\n      * [Security in inter-service communication](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/Security%20in%20Microservices.md#security-in-inter-service-communication)\n\n# API Gateway\n\n- [API Gateway](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/API-Gateway.md#api-gateway)\n- [How to retry failed requests at some other available instance using Client Side Load Balancer?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/API-Gateway.md#how-to-retry-failed-requests-at-some-other-available-instance-using-client-side-load-balancer)\n- [Circuit Breaker](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/API-Gateway.md#circuit-breaker)\n- [What is difference between using a Circuit Breaker and a naive approach where we try/catch a remote method call and protect for failures?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/API-Gateway.md#what-is-difference-between-using-a-circuit-breaker-and-a-naive-approach-where-we-trycatch-a-remote-method-call-and-protect-for-failures)\n- [Circuit Breaker Pattern](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/API-Gateway.md#circuit-breaker-pattern)\n- [Open, Closed and Half-Open states of Circuit Breaker](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/API-Gateway.md#open-closed-and-half-open-states-of-circuit-breaker)\n- [Use-cases for Circuit Breaker Pattern](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/API-Gateway.md#use-cases-for-circuit-breaker-pattern)\n- [Benefits of using Circuit Breaker Pattern](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/API-Gateway.md#benefits-of-using-circuit-breaker-pattern)\n- [What is Hystrix?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/API-Gateway.md#what-is-hystrix)\n- [Features of Hystrix library](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/API-Gateway.md#features-of-hystrix-library)\n- [How to use Hystrix for fallback execution?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/API-Gateway.md#how-to-use-hystrix-for-fallback-execution)\n- [When not to use Hystrix fallback on a particular microservice?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/API-Gateway.md#when-not-to-use-hystrix-fallback-on-a-particular-microservice)\n- [ignore certain exceptions in Hystrix fallback execution](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/API-Gateway.md#ignore-certain-exceptions-in-hystrix-fallback-execution)\n- [Request Collapsing feature in Hystrix](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/API-Gateway.md#request-collapsing-feature-in-hystrix)\n- [Circuit Breaker vs Hystrix](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/API-Gateway.md#circuit-breaker-and-hystrix)\n- [Where exactly should I use Circuit Breaker Pattern?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/API-Gateway.md#where-exactly-should-i-use-circuit-breaker-pattern)\n- [Where it should not be used?](https://github.com/sunilsoni/interview-notes/blob/main/micro-services/API-Gateway.md#where-it-should-not-be-used)\n\n# Kafka\n\n- [Kafka](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md)\n  * [Advantages of Kafka](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md#advantages-of-kafka)\n  * [Offset in Kafka](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md#offset-in-kafka)\n  * [Consumer group in Kafka](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md#consumer-group-in-kafka)\n  * [ZooKeeper in Kafka](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md#zookeeper-in-kafka)\n  * [Can I use Kafka without Zookeeper?](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md#can-i-use-kafka-without-zookeeper)\n  * [What is Zookeeper in Kafka? Can we use Kafka without Zookeeper?](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md#what-is-zookeeper-in-kafka-can-we-use-kafka-without-zookeeper)\n  * [Partition in Kafka](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md#partition-in-kafka)\n  * [APIs of Kafka](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md#apis-of-kafka)\n    * [Load balancing of the server in Kafka](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md#load-balancing-of-the-server-in-kafka)\n    * [Retention period in Kafka cluster](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md#retention-period-in-kafka-cluster)\n    * [RabbitMQ vs Apache Kafka](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md#rabbitmq-vs-apache-kafka)\n    * [Explain Apache Kafka Use Cases?](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md#explain-apache-kafka-use-cases)\n    * [Kafka Cluster, and its key benefits](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md#kafka-cluster-and-its-key-benefits)\n    * [Replicas in Kafka](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md#replicas-in-kafka)\n    * [Starting a Kafka server](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md#starting-a-kafka-server)\n    * [In the Producer, when does QueueFullException occur?](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md#in-the-producer-when-does-queuefullexception-occur)\n    * [Confluent Kafka vs. Apache Kafka](https://github.com/sunilsoni/interview-notes/blob/main/kafka/kafka.md#Confluent-Kafka-vs-Apache-Kafka)\n\n# MongoDB\n\n- [MongoDB](https://github.com/sunilsoni/interview-notes/blob/main/mongo-db/mongo-db.md#mongodb)\n  * [Key Components](https://github.com/sunilsoni/interview-notes/blob/main/mongo-db/mongo-db.md#key-components)\n  * [Document](https://github.com/sunilsoni/interview-notes/blob/main/mongo-db/mongo-db.md#document)\n  * [Collection](https://github.com/sunilsoni/interview-notes/blob/main/mongo-db/mongo-db.md#collection)\n  * [Namespace](https://github.com/sunilsoni/interview-notes/blob/main/mongo-db/mongo-db.md#namespace)\n  * [Databases in MongoDB](https://github.com/sunilsoni/interview-notes/blob/main/mongo-db/mongo-db.md#databases-in-mongodb)\n  * [Mongo Shell](https://github.com/sunilsoni/interview-notes/blob/main/mongo-db/mongo-db.md#mongo-shell)\n  * [Advantages of MongoDB:](https://github.com/sunilsoni/interview-notes/blob/main/mongo-db/mongo-db.md#advantages-of-mongodb)\n  * [Features of MongoDB](https://github.com/sunilsoni/interview-notes/blob/main/mongo-db/mongo-db.md#features-of-mongodb)\n  * [Indexes in MongoDB](https://github.com/sunilsoni/interview-notes/blob/main/mongo-db/mongo-db.md#indexes-in-mongodb)\n  * [MongoDB](https)\n\n# Database\n\n- [Database](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#database)\n- [SQL](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#sql)\n  - [Joins](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#joins)\n    - [Inner join](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#inner-join)\n    - [Left outer join](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#left-outer-join)\n    - [Right outer join](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#right-outer-join)\n    - [Full join](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#full-join)\n    - [Cross join](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#cross-join)\n    - [Self Join](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#self-join)\n  - [Keys](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#keys)\n  - [Indexes](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#indexes)\n    - [Non-clustered index](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#indexes)\n    - [Clustered index](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#indexes)\n    - [Composite index](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#indexes)\n    - [Cardinality](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#indexes)\n    - [Bitmap-index](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#indexes)\n    - [Data structures used](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#indexes)\n    - [SQL - Indexes](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#sql---indexes)\n    - [The CREATE INDEX Command](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#the-create-index-command)\n    - [Unique Indexes](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#unique-indexes)\n    - [Composite Indexes](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#composite-indexes)\n    - [Implicit Indexes](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#implicit-indexes)\n    - [The DROP INDEX Command](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#the-drop-index-command)\n    - [When should indexes be avoided?](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#when-should-indexes-be-avoided)\n    \n  - [Queries](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#queries)\n\n  - [SQL vs NoSQL](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#sql-vs-nosql)\n    - [SQL](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#sql-1)\n    - [NoSQL](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#nosql)\n    - [SQL vs NoSQL](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#sql-vs-nosql)\n    - [Database Types](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#database-types)\n    - [Schema](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#schema)\n    - [Data Model](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#data-model)\n    - [Ability to Scale](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#ability-to-scale)\n    - [ACID vs BASE](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#acid-vs-base)\n    - [Use Cases](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#use-cases)\n    - [Reasons to use an SQL database](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#reasons-to-use-an-sql-database)\n    - [Reasons to use a NoSQL database](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#reasons-to-use-a-nosql-database)\n- [UNION vs UNION ALL](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#union-vs-union-all)\n- [TRUNCATE vs DELETE, vs  DROP](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#truncate-vs-delete-vs--drop)\n- [TRUNCATE](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#truncate)\n- [DELETE](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#delete)\n- [DROP](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#drop)\n    \n  - [Frequently asked queries](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#frequently-asked-queries)\n    - [Find all departments with sales more than 1000](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#frequently-asked-queries)\n    - [Print all employee ids with their manager ids](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#frequently-asked-queries)\n    - [Print all manager names with count of directs](https://github.com/sunilsoni/interview-notes/blob/main/database/database.md#frequently-asked-queries)\n    - [Find Nth highest salary in SQL - Oracle, MSSQL and MySQL](https)\n      -[Nth maximum salary in MySQL using LIMIT keyword](https)\n      -[2nd highest salary in MySQL without subquery](https)\n      -[3rd highest salary in MySQL using LIMIT clause](https)\n      -[Test](https)\n      -[Test](https)\n      -[Test](https)\n      -[Test](https)\n# Maven\n\n  - [Maven](https://github.com/sunilsoni/interview-notes/blob/main/maven/maven.md#Maven)\n  - [pom.xml](https://github.com/sunilsoni/interview-notes/blob/main/maven/maven.md#pomxml)\n  - [Maven build life-cycle](https://github.com/sunilsoni/interview-notes/blob/main/maven/maven.md#maven-build-life-cycle)\n    - [validate](https://github.com/sunilsoni/interview-notes/blob/main/maven/maven.md#maven-build-life-cycle)\n    - [compile](https://github.com/sunilsoni/interview-notes/blob/main/maven/maven.md#maven-build-life-cycle)\n    - [test](https://github.com/sunilsoni/interview-notes/blob/main/maven/maven.md#maven-build-life-cycle)\n    - [package](https://github.com/sunilsoni/interview-notes/blob/main/maven/maven.md#maven-build-life-cycle)\n    - [verify](https://github.com/sunilsoni/interview-notes/blob/main/maven/maven.md#maven-build-life-cycle)\n    - [install](https://github.com/sunilsoni/interview-notes/blob/main/maven/maven.md#maven-build-life-cycle)\n    - [deploy](https://github.com/sunilsoni/interview-notes/blob/main/maven/maven.md#maven-build-life-cycle)\n\n# Unix\n  - [Unix](https://github.com/sunilsoni/interview-notes/blob/main/unix/Unix.md#unix)\n    - [Find](https://github.com/sunilsoni/interview-notes/blob/main/unix/Unix.md#find)\n    - [Search](https://github.com/sunilsoni/interview-notes/blob/main/unix/Unix.md#search)\n    - [Processes](https://github.com/sunilsoni/interview-notes/blob/main/unix/Unix.md#processes)\n    - [File permissions](https://github.com/sunilsoni/interview-notes/blob/main/unix/Unix.md#file-permissions)\n    - [List files](https://github.com/sunilsoni/interview-notes/blob/main/unix/Unix.md#list-files)\n    - [Symlinks](https://github.com/sunilsoni/interview-notes/blob/main/unix/Unix.md#symlinks)\n    - [Checking logs](https://github.com/sunilsoni/interview-notes/blob/main/unix/Unix.md#checking-logs)\n    - [Text manipulation](https://github.com/sunilsoni/interview-notes/blob/main/unix/Unix.md#text-manipulation)\n    - [Sed](https://github.com/sunilsoni/interview-notes/blob/main/unix/Unix.md#sed)\n    - [Networking](https://github.com/sunilsoni/interview-notes/blob/main/unix/Unix.md#networking)\n    - [Space](https://github.com/sunilsoni/interview-notes/blob/main/unix/Unix.md#space)\n    - [Miscellaneous](https://github.com/sunilsoni/interview-notes/blob/main/unix/Unix.md#miscellaneous)\n\n# DevOps Tools\n  - [Docker](https)\n  - [Git](https://github.com/sunilsoni/interview-notes/blob/main/devops/git/git.md#git)\n    * [Advantages of git](https://github.com/sunilsoni/interview-notes/blob/main/devops/git/git.md#advantages-of-git)\n    * [git push](https://github.com/sunilsoni/interview-notes/blob/main/devops/git/git.md#git-push)\n    * [git pull vs git fetch](https://github.com/sunilsoni/interview-notes/blob/main/devops/git/git.md#git-pull-vs-git-fetch)\n    * [conflict](https://github.com/sunilsoni/interview-notes/blob/main/devops/git/git.md#conflict)\n    * [resolve a conflict](https://github.com/sunilsoni/interview-notes/blob/main/devops/git/git.md#resolve-a-conflict)\n    * [git clone](https://github.com/sunilsoni/interview-notes/blob/main/devops/git/git.md#git-clone)\n    * [git pull origin](https://github.com/sunilsoni/interview-notes/blob/main/devops/git/git.md#git-pull-origin)\n    * [git commit a](https://github.com/sunilsoni/interview-notes/blob/main/devops/git/git.md#git-commit-a)\n  - [Jenkins](https)\n    * [Continuous delivery](https://github.com/sunilsoni/interview-notes/blob/main/devops/jenkins/jenkins.md#continuous-delivery)\n  - [Kubernetes](https)\n\n# Swagger\n  - [Swagger](https://github.com/sunilsoni/interview-notes/blob/main/spring/swagger.md#swagger)\n  - [Integrate Swagger into your microservices](https://github.com/sunilsoni/interview-notes/blob/main/spring/swagger.md#integrate-swagger-into-your-microservices)\n  - [Swagger annotations](https://github.com/sunilsoni/interview-notes/blob/main/spring/swagger.md#swagger-annotations)\n    - [@Api](https://github.com/sunilsoni/interview-notes/blob/main/spring/swagger.md#swagger-annotations)\n    - [@ApiOperation](https://github.com/sunilsoni/interview-notes/blob/main/spring/swagger.md#swagger-annotations)\n    - [@ApiResponse](https://github.com/sunilsoni/interview-notes/blob/main/spring/swagger.md#swagger-annotations)\n    - [@ApiParam](https://github.com/sunilsoni/interview-notes/blob/main/spring/swagger.md#swagger-annotations)\n  - [Maven plugin](https://github.com/sunilsoni/interview-notes/blob/main/spring/swagger.md#maven-plugin)\n\n# Cucumber\n\n- [Cucumber](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#cucumber)\n- [Advantages of Cucumber](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#advantages-of-cucumber)\n- [Example](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#example)\n- [Features in Cucumber](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#features-in-cucumber)\n- [Feature file](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#feature-file)\n- [Step Definition](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#step-definition)\n- [Gherkin](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#gherkin)\n- [user login feature Example](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#user-login-feature-example)\n- [Test harness in Cucumber](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#test-harness-in-cucumber)\n  - [Selenium vs Cucumber](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#selenium-vs-cucumber)\n  - [TDD(Test-Driven Development)](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#tddtest-driven-development)\n  - [BDD and TDD](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#bdd-and-tdd)\n  - [Cucumber profiles](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#cucumber-profiles)\n  - [Scenario Outline](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#scenario-outline)\n  - [Scenario and Scenario Outline](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#scenario-and-scenario-outline)\n  - [Step Definition](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#step-definition-1)\n  - [Background in a Feature file](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#background-in-a-feature-file)\n  - [Junit Test runner class](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#junit-test-runner-class)\n  - [Tags in cucumber-bdd](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#tags-in-cucumber-bdd)\n  - [Cucumber Hooks](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#cucumber-hooks)\n  - [Name any two testing framework that can be integrated with Cucumber?](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#name-any-two-testing-framework-that-can-be-integrated-with-cucumber)\n  - [What are the two files required to run a cucumber test?](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#what-are-the-two-files-required-to-run-a-cucumber-test)\n  - [Examples Table or Scenario Outline vs Data Table](https://github.com/sunilsoni/interview-notes/blob/main/Cucumber/Cucumber.md#examples-table-or-scenario-outline-vs-data-table)\n\n# Agile\n  - [Agile Scrum Ceremonies](https://github.com/sunilsoni/interview-notes/blob/main/agile/agile.md#agile)\n    * [Sprint Planning](https://github.com/sunilsoni/interview-notes/blob/main/agile/agile.md#sprint-planning)\n    * [Daily Scrum](https://github.com/sunilsoni/interview-notes/blob/main/agile/agile.md#daily-scrum)\n    * [Sprint Review](https://github.com/sunilsoni/interview-notes/blob/main/agile/agile.md#sprint-review)\n    * [Sprint Retrospective](https://github.com/sunilsoni/interview-notes/blob/main/agile/agile.md#sprint-retrospective)\n\n# Amazon Web Services (AWS)\n\n- [AWS](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#amazon-web-services-aws)\n- [Key components of AWS](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#key-components-of-aws)\n- [Elastic Cloud Compute (EC2)](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#elastic-cloud-compute-ec2)\n- [Simple Storage Service (S3)](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#simple-storage-service-s3)\n  - [Objects and Buckets](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#objects-and-buckets)\n  - [S3 Storage Classes](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#s3-storage-classes)\n  - [Durability and Availability](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#durability-and-availability)\n  - [Storage Classes for Frequently Accessed Objects](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#storage-classes-for-frequently-accessed-objects)\n  - [Storage Classes for Infrequently Accessed Objects](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#storage-classes-for-infrequently-accessed-objects)\n  - [Storage Class for Both Frequently and Infrequently Accessed Objects](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#storage-class-for-both-frequently-and-infrequently-accessed-objects)\n  - [Access Permissions](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#access-permissions)\n    - [Bucket Policies](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#bucket-policies)\n    - [User Policies](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#user-policies)\n    - [Bucket and Object Access Control Lists](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#bucket-and-object-access-control-lists)\n    - [Encryption](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#encryption)\n    - [Versioning](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#versioning)\n\n- [Relational Database Service (RDS)](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#relational-database-service-rds)\n  - [Database Engines](https)\n  - [Licensing](https)\n  - [Instance Classes](https)\n  - [Standard](https)\n  - [Memory Optimized](https)\n  - [Burstable Performance](https)\n  - [Scaling Vertically](https)\n  - [Storage](https)\n  - [General-Purpose SSD](https)\n  - [Provisioned IOPS SSD](https)\n  - [Magnetic](https)\n  - [Scaling Horizontally with Read Replicas](https)\n  - [High Availability with Multi-AZ](https)\n  - [Backup and Recovery](https)\n  \n\n- [Route 53](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#route-53)\n- [CloudWatch](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#cloudwatch)\n  - [CloudWatch Metrics](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#cloudwatch-metrics)\n  - [CloudWatch Alarms](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#cloudwatch-alarms)\n  - [CloudWatch Dashboards](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#cloudwatch-dashboards)\n  - [CloudWatch Logs](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#cloudwatch-logs)\n  - [Metric Filters](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#metric-filters)\n  - [CloudWatch Events](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#cloudwatch-events)\n- [CloudTrail](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#cloudtrail)\n  - [API and Non-API Events](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#api-and-non-api-events)\n  - [Management and Data Events](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#management-and-data-events)\n  - [Event History](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#event-history)\n  - [Trails](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#trails)\n  - [Log File Integrity Validation](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#log-file-integrity-validation)\n- [Cost Explorer](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#cost-explorer)\n  - [Cost and Usage](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#cost-and-usage)\n  - [Reservation reports](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#reservation-reports)\n  - [Reserved Instances Utilization](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#reserved-instances-utilization)\n  - [Reserved Instances Coverage](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#reserved-instances-coverage)\n  - [Reserved instance recommendations](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#reserved-instance-recommendations)\n- [Amazon DynamoDB](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#amazon-dynamodb)\n  - [Items and Tables](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#items-and-tables)\n  - [Scaling Horizontally](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#scaling-horizontally)\n  - [Queries and Scans](https://github.com/sunilsoni/interview-notes/blob/main/aws/aws.md#queries-and-scans)\n- [AWS Lambda](https://github.com/sunilsoni/interview-notes/blob/main/aws/AwsLambda.md#aws-lambda)\n  - [Introducing AWS Lambda](https://github.com/sunilsoni/interview-notes/blob/main/aws/AwsLambda.md#introducing-aws-lambda)\n  - [Key benefits of serverless computing](https://github.com/sunilsoni/interview-notes/blob/main/aws/AwsLambda.md#key-benefits-of-serverless-computing)\n    - [No ware to manage:](https://github.com/sunilsoni/interview-notes/blob/main/aws/AwsLambda.md#no-ware-to-manage)\n    - [Faster execution time:](https://github.com/sunilsoni/interview-notes/blob/main/aws/AwsLambda.md#faster-execution-time)\n    - [Really low costs:](https://github.com/sunilsoni/interview-notes/blob/main/aws/AwsLambda.md#really-low-costs)\n    - [Support of popular programming languages:](https://github.com/sunilsoni/interview-notes/blob/main/aws/AwsLambda.md#support-of-popular-programming-languages)\n    - [Microservices compatible:](https://github.com/sunilsoni/interview-notes/blob/main/aws/AwsLambda.md#microservices-compatible)\n    - [Event-driven applications:](https://github.com/sunilsoni/interview-notes/blob/main/aws/AwsLambda.md#event-driven-applications)\n  - [Cons or Disadvantage  of serverless computing](https://github.com/sunilsoni/interview-notes/blob/main/aws/AwsLambda.md#cons-or-disadvantage--of-serverless-computing)\n    - [Execution duration:](https://github.com/sunilsoni/interview-notes/blob/main/aws/AwsLambda.md#execution-duration)\n    - [Complexity:](https://github.com/sunilsoni/interview-notes/blob/main/aws/AwsLambda.md#complexity)\n    - [Lack of tools](https://github.com/sunilsoni/interview-notes/blob/main/aws/AwsLambda.md#lack-of-tools)\n    - [Vendor lock-in:](https://github.com/sunilsoni/interview-notes/blob/main/aws/AwsLambda.md#vendor-lock-in)\n  - [Test](http)\n  - [Test](http)\n  - [Test](http)\n\n# Good Practices\n  - [Good Practices for REST API Design](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#good-practices-for-rest-api-design)\n    * [Accept and respond with JSON](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#accept-and-respond-with-json)\n    * [Use nouns instead of verbs in endpoint paths](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#use-nouns-instead-of-verbs-in-endpoint-paths)\n    * [Nesting resources for hierarchical objects](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#nesting-resources-for-hierarchical-objects)\n    * [Handle errors gracefully and return standard error codes](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#handle-errors-gracefully-and-return-standard-error-codes)\n    * [Allow filtering, sorting, and pagination](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#allow-filtering-sorting-and-pagination)\n    * [Maintain Good Security Practices](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#maintain-good-security-practices)\n    * [Cache data to improve performance](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#cache-data-to-improve-performance)\n    * [Versioning our APIs](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#versioning-our-apis)\n  - [Java code review checklist](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#java-code-review-checklist)\n    * [Basic Checks (before)](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#code-quality)\n    * [The code was tested](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#code-quality)\n    * [Clean Code](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#code-quality)\n    * [Best Practices](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#code-quality)\n    * [Exception Handling](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#exception-handling)\n  - [Common Java Vulnerabilities](https://github.com/sunilsoni/interview-notes/blob/main/misc/owasp.md#common-java-vulnerabilities)\n    * [Injection Flaws](https://github.com/sunilsoni/interview-notes/blob/main/misc/owasp.md#injection-flaws)\n    * [Cross Site Scripting (XSS)](https://github.com/sunilsoni/interview-notes/blob/main/misc/owasp.md#cross-site-scripting-xss)\n      * [How does XSS work?](https://github.com/sunilsoni/interview-notes/blob/main/misc/owasp.md#how-does-xss-work)\n    * [Cross Site Request Forgery(CSRF)](https://github.com/sunilsoni/interview-notes/blob/main/misc/owasp.md#cross-site-request-forgerycsrf)\n    * [Test](http)\n  - [Resolving a Production Issue on a Live Server](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#resolving-a-production-issue-on-a-live-server)\n    - [Notify All Stakeholders](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#notify-all-stakeholders)\n    - [Reproduce : Replicate the production environment locally](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#reproduce--replicate-the-production-environment-locally)\n    - [Root Cause Analysis \u0026 Fix](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#root-cause-analysis--fix)\n    - [Re-test \u0026 Regression Testing](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#re-test--regression-testing)\n    - [Backup the System Before Implementing Complex Solution](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#backup-the-system-before-implementing-complex-solution)\n    - [Document the Problem and How it was Resolved](https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.https://github.com/sunilsoni/interview-notes/blob/main/misc/GoodPractices.md#backup-the-system-before-implementing-complex-solutiond#backup-the-system-before-implementing-complex-solution)\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunilsoni%2Finterviewnotes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsunilsoni%2Finterviewnotes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunilsoni%2Finterviewnotes/lists"}