<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Er. Bhupendra</title>
    <description>The latest articles on DEV Community by Er. Bhupendra (@bhu_kalki).</description>
    <link>https://dev.to/bhu_kalki</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F773879%2F7da4aa2d-d5ad-46b7-98ab-b2550349b225.png</url>
      <title>DEV Community: Er. Bhupendra</title>
      <link>https://dev.to/bhu_kalki</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bhu_kalki"/>
    <language>en</language>
    <item>
      <title>Troubleshooting K8s</title>
      <dc:creator>Er. Bhupendra</dc:creator>
      <pubDate>Sun, 16 Aug 2026 10:15:20 +0000</pubDate>
      <link>https://dev.to/bhu_kalki/troubleshooting-k8s-3ma</link>
      <guid>https://dev.to/bhu_kalki/troubleshooting-k8s-3ma</guid>
      <description>&lt;p&gt;How do I troubleshoot Kubernetes deployment errors?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;only 3 cmd:
for troubleshooting:
kubectl describe,log,events
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Troubleshooting &lt;em&gt;Kubernetes&lt;/em&gt; deployments requires a systematic approach to identify why resources are failing to reach a healthy state. According to the video, here are the most effective methods to debug your cluster:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Examine Deployment Status:&lt;/strong&gt; Use &lt;code&gt;kubectl get pods&lt;/code&gt; and &lt;code&gt;kubectl describe pod &amp;lt;pod-name&amp;gt;&lt;/code&gt; to identify status messages like &lt;em&gt;CrashLoopBackOff&lt;/em&gt;, &lt;em&gt;ImagePullBackOff&lt;/em&gt;, or &lt;em&gt;Pending&lt;/em&gt;. Describing the pod helps reveal specific errors from the scheduler or container runtime (1:17:00).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check Container Logs:&lt;/strong&gt; If a pod is crashing, inspect the logs of specific containers using &lt;code&gt;kubectl logs &amp;lt;pod-name&amp;gt; -c &amp;lt;container-name&amp;gt;&lt;/code&gt;. This is crucial for multi-container pods to pinpoint which part of the application is failing (1:18:00 - 1:23:00).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor Events:&lt;/strong&gt; Use &lt;code&gt;kubectl get events&lt;/code&gt; to see the history of cluster activities. This often reveals issues with &lt;em&gt;StorageClasses&lt;/em&gt;, missing permissions, or resource constraints (2:10:00).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analyze Configuration:&lt;/strong&gt; If you encounter errors related to &lt;em&gt;StatefulSets&lt;/em&gt; or persistent storage (like &lt;em&gt;PVCs&lt;/em&gt; staying in a &lt;em&gt;Pending&lt;/em&gt; state), verify your &lt;em&gt;StorageClass&lt;/em&gt; settings and ensure the configuration matches your cloud environment's requirements, such as using &lt;em&gt;GP3&lt;/em&gt; storage classes on &lt;em&gt;AWS&lt;/em&gt; (2:11:00 - 2:16:00).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify Infrastructure Dependencies:&lt;/strong&gt; Ensure that networking, security groups, and &lt;em&gt;IAM&lt;/em&gt; roles (if using &lt;em&gt;IRSA&lt;/em&gt;) are correctly configured, as infrastructure-level issues often mask themselves as application errors (3:24:00 - 3:28:00).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzmuv5vw2baccho6ftqx2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzmuv5vw2baccho6ftqx2.png" alt=" " width="800" height="319"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>GitHub Actions CI/CD</title>
      <dc:creator>Er. Bhupendra</dc:creator>
      <pubDate>Sat, 15 Aug 2026 17:46:54 +0000</pubDate>
      <link>https://dev.to/bhu_kalki/github-actions-cicd-2f9i</link>
      <guid>https://dev.to/bhu_kalki/github-actions-cicd-2f9i</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffxw42na9b67d12hl3vf5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffxw42na9b67d12hl3vf5.png" alt=" " width="799" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SQL-DELETE-DUPLICATE</title>
      <dc:creator>Er. Bhupendra</dc:creator>
      <pubDate>Fri, 14 Aug 2026 16:58:14 +0000</pubDate>
      <link>https://dev.to/bhu_kalki/sql-delete-duplicate-bme</link>
      <guid>https://dev.to/bhu_kalki/sql-delete-duplicate-bme</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4n0sxequn3d33iw42mu1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4n0sxequn3d33iw42mu1.png" alt=" " width="800" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;FOUCS ONLY ON THIS ONLY &lt;/p&gt;

&lt;p&gt;===============================================&lt;/p&gt;

</description>
    </item>
    <item>
      <title>KUBERNATES(K8S)</title>
      <dc:creator>Er. Bhupendra</dc:creator>
      <pubDate>Wed, 12 Aug 2026 11:33:11 +0000</pubDate>
      <link>https://dev.to/bhu_kalki/kubernatesk8s-15hc</link>
      <guid>https://dev.to/bhu_kalki/kubernatesk8s-15hc</guid>
      <description>&lt;p&gt;Bilkul. Isko &lt;strong&gt;ratne ke bajay ek single mental model&lt;/strong&gt; se samjho. Kubernetes mein ye 4 topics actually ek hi problem solve karte hain:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“Pod ko KAHAN chalana hai, KISKE SAATH/DOOR chalana hai, aur KAUNSE node par allowed hai?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Aur probes alag problem solve karti hain:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“Pod ke andar application healthy hai ya nahi?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  1. Sabse pehle: Kubernetes Pod ko node par kaise place karta hai?
&lt;/h1&gt;

&lt;p&gt;Maan lo tumhare paas 3 nodes hain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-1        Node-2        Node-3
SSD           HDD           GPU
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aur tumhara pod hai:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;booking-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kubernetes Scheduler decide karega:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;booking-service → Node-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ab question hai: &lt;strong&gt;Scheduler ko kaise bataoge ki pod ko kis node par bhejna hai?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yahan &lt;strong&gt;Node Affinity&lt;/strong&gt; aati hai.&lt;/p&gt;




&lt;h1&gt;
  
  
  2. Node Affinity = "Mujhe KAUNSA NODE chahiye?"
&lt;/h1&gt;

&lt;p&gt;Suppose nodes ke labels:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-1:
disk=ssd

Node-2:
disk=hdd

Node-3:
disk=ssd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tum bolte ho:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Mera booking-service sirf SSD node par chale."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;affinity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;nodeAffinity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;requiredDuringSchedulingIgnoredDuringExecution&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;nodeSelectorTerms&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;matchExpressions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;disk&lt;/span&gt;
              &lt;span class="na"&gt;operator&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;In&lt;/span&gt;
              &lt;span class="na"&gt;values&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;ssd&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ab scheduler dekhega:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-1 → disk=ssd ✅
Node-2 → disk=hdd ❌
Node-3 → disk=ssd ✅
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Toh pod:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;booking-service
      ↓
Node-1 or Node-3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Simple line for interview
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Node Affinity tells Kubernetes which nodes a pod should or must run on, based on node labels.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  3. Pod Affinity = "Mujhe KAUNSE POD ke PAAS rehna hai?"
&lt;/h1&gt;

&lt;p&gt;Ab scenario change.&lt;/p&gt;

&lt;p&gt;Maan lo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;frontend
backend
database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tum chahte ho:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;frontend
   ↓
backend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;same zone/node ke close ho.&lt;/p&gt;

&lt;p&gt;Yahan tum &lt;strong&gt;Pod Affinity&lt;/strong&gt; use kar sakte ho.&lt;/p&gt;

&lt;p&gt;Mental model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node Affinity
     ↓
"Which NODE?"

Pod Affinity
     ↓
"Which POD ke NEAR?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-1
 ├── frontend
 └── backend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tum bol rahe ho:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Backend ko frontend pod ke paas rakhna."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Kubernetes matching pod ke labels dekhega.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;frontend&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then backend ki affinity:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;affinity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;podAffinity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;requiredDuringSchedulingIgnoredDuringExecution&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;labelSelector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;matchExpressions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;app&lt;/span&gt;
              &lt;span class="na"&gt;operator&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;In&lt;/span&gt;
              &lt;span class="na"&gt;values&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;frontend&lt;/span&gt;
        &lt;span class="na"&gt;topologyKey&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;kubernetes.io/hostname&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Backend pod ko aise node par schedule karo jahan &lt;code&gt;app=frontend&lt;/code&gt; wala pod already hai."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  4. Pod Anti-Affinity = "Mujhe KAUNSE POD se DOOR rehna hai?"
&lt;/h1&gt;

&lt;p&gt;Ye &lt;strong&gt;production mein bahut important&lt;/strong&gt; hai.&lt;/p&gt;

&lt;p&gt;Suppose tumhare paas:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;booking-service
replica = 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kubernetes theoretically kar sakta hai:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-1
 ├── booking-1
 ├── booking-2
 └── booking-3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Problem?&lt;/p&gt;

&lt;p&gt;Agar Node-1 down:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-1 💥
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Toh teenon replicas ek saath gone.&lt;/p&gt;

&lt;h3&gt;
  
  
  Anti-Affinity bolti hai:
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;"Mere same application ke pods ko same node par mat rakho."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-1
 └── booking-1

Node-2
 └── booking-2

Node-3
 └── booking-3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ab:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-1 💥
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;booking-2 ✅
booking-3 ✅
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Application available rahegi.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;affinity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;podAntiAffinity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;requiredDuringSchedulingIgnoredDuringExecution&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;labelSelector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;matchExpressions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;app&lt;/span&gt;
              &lt;span class="na"&gt;operator&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;In&lt;/span&gt;
              &lt;span class="na"&gt;values&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;booking&lt;/span&gt;
        &lt;span class="na"&gt;topologyKey&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;kubernetes.io/hostname&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;topologyKey&lt;/code&gt; yahan important hai.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubernetes.io/hostname
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Same node ke hostname ko topology boundary maan ke spread karo.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  5. Affinity ko ek table se yaad rakho
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concept&lt;/th&gt;
&lt;th&gt;Simple Question&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Node Affinity&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Kaunse node par?&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pod Affinity&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Kaunse pod ke paas?&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pod Anti-Affinity&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Kaunse pod se door?&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Bas ye 3 line yaad kar lo.&lt;/p&gt;




&lt;h1&gt;
  
  
  6. Required vs Preferred
&lt;/h1&gt;

&lt;p&gt;Ab ek aur important concept.&lt;/p&gt;

&lt;p&gt;Suppose tum bolte ho:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Booking pod SSD node par hi hona chahiye."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ye &lt;strong&gt;hard requirement&lt;/strong&gt; hai.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;requiredDuringSchedulingIgnoredDuringExecution&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Rule follow karna MUST hai.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agar SSD node available nahi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod → Pending
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Preferred
&lt;/h3&gt;

&lt;p&gt;Ab tum bolte ho:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"SSD node better hai, but agar available nahi toh kisi aur node par chala dena."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;preferredDuringSchedulingIgnoredDuringExecution&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Try this rule.
But if impossible → other node is okay.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Interview line
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Required is a hard scheduling constraint, while preferred is a soft scheduling preference.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  7. Ab Taint aur Toleration
&lt;/h1&gt;

&lt;p&gt;Affinity ko samajhne ke baad Taint easy hai.&lt;/p&gt;

&lt;p&gt;Affinity mein:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pod bolta hai: mujhe yahan jaana hai.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Taint mein:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Node bolta hai: mujhe har pod nahi chahiye.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GPU Node
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GPU node expensive hai.&lt;/p&gt;

&lt;p&gt;Tum nahi chahte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;random application ❌
frontend ❌
logging ❌
booking ❌
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GPU node par chale.&lt;/p&gt;

&lt;p&gt;Tum node ko taint kar sakte ho:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl taint nodes gpu-node &lt;span class="nv"&gt;gpu&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;:NoSchedule
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ab node ka attitude:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GPU Node:

❌ Normal Pod
❌ Normal Pod
❌ Normal Pod

✅ GPU workload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  8. Toleration = Pod ka permission
&lt;/h1&gt;

&lt;p&gt;Ab GPU pod ko bolo:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Tum GPU node par ja sakte ho."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pod mein:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;tolerations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpu"&lt;/span&gt;
    &lt;span class="na"&gt;operator&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Equal"&lt;/span&gt;
    &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;true"&lt;/span&gt;
    &lt;span class="na"&gt;effect&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NoSchedule"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ab:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GPU Node
   ↑
   │ taint
   │ gpu=true:NoSchedule
   │
GPU Pod
   ↑
   │ toleration
   │
   └── "I tolerate this"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Sabse important point
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Toleration ka matlab ye nahi hai ki pod automatically us node par jayega.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ye sirf bolta hai:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Mujhe is tainted node par jaane ki permission hai."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Agar tum specifically GPU node select karna chahte ho, toh commonly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Taint + Toleration
        +
Node Affinity / Node Selector
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;use karoge.&lt;/p&gt;




&lt;h1&gt;
  
  
  9. Taint ke 3 Effects
&lt;/h1&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;NoSchedule&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;New pod:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;No toleration → ❌
Toleration → ✅
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Existing pod normally evict nahi hota just because taint added.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;code&gt;PreferNoSchedule&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Kubernetes bolega:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Is node ko avoid karne ki koshish karo."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But strict rule nahi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Prefer avoid → yes
Mandatory → no
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  &lt;code&gt;NoExecute&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Ye stronger hai.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;New pod without toleration → ❌
Existing pod without toleration → evicted
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mental model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NoSchedule
= naye pods ko rokna

NoExecute
= naye pods ko rokna
+ existing incompatible pods ko hataana
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  10. Affinity vs Taint/Toleration
&lt;/h1&gt;

&lt;p&gt;Ye interview mein bahut poocha ja sakta hai.&lt;/p&gt;

&lt;h3&gt;
  
  
  Affinity
&lt;/h3&gt;

&lt;p&gt;Pod ka perspective:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Mujhe kis node/pod ke paas jaana hai?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Taint
&lt;/h3&gt;

&lt;p&gt;Node ka perspective:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Mere paas kaun nahi aa sakta?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Toleration
&lt;/h3&gt;

&lt;p&gt;Pod ka permission:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Main is node ke restriction ko tolerate kar sakta hoon."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  11. Ab Probes
&lt;/h1&gt;

&lt;p&gt;Ab tak humne decide kiya:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod ko KAHAN run karna hai?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Probes different question poochti hain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod ke ANDAR application ki condition kya hai?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Maan lo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;booking-service Pod
        ↓
Spring Boot application
        ↓
Java process
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Container running ho sakta hai, &lt;strong&gt;but application broken ho sakti hai.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Java process → running ✅
Spring Boot → stuck ❌
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kubernetes ko ye pata hona chahiye.&lt;/p&gt;

&lt;p&gt;Isliye probes.&lt;/p&gt;




&lt;h1&gt;
  
  
  12. Liveness Probe
&lt;/h1&gt;

&lt;p&gt;Liveness ka question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Application zinda hai?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Suppose application deadlock mein chali gayi:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Container → Running
Application → Hung
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Liveness fail:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Liveness ❌
      ↓
Kubernetes restarts container
      ↓
Application starts again
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Mental model
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Liveness = Restart?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agar liveness fail:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Container restart ho sakta hai.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  13. Readiness Probe
&lt;/h1&gt;

&lt;p&gt;Readiness ka question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Kya application abhi traffic lene ke liye ready hai?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Spring Boot application start ho rahi hai:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application starting...
       ↓
Database connection
       ↓
Cache connection
       ↓
Kafka initialization
       ↓
Application ready
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;During startup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Readiness ❌
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kubernetes service us pod ko traffic nahi bhejegi.&lt;/p&gt;

&lt;p&gt;Once:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Readiness ✅
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Traffic aa sakta hai.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mental model
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Readiness = Traffic?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Readiness fail hone par normally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod restart ❌
Traffic to pod ❌
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  14. Liveness vs Readiness — sabse important
&lt;/h1&gt;

&lt;p&gt;Imagine restaurant.&lt;/p&gt;

&lt;h3&gt;
  
  
  Liveness
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;"Restaurant zinda hai?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Restaurant completely broken hai → restart/recovery required.&lt;/p&gt;

&lt;h3&gt;
  
  
  Readiness
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;"Restaurant abhi customers serve kar sakta hai?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Restaurant alive hai but:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Kitchen preparation chal rahi hai
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Alive ✅
Ready ❌
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Customer ko andar nahi bhejna.&lt;/p&gt;




&lt;h1&gt;
  
  
  15. Startup Probe
&lt;/h1&gt;

&lt;p&gt;Ab ek slow application.&lt;/p&gt;

&lt;p&gt;Suppose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spring Boot application
Startup time = 90 seconds
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tumne liveness check laga diya:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Liveness starts immediately
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;20 sec par:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application → not ready
Liveness → ❌
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kubernetes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Restart ❌
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Again startup.&lt;/p&gt;

&lt;p&gt;Again 20 sec.&lt;/p&gt;

&lt;p&gt;Again restart.&lt;/p&gt;

&lt;p&gt;Ye &lt;strong&gt;restart loop&lt;/strong&gt; ban sakta hai.&lt;/p&gt;

&lt;p&gt;Startup probe bolti hai:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Pehle application ko startup complete karne do."&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Startup Probe
     ↓
Application starting
     ↓
Startup successful ✅
     ↓
Liveness starts checking
     ↓
Readiness controls traffic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Mental model
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Startup  = "Start hua?"

Readiness = "Traffic le sakta hai?"

Liveness  = "Zinda hai?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  16. Teeno probes ek saath
&lt;/h1&gt;

&lt;p&gt;Real-world Spring Boot application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                Pod
                 │
        ┌────────┴────────┐
        │                 │
   Startup Probe     Application
        │
        ↓
"Start ho gaya?"
        │
        ✅
        ↓
 ┌──────┴──────┐
 ↓             ↓
Liveness    Readiness
 ↓             ↓
"Alive?"    "Traffic?"
 ↓             ↓
restart       traffic
if broken     allow/block
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  17. Ek real EKS example
&lt;/h1&gt;

&lt;p&gt;Suppose tumhari architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AWS EKS
│
├── Node-1
├── Node-2
└── Node-3
     │
     ├── booking-service
     ├── order-service
     └── notification-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tum production mein bol sakte ho:&lt;/p&gt;

&lt;h3&gt;
  
  
  Requirement 1
&lt;/h3&gt;

&lt;p&gt;Booking service sirf high-performance nodes par chale.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node Affinity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Requirement 2
&lt;/h3&gt;

&lt;p&gt;Booking ke replicas same node par na aayein.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod Anti-Affinity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Requirement 3
&lt;/h3&gt;

&lt;p&gt;GPU node sirf ML workloads ke liye reserve hai.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Taint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Requirement 4
&lt;/h3&gt;

&lt;p&gt;ML pod ko GPU node par permission deni hai.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Toleration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Requirement 5
&lt;/h3&gt;

&lt;p&gt;Booking service traffic tabhi le jab application ready ho.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Readiness Probe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Requirement 6
&lt;/h3&gt;

&lt;p&gt;Booking application deadlock ho jaye.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Liveness Probe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Requirement 7
&lt;/h3&gt;

&lt;p&gt;Booking application bahut slowly start hoti hai.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Startup Probe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  18. Ekdum final mental map 🧠
&lt;/h1&gt;

&lt;p&gt;Isko interview se pehle bas ye yaad karo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 POD SCHEDULING
                       │
        ┌──────────────┼──────────────┐
        │              │              │
   Node Affinity   Pod Affinity   Pod Anti-Affinity
        │              │              │
   WHICH NODE?     NEAR WHICH?     AWAY FROM WHICH?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aur:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 NODE RESTRICTION
                       │
                 ┌─────┴─────┐
                 │           │
               Taint     Toleration
                 │           │
          Node says NO    Pod says
          to most pods    "I can enter"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aur:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 APPLICATION HEALTH
                        │
             ┌──────────┼──────────┐
             │          │          │
          Startup    Readiness   Liveness
             │          │          │
          "Started?" "Traffic?" "Alive?"
             │          │          │
             └──────────┴──────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔥 Interview mein 20-second answer
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Affinity controls pod placement. Node Affinity selects nodes based on node labels, while Pod Affinity and Anti-Affinity control placement relative to other pods. Taints are applied on nodes to restrict scheduling, and tolerations are applied on pods to allow them to run on tainted nodes. For application health, Startup Probe handles slow startup, Readiness Probe controls whether a pod receives traffic, and Liveness Probe determines whether the container should be restarted.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Ek important correction:&lt;/strong&gt; tumhare pasted GPU example mein taint &lt;code&gt;gpu=true&lt;/code&gt; hai, lekin toleration mein &lt;code&gt;value: "true"&lt;/code&gt; hona chahiye. Sirf &lt;code&gt;key: gpu&lt;/code&gt; wala example tabhi match karega jab operator/effect configuration uske according ho.&lt;/p&gt;

&lt;p&gt;33333333333333333333333333333333333333333333333333333333##################&lt;br&gt;
simple explanatipon &lt;/p&gt;
&lt;h3&gt;
  
  
  Pod Affinity — ekdum simple
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pod Affinity ka matlab:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“Mere pod ko kisi doosre particular pod ke paas rakhna.”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frontend Pod
     ↓
Backend Pod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tum Kubernetes ko bolte ho:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“Backend ko Frontend ke paas hi run karo.”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Toh Kubernetes try karega:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-1
 ├── Frontend Pod
 └── Backend Pod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Kyu use karte hain?
&lt;/h3&gt;

&lt;p&gt;Jab &lt;strong&gt;do related pods ko paas rakhna&lt;/strong&gt; ho.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backend + Cache&lt;/li&gt;
&lt;li&gt;Frontend + Backend&lt;/li&gt;
&lt;li&gt;Application + related service&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Yaad rakhne ka shortcut:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pod Affinity = POD ke paas POD&lt;/strong&gt; ✅&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Node Affinity = POD ko specific NODE&lt;/strong&gt; ✅&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pod Anti-Affinity = POD ko doosre POD se door&lt;/strong&gt; ✅&lt;/p&gt;

&lt;h2&gt;
  
  
  Taint kya hai kyuy hia kis kam ki leye hai
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Taint kya hai? — ekdum simple
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Taint Node par lagaya jata hai.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Taint ka matlab:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“Is node par normal pods mat bhejo.”&lt;/strong&gt; 🚫&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Kubernetes scheduler ko node bolta hai:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node
  ↓
"Sab pods ke liye available nahi hoon."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Kyu lagate hain?
&lt;/h3&gt;

&lt;p&gt;Jab tum &lt;strong&gt;kisi node ko special purpose ke liye reserve&lt;/strong&gt; karna chahte ho.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-1 → Normal applications
Node-2 → Normal applications
Node-3 → GPU workload only
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Node-3 par taint laga diya:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gpu=true:NoSchedule
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ab normal pod:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Normal Pod
    ↓
GPU Node
    ❌
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lekin jis pod ke paas matching &lt;strong&gt;Toleration&lt;/strong&gt; hai:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GPU Pod
    ↓
GPU Node
    ✅
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Simple real-life example 🧠
&lt;/h3&gt;

&lt;p&gt;Socho ek room ke bahar board laga hai:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🚫 &lt;strong&gt;“Entry restricted”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ye &lt;strong&gt;Taint&lt;/strong&gt; hai.&lt;/p&gt;

&lt;p&gt;Jiske paas permission hai:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;✅ &lt;strong&gt;“I have permission.”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ye &lt;strong&gt;Toleration&lt;/strong&gt; hai.&lt;/p&gt;

&lt;h3&gt;
  
  
  Interview mein ek line:
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Taint is applied to a node to prevent pods from being scheduled there unless they have a matching toleration.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Yaad rakho:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TAINT       → Node par
TOLERATION  → Pod par

Taint       → "Mere paas mat aao"
Toleration  → "Mujhe aane ki permission hai"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;TOLERATION   jru hai kam kya hai kis leye hai &lt;/p&gt;

&lt;h3&gt;
  
  
  Toleration kya hai?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Toleration Pod par lagaya jata hai.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Iska simple meaning:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“Mujhe tainted node par run karne ki permission hai.”&lt;/strong&gt; ✅&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;Maan lo ek node par Taint laga hai:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GPU Node
Taint: gpu=true:NoSchedule
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Iska matlab:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🚫 Normal pods, yahan schedule mat karo.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ab GPU Pod mein toleration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;tolerations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpu"&lt;/span&gt;
    &lt;span class="na"&gt;operator&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Equal"&lt;/span&gt;
    &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;true"&lt;/span&gt;
    &lt;span class="na"&gt;effect&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NoSchedule"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ab Kubernetes dekhta hai:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GPU Node
   │
   │ Taint: gpu=true
   ↓
GPU Pod
   │
   │ Toleration: gpu=true
   ↓
       ✅ Allowed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Kyu use karte hain?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Special node ko special pods ke liye reserve karne ke liye.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPU node → sirf ML/GPU workloads&lt;/li&gt;
&lt;li&gt;Dedicated node → sirf database workloads&lt;/li&gt;
&lt;li&gt;High-memory node → memory-heavy applications&lt;/li&gt;
&lt;li&gt;Special hardware node → specific workloads&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sabse important baat ⚠️
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Toleration ka matlab “pod ko us node par bhejo” nahi hai.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Toleration sirf bolta hai:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“Agar scheduler mujhe is node par bhejna chahe, toh taint ki wajah se mujhe reject mat karo.”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Agar tum &lt;strong&gt;specifically us node par bhejna&lt;/strong&gt; chahte ho, toh usually &lt;strong&gt;Node Affinity/Node Selector + Toleration&lt;/strong&gt; use karte ho.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ek line mein yaad karo:
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Taint = Node bolta hai “sabko entry nahi.”&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Toleration = Pod bolta hai “mujhe entry allowed hai.”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;3333333333333333333333333333333333333333333&lt;/p&gt;

&lt;p&gt;affiety only related to pods only and taint relatred to node and toleration related to pods &lt;/p&gt;

&lt;p&gt;Haan, &lt;strong&gt;almost correct&lt;/strong&gt;, bas ek correction hai:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concept&lt;/th&gt;
&lt;th&gt;Kahan lagta hai?&lt;/th&gt;
&lt;th&gt;Simple meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Node Affinity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pod&lt;/td&gt;
&lt;td&gt;Pod ko &lt;strong&gt;specific type ke Node&lt;/strong&gt; par rakhna&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pod Affinity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pod&lt;/td&gt;
&lt;td&gt;Pod ko &lt;strong&gt;dusre Pod ke paas&lt;/strong&gt; rakhna&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pod Anti-Affinity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pod&lt;/td&gt;
&lt;td&gt;Pod ko &lt;strong&gt;dusre Pod se door&lt;/strong&gt; rakhna&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Taint&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Node&lt;/td&gt;
&lt;td&gt;Node bolta hai &lt;strong&gt;“normal Pods yahan mat aao”&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Toleration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pod&lt;/td&gt;
&lt;td&gt;Pod bolta hai &lt;strong&gt;“main taint wale Node par aa sakta hoon”&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Bas ye yaad rakho 🧠
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AFFINITY
   ├── Node Affinity  → Pod → Node
   ├── Pod Affinity   → Pod → Pod ke paas
   └── Pod Anti       → Pod → Pod se door

TAINT
   ↓
Node → "Mere paas mat aao"

TOLERATION
   ↓
Pod → "Mujhe permission hai"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So &lt;strong&gt;Affinity sirf pods ke beech nahi hai&lt;/strong&gt; — &lt;strong&gt;Node Affinity bhi hoti hai&lt;/strong&gt;, jo pod ko node select karne mein help karti hai.&lt;/p&gt;

&lt;p&gt;Ye Kubernetes ka sabse common confusion hai. &lt;strong&gt;Service aur kube-proxy dono networking se related hain, lekin dono ka role alag hai.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Simple analogy
&lt;/h2&gt;

&lt;p&gt;Socho ek company hai:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Service = Receptionist ☎️&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tumhe hamesha ek hi number deti hai.&lt;/li&gt;
&lt;li&gt;Kaunse employee se connect karna hai, ye decide karti hai.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;kube-proxy = Security Guard / Traffic Controller 🚦&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Receptionist ne jis employee ko choose kiya, us tak call physically pahunchata hai.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Kubernetes mein
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Service
&lt;/h3&gt;

&lt;p&gt;Service ka kaam hai:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pod ke liye &lt;strong&gt;stable IP aur DNS name&lt;/strong&gt; dena.&lt;/li&gt;
&lt;li&gt;Load balancing karna.&lt;/li&gt;
&lt;li&gt;Pod change hone par bhi same endpoint dena.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod-1 (10.244.1.2)
Pod-2 (10.244.1.5)
Pod-3 (10.244.2.8)

Service
IP = 10.96.0.10
DNS = my-app.default.svc.cluster.local
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Application sirf Service ko call karti hai:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://my-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use Pod IP yaad nahi rakhni padti.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. kube-proxy
&lt;/h3&gt;

&lt;p&gt;kube-proxy har Worker Node par chalta hai.&lt;/p&gt;

&lt;p&gt;Uska kaam:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Service ke rules ko Node par configure karna.&lt;/li&gt;
&lt;li&gt;Incoming request ko kisi ek healthy Pod tak pahunchana.&lt;/li&gt;
&lt;li&gt;iptables/IPVS ke through traffic forward karna.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Flow
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Client
   │
   ▼
Service (Stable IP/DNS)
   │
   ▼
kube-proxy
   │
   ▼
Pod-1
OR
Pod-2
OR
Pod-3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Agar kube-proxy na ho
&lt;/h2&gt;

&lt;p&gt;Service ke paas IP to hoga, &lt;strong&gt;lekin request Pod tak kaise jayegi?&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Agar Service na ho
&lt;/h2&gt;

&lt;p&gt;Tumhe har Pod ka IP manually use karna padega:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10.244.1.2
10.244.1.5
10.244.2.8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aur Pod restart hote hi IP badal jayega.&lt;/p&gt;




&lt;h2&gt;
  
  
  Interview Answer
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q. Service aur kube-proxy mein kya difference hai?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Service&lt;/strong&gt; Kubernetes ka logical abstraction hai jo Pods ke liye stable IP, DNS aur load balancing provide karta hai. &lt;strong&gt;kube-proxy&lt;/strong&gt; har worker node par chalne wala network component hai jo Service ke rules ko implement karta hai aur traffic ko actual Pod tak forward karta hai.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Ek line mein yaad rakho
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Service = "Kisko request bhejni hai?"&lt;/strong&gt; (Stable endpoint + load balancing)&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  * &lt;strong&gt;kube-proxy = "Request ko us Pod tak kaise pahunchana hai?"&lt;/strong&gt; (Traffic forwarding)
&lt;/h1&gt;

&lt;p&gt;Q. Service aur kube-proxy mein kya difference hai?&lt;/p&gt;

&lt;p&gt;Answer:&lt;/p&gt;

&lt;p&gt;Service Kubernetes ka logical abstraction hai jo Pods ke liye stable IP, DNS aur load balancing provide karta hai. kube-proxy har worker node par chalne wala network component hai jo Service ke rules ko implement karta hai aur traffic ko actual Pod tak forward karta hai.&lt;/p&gt;

&lt;p&gt;===================================&lt;/p&gt;

&lt;p&gt;What is the role of a node?&lt;/p&gt;

&lt;p&gt;In &lt;em&gt;Kubernetes&lt;/em&gt;, a &lt;strong&gt;node&lt;/strong&gt; serves as the fundamental foundation or worker machine (either a physical server or a virtual machine) within the cluster where your applications actually run.&lt;/p&gt;

&lt;p&gt;Its primary roles include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hosting Applications:&lt;/strong&gt; It provides the computing resources (CPU, RAM, and disk) necessary to execute containers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Running Pods:&lt;/strong&gt; The node hosts &lt;strong&gt;pods&lt;/strong&gt;, which are the smallest deployable units in &lt;em&gt;Kubernetes&lt;/em&gt;. These pods contain your application containers and run directly on the node.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cluster Participation:&lt;/strong&gt; By acting as a worker in the cluster, the node enables the &lt;em&gt;Kubernetes&lt;/em&gt; control plane to manage, scale, and monitor the applications deployed across the environment.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What is a pod?&lt;/p&gt;

&lt;p&gt;In &lt;em&gt;Kubernetes&lt;/em&gt;, a &lt;strong&gt;pod&lt;/strong&gt; is defined as the &lt;strong&gt;smallest deployable unit&lt;/strong&gt; within the cluster (37:13, 2:02:45). &lt;/p&gt;

&lt;p&gt;Key characteristics of a pod include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Shared Space:&lt;/strong&gt; It acts as a wrapper or "room" that houses one or more application containers (37:13, 38:01).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Container Hosting:&lt;/strong&gt; While containers (like those created by &lt;em&gt;Docker&lt;/em&gt;) hold your actual application code, they reside inside pods, which handle the networking and storage sharing between them (37:13, 2:03:07).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lifecycle:&lt;/strong&gt; If a pod fails, the &lt;em&gt;Kubernetes&lt;/em&gt; control plane is responsible for managing its state and ensuring the desired number of replicas are running, effectively replacing or restarting it as needed (25:29, 25:45).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What is the difference between a pod and node?&lt;br&gt;
In &lt;em&gt;Kubernetes&lt;/em&gt;, understanding the distinction between a node and a pod is foundational to how the system manages applications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node:&lt;/strong&gt; A node is the &lt;strong&gt;foundation&lt;/strong&gt; or the physical/virtual worker machine within the cluster (1:37:13 - 1:38:24). You can think of it as the "house" that provides the necessary computing resources like CPU, RAM, and disk space to run your applications (1:37:36 - 1:38:05).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pod:&lt;/strong&gt; A pod is the &lt;strong&gt;smallest deployable unit&lt;/strong&gt; in &lt;em&gt;Kubernetes&lt;/em&gt; (37:13, 2:02:45). It functions as a wrapper or "room" inside the node, housing one or more application containers (37:13, 38:01). &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key Difference:&lt;/strong&gt; While the &lt;strong&gt;node&lt;/strong&gt; provides the infrastructure and resources, the &lt;strong&gt;pod&lt;/strong&gt; is the object that &lt;em&gt;Kubernetes&lt;/em&gt; actually schedules and manages to run your application code (1:38:15, 2:02:05).&lt;/p&gt;

&lt;p&gt;Can a pod run without a node?&lt;br&gt;
No, a &lt;strong&gt;pod cannot run without a node&lt;/strong&gt;. In &lt;em&gt;Kubernetes&lt;/em&gt;, a &lt;strong&gt;node&lt;/strong&gt; acts as the foundation or the physical/virtual worker machine that provides the necessary &lt;strong&gt;CPU, RAM, and disk resources&lt;/strong&gt; required to execute your applications (1:37:36 - 1:38:24).&lt;/p&gt;

&lt;p&gt;A pod is the &lt;strong&gt;smallest deployable unit&lt;/strong&gt; in &lt;em&gt;Kubernetes&lt;/em&gt; (2:02:05), but it cannot exist in a vacuum; it must be scheduled and hosted on a node to function. The &lt;strong&gt;node&lt;/strong&gt; is essentially the "house" where the "rooms" (pods) are built, and without the node's underlying infrastructure, the pod has no environment to run in (1:38:15 - 1:38:24).&lt;/p&gt;

&lt;p&gt;How does a pod use node resources?&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;pod&lt;/strong&gt; consumes &lt;strong&gt;node resources&lt;/strong&gt; (such as CPU, RAM, and disk space) by running as a process on the underlying worker machine (1:37:36 - 1:38:05). Here is how this relationship works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Allocation:&lt;/strong&gt; When a pod is scheduled, the &lt;em&gt;Kubernetes&lt;/em&gt; scheduler assigns it to a node that has enough available capacity to meet the pod's requirements (1:38:09).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sharing:&lt;/strong&gt; Since a node can host multiple pods, the node's operating system manages the distribution of hardware resources among them, ensuring each pod has the resources needed to execute its containers (1:37:48).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency:&lt;/strong&gt; The pod is essentially a wrapper for containers, and it relies entirely on the node to provide the compute power to keep those containers running (37:13, 1:38:15).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What happens if a node runs out?&lt;/p&gt;

&lt;p&gt;If a &lt;strong&gt;node&lt;/strong&gt; runs out of resources (like CPU or RAM) or goes offline, the &lt;em&gt;Kubernetes&lt;/em&gt; &lt;strong&gt;control plane&lt;/strong&gt; detects the failure and intervenes to maintain the application's &lt;strong&gt;desired state&lt;/strong&gt; (25:29, 1:39:09). &lt;/p&gt;

&lt;p&gt;Key outcomes include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Automatic Rescheduling:&lt;/strong&gt; Since &lt;em&gt;Kubernetes&lt;/em&gt; manages the &lt;strong&gt;replicas&lt;/strong&gt; of your applications, it will automatically attempt to spin up new &lt;strong&gt;pods&lt;/strong&gt; on healthy nodes within the cluster to replace those that were lost (25:45, 1:39:12).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency Management:&lt;/strong&gt; The control plane, specifically the &lt;strong&gt;controller manager&lt;/strong&gt;, is responsible for observing these changes and taking corrective action to ensure the workload continues running (1:01:14).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pending State:&lt;/strong&gt; If there are no other healthy nodes with enough available resources to host the required pods, those pods will enter a &lt;strong&gt;'Pending'&lt;/strong&gt; state until sufficient infrastructure becomes available (2:32:01).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How does Kubernetes know a node failed?&lt;br&gt;
In &lt;em&gt;Kubernetes&lt;/em&gt;, the system detects a node failure through continuous communication between the &lt;strong&gt;control plane&lt;/strong&gt; and the &lt;strong&gt;worker nodes&lt;/strong&gt;. Specifically, the &lt;strong&gt;kubelet&lt;/strong&gt; running on each node maintains a constant heartbeat or status update with the &lt;strong&gt;API Server&lt;/strong&gt; (59:12, 2:04:15).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Heartbeat Mechanism:&lt;/strong&gt; The node periodically reports its health status to the API Server. If the API Server stops receiving these status updates or signals from the node's &lt;strong&gt;kubelet&lt;/strong&gt; for a predefined duration, it considers the node unreachable or failed (2:04:17 - 2:04:30).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control Plane Intervention:&lt;/strong&gt; Once the control plane (the 'receptionist' of the cluster) determines that communication is lost, it marks the node as unhealthy. It then takes action to maintain the &lt;strong&gt;desired state&lt;/strong&gt; of the application by rescheduling the &lt;strong&gt;pods&lt;/strong&gt; that were running on that node onto other available, healthy nodes in the cluster (25:29, 1:39:09).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What is the role of the kubelet?&lt;br&gt;
The &lt;strong&gt;kubelet&lt;/strong&gt; acts as the essential agent running on each worker node within a &lt;em&gt;Kubernetes&lt;/em&gt; cluster (2:08:58 - 2:09:00). Its primary roles include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node-to-Control Plane Communication:&lt;/strong&gt; It maintains a constant heartbeat with the &lt;em&gt;API Server&lt;/em&gt; to report the health status of its specific node (59:12, 2:04:15).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workload Management:&lt;/strong&gt; It ensures that the containers described in the &lt;em&gt;Pod&lt;/em&gt; specifications are actually running and healthy on the node (2:09:00, 2:09:48).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execution Oversight:&lt;/strong&gt; It interacts with the &lt;em&gt;Container Runtime Interface (CRI)&lt;/em&gt; to manage the lifecycle of the containers, effectively bridging the gap between the desired state set by the control plane and the actual state on the worker machine (1:04:09 - 1:05:01).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What happens if the kubelet fails?&lt;br&gt;
If the &lt;strong&gt;kubelet&lt;/strong&gt; on a worker node fails, it loses the ability to report its health status to the &lt;strong&gt;API Server&lt;/strong&gt; (2:04:15). Because the kubelet is responsible for the ongoing heartbeat signal, the &lt;em&gt;Kubernetes&lt;/em&gt; &lt;strong&gt;control plane&lt;/strong&gt; will eventually determine the node is unreachable or unhealthy (59:12, 2:04:17).&lt;/p&gt;

&lt;p&gt;When this communication breakdown occurs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node Status Change:&lt;/strong&gt; The cluster controller will mark the node as 'NotReady' (2:04:30).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workload Rescheduling:&lt;/strong&gt; To maintain the &lt;strong&gt;desired state&lt;/strong&gt; of your applications, the control plane will initiate the process of rescheduling the &lt;strong&gt;pods&lt;/strong&gt; that were running on the failed node onto other healthy nodes within the cluster (25:29, 1:39:09).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operational Impact:&lt;/strong&gt; While existing pods on other healthy nodes continue to run unaffected, the failed node can no longer receive new instructions, perform scaling, or manage local container lifecycles (2:05:14, 2:06:13).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Does control plane failure stop pods?&lt;/p&gt;

&lt;p&gt;No, a &lt;strong&gt;control plane failure does not stop existing pods&lt;/strong&gt; from running. The worker nodes and the pods they host continue to operate normally even if the control plane is unreachable (2:04:44 - 2:06:10).&lt;/p&gt;

&lt;p&gt;Think of the control plane like a &lt;strong&gt;receptionist&lt;/strong&gt;; if the receptionist is away, the work inside the building continues uninterrupted. However, you will be unable to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create or scale&lt;/strong&gt; new resources or pods (2:05:32).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Restart or replace&lt;/strong&gt; pods that crash or fail (2:05:24).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manage cluster updates&lt;/strong&gt; or configuration changes (2:05:43).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What components are in the control plane?&lt;br&gt;
The &lt;strong&gt;Kubernetes control plane&lt;/strong&gt; (often called the master node) acts as the "brain" of the cluster, responsible for managing the state and orchestration of your applications. Its key components include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;API Server:&lt;/strong&gt; The central hub and the only component that communicates with all other parts of the cluster (59:05, 59:27). It handles authentication, authorization, and validation of all requests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;etcd:&lt;/strong&gt; The cluster's "memory" or database, which stores all configuration data, state information, and records of cluster activity (1:07:37).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scheduler:&lt;/strong&gt; Responsible for watching for newly created pods and assigning them to an appropriate, healthy worker node based on resource availability (like CPU/memory) and affinity rules (1:07:15, 2:25:32).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Controller Manager:&lt;/strong&gt; The "manager" that ensures the actual state of the cluster matches the desired state. It includes various controllers like the &lt;em&gt;Deployment Controller&lt;/em&gt; and &lt;em&gt;ReplicaSet Controller&lt;/em&gt; (1:01:30, 2:25:29).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Controller Manager:&lt;/strong&gt; Used specifically in cloud environments (like &lt;em&gt;AWS&lt;/em&gt;, &lt;em&gt;GKE&lt;/em&gt;, or &lt;em&gt;Azure&lt;/em&gt;), this component manages interactions with the cloud provider's APIs, such as provisioning load balancers or storage volumes (1:26:16, 1:29:58).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What is the role of etcd?&lt;br&gt;
In a &lt;em&gt;Kubernetes&lt;/em&gt; cluster, &lt;strong&gt;etcd&lt;/strong&gt; acts as the crucial "brain" or &lt;strong&gt;central memory/database&lt;/strong&gt; (1:07:37). Its primary roles include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Storing State:&lt;/strong&gt; It serves as the primary data store for all cluster configuration data, state information, and records of cluster activity (1:07:37, 2:33:07).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintaining Consistency:&lt;/strong&gt; It ensures the cluster has a single source of truth regarding what is currently running and what the desired state of the applications should be (2:33:07).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supporting Operations:&lt;/strong&gt; It allows the &lt;em&gt;API Server&lt;/em&gt; to record and retrieve data essential for cluster management and orchestration (59:15, 2:33:07).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essentially, if the cluster's state changes, &lt;em&gt;etcd&lt;/em&gt; is where that change is finalized and stored to ensure the system can recover or maintain its configuration.&lt;/p&gt;

&lt;p&gt;Can etcd fail without stopping pods?&lt;/p&gt;

&lt;p&gt;Yes, if &lt;strong&gt;etcd&lt;/strong&gt; fails, existing &lt;strong&gt;pods&lt;/strong&gt; continue to run. The speaker explains that the worker nodes and their running applications operate independently of the &lt;strong&gt;control plane&lt;/strong&gt; components, meaning that even if the cluster's memory or database (etcd) becomes unreachable, the active workloads remain unaffected (2:04:44 - 2:06:10).&lt;/p&gt;

&lt;p&gt;However, while existing pods stay active, a failure of etcd prevents the cluster from making any changes to the &lt;strong&gt;desired state&lt;/strong&gt;. This means you would be unable to scale your applications, create new resources, or manage configuration updates until the control plane is restored (2:05:24 - 2:06:13).&lt;/p&gt;

&lt;p&gt;What happens when etcd fails?&lt;br&gt;
According to the speaker, an &lt;strong&gt;etcd&lt;/strong&gt; failure has the following consequences on a Kubernetes cluster:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Existing pods remain unaffected:&lt;/strong&gt; The speaker explains that worker nodes and their running applications operate independently from the control plane components. Therefore, if the cluster's memory or database (etcd) becomes unreachable, active workloads will &lt;strong&gt;continue to run&lt;/strong&gt; without interruption (2:04:44 - 2:06:10). &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Impact on cluster operations:&lt;/strong&gt; While existing pods stay active, an etcd failure prevents the cluster from making any modifications to the &lt;strong&gt;desired state&lt;/strong&gt;. This means you will be unable to scale applications, create new resources, or manage configuration updates until the control plane is restored (2:05:24 - 2:06:13).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Can the cluster recover from etcd failure?&lt;br&gt;
The video explains that if an &lt;strong&gt;etcd&lt;/strong&gt; failure occurs, it results in the loss of the cluster's "memory" or database, which prevents the cluster from managing the &lt;strong&gt;desired state&lt;/strong&gt; (1:07:37). While existing pods will continue to run because worker nodes operate independently of the control plane (2:04:44 - 2:06:10), the cluster cannot automatically perform new operations, such as scaling, creating resources, or managing configuration updates (2:05:24 - 2:06:13).&lt;/p&gt;

&lt;p&gt;The speaker notes that recovery depends on the environment. For managed services like &lt;strong&gt;EKS&lt;/strong&gt;, the cloud provider handles the underlying infrastructure and control plane stability (1:13:17 - 1:13:31). For on-premise clusters, recovery requires manual intervention or a pre-established disaster recovery strategy, as users are responsible for the control plane and data persistence (1:16:20 - 1:16:49, 1:22:09 - 1:22:24).&lt;/p&gt;

&lt;p&gt;How is cluster state stored?&lt;br&gt;
The cluster state is stored within &lt;strong&gt;etcd&lt;/strong&gt;, which acts as the &lt;strong&gt;central memory or database&lt;/strong&gt; for the entire &lt;em&gt;Kubernetes&lt;/em&gt; cluster (1:07:37). &lt;/p&gt;

&lt;p&gt;Key functions of &lt;em&gt;etcd&lt;/em&gt; include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Single Source of Truth:&lt;/strong&gt; It holds all configuration data, current status, and records of cluster activity, ensuring the system has a consistent view of the desired state versus the actual state (2:33:07).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supporting Operations:&lt;/strong&gt; The &lt;strong&gt;API Server&lt;/strong&gt; relies on &lt;em&gt;etcd&lt;/em&gt; to store and retrieve data whenever a change occurs or a new resource is requested (59:15, 2:33:07).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistency:&lt;/strong&gt; By acting as the cluster's "brain," it finalizes any state changes, allowing the system to maintain or recover its configuration reliably (1:07:37).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Can etcd be backed up manually?&lt;br&gt;
Whether you can manually back up &lt;strong&gt;etcd&lt;/strong&gt; depends on your environment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Managed Kubernetes (EKS, GKE, AKS):&lt;/strong&gt; You typically &lt;strong&gt;do not have direct access&lt;/strong&gt; to the &lt;em&gt;etcd&lt;/em&gt; server to run manual snapshot commands (1:16:20-1:16:47). In these environments, the cloud provider manages the underlying &lt;em&gt;etcd&lt;/em&gt; snapshots, though you can use tools like &lt;em&gt;Velero&lt;/em&gt; to back up your cluster resources and application data to object storage like &lt;em&gt;S3&lt;/em&gt; (1:12:20-1:14:14).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;On-Premises/Self-Managed Kubernetes:&lt;/strong&gt; If you manage your own clusters, you generally have full access to the &lt;em&gt;etcd&lt;/em&gt; server and can perform manual backups using snapshots, provided you follow the cluster's specific administrative procedures (1:07:37, 1:16:20).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In both cases, it is common practice to use third-party tools like &lt;em&gt;Velero&lt;/em&gt; to automate and manage cluster-wide backups rather than relying on manual &lt;em&gt;etcd&lt;/em&gt; snapshots alone (1:13:39-1:14:01).&lt;/p&gt;

&lt;p&gt;Can I see my cluster's etcd data?&lt;br&gt;
The video explains that in &lt;strong&gt;managed Kubernetes environments&lt;/strong&gt; like EKS, GKE, or AKS, you generally do &lt;strong&gt;not have direct access&lt;/strong&gt; to the &lt;em&gt;etcd&lt;/em&gt; server or its underlying database files (1:16:20 - 1:16:47). Because the cloud provider manages these components as part of their service, users typically cannot perform manual snapshots or directly query the &lt;em&gt;etcd&lt;/em&gt; data (1:16:49 - 1:17:04). However, for &lt;strong&gt;on-premise or self-managed clusters&lt;/strong&gt;, the user maintains full administrative control over the infrastructure, which allows for direct access to the &lt;em&gt;etcd&lt;/em&gt; server (1:16:20 - 1:16:35).&lt;/p&gt;

&lt;p&gt;Who manages etcd in managed clusters?&lt;/p&gt;

&lt;p&gt;In managed &lt;em&gt;Kubernetes&lt;/em&gt; environments (such as &lt;em&gt;EKS&lt;/em&gt;, &lt;em&gt;GKE&lt;/em&gt;, or &lt;em&gt;AKS&lt;/em&gt;), the &lt;strong&gt;cloud service provider&lt;/strong&gt; is responsible for managing the &lt;em&gt;etcd&lt;/em&gt; server (1:16:20 - 1:17:04).&lt;/p&gt;

&lt;p&gt;Because the provider handles the maintenance, availability, and automated backups of the &lt;em&gt;etcd&lt;/em&gt; data to ensure cluster stability, users &lt;strong&gt;do not have direct access&lt;/strong&gt; to the &lt;em&gt;etcd&lt;/em&gt; server (1:16:20 - 1:16:47). Consequently, you cannot perform manual snapshot commands or directly modify the underlying database.&lt;/p&gt;

&lt;p&gt;How do I back up my cluster data?&lt;/p&gt;

&lt;p&gt;The video explains that the approach to backing up your cluster data depends on your environment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Managed Kubernetes (e.g., EKS, GKE, AKS):&lt;/strong&gt; You typically &lt;strong&gt;do not have direct access&lt;/strong&gt; to the &lt;em&gt;etcd&lt;/em&gt; server to perform manual snapshot commands (1:16:20 - 1:16:47). In these cases, the cloud provider manages maintenance and backups of the &lt;em&gt;etcd&lt;/em&gt; database. However, you can use third-party, open-source tools like &lt;strong&gt;Velero&lt;/strong&gt; to back up your cluster resources and application data to cloud storage like &lt;strong&gt;S3&lt;/strong&gt; (1:12:20 - 1:14:14). &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;On-Premises / Self-Managed:&lt;/strong&gt; If you manage your own cluster, you generally have full access to the &lt;em&gt;etcd&lt;/em&gt; server and can perform manual backups using snapshots, as you are responsible for the infrastructure maintenance (1:07:37, 1:16:20).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why don't I control etcd in cloud?&lt;br&gt;
In managed &lt;em&gt;Kubernetes&lt;/em&gt; environments like &lt;em&gt;EKS&lt;/em&gt;, &lt;em&gt;GKE&lt;/em&gt;, or &lt;em&gt;AKS&lt;/em&gt;, the &lt;strong&gt;cloud service provider&lt;/strong&gt; is responsible for managing the &lt;em&gt;etcd&lt;/em&gt; server to ensure cluster stability and availability (1:16:20 - 1:17:04). &lt;/p&gt;

&lt;p&gt;Users do not have direct access to the &lt;em&gt;etcd&lt;/em&gt; server primarily because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Managed Responsibility:&lt;/strong&gt; The cloud provider handles all maintenance, uptime, and automated backups of the &lt;em&gt;etcd&lt;/em&gt; data as part of the managed service agreement (1:16:20).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;System Integrity:&lt;/strong&gt; By restricting direct control, the provider prevents accidental misconfigurations or data corruption that could compromise the entire cluster's state or the &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Can I access etcd on-premises?&lt;br&gt;
Yes, if you are running an &lt;strong&gt;on-premises&lt;/strong&gt; or self-managed &lt;em&gt;Kubernetes&lt;/em&gt; cluster, you generally have &lt;strong&gt;full access&lt;/strong&gt; to the &lt;em&gt;etcd&lt;/em&gt; server (1:07:37). This allows you to perform &lt;strong&gt;manual operations&lt;/strong&gt;, such as running snapshot commands for backups, because you are responsible for managing the underlying infrastructure and the database directly (1:16:20).&lt;/p&gt;

&lt;p&gt;Is etcd different in cloud environments?&lt;br&gt;
Yes, how you interact with &lt;strong&gt;etcd&lt;/strong&gt; differs significantly between managed cloud environments and self-managed (on-premises) setups.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Managed Cloud Clusters (EKS, GKE, AKS):&lt;/strong&gt; You &lt;strong&gt;do not have direct access&lt;/strong&gt; to the &lt;em&gt;etcd&lt;/em&gt; server (1:16:20-1:16:47). The cloud provider is responsible for managing, maintaining, and automatically backing up the database to ensure the cluster's state and availability (1:16:20-1:17:04). Because you lack direct access, you cannot run manual snapshot commands or modify the database directly.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;On-Premises / Self-Managed:&lt;/strong&gt; You generally have &lt;strong&gt;full access&lt;/strong&gt; to the &lt;em&gt;etcd&lt;/em&gt; server (1:07:37). You are responsible for managing the underlying infrastructure, which includes performing your own manual backups and snapshot operations when necessary (1:16:20).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why restrict etcd access in cloud?&lt;br&gt;
In managed cloud &lt;em&gt;Kubernetes&lt;/em&gt; environments (such as &lt;em&gt;EKS&lt;/em&gt;, &lt;em&gt;GKE&lt;/em&gt;, or &lt;em&gt;AKS&lt;/em&gt;), you do not have direct access to the &lt;em&gt;etcd&lt;/em&gt; server primarily to ensure &lt;strong&gt;system integrity&lt;/strong&gt; and &lt;strong&gt;cluster stability&lt;/strong&gt; (1:16:20 - 1:17:04).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Managed Responsibility:&lt;/strong&gt; The cloud service provider manages, maintains, and performs automated backups of &lt;em&gt;etcd&lt;/em&gt; as part of the managed service agreement, taking the operational burden off the user (1:16:20).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prevention of Corruption:&lt;/strong&gt; By restricting access, the provider prevents users from accidentally misconfiguring or corrupting the underlying database, which could compromise the entire state of the &lt;em&gt;Kubernetes&lt;/em&gt; cluster (1:16:20 - 1:16:56). &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because of this, users cannot execute manual snapshot commands, as the cloud provider handles these tasks automatically behind the scenes (1:16:40).&lt;/p&gt;

&lt;p&gt;How are backups handled in EKS?&lt;/p&gt;

&lt;p&gt;In managed Kubernetes services like &lt;strong&gt;EKS&lt;/strong&gt;, the cloud provider handles the maintenance and automated backups of the &lt;em&gt;etcd&lt;/em&gt; database to ensure cluster stability (1:16:20 - 1:17:04). Because you do not have direct access to the &lt;em&gt;etcd&lt;/em&gt; server in a managed environment, you cannot perform manual snapshot commands or modify the database directly (1:16:20 - 1:16:47).&lt;/p&gt;

&lt;p&gt;However, for backing up your &lt;strong&gt;application data and Kubernetes objects&lt;/strong&gt;, organizations often use third-party tools like &lt;em&gt;Velero&lt;/em&gt; (1:12:20 - 1:12:44). &lt;em&gt;Velero&lt;/em&gt; can be used to take backups of your cluster resources and store them in an external destination, such as an &lt;strong&gt;S3 bucket&lt;/strong&gt; (1:12:55 - 1:14:14).&lt;/p&gt;

&lt;p&gt;what is role of node pod container cluster in diff each other&lt;/p&gt;

&lt;p&gt;In &lt;em&gt;Kubernetes&lt;/em&gt;, these components are nested in a hierarchy, each playing a specific role to manage your applications effectively:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Cluster:&lt;/strong&gt; This is the &lt;strong&gt;entire environment&lt;/strong&gt; or the "big picture." It consists of a set of machines (nodes) that work together to run your containerized applications (13:10, 52:00).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Node:&lt;/strong&gt; These are the &lt;strong&gt;individual machines&lt;/strong&gt; (virtual or physical) within the cluster. They provide the computing power (CPU and memory) needed to run your workloads (41:37, 52:29).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Pod:&lt;/strong&gt; This is the &lt;strong&gt;smallest deployable unit&lt;/strong&gt; in &lt;em&gt;Kubernetes&lt;/em&gt;. A pod acts as a wrapper or a "shield" for your containers. You typically run one or more containers inside a pod, and they share the same network and storage (37:13, 37:46).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Container:&lt;/strong&gt; This is where your &lt;strong&gt;actual application code&lt;/strong&gt; runs. It packages the software, libraries, and dependencies needed for your app to function. You create containers using tools like &lt;em&gt;Docker&lt;/em&gt; or other containerization engines (46:46, 50:28).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;To visualize their relationship:&lt;/strong&gt;&lt;br&gt;
Think of a &lt;strong&gt;Cluster&lt;/strong&gt; as a large apartment building. A &lt;strong&gt;Node&lt;/strong&gt; is a specific room in that building. A &lt;strong&gt;Pod&lt;/strong&gt; is like a person or a small group staying in that room, and the &lt;strong&gt;Containers&lt;/strong&gt; are the tasks or activities that the person is performing (42:11-42:56).&lt;/p&gt;

&lt;p&gt;node provider ya machine itself?&lt;/p&gt;

&lt;p&gt;In the context of Kubernetes, a &lt;strong&gt;Node&lt;/strong&gt; represents the &lt;strong&gt;machine itself&lt;/strong&gt;—the physical server or virtual machine that provides the computing resources (CPU and memory) to run your applications (41:37, 52:29). &lt;/p&gt;

&lt;p&gt;While a cloud provider (like AWS or Google Cloud) is responsible for provisioning or managing these machines (especially in managed services like EKS or GKE), the &lt;strong&gt;Node&lt;/strong&gt; itself is the individual worker unit within the Kubernetes cluster that performs the actual tasks (52:41, 54:44). You can think of the node as the hardware foundation, whereas the cloud provider is the entity that supplies and hosts that hardware for you.&lt;/p&gt;

&lt;p&gt;What is a control plane node?&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;control plane node&lt;/strong&gt; acts as the "brain" of your &lt;em&gt;Kubernetes&lt;/em&gt; cluster (59:08). It is responsible for managing the state of the cluster, making global decisions, and handling events (59:12).&lt;/p&gt;

&lt;p&gt;Key components that reside on the control plane node include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;API Server:&lt;/strong&gt; The central hub that acts as a receptionist for all communications within the cluster (59:08-59:31).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;etcd:&lt;/strong&gt; The cluster's "brain" or database that stores the state and configuration of all objects (1:07:37-1:07:44).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scheduler:&lt;/strong&gt; Decides which work needs to be done and which nodes are suitable to host specific tasks (1:07:15).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control Manager:&lt;/strong&gt; Responsible for monitoring the state of the cluster and ensuring the actual state matches the desired configuration (1:02:04, 1:09:39).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How does the API server handle communication?&lt;br&gt;
The &lt;strong&gt;API server&lt;/strong&gt; acts as the central hub and the "receptionist" for a &lt;em&gt;Kubernetes&lt;/em&gt; cluster (56:53, 59:08). All communications and commands—whether from users running &lt;code&gt;kubectl&lt;/code&gt; commands or from internal components—must pass through it (55:36, 1:07:32).&lt;/p&gt;

&lt;p&gt;When a request is received, the API server handles several critical steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Authentication:&lt;/strong&gt; Verifying the identity of the requester (2:33:01).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authorization:&lt;/strong&gt; Checking if the user has the permissions to perform the requested action (2:33:02).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation:&lt;/strong&gt; Ensuring the request follows the correct configuration format (2:33:03).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State Management:&lt;/strong&gt; It interacts with &lt;em&gt;etcd&lt;/em&gt;, the cluster's "brain" or database, to store the &lt;strong&gt;desired state&lt;/strong&gt; of the cluster (2:33:06).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essentially, no action occurs in the cluster without the API server first validating the request and recording the intent in &lt;em&gt;etcd&lt;/em&gt; (2:33:00 - 2:33:10).&lt;/p&gt;

&lt;p&gt;What is the role of the scheduler?&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Scheduler&lt;/strong&gt; in Kubernetes is responsible for deciding which specific &lt;strong&gt;worker node&lt;/strong&gt; (a machine or virtual server) should host a particular &lt;strong&gt;Pod&lt;/strong&gt; (1:03:03-1:03:05).&lt;/p&gt;

&lt;p&gt;Think of it as the person who determines exactly where each resource belongs. Once the &lt;em&gt;Control Manager&lt;/em&gt; has determined that a new Pod needs to be created, the &lt;strong&gt;Scheduler&lt;/strong&gt; evaluates the available nodes and applies various rules to ensure the Pod is placed on the most suitable machine based on resource availability and other constraints (1:03:37-1:04:00).&lt;/p&gt;

&lt;p&gt;What happens if the API server fails?&lt;/p&gt;

&lt;p&gt;If the &lt;strong&gt;API Server&lt;/strong&gt; fails, the central communication hub of the &lt;em&gt;Kubernetes&lt;/em&gt; cluster stops functioning. Since the API server is the "receptionist" for all commands (56:53, 59:08), its failure has significant consequences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No new operations:&lt;/strong&gt; You cannot use &lt;code&gt;kubectl&lt;/code&gt; to deploy new applications, update existing ones, or change the cluster's state because these requests must pass through the API server first (55:36, 1:07:32).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Control plane isolation:&lt;/strong&gt; Internal components like the &lt;em&gt;Scheduler&lt;/em&gt; and &lt;em&gt;Controller Manager&lt;/em&gt; lose their ability to interact with &lt;em&gt;etcd&lt;/em&gt; (2:33:06), effectively halting the cluster's ability to maintain the &lt;strong&gt;desired state&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Existing workloads continue:&lt;/strong&gt; Fortunately, applications (Pods) already running on your worker nodes will generally continue to function because they have already been scheduled and are being managed locally by the &lt;em&gt;Kubelet&lt;/em&gt; (2:01:31).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essentially, the cluster enters a read-only state where you cannot manage it until the API server is restored.&lt;/p&gt;

&lt;p&gt;How does the scheduler pick a node?&lt;br&gt;
The &lt;strong&gt;Scheduler&lt;/strong&gt; picks a node by evaluating which available &lt;strong&gt;worker node&lt;/strong&gt; (a virtual machine or server) is best suited to host a specific &lt;strong&gt;Pod&lt;/strong&gt; (1:03:03-1:03:05). &lt;/p&gt;

&lt;p&gt;It performs this task by applying a set of rules, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Resource Availability:&lt;/strong&gt; Checking if the node has enough CPU and memory to run the application (1:03:37).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Constraints and Policies:&lt;/strong&gt; Evaluating specific placement rules or requirements to ensure the Pod is positioned on the most optimal machine (1:04:00).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Essentially, the &lt;em&gt;Scheduler&lt;/em&gt; acts like a person deciding exactly which seat is best for a new worker based on the specific job requirements and the current capacity of the workspace.&lt;/p&gt;

&lt;p&gt;What if no nodes are available?&lt;br&gt;
If no &lt;strong&gt;worker nodes&lt;/strong&gt; are available in your &lt;em&gt;Kubernetes&lt;/em&gt; cluster to host a new application, the &lt;strong&gt;Pod&lt;/strong&gt; will still be created, but it will remain in a &lt;strong&gt;pending state&lt;/strong&gt; (2:32:01-2:32:06). &lt;/p&gt;

&lt;p&gt;Because the &lt;strong&gt;Scheduler&lt;/strong&gt; cannot find a machine that meets the required resource criteria, the Pod simply waits until a node with sufficient capacity becomes available (2:32:08).&lt;/p&gt;

&lt;p&gt;Does the scheduler talk to nodes directly?&lt;/p&gt;

&lt;p&gt;No, the &lt;strong&gt;Scheduler&lt;/strong&gt; does not talk to the worker nodes directly. Following the central communication design of &lt;em&gt;Kubernetes&lt;/em&gt;, every component and operation must pass through the &lt;strong&gt;API server&lt;/strong&gt; (59:08, 1:07:32). &lt;/p&gt;

&lt;p&gt;Think of the &lt;strong&gt;API server&lt;/strong&gt; as the central receptionist (56:53). The &lt;strong&gt;Scheduler&lt;/strong&gt; informs the API server of its decision regarding which node a &lt;strong&gt;Pod&lt;/strong&gt; should be placed on, and then the API server coordinates with the &lt;strong&gt;Kubelet&lt;/strong&gt; on that specific node to execute the deployment (1:05:26-1:05:40).&lt;/p&gt;

&lt;p&gt;Can I manually choose a node?&lt;/p&gt;

&lt;p&gt;Yes, while the &lt;strong&gt;Scheduler&lt;/strong&gt; (1:03:03-1:04:30) is responsible for automatically deciding where a &lt;strong&gt;Pod&lt;/strong&gt; should be placed based on resource availability and constraints, you can manually influence this process.&lt;/p&gt;

&lt;p&gt;In &lt;em&gt;Kubernetes&lt;/em&gt;, you can use &lt;strong&gt;Node Selectors&lt;/strong&gt; or &lt;strong&gt;Node Affinity&lt;/strong&gt; to guide the scheduler's decision, effectively letting you specify or restrict which nodes a particular application can be deployed to (1:42:00). This is useful when you have specific hardware requirements, such as needing to run a task on a specific machine with a GPU or a specific type of storage.&lt;/p&gt;

&lt;p&gt;While the &lt;em&gt;Scheduler&lt;/em&gt; still performs the final placement, it respects the constraints and labels you define for your nodes and pods.&lt;/p&gt;

&lt;p&gt;Can the API server work offline?&lt;br&gt;
The &lt;strong&gt;API Server&lt;/strong&gt; relies on consistent connectivity with &lt;em&gt;etcd&lt;/em&gt; (its database) to manage the cluster's state (1:15:30). While individual components like the &lt;em&gt;Kubelet&lt;/em&gt; on worker nodes can continue running existing workloads if the connection to the control plane is temporarily lost (2:01:31), the &lt;strong&gt;API server itself requires active network and database access&lt;/strong&gt; to function correctly and process new commands or maintain the cluster's desired state.&lt;/p&gt;

&lt;p&gt;In essence, while the applications it manages can persist through transient outages, the &lt;em&gt;Kubernetes&lt;/em&gt; control plane—anchored by the API server—is designed to operate as a cohesive, networked system rather than in an isolated, offline mode.&lt;/p&gt;
&lt;h1&gt;
  
  
  ============================================
&lt;/h1&gt;

&lt;p&gt;==============================================&lt;/p&gt;

&lt;p&gt;How does node auto-scaling work in EKs?&lt;/p&gt;

&lt;p&gt;In &lt;em&gt;Amazon EKS&lt;/em&gt;, node auto-scaling is managed by &lt;strong&gt;Node Groups&lt;/strong&gt;, which act as a blueprint for launching &lt;em&gt;EC2&lt;/em&gt; instances to handle your &lt;em&gt;Kubernetes&lt;/em&gt; workloads. The scaling process functions as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Launch Templates &amp;amp; Auto Scaling Groups:&lt;/strong&gt; A &lt;em&gt;Node Group&lt;/em&gt; configuration creates a &lt;em&gt;Launch Template&lt;/em&gt; and an &lt;em&gt;Auto Scaling Group (ASG)&lt;/em&gt; behind the scenes (2:30:46). This &lt;em&gt;ASG&lt;/em&gt; manages the actual lifecycle of your &lt;em&gt;EC2&lt;/em&gt; instances.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desired Capacity:&lt;/strong&gt; You define a range—&lt;strong&gt;Minimum&lt;/strong&gt;, &lt;strong&gt;Maximum&lt;/strong&gt;, and &lt;strong&gt;Desired&lt;/strong&gt; capacity—for your nodes. If your applications require more resources than available, the &lt;em&gt;Auto Scaling Group&lt;/em&gt; triggers the creation of new &lt;em&gt;EC2&lt;/em&gt; instances to scale out based on these settings (2:12:12, 2:17:36).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instance Management:&lt;/strong&gt; When you update your node configuration (like changing the &lt;em&gt;EC2&lt;/em&gt; instance type), the &lt;em&gt;Launch Template&lt;/em&gt; is updated. The &lt;em&gt;ASG&lt;/em&gt; then manages the replacement of old nodes with new ones according to the updated template (2:30:46, 2:31:02).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Constraint Awareness:&lt;/strong&gt; You can create separate &lt;em&gt;Node Groups&lt;/em&gt; for specific application needs (e.g., CPU-intensive vs. RAM-intensive). By using &lt;strong&gt;Taints&lt;/strong&gt;, &lt;strong&gt;Tolerations&lt;/strong&gt;, and &lt;strong&gt;Labels/Selectors&lt;/strong&gt;, you ensure your &lt;em&gt;Pods&lt;/em&gt; are scheduled onto the appropriate &lt;em&gt;Node Group&lt;/em&gt; (2:20:26, 2:43:31).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What are taints and tolerations?&lt;br&gt;
The video explains that &lt;strong&gt;taints and tolerations&lt;/strong&gt; are mechanisms used to define how &lt;strong&gt;Pods&lt;/strong&gt; are scheduled onto specific &lt;strong&gt;Nodes&lt;/strong&gt; within a cluster. They act as a filtering system: if a Node has a &lt;strong&gt;taint&lt;/strong&gt;, it will repel any Pod that does not have a matching &lt;strong&gt;toleration&lt;/strong&gt; to accept or "tolerate" that taint (2:43:31 - 2:44:00).&lt;/p&gt;

&lt;p&gt;When should I use taints?&lt;/p&gt;

&lt;p&gt;The video explains that &lt;strong&gt;taints&lt;/strong&gt; are used to restrict &lt;strong&gt;pods&lt;/strong&gt; from being scheduled on specific &lt;strong&gt;nodes&lt;/strong&gt; unless the pods have a corresponding &lt;strong&gt;toleration&lt;/strong&gt;. This mechanism is particularly useful when you want to dedicate nodes to specific types of workloads—for instance, if you have a node group with high-performance hardware that should only run CPU-intensive applications, you can apply a taint to those nodes so that only specifically configured pods can access them (2:43:31 - 2:44:00).&lt;/p&gt;

&lt;p&gt;How do I add a toleration?&lt;/p&gt;

&lt;p&gt;To schedule a &lt;em&gt;Pod&lt;/em&gt; onto a node that has a specific &lt;strong&gt;taint&lt;/strong&gt;, you must define a corresponding &lt;strong&gt;toleration&lt;/strong&gt; in the &lt;em&gt;Pod&lt;/em&gt; manifest. This effectively tells the &lt;em&gt;Kubernetes&lt;/em&gt; scheduler that the &lt;em&gt;Pod&lt;/em&gt; is allowed to "tolerate" the effect applied by the node's taint (2:43:31).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key concepts for configuration:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Taint:&lt;/strong&gt; Applied to a node to repel pods that do not have a matching toleration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Toleration:&lt;/strong&gt; A configuration within the &lt;em&gt;Pod&lt;/em&gt; specification that matches the key, value, and effect defined by the taint.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When a node is "tainted" (e.g., to reserve it for specific workloads, like CPU-intensive tasks), any &lt;em&gt;Pod&lt;/em&gt; without the correct matching &lt;em&gt;toleration&lt;/em&gt; will be prevented from being scheduled on that node. By adding the toleration, you grant the &lt;em&gt;Pod&lt;/em&gt; permission to ignore that specific taint and land on the node (2:43:31 - 2:44:00).&lt;/p&gt;

&lt;p&gt;What are Kubernetes taints?&lt;/p&gt;

&lt;p&gt;In &lt;em&gt;Kubernetes&lt;/em&gt;, a &lt;strong&gt;taint&lt;/strong&gt; is a setting applied to a node that effectively 'repels' pods. It marks the node as reserved or unsuitable for certain workloads, preventing pods from scheduling there unless they explicitly have a matching &lt;strong&gt;toleration&lt;/strong&gt; (2:43:31).&lt;/p&gt;

&lt;p&gt;Think of it like a specialized sorting system for your infrastructure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; You use taints to ensure that specific, resource-intensive or specialized applications (like CPU-heavy tasks) land only on nodes equipped to handle them, keeping them away from nodes reserved for other types of work (2:20:26).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Mechanism:&lt;/strong&gt; A taint acts as a constraint. If a pod does not have the corresponding toleration defined in its manifest, the &lt;em&gt;Kubernetes&lt;/em&gt; scheduler will refuse to place that pod on the tainted node (2:43:31).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node Groups:&lt;/strong&gt; When setting up multiple node groups—for example, one group optimized for memory and another for CPU—you define these constraints at the node group level to keep your clusters organized and efficient (2:43:31).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Can one node have many taints?&lt;/p&gt;

&lt;p&gt;The provided video transcript explains that you can apply multiple &lt;strong&gt;taints&lt;/strong&gt; to a node to set complex constraints for scheduling pods. By using combinations of &lt;strong&gt;taints&lt;/strong&gt; and &lt;strong&gt;tolerations&lt;/strong&gt;, you can effectively filter which workloads are allowed to run on specific nodes, ensuring that only pods with the corresponding matching tolerations can be scheduled there (2:43:31 - 2:44:00).&lt;/p&gt;

&lt;p&gt;How do pods match multiple taints?&lt;/p&gt;

&lt;p&gt;The video explains that to allow a Pod to be scheduled on a node with multiple constraints, you must define multiple &lt;strong&gt;tolerations&lt;/strong&gt; within the Pod manifest. Each toleration must match the specific &lt;strong&gt;key, value, and effect&lt;/strong&gt; of the corresponding taint applied to the node. This configuration informs the Kubernetes scheduler that the Pod is explicitly permitted to land on that node despite the applied taints (2:43:31 - 2:44:00).&lt;/p&gt;

&lt;p&gt;What is the effect of a taint?&lt;/p&gt;

&lt;p&gt;The provided video transcript introduces &lt;strong&gt;taints&lt;/strong&gt; as a mechanism to reserve nodes for specific workloads by preventing pods from scheduling on them unless the pods possess a matching &lt;strong&gt;toleration&lt;/strong&gt; (2:43:31 - 2:44:00). While the transcript explains the conceptual use of taints for grouping resources—such as dedicating high-performance nodes to CPU-intensive tasks—it does not explicitly detail the specific technical 'effects' (like NoSchedule, PreferNoSchedule, or NoExecute). The speaker focuses on the practical application of taints and tolerations as a way to control workload placement within an &lt;strong&gt;EKS&lt;/strong&gt; environment.&lt;/p&gt;

&lt;p&gt;Why use taints for resource management?&lt;br&gt;
In &lt;em&gt;Kubernetes&lt;/em&gt;, &lt;strong&gt;taints&lt;/strong&gt; are essential for precise &lt;strong&gt;workload management&lt;/strong&gt; and infrastructure control. They act as a repelling mechanism, ensuring that only specific &lt;strong&gt;Pods&lt;/strong&gt; can be scheduled on certain &lt;strong&gt;Nodes&lt;/strong&gt; (2:43:31).&lt;/p&gt;

&lt;p&gt;Here is why they are critical for your cluster:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Workload Isolation:&lt;/strong&gt; You can reserve specific nodes for high-demand tasks (e.g., CPU-intensive or memory-heavy applications) by tainting those nodes, effectively preventing generic workloads from utilizing those resources (2:20:26, 2:43:31).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure Organization:&lt;/strong&gt; When managing diverse node groups, taints help enforce clear boundaries. For example, if you have one node group optimized for a particular environment, taints ensure your pods land only on the nodes you intended for them (2:43:31).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Forced Compatibility:&lt;/strong&gt; Taints create a gatekeeper system. Unless a Pod has a matching &lt;strong&gt;toleration&lt;/strong&gt; defined in its manifest, the &lt;em&gt;Kubernetes&lt;/em&gt; scheduler will refuse to place it on the tainted node, ensuring that only pods explicitly designed to handle the underlying infrastructure land there (2:43:31-2:44:00).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Can a pod ignore a node taint?&lt;/p&gt;

&lt;p&gt;Yes, a &lt;strong&gt;Pod&lt;/strong&gt; can ignore a &lt;strong&gt;Node&lt;/strong&gt; taint by using a &lt;strong&gt;toleration&lt;/strong&gt; (2:43:31). A &lt;strong&gt;taint&lt;/strong&gt; acts as a barrier or repelling mechanism, preventing pods from being scheduled on a node unless they are specifically permitted to land there (2:43:31).&lt;/p&gt;

&lt;p&gt;By defining a &lt;strong&gt;toleration&lt;/strong&gt; in the Pod's configuration that matches the key, value, and effect of the node's taint, you grant the Pod permission to "tolerate" that taint, effectively allowing it to bypass the restriction and be scheduled onto the node anyway (2:43:31 - 2:44:00).&lt;/p&gt;

&lt;p&gt;How do I create a node taint?&lt;/p&gt;

&lt;p&gt;In &lt;em&gt;Kubernetes&lt;/em&gt;, you create a node taint using the &lt;code&gt;kubectl taint&lt;/code&gt; command. This command applies a restriction to a specific node, preventing pods from being scheduled there unless they have a corresponding toleration (2:43:31).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Basic Syntax:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;kubectl taint nodes &amp;lt;node-name&amp;gt; key=value:&amp;lt;effect&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Key/Value:&lt;/strong&gt; Defines the specific identifier for the taint.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Effect:&lt;/strong&gt; Determines how the node handles pods that do &lt;em&gt;not&lt;/em&gt; have a matching toleration. Common effects include:

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;NoSchedule&lt;/code&gt;: Prevents new pods from being scheduled on the node.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;PreferNoSchedule&lt;/code&gt;: Avoids placing pods on the node if possible, but it is not a hard requirement.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;NoExecute&lt;/code&gt;: Evicts existing pods from the node if they do not tolerate the taint.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By using this command, you can effectively isolate workloads and ensure that only specifically permitted applications run on your infrastructure (2:43:31 - 2:44:00).&lt;/p&gt;

&lt;p&gt;How do I define a toleration?&lt;/p&gt;

&lt;p&gt;To define a &lt;strong&gt;toleration&lt;/strong&gt; in &lt;em&gt;Kubernetes&lt;/em&gt;, you add a &lt;code&gt;tolerations&lt;/code&gt; section to your &lt;em&gt;Pod&lt;/em&gt; manifest (YAML file). This configuration allows the &lt;em&gt;Pod&lt;/em&gt; to be scheduled onto a &lt;em&gt;node&lt;/em&gt; that has a matching &lt;em&gt;taint&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Standard Configuration:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;You specify the &lt;strong&gt;key&lt;/strong&gt;, &lt;strong&gt;operator&lt;/strong&gt;, &lt;strong&gt;value&lt;/strong&gt;, and &lt;strong&gt;effect&lt;/strong&gt; that match the taint applied to the node (2:43:31).&lt;/p&gt;

&lt;p&gt;yaml&lt;br&gt;
tolerations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;key: "key-name"
operator: "Equal"
value: "value-name"
effect: "NoSchedule"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key components:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;key/value:&lt;/strong&gt; These must match the key and value assigned to the node's taint exactly.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;operator:&lt;/strong&gt; Usually set to &lt;code&gt;Equal&lt;/code&gt; (the default) to match a specific value, or &lt;code&gt;Exists&lt;/code&gt; if you want to tolerate a key regardless of its value.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;effect:&lt;/strong&gt; This dictates how the pod interacts with the taint (e.g., &lt;code&gt;NoSchedule&lt;/code&gt;, &lt;code&gt;PreferNoSchedule&lt;/code&gt;, or &lt;code&gt;NoExecute&lt;/code&gt;) (2:43:31).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By including this in your manifest, you effectively grant the &lt;em&gt;Pod&lt;/em&gt; permission to ignore the node's restriction and land on that infrastructure (2:43:31 - 2:44:00).&lt;/p&gt;

&lt;p&gt;How do I check existing node taints?&lt;/p&gt;

&lt;p&gt;To view the &lt;strong&gt;taints&lt;/strong&gt; currently applied to your &lt;em&gt;Kubernetes&lt;/em&gt; nodes, you can inspect the node's configuration using the &lt;code&gt;kubectl&lt;/code&gt; command-line tool. &lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Command to list taints:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;To see the taints for a specific node, use:&lt;br&gt;
&lt;code&gt;kubectl describe node &amp;lt;node-name&amp;gt; | grep Taints&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To list the taints for &lt;strong&gt;all nodes&lt;/strong&gt; in your cluster at once, you can run:&lt;br&gt;
&lt;code&gt;kubectl get nodes -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to look for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The output will display the &lt;strong&gt;Key&lt;/strong&gt;, &lt;strong&gt;Value&lt;/strong&gt;, and &lt;strong&gt;Effect&lt;/strong&gt; for any applied taints.&lt;/li&gt;
&lt;li&gt;If a node returns no output for taints, it means there are currently no restrictions preventing pods from being scheduled there (2:43:31).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Can I see taints in the dashboard?&lt;/p&gt;

&lt;p&gt;Yes, you can manage and view node configurations, including taints, through the &lt;strong&gt;AWS Management Console&lt;/strong&gt; for Amazon EKS. &lt;/p&gt;

&lt;p&gt;In the video, the presenter demonstrates that when creating or managing a &lt;strong&gt;Node Group&lt;/strong&gt; within your cluster, you can navigate to the &lt;strong&gt;Compute&lt;/strong&gt; tab to see the configuration details for your worker nodes (2:23:48, 2:55:46).&lt;/p&gt;

&lt;p&gt;While the console provides a dashboard interface for these settings, remember that &lt;strong&gt;taints&lt;/strong&gt;, along with &lt;strong&gt;labels&lt;/strong&gt; and &lt;strong&gt;tags&lt;/strong&gt;, are explicitly defined and verified during the node group creation process (2:19:20). If you need to verify these details in real-time or perform advanced troubleshooting, using the &lt;code&gt;kubectl&lt;/code&gt; CLI (e.g., &lt;code&gt;kubectl describe node&lt;/code&gt;) remains the most direct and reliable method (2:24:57).&lt;/p&gt;

&lt;p&gt;How do I add taints using the console?&lt;/p&gt;

&lt;p&gt;=======================================================&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Namespace&lt;/li&gt;
&lt;li&gt;Labels &amp;amp; Selectors&lt;/li&gt;
&lt;li&gt;Pods&lt;/li&gt;
&lt;li&gt;ReplicaSet&lt;/li&gt;
&lt;li&gt;Deployment&lt;/li&gt;
&lt;li&gt;Services&lt;/li&gt;
&lt;li&gt;Service Discovery (DNS)&lt;/li&gt;
&lt;li&gt;Ingress&lt;/li&gt;
&lt;li&gt;Ingress Controller&lt;/li&gt;
&lt;li&gt;ConfigMap&lt;/li&gt;
&lt;li&gt;Secret&lt;/li&gt;
&lt;li&gt;Jobs&lt;/li&gt;
&lt;li&gt;CronJobs&lt;/li&gt;
&lt;li&gt;StatefulSet&lt;/li&gt;
&lt;li&gt;DaemonSet&lt;/li&gt;
&lt;li&gt;Networking&lt;/li&gt;
&lt;li&gt;Network Policies&lt;/li&gt;
&lt;li&gt;NGINX&lt;/li&gt;
&lt;li&gt;Istio&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;====================================&lt;br&gt;
This is the right way to master Kubernetes.&lt;/p&gt;

&lt;p&gt;Don't study these topics separately. Think of Kubernetes as a company.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet
   │
Ingress Controller (NGINX / Istio Gateway)
   │
Ingress
   │
Service (ClusterIP)
   │
Pods
   │
Deployment / StatefulSet / DaemonSet / Job
   │
Node
   │
Cluster
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Master Roadmap
&lt;/h1&gt;

&lt;p&gt;Learn in this order.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Namespace
2. Labels &amp;amp; Selectors
3. Pods
4. ReplicaSet
5. Deployment
6. Services
7. Service Discovery (DNS)
8. Ingress
9. Ingress Controller
10. ConfigMap
11. Secret
12. Jobs
13. CronJobs
14. StatefulSet
15. DaemonSet
16. Networking
17. Network Policies
18. NGINX
19. Istio
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  We start with ONLY ONE topic.
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Topic 1 — Namespace (100% Interview Level)
&lt;/h1&gt;




&lt;h2&gt;
  
  
  What is Namespace?
&lt;/h2&gt;

&lt;p&gt;A Namespace is a logical partition inside one Kubernetes Cluster.&lt;/p&gt;

&lt;p&gt;Think of it like folders inside Windows.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Laptop

Projects
Photos
Movies
Music
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Similarly,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cluster

default
dev
qa
uat
prod
monitoring
logging
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each namespace isolates resources.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Namespace?
&lt;/h2&gt;

&lt;p&gt;Suppose your company has&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Backend Team

Frontend Team

DevOps Team

Data Team
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without Namespace&lt;/p&gt;

&lt;p&gt;Everyone creates pods.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pod1
pod2
pod3
pod4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Very messy.&lt;/p&gt;




&lt;p&gt;With Namespace&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Backend Namespace

auth-service
payment-service
user-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frontend Namespace

react-ui
angular-ui
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Monitoring Namespace

grafana
prometheus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything stays organized.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real Company Example
&lt;/h1&gt;

&lt;p&gt;Amazon&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cluster

production

    payment
    orders
    shipping
    users
    monitoring
    logging
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Netflix&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cluster

recommendation

streaming

billing

analytics
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Google&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cluster

gmail

maps

photos

ads
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Default Namespaces
&lt;/h1&gt;

&lt;p&gt;Every cluster already contains&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;default

kube-system

kube-public

kube-node-lease
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  default
&lt;/h2&gt;

&lt;p&gt;Used if you don't specify Namespace.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Looks inside default namespace.&lt;/p&gt;




&lt;h2&gt;
  
  
  kube-system
&lt;/h2&gt;

&lt;p&gt;Contains Kubernetes components.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CoreDNS

kube-proxy

scheduler

controller-manager

etcd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Never delete.&lt;/p&gt;

&lt;p&gt;Interview question.&lt;/p&gt;




&lt;h2&gt;
  
  
  kube-public
&lt;/h2&gt;

&lt;p&gt;Public resources.&lt;/p&gt;

&lt;p&gt;Rarely used.&lt;/p&gt;




&lt;h2&gt;
  
  
  kube-node-lease
&lt;/h2&gt;

&lt;p&gt;Stores node heartbeat.&lt;/p&gt;

&lt;p&gt;Used internally.&lt;/p&gt;




&lt;h1&gt;
  
  
  Commands
&lt;/h1&gt;

&lt;p&gt;Create Namespace&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl create namespace dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OR&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl create ns dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;See namespaces&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get ns
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Delete namespace&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl delete ns dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deletes EVERYTHING inside.&lt;/p&gt;

&lt;p&gt;Interview favorite.&lt;/p&gt;




&lt;p&gt;Create pod inside namespace&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; pod.yaml &lt;span class="nt"&gt;-n&lt;/span&gt; dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;namespace&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;dev&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;inside YAML.&lt;/p&gt;




&lt;p&gt;See pods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods &lt;span class="nt"&gt;-n&lt;/span&gt; dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;See all namespaces&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods &lt;span class="nt"&gt;-A&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods &lt;span class="nt"&gt;--all-namespaces&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Real YAML
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;

&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Namespace&lt;/span&gt;

&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;production&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apply&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; namespace.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Can Pods communicate across Namespace?
&lt;/h1&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Nothing blocks communication.&lt;/p&gt;

&lt;p&gt;Only DNS changes.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment pod

Namespace
payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;user pod

Namespace
users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Can communicate.&lt;/p&gt;

&lt;p&gt;Interview favorite.&lt;/p&gt;




&lt;h1&gt;
  
  
  DNS
&lt;/h1&gt;

&lt;p&gt;Suppose Service&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;auth-service

Namespace

backend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DNS becomes&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;auth-service.backend.svc.cluster.local
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Short name&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;auth-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;works only inside same namespace.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Namespace is NOT Security
&lt;/h1&gt;

&lt;p&gt;Many freshers say&lt;/p&gt;

&lt;p&gt;Namespace provides security.&lt;/p&gt;

&lt;p&gt;Wrong.&lt;/p&gt;

&lt;p&gt;Namespace only separates resources.&lt;/p&gt;

&lt;p&gt;Security comes from&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RBAC

Network Policies

OPA

Service Accounts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Very common interview trap.&lt;/p&gt;




&lt;h1&gt;
  
  
  Namespace vs Cluster
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cluster

Namespaces

Pods

Services

Deployments
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Namespace is NOT another cluster.&lt;/p&gt;

&lt;p&gt;It's inside cluster.&lt;/p&gt;




&lt;h1&gt;
  
  
  Can same Pod name exist?
&lt;/h1&gt;

&lt;p&gt;Yes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dev

nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;prod

nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Allowed.&lt;/p&gt;




&lt;h1&gt;
  
  
  Can same Service exist?
&lt;/h1&gt;

&lt;p&gt;Yes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dev/payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;prod/payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Allowed.&lt;/p&gt;




&lt;h1&gt;
  
  
  Can same Deployment exist?
&lt;/h1&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Different namespaces.&lt;/p&gt;




&lt;h1&gt;
  
  
  Resource Quotas
&lt;/h1&gt;

&lt;p&gt;Namespace can limit&lt;/p&gt;

&lt;p&gt;CPU&lt;/p&gt;

&lt;p&gt;Memory&lt;/p&gt;

&lt;p&gt;Pods&lt;/p&gt;

&lt;p&gt;Storage&lt;/p&gt;

&lt;p&gt;Example&lt;/p&gt;

&lt;p&gt;Development&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CPU

2 Core
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Production&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CPU

100 Core
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Limit Range
&lt;/h1&gt;

&lt;p&gt;Can force&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Minimum CPU

Maximum CPU

Memory Limit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;per Pod.&lt;/p&gt;




&lt;h1&gt;
  
  
  Interview Cross Questions (with Answers)
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Q1. Why use Namespace?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; To logically isolate applications, organize resources, apply RBAC, quotas, and policies without creating separate clusters.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q2. Does Namespace provide security?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; No. Namespace is for logical isolation. Security is enforced through RBAC, Network Policies, Service Accounts, and admission controls.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q3. Can Pods in different namespaces communicate?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; Yes, by default they can, unless Network Policies restrict the traffic.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q4. What happens if you delete a Namespace?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; All namespaced resources (Pods, Services, Deployments, ConfigMaps, Secrets, etc.) inside that namespace are deleted.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q5. Can two namespaces have the same Deployment name?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; Yes. Resource names only need to be unique within the same namespace.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q6. Which namespace contains CoreDNS?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; &lt;code&gt;kube-system&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q7. Which resources are not inside a namespace?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; Examples include Nodes, PersistentVolumes (PVs), Namespaces themselves, and StorageClasses—they are cluster-scoped.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q8. Can a Pod belong to multiple namespaces?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; No. A Pod belongs to exactly one namespace.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q9. Is Namespace a physical isolation?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; No. It's a logical partition within the same cluster.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q10. Why not create separate clusters instead of namespaces?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; Separate clusters increase cost, operational complexity, upgrades, and maintenance. Namespaces allow multiple environments or teams to share the same cluster efficiently.&lt;/p&gt;




&lt;h1&gt;
  
  
  Common Interview Scenario
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Interviewer:&lt;/strong&gt; Your company has Development, QA, UAT, and Production. Will you create four Kubernetes clusters?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; Not necessarily. If workloads and security requirements allow, I would use one cluster with separate namespaces (&lt;code&gt;dev&lt;/code&gt;, &lt;code&gt;qa&lt;/code&gt;, &lt;code&gt;uat&lt;/code&gt;, &lt;code&gt;prod&lt;/code&gt;), along with RBAC, ResourceQuotas, LimitRanges, and Network Policies. Separate clusters are typically used when stronger isolation, compliance, or independent lifecycle management is required.&lt;/p&gt;




&lt;h2&gt;
  
  
  Next Topic
&lt;/h2&gt;

&lt;p&gt;The next topic should be &lt;strong&gt;Labels &amp;amp; Selectors&lt;/strong&gt;, because almost every Kubernetes object (Deployments, Services, ReplicaSets, Network Policies, etc.) depends on labels. Once you master Labels &amp;amp; Selectors, the rest of Kubernetes becomes much easier to understand.&lt;/p&gt;

&lt;p&gt;===============================================&lt;br&gt;
Excellent. This is the &lt;strong&gt;most important topic in Kubernetes&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you don't understand &lt;strong&gt;Labels &amp;amp; Selectors&lt;/strong&gt;, you will never fully understand Deployments, ReplicaSets, Services, Network Policies, or Istio. Almost every Kubernetes object uses them.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h1&gt;
  
  
  Topic 2 — Labels &amp;amp; Selectors (Master Level)
&lt;/h1&gt;
&lt;h1&gt;
  
  
  First understand the problem
&lt;/h1&gt;

&lt;p&gt;Suppose your company has &lt;strong&gt;10,000 Pods&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-v1-abc
payment-v1-def
payment-v2-xyz
order-v1-aaa
order-v2-bbb
user-v1-ccc
inventory-v1-ddd
inventory-v2-eee
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now imagine a Service needs to send traffic only to &lt;strong&gt;payment Pods&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;How will Kubernetes know which Pods belong to the payment application?&lt;/p&gt;

&lt;p&gt;Not by Pod name.&lt;/p&gt;

&lt;p&gt;It uses &lt;strong&gt;Labels&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  What is a Label?
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;Label&lt;/strong&gt; is simply a key-value pair attached to a Kubernetes object.&lt;/p&gt;

&lt;p&gt;Think of it like a tag.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
    &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;production&lt;/span&gt;
    &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app = payment
env = production
version = v1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These labels identify the Pod.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real-world analogy
&lt;/h1&gt;

&lt;p&gt;Imagine an employee ID card.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Employee Name

Rahul
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is not enough.&lt;/p&gt;

&lt;p&gt;The company also stores attributes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="py"&gt;Department&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;Finance&lt;/span&gt;

&lt;span class="py"&gt;Location&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;Bangalore&lt;/span&gt;

&lt;span class="py"&gt;Role&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;Manager&lt;/span&gt;

&lt;span class="py"&gt;Experience&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;8 Years&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These are like Kubernetes labels.&lt;/p&gt;




&lt;h1&gt;
  
  
  Kubernetes Object with Labels
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Pod&lt;/span&gt;

&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;

  &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
    &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;prod&lt;/span&gt;
    &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;

&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The labels are just metadata. They do not change how the Pod runs, but other resources use them to find the Pod.&lt;/p&gt;




&lt;h1&gt;
  
  
  Can Labels be anything?
&lt;/h1&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;team=backend

team=frontend

app=payment

owner=devops

release=stable

country=india

version=v2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Bad labels:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;abc=123

xyz=qwerty
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These don't describe anything meaningful.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Labels?
&lt;/h1&gt;

&lt;p&gt;Without labels,&lt;/p&gt;

&lt;p&gt;Imagine &lt;strong&gt;50,000 Pods&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A Service cannot identify which Pods belong to which application.&lt;/p&gt;

&lt;p&gt;Labels solve this.&lt;/p&gt;




&lt;h1&gt;
  
  
  Service Example
&lt;/h1&gt;

&lt;p&gt;Pods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-1

payment-2

payment-3

order-1

order-2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Labels&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-1

app=payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-2

app=payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-3

app=payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;order-1

app=order
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;order-2

app=order
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now Service says&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kubernetes automatically picks&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-1

payment-2

payment-3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  What is Selector?
&lt;/h1&gt;

&lt;p&gt;A Selector is a filter.&lt;/p&gt;

&lt;p&gt;It searches objects based on labels.&lt;/p&gt;

&lt;p&gt;Think SQL.&lt;/p&gt;

&lt;p&gt;Table&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pod&lt;/th&gt;
&lt;th&gt;App&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;payment1&lt;/td&gt;
&lt;td&gt;payment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;payment2&lt;/td&gt;
&lt;td&gt;payment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;order1&lt;/td&gt;
&lt;td&gt;order&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Query&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;

&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Pods&lt;/span&gt;

&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'payment'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment1

payment2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Selector works exactly like the &lt;code&gt;WHERE&lt;/code&gt; clause.&lt;/p&gt;




&lt;h1&gt;
  
  
  Selector Example
&lt;/h1&gt;

&lt;p&gt;Pod&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Service&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Service

↓

payment Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Multiple Labels
&lt;/h1&gt;

&lt;p&gt;Pod&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
  &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v2&lt;/span&gt;
  &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;production&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Selector&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
  &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both conditions must match.&lt;/p&gt;

&lt;p&gt;This is logical &lt;strong&gt;AND&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real Company Example
&lt;/h1&gt;

&lt;p&gt;Amazon&lt;/p&gt;

&lt;p&gt;Payment Pods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app=payment

env=prod

version=v2

team=backend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Order Pods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app=order

env=prod

version=v1

team=backend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Monitoring Pods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app=grafana

env=prod

team=devops
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now,&lt;/p&gt;

&lt;p&gt;A Service for payment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only payment Pods receive traffic.&lt;/p&gt;




&lt;h1&gt;
  
  
  Label vs Pod Name
&lt;/h1&gt;

&lt;p&gt;Wrong approach&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-v1-asdf123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tomorrow after restart&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-v1-jkhd872
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pod names change frequently.&lt;/p&gt;

&lt;p&gt;Labels remain consistent.&lt;/p&gt;

&lt;p&gt;Never depend on Pod names.&lt;/p&gt;




&lt;h1&gt;
  
  
  Commands
&lt;/h1&gt;

&lt;p&gt;View labels&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods &lt;span class="nt"&gt;--show-labels&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;View one Pod&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl describe pod payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Add label&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl label pod payment &lt;span class="nv"&gt;app&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Update label&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl label pod payment &lt;span class="nv"&gt;version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;v2 &lt;span class="nt"&gt;--overwrite&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Delete label&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl label pod payment version-
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Filter Pods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods &lt;span class="nt"&gt;-l&lt;/span&gt; &lt;span class="nv"&gt;app&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Multiple labels&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods &lt;span class="nt"&gt;-l&lt;/span&gt; &lt;span class="nv"&gt;app&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;payment,env&lt;span class="o"&gt;=&lt;/span&gt;prod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Equality-based Selector
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Equivalent to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app = payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Set-based Selector
&lt;/h1&gt;

&lt;p&gt;Used for advanced filtering.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;matchExpressions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;env&lt;/span&gt;

  &lt;span class="na"&gt;operator&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;In&lt;/span&gt;

  &lt;span class="na"&gt;values&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;prod&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;qa&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;env IN (prod, qa)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Another&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;operator&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;NotIn&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Means&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NOT IN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Exists&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;operator&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Exists&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Means&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Has this label.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;DoesNotExist&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;operator&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;DoesNotExist&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Means&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;This label should not exist.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  matchLabels vs matchExpressions
&lt;/h1&gt;

&lt;p&gt;Deployment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Simple equality.&lt;/p&gt;

&lt;p&gt;Advanced&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;matchExpressions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;env&lt;/span&gt;

    &lt;span class="na"&gt;operator&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;In&lt;/span&gt;

    &lt;span class="na"&gt;values&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;prod&lt;/span&gt;

    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;qa&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Who uses Selectors?
&lt;/h1&gt;

&lt;p&gt;Almost every important Kubernetes resource:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ReplicaSet&lt;/li&gt;
&lt;li&gt;Deployment&lt;/li&gt;
&lt;li&gt;Service&lt;/li&gt;
&lt;li&gt;NetworkPolicy&lt;/li&gt;
&lt;li&gt;PodDisruptionBudget&lt;/li&gt;
&lt;li&gt;HorizontalPodAutoscaler (indirectly targets workloads)&lt;/li&gt;
&lt;li&gt;Some monitoring and service mesh tools also rely on labels&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Very Important Rule
&lt;/h1&gt;

&lt;p&gt;Deployment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pod template&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These &lt;strong&gt;must match&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If they don't,&lt;/p&gt;

&lt;p&gt;The Deployment cannot manage its Pods correctly.&lt;/p&gt;




&lt;h1&gt;
  
  
  Common Mistake
&lt;/h1&gt;

&lt;p&gt;Deployment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pod&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;order&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deployment will not manage that Pod because the selector doesn't match.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real Interview Scenario
&lt;/h1&gt;

&lt;p&gt;Deployment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pod labels&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;app=order&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Question:&lt;/strong&gt; What happens?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; The Deployment (through its ReplicaSet) does not recognize or manage that Pod because the selector and labels don't match.&lt;/p&gt;




&lt;h1&gt;
  
  
  Cross Questions &amp;amp; Answers
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Q1. What is a Label?
&lt;/h3&gt;

&lt;p&gt;A key-value pair attached to a Kubernetes object for identification and grouping.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q2. What is a Selector?
&lt;/h3&gt;

&lt;p&gt;A filter that selects Kubernetes objects based on their labels.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q3. Can two Pods have the same label?
&lt;/h3&gt;

&lt;p&gt;Yes. In fact, that's the normal case. Multiple Pods belonging to the same application usually share the same labels.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q4. Can a Pod have multiple labels?
&lt;/h3&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app=payment
env=prod
version=v2
team=backend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Q5. Does Kubernetes use Pod names or labels for Services?
&lt;/h3&gt;

&lt;p&gt;Labels.&lt;/p&gt;

&lt;p&gt;Services select Pods using label selectors.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q6. Can labels change after a Pod is created?
&lt;/h3&gt;

&lt;p&gt;Yes. Labels are mutable, although changing them on running Pods should be done carefully because Services, ReplicaSets, and other resources may immediately change which Pods they manage.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q7. What happens if a Service selector matches no Pods?
&lt;/h3&gt;

&lt;p&gt;The Service still exists and gets a ClusterIP, but it has no endpoints, so traffic sent to it cannot reach any Pods.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q8. Difference between Labels and Annotations?
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Labels&lt;/th&gt;
&lt;th&gt;Annotations&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Used for selection and grouping&lt;/td&gt;
&lt;td&gt;Used for additional metadata&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Small, identifying information&lt;/td&gt;
&lt;td&gt;Can store larger descriptive information&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Queried by selectors&lt;/td&gt;
&lt;td&gt;Not used by selectors&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  Q9. What are &lt;code&gt;matchLabels&lt;/code&gt; and &lt;code&gt;matchExpressions&lt;/code&gt;?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;matchLabels&lt;/code&gt; is used for exact key-value matching.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;matchExpressions&lt;/code&gt; supports advanced operators like &lt;code&gt;In&lt;/code&gt;, &lt;code&gt;NotIn&lt;/code&gt;, &lt;code&gt;Exists&lt;/code&gt;, and &lt;code&gt;DoesNotExist&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Q10. Why are labels considered the backbone of Kubernetes?
&lt;/h3&gt;

&lt;p&gt;Because Deployments, ReplicaSets, Services, Network Policies, monitoring tools, and service meshes all use labels to identify and manage workloads.&lt;/p&gt;




&lt;h2&gt;
  
  
  Next Topic
&lt;/h2&gt;

&lt;h1&gt;
  
  
  The next logical topic is &lt;strong&gt;Pods&lt;/strong&gt;. Once you understand Pods, we'll connect them to &lt;strong&gt;ReplicaSets&lt;/strong&gt;, then &lt;strong&gt;Deployments&lt;/strong&gt;, and you'll see how the entire Kubernetes workload model fits together.
&lt;/h1&gt;

&lt;p&gt;Perfect. Now we reach the &lt;strong&gt;heart of Kubernetes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Everything in Kubernetes is ultimately about managing &lt;strong&gt;Pods&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; In real companies, you almost never create Pods directly. You create Deployments, StatefulSets, Jobs, etc., and they create Pods for you. But to master Kubernetes, you must first master Pods.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Topic 3 — Pods (Master Level)
&lt;/h1&gt;

&lt;h1&gt;
  
  
  What is a Pod?
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;Pod&lt;/strong&gt; is the &lt;strong&gt;smallest deployable unit in Kubernetes&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Kubernetes does &lt;strong&gt;not&lt;/strong&gt; deploy containers directly.&lt;br&gt;
It deploys &lt;strong&gt;Pods&lt;/strong&gt;, and Pods contain one or more containers.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Kubernetes
      │
      ▼
    Pod
      │
 ┌──────────┐
 │Container │
 └──────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Biggest Interview Mistake
&lt;/h1&gt;

&lt;p&gt;❌ Wrong&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Kubernetes runs Docker containers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;✅ Correct&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Kubernetes schedules and manages &lt;strong&gt;Pods&lt;/strong&gt;. Containers run &lt;strong&gt;inside&lt;/strong&gt; Pods.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Why do we need Pods?
&lt;/h1&gt;

&lt;p&gt;Suppose Kubernetes managed containers directly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node

Container1
Container2
Container3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now imagine one container needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shared storage&lt;/li&gt;
&lt;li&gt;Shared network&lt;/li&gt;
&lt;li&gt;Shared lifecycle&lt;/li&gt;
&lt;li&gt;Shared IP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Managing them separately becomes difficult.&lt;/p&gt;

&lt;p&gt;So Kubernetes introduced &lt;strong&gt;Pods&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Think of a Pod as a House
&lt;/h1&gt;

&lt;p&gt;A container is like a person.&lt;/p&gt;

&lt;p&gt;A Pod is like a house.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;House (Pod)

Father (Container)

Mother (Container)

Child (Container)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;They all share:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Same address&lt;/li&gt;
&lt;li&gt;Same Wi-Fi&lt;/li&gt;
&lt;li&gt;Same electricity&lt;/li&gt;
&lt;li&gt;Same storage (if configured)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Similarly, containers inside a Pod share:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IP address&lt;/li&gt;
&lt;li&gt;Network namespace&lt;/li&gt;
&lt;li&gt;Volumes&lt;/li&gt;
&lt;li&gt;Lifecycle&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Pod Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cluster

 Node

   Pod

      Container

      Container

      Volume
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Can a Pod contain multiple containers?
&lt;/h1&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod

Payment Application

Logging Sidecar

Monitoring Sidecar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is called a &lt;strong&gt;multi-container Pod&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Single Container Pod
&lt;/h1&gt;

&lt;p&gt;Most common.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod

Spring Boot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Multi-container Pod
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod

Spring Boot

Fluent Bit (logs)

Envoy Proxy (Istio)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These containers work together as one unit.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why multiple containers?
&lt;/h1&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spring Boot Application

↓

Writes logs

↓

Fluent Bit

↓

Elasticsearch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of putting logging code into your application, a sidecar container collects and forwards logs.&lt;/p&gt;

&lt;p&gt;Other examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Istio Envoy sidecar&lt;/li&gt;
&lt;li&gt;Log shippers&lt;/li&gt;
&lt;li&gt;Security agents&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Every Pod Gets One IP
&lt;/h1&gt;

&lt;p&gt;Suppose&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node

Pod1

Pod2

Pod3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;IPs&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod1 → 10.244.1.2

Pod2 → 10.244.1.3

Pod3 → 10.244.1.4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Containers do NOT get separate IPs.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Pod&lt;/strong&gt; gets one IP.&lt;/p&gt;




&lt;h1&gt;
  
  
  Containers inside a Pod
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod IP

10.244.1.2

Container A

Container B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both containers use the same Pod IP.&lt;/p&gt;




&lt;h1&gt;
  
  
  Communication inside Pod
&lt;/h1&gt;

&lt;p&gt;Container A&lt;/p&gt;

&lt;p&gt;↓&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;localhost
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Container B&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because they share the same network namespace.&lt;/p&gt;

&lt;p&gt;This is a favorite interview question.&lt;/p&gt;




&lt;h1&gt;
  
  
  Pod-to-Pod Communication
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod A

10.244.1.2

↓

Pod B

10.244.2.5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pods communicate directly using Pod IPs.&lt;/p&gt;

&lt;p&gt;However, applications should usually communicate through &lt;strong&gt;Services&lt;/strong&gt;, because Pod IPs change when Pods are recreated.&lt;/p&gt;




&lt;h1&gt;
  
  
  Pod Lifecycle
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pending

↓

Running

↓

Succeeded

↓

Failed

↓

Unknown
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Pending
&lt;/h2&gt;

&lt;p&gt;Pod accepted.&lt;/p&gt;

&lt;p&gt;Still downloading image or waiting to be scheduled.&lt;/p&gt;




&lt;h2&gt;
  
  
  Running
&lt;/h2&gt;

&lt;p&gt;Container started successfully.&lt;/p&gt;




&lt;h2&gt;
  
  
  Succeeded
&lt;/h2&gt;

&lt;p&gt;Job completed successfully.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Backup completed.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Failed
&lt;/h2&gt;

&lt;p&gt;Container exited with error.&lt;/p&gt;




&lt;h2&gt;
  
  
  Unknown
&lt;/h2&gt;

&lt;p&gt;Node lost communication.&lt;/p&gt;




&lt;h1&gt;
  
  
  Pod Restart Policy
&lt;/h1&gt;

&lt;p&gt;Three policies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Always

OnFailure

Never
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Default&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Always
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Pod YAML
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;

&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Pod&lt;/span&gt;

&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;

  &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;

&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;

    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;

    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;containerPort&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Create Pod
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; pod.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Get Pods
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Detailed Information
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl describe pod payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Pod Logs
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl logs payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Multi-container Pod&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl logs payment &lt;span class="nt"&gt;-c&lt;/span&gt; fluentbit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Execute inside Pod
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; payment &lt;span class="nt"&gt;--&lt;/span&gt; bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; payment &lt;span class="nt"&gt;--&lt;/span&gt; sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Delete Pod
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl delete pod payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  What happens after deleting a Pod?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Case 1: Standalone Pod
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod

↓

Delete

↓

Gone forever
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Case 2: Deployment created Pod
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Deployment

↓

ReplicaSet

↓

Pod

↓

Delete Pod

↓

ReplicaSet creates a new Pod automatically
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is one of the most common interview questions.&lt;/p&gt;




&lt;h1&gt;
  
  
  Init Containers
&lt;/h1&gt;

&lt;p&gt;Run &lt;strong&gt;before&lt;/strong&gt; application containers.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Init Container

↓

Download configuration

↓

Exit

↓

Spring Boot starts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Useful for setup tasks like waiting for a database or preparing files.&lt;/p&gt;




&lt;h1&gt;
  
  
  Sidecar Container
&lt;/h1&gt;

&lt;p&gt;Runs &lt;strong&gt;alongside&lt;/strong&gt; the main application.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spring Boot

+

Fluent Bit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OR&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spring Boot

+

Envoy Proxy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Ephemeral Containers
&lt;/h1&gt;

&lt;p&gt;Used mainly for debugging.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl debug
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creates a temporary container to inspect a running Pod without modifying the application container.&lt;/p&gt;




&lt;h1&gt;
  
  
  Pod Networking
&lt;/h1&gt;

&lt;p&gt;Every Pod can talk to every other Pod by default (unless restricted by Network Policies).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Payment

↓

Orders

↓

Users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All can communicate.&lt;/p&gt;




&lt;h1&gt;
  
  
  Pod Storage
&lt;/h1&gt;

&lt;p&gt;Without volumes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Restart

↓

All files lost
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because the container filesystem is ephemeral.&lt;/p&gt;

&lt;p&gt;With a Volume:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Restart

↓

Data remains (depending on volume type)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Important Interview Concept
&lt;/h1&gt;

&lt;p&gt;Pods are &lt;strong&gt;ephemeral&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If a Pod dies,&lt;/p&gt;

&lt;p&gt;Kubernetes creates a &lt;strong&gt;new Pod&lt;/strong&gt;, not repairs the old one.&lt;/p&gt;

&lt;p&gt;The new Pod:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gets a new UID&lt;/li&gt;
&lt;li&gt;May get a new IP&lt;/li&gt;
&lt;li&gt;May run on a different node&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why Services are used instead of Pod IPs.&lt;/p&gt;




&lt;h1&gt;
  
  
  Pod vs Container
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pod&lt;/th&gt;
&lt;th&gt;Container&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Kubernetes object&lt;/td&gt;
&lt;td&gt;Runtime process&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can contain multiple containers&lt;/td&gt;
&lt;td&gt;Single application/process&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gets an IP&lt;/td&gt;
&lt;td&gt;Shares Pod IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Managed by Kubernetes&lt;/td&gt;
&lt;td&gt;Managed by container runtime (containerd/CRI-O)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Pod vs VM
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pod&lt;/th&gt;
&lt;th&gt;VM&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Shares host OS kernel&lt;/td&gt;
&lt;td&gt;Own guest OS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Starts in seconds&lt;/td&gt;
&lt;td&gt;Takes longer to boot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lightweight&lt;/td&gt;
&lt;td&gt;Heavier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lower resource usage&lt;/td&gt;
&lt;td&gt;Higher resource usage&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Real Company Example
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Amazon Checkout

Deployment

↓

Pods

↓

Spring Boot

↓

Istio Envoy Sidecar

↓

Fluent Bit Sidecar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One Pod may contain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Main application container&lt;/li&gt;
&lt;li&gt;Service mesh proxy&lt;/li&gt;
&lt;li&gt;Logging sidecar&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Common Interview Questions &amp;amp; Answers
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Q1. What is a Pod?
&lt;/h3&gt;

&lt;p&gt;The smallest deployable unit in Kubernetes. It contains one or more containers that share networking and storage.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q2. Can a Pod have multiple containers?
&lt;/h3&gt;

&lt;p&gt;Yes. Containers inside the same Pod share the network namespace, IP address, and can share volumes.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q3. Does every container get an IP?
&lt;/h3&gt;

&lt;p&gt;No. The Pod gets one IP, and all containers inside the Pod share it.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q4. How do containers inside the same Pod communicate?
&lt;/h3&gt;

&lt;p&gt;Using &lt;code&gt;localhost&lt;/code&gt;, because they share the same network namespace.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q5. Should applications communicate using Pod IPs?
&lt;/h3&gt;

&lt;p&gt;No. Pod IPs are temporary. Applications should communicate using Kubernetes Services.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q6. What happens if a Pod created by a Deployment is deleted?
&lt;/h3&gt;

&lt;p&gt;The ReplicaSet created by the Deployment detects that the desired number of replicas is lower than expected and creates a replacement Pod.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q7. Are Pods permanent?
&lt;/h3&gt;

&lt;p&gt;No. Pods are ephemeral and can be recreated with new identities and IPs.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q8. What is an Init Container?
&lt;/h3&gt;

&lt;p&gt;A container that runs to completion before the application containers start.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q9. What is a Sidecar Container?
&lt;/h3&gt;

&lt;p&gt;A helper container that runs alongside the main application, commonly used for logging, proxies, or monitoring.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q10. Why doesn't Kubernetes deploy containers directly?
&lt;/h3&gt;

&lt;p&gt;Pods provide a shared execution environment (network, storage, lifecycle) and are the abstraction Kubernetes uses for scheduling and management.&lt;/p&gt;




&lt;h1&gt;
  
  
  What's Next?
&lt;/h1&gt;

&lt;p&gt;The next topic is &lt;strong&gt;ReplicaSet&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This answers one of the most important questions in Kubernetes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If a Pod dies, who creates the new Pod?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Understanding ReplicaSets is the foundation for understanding Deployments, rolling updates, self-healing, and high availability.
&lt;/h1&gt;

&lt;p&gt;Excellent. Now we're entering the part that interviewers love.&lt;/p&gt;

&lt;h1&gt;
  
  
  Topic 4 — ReplicaSet (Master Level)
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If someone asks only one Kubernetes question in an interview, there's a high chance it will involve ReplicaSets or Deployments.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  The Problem ReplicaSet Solves
&lt;/h1&gt;

&lt;p&gt;Imagine you have one Pod.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node

┌─────────────┐
│ payment-pod │
└─────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything is fine.&lt;/p&gt;

&lt;p&gt;Now suddenly,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Server Crash

OR

Node Failure

OR

OOMKilled

OR

Someone runs

kubectl delete pod payment-pod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Pod is gone.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node

❌ No Pod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who creates the new Pod?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Answer:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ReplicaSet&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  What is a ReplicaSet?
&lt;/h1&gt;

&lt;p&gt;A ReplicaSet ensures that the &lt;strong&gt;desired number of Pod replicas are always running.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example&lt;/p&gt;

&lt;p&gt;Desired replicas&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Current Pods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-1

payment-2

payment-3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything is healthy.&lt;/p&gt;




&lt;p&gt;One Pod crashes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-1

payment-2

❌ payment-3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ReplicaSet notices:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Desired = 3&lt;br&gt;
Current = 2&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Immediately it creates a new Pod.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-1

payment-2

payment-4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice:&lt;/p&gt;

&lt;p&gt;The new Pod is &lt;strong&gt;not&lt;/strong&gt; &lt;code&gt;payment-3&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It's a completely &lt;strong&gt;new Pod&lt;/strong&gt; with a new name, UID, and usually a new IP.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real Company Example
&lt;/h1&gt;

&lt;p&gt;Suppose Amazon Checkout Service.&lt;/p&gt;

&lt;p&gt;Desired replicas:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;50 Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Current:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;49 Running
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ReplicaSet immediately creates:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;checkout-50
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Users never notice because Kubernetes heals itself.&lt;/p&gt;

&lt;p&gt;This is called &lt;strong&gt;Self-Healing&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  ReplicaSet Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Deployment
      │
      ▼
 ReplicaSet
      │
      ▼
 Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Important:&lt;/p&gt;

&lt;p&gt;In production,&lt;/p&gt;

&lt;p&gt;You almost never create ReplicaSets directly.&lt;/p&gt;

&lt;p&gt;Deployments create ReplicaSets automatically.&lt;/p&gt;




&lt;h1&gt;
  
  
  ReplicaSet YAML
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;apps/v1&lt;/span&gt;

&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ReplicaSet&lt;/span&gt;

&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment-rs&lt;/span&gt;

&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;replicas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;

  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;

  &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;

    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

      &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;

        &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Understanding Every Field
&lt;/h1&gt;

&lt;h2&gt;
  
  
  replicas
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;replicas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning:&lt;/p&gt;

&lt;p&gt;"I always want 3 Pods."&lt;/p&gt;




&lt;h2&gt;
  
  
  selector
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ReplicaSet looks for Pods having&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app=payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  template
&lt;/h2&gt;

&lt;p&gt;The template is the blueprint.&lt;/p&gt;

&lt;p&gt;Whenever ReplicaSet needs a new Pod,&lt;/p&gt;

&lt;p&gt;It uses this template.&lt;/p&gt;

&lt;p&gt;Think of it as a photocopy machine.&lt;/p&gt;

&lt;p&gt;Original&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Copy&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;New Pod&lt;/p&gt;




&lt;h1&gt;
  
  
  Self-Healing Demo
&lt;/h1&gt;

&lt;p&gt;Initial&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ReplicaSet

Desired = 3

payment1

payment2

payment3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Delete Pod&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl delete pod payment1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Immediately&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ReplicaSet

payment2

payment3

payment4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No manual work.&lt;/p&gt;




&lt;h1&gt;
  
  
  Scaling
&lt;/h1&gt;

&lt;p&gt;Current&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;replicas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;replicas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;6&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ReplicaSet creates&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment1

payment2

payment3

payment4

payment5

payment6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Decrease&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;replicas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ReplicaSet deletes extra Pods.&lt;/p&gt;




&lt;h1&gt;
  
  
  Commands
&lt;/h1&gt;

&lt;p&gt;Create&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; replicaset.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;View&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get rs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Describe&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl describe rs payment-rs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Delete&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl delete rs payment-rs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Scale&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl scale rs payment-rs &lt;span class="nt"&gt;--replicas&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  ReplicaSet Uses Labels
&lt;/h1&gt;

&lt;p&gt;Pods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment1

app=payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment2

app=payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ReplicaSet&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ReplicaSet owns these Pods.&lt;/p&gt;




&lt;h1&gt;
  
  
  Dangerous Situation
&lt;/h1&gt;

&lt;p&gt;Suppose&lt;/p&gt;

&lt;p&gt;ReplicaSet&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Someone manually creates another Pod&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ReplicaSet thinks&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This Pod belongs to me."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It may adopt the Pod if the labels match and no other controller owns it.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Happens if Labels Don't Match?
&lt;/h1&gt;

&lt;p&gt;ReplicaSet&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pod&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;order&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ReplicaSet ignores it.&lt;/p&gt;




&lt;h1&gt;
  
  
  ReplicaSet vs ReplicationController
&lt;/h1&gt;

&lt;p&gt;Older Kubernetes used&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ReplicationController
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ReplicaSet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ReplicaSet supports more advanced selectors (&lt;code&gt;matchExpressions&lt;/code&gt;) and is the recommended controller.&lt;/p&gt;

&lt;p&gt;Interview answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ReplicaSet replaced ReplicationController because it supports richer label selection and integrates with Deployments.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  ReplicaSet vs Deployment
&lt;/h1&gt;

&lt;p&gt;ReplicaSet&lt;/p&gt;

&lt;p&gt;✅ Keeps Pods alive&lt;/p&gt;

&lt;p&gt;Deployment&lt;/p&gt;

&lt;p&gt;✅ Creates ReplicaSet&lt;/p&gt;

&lt;p&gt;✅ Rolling Update&lt;/p&gt;

&lt;p&gt;✅ Rollback&lt;/p&gt;

&lt;p&gt;✅ Version History&lt;/p&gt;

&lt;p&gt;✅ Zero Downtime Deployment&lt;/p&gt;

&lt;p&gt;Deployment is a higher-level controller that manages ReplicaSets.&lt;/p&gt;




&lt;h1&gt;
  
  
  ReplicaSet Lifecycle
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ReplicaSet

↓

Creates Pods

↓

Pod dies

↓

Creates new Pod

↓

Pod dies

↓

Creates new Pod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This continues as long as the ReplicaSet exists.&lt;/p&gt;




&lt;h1&gt;
  
  
  Does ReplicaSet Monitor Container Health?
&lt;/h1&gt;

&lt;p&gt;Not directly.&lt;/p&gt;

&lt;p&gt;ReplicaSet watches the &lt;strong&gt;Pod count&lt;/strong&gt;, not application health.&lt;/p&gt;

&lt;p&gt;Application health is usually checked using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Liveness Probe&lt;/li&gt;
&lt;li&gt;Readiness Probe&lt;/li&gt;
&lt;li&gt;Startup Probe&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These can cause Pods to restart or be replaced, and ReplicaSet ensures the desired number of Pods still exist.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real Production Example
&lt;/h1&gt;

&lt;p&gt;Netflix&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Recommendation Service

ReplicaSet

Desired = 500 Pods

Current = 499

↓

Automatically creates one more Pod

↓

500 Running
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No engineer needs to log in and start a Pod manually.&lt;/p&gt;




&lt;h1&gt;
  
  
  Interview Scenario
&lt;/h1&gt;

&lt;p&gt;Interviewer:&lt;/p&gt;

&lt;p&gt;"I deleted one Pod."&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl delete pod payment-xyz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Question:&lt;/p&gt;

&lt;p&gt;Who creates the new Pod?&lt;/p&gt;

&lt;p&gt;Correct answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If the Pod is managed by a ReplicaSet (usually through a Deployment), the ReplicaSet detects the missing replica and creates a replacement Pod from its Pod template.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Common Interview Questions
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Q1. What is ReplicaSet?
&lt;/h2&gt;

&lt;p&gt;A Kubernetes controller that ensures the specified number of Pod replicas are running.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q2. Can ReplicaSet create Pods?
&lt;/h2&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;It creates Pods using the Pod template defined in its specification.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q3. Can ReplicaSet update Pods?
&lt;/h2&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;ReplicaSet is primarily responsible for maintaining the desired number of Pods. Rolling updates and version management are handled by Deployments.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q4. What happens if a Pod crashes?
&lt;/h2&gt;

&lt;p&gt;ReplicaSet detects that the actual number of Pods is less than the desired number and creates a replacement Pod.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q5. What happens if a Node crashes?
&lt;/h2&gt;

&lt;p&gt;The Pods on that node are lost. Kubernetes eventually recognizes they're gone, and the ReplicaSet creates replacement Pods on healthy nodes (assuming cluster capacity is available).&lt;/p&gt;




&lt;h2&gt;
  
  
  Q6. Does ReplicaSet use Pod names?
&lt;/h2&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;It identifies Pods using &lt;strong&gt;label selectors&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q7. Can two ReplicaSets manage the same Pod?
&lt;/h2&gt;

&lt;p&gt;Ideally, no.&lt;/p&gt;

&lt;p&gt;Overlapping selectors can cause conflicts, so selectors should be designed to avoid managing the same Pods.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q8. Can we create ReplicaSet directly?
&lt;/h2&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;But in production, it's uncommon. Deployments are the standard way because they provide updates, rollbacks, and revision history.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q9. Is ReplicaSet responsible for load balancing?
&lt;/h2&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;Load balancing is handled by a &lt;strong&gt;Service&lt;/strong&gt;. ReplicaSet only maintains the desired number of Pods.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q10. Why doesn't ReplicaSet perform rolling updates?
&lt;/h2&gt;

&lt;p&gt;Because that's the responsibility of the Deployment controller, which manages ReplicaSets and coordinates safe updates.&lt;/p&gt;




&lt;h1&gt;
  
  
  Flow So Far
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Namespace
      │
Labels
      │
Pods
      │
ReplicaSet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The next step is &lt;strong&gt;Deployment&lt;/strong&gt;, which sits above ReplicaSets and introduces rolling updates, rollbacks, scaling, and zero-downtime application releases.&lt;/p&gt;

&lt;h1&gt;
  
  
  Once you master Deployments, you'll understand how production Kubernetes applications are actually managed.
&lt;/h1&gt;

&lt;p&gt;Excellent. Now we reach one of the &lt;strong&gt;most important networking topics in Kubernetes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you don't understand &lt;strong&gt;Services&lt;/strong&gt;, you cannot understand &lt;strong&gt;Ingress, Istio, Service Discovery, or Kubernetes Networking&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Topic 6 — Services (Master Level)
&lt;/h1&gt;




&lt;h1&gt;
  
  
  First Understand the Problem
&lt;/h1&gt;

&lt;p&gt;Suppose you have a Deployment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Deployment
     │
ReplicaSet
     │
Pods

payment-abc123   IP:10.244.1.2
payment-def456   IP:10.244.1.3
payment-ghi789   IP:10.244.1.4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything works.&lt;/p&gt;

&lt;p&gt;Now one Pod crashes.&lt;/p&gt;

&lt;p&gt;ReplicaSet creates another Pod.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Old Pod

payment-def456

IP = 10.244.1.3

↓

Deleted

↓

New Pod

payment-xyz111

IP = 10.244.2.7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Question:&lt;/p&gt;

&lt;p&gt;If another application was calling&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10.244.1.3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What happens?&lt;/p&gt;

&lt;p&gt;❌ Communication breaks.&lt;/p&gt;

&lt;p&gt;Because Pod IPs are &lt;strong&gt;not permanent&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Services Exist
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;Service&lt;/strong&gt; provides&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stable IP&lt;/li&gt;
&lt;li&gt;Stable DNS name&lt;/li&gt;
&lt;li&gt;Load Balancing&lt;/li&gt;
&lt;li&gt;Service Discovery&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of talking to Pods,&lt;/p&gt;

&lt;p&gt;Applications talk to the Service.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real Company Example
&lt;/h1&gt;

&lt;p&gt;Amazon&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Order Service

↓

Payment Service

↓

Inventory Service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Order Service NEVER calls&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10.244.5.9
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This always works.&lt;/p&gt;




&lt;h1&gt;
  
  
  What is a Service?
&lt;/h1&gt;

&lt;p&gt;A Service is a Kubernetes object that provides a &lt;strong&gt;stable network endpoint&lt;/strong&gt; for a group of Pods.&lt;/p&gt;

&lt;p&gt;Think of it like a receptionist.&lt;/p&gt;

&lt;p&gt;Customers don't call employees directly.&lt;/p&gt;

&lt;p&gt;They call reception.&lt;/p&gt;

&lt;p&gt;Reception forwards the call.&lt;/p&gt;




&lt;h1&gt;
  
  
  Architecture
&lt;/h1&gt;

&lt;p&gt;Without Service&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Order Pod

↓

Payment Pod

10.244.1.3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pod dies.&lt;/p&gt;

&lt;p&gt;Communication breaks.&lt;/p&gt;




&lt;p&gt;With Service&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Order Pod

↓

Payment Service

↓

Payment Pod1

Payment Pod2

Payment Pod3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pods can change.&lt;/p&gt;

&lt;p&gt;Service never changes.&lt;/p&gt;




&lt;h1&gt;
  
  
  Service Uses Labels
&lt;/h1&gt;

&lt;p&gt;Pods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Service&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Service automatically finds all matching Pods.&lt;/p&gt;




&lt;h1&gt;
  
  
  Service YAML
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;

&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Service&lt;/span&gt;

&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment-service&lt;/span&gt;

&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;

  &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;

    &lt;span class="na"&gt;targetPort&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8080&lt;/span&gt;

  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ClusterIP&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Understanding Every Field
&lt;/h1&gt;

&lt;h2&gt;
  
  
  selector
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Find Pods having&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app=payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  port
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Service listens on&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  targetPort
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;targetPort&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8080&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Forward traffic to&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Container Port

8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Flow&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Client

↓

Service Port

80

↓

Container Port

8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Important Interview Question
&lt;/h1&gt;

&lt;p&gt;Difference&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;port
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;vs&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;targetPort
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Answer&lt;/p&gt;

&lt;p&gt;port&lt;/p&gt;

&lt;p&gt;→ Service Port&lt;/p&gt;

&lt;p&gt;targetPort&lt;/p&gt;

&lt;p&gt;→ Container Port&lt;/p&gt;




&lt;h1&gt;
  
  
  Service Flow
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Order Pod

↓

payment-service

↓

Pod1

↓

Container:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Does Service Send Traffic To One Pod?
&lt;/h1&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;It load balances.&lt;/p&gt;

&lt;p&gt;Example&lt;/p&gt;

&lt;p&gt;3 Pods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment1

payment2

payment3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Requests&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Req1 → payment1

Req2 → payment2

Req3 → payment3

Req4 → payment1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact algorithm depends on the networking implementation (for example, kube-proxy with iptables/IPVS), but traffic is distributed across healthy endpoints.&lt;/p&gt;




&lt;h1&gt;
  
  
  ClusterIP
&lt;/h1&gt;

&lt;p&gt;Default Service.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ClusterIP&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Accessible only inside cluster.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Payment

↓

Inventory

↓

Orders
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Microservices communicate.&lt;/p&gt;

&lt;p&gt;Users cannot access it directly.&lt;/p&gt;




&lt;p&gt;Architecture&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

❌

ClusterIP

↓

Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  NodePort
&lt;/h1&gt;

&lt;p&gt;Expose Service on every Node.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;NodePort&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Port&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;30000-32767
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Access&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NodeIP:30080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://35.10.10.10:30080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Useful for testing, but not the preferred production entry point.&lt;/p&gt;




&lt;p&gt;Architecture&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

NodeIP:30080

↓

Service

↓

Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  LoadBalancer
&lt;/h1&gt;

&lt;p&gt;Cloud Providers&lt;/p&gt;

&lt;p&gt;AWS&lt;/p&gt;

&lt;p&gt;Azure&lt;/p&gt;

&lt;p&gt;GCP&lt;/p&gt;

&lt;p&gt;YAML&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;LoadBalancer&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kubernetes asks cloud provider&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Create&lt;/p&gt;

&lt;p&gt;AWS ELB / NLB&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Traffic&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Pods&lt;/p&gt;




&lt;p&gt;Architecture&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

AWS Load Balancer

↓

Service

↓

Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  ExternalName
&lt;/h1&gt;

&lt;p&gt;Very important interview topic.&lt;/p&gt;

&lt;p&gt;Suppose&lt;/p&gt;

&lt;p&gt;Application&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Needs&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;database.company.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of hardcoding,&lt;/p&gt;

&lt;p&gt;Create&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ExternalName&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Maps&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-service

↓

database.company.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No proxy is created; Kubernetes returns a DNS CNAME record pointing to the external hostname.&lt;/p&gt;




&lt;h1&gt;
  
  
  Headless Service (Bonus)
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;clusterIP&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;None&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No Cluster IP.&lt;/p&gt;

&lt;p&gt;Returns Pod IPs directly.&lt;/p&gt;

&lt;p&gt;Used by&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;StatefulSets&lt;/li&gt;
&lt;li&gt;Databases&lt;/li&gt;
&lt;li&gt;Kafka&lt;/li&gt;
&lt;li&gt;Cassandra&lt;/li&gt;
&lt;li&gt;ZooKeeper&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Service Types Summary
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Accessible From&lt;/th&gt;
&lt;th&gt;Typical Use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ClusterIP&lt;/td&gt;
&lt;td&gt;Inside cluster&lt;/td&gt;
&lt;td&gt;Microservice communication&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NodePort&lt;/td&gt;
&lt;td&gt;Node IP + Port&lt;/td&gt;
&lt;td&gt;Testing, simple external access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LoadBalancer&lt;/td&gt;
&lt;td&gt;Internet (via cloud LB)&lt;/td&gt;
&lt;td&gt;Production external traffic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ExternalName&lt;/td&gt;
&lt;td&gt;External DNS&lt;/td&gt;
&lt;td&gt;External services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Headless&lt;/td&gt;
&lt;td&gt;Direct Pod DNS&lt;/td&gt;
&lt;td&gt;Stateful applications&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Commands
&lt;/h1&gt;

&lt;p&gt;Create&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; service.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;List&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get svc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Describe&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl describe svc payment-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Delete&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl delete svc payment-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  How Does Service Find Pods?
&lt;/h1&gt;

&lt;p&gt;Labels.&lt;/p&gt;

&lt;p&gt;Pods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app=payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Service&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Service automatically tracks matching Pods.&lt;/p&gt;




&lt;h1&gt;
  
  
  What if New Pod Comes?
&lt;/h1&gt;

&lt;p&gt;Deployment&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Creates new Pod&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Label&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app=payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Service immediately starts sending traffic to it.&lt;/p&gt;

&lt;p&gt;No manual work.&lt;/p&gt;




&lt;h1&gt;
  
  
  What if Pod Dies?
&lt;/h1&gt;

&lt;p&gt;ReplicaSet&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Creates new Pod&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Same Label&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Service automatically includes it.&lt;/p&gt;




&lt;h1&gt;
  
  
  Can Service Exist Without Pods?
&lt;/h1&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Service

↓

No Matching Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Service exists.&lt;/p&gt;

&lt;p&gt;But requests fail because there are no endpoints.&lt;/p&gt;

&lt;p&gt;You can check this with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get endpoints payment-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(or &lt;code&gt;kubectl get endpointslices&lt;/code&gt; in newer clusters).&lt;/p&gt;




&lt;h1&gt;
  
  
  Service vs Deployment
&lt;/h1&gt;

&lt;p&gt;Deployment&lt;/p&gt;

&lt;p&gt;Creates Pods.&lt;/p&gt;

&lt;p&gt;Service&lt;/p&gt;

&lt;p&gt;Provides networking to Pods.&lt;/p&gt;




&lt;h1&gt;
  
  
  Service vs Pod
&lt;/h1&gt;

&lt;p&gt;Pod&lt;/p&gt;

&lt;p&gt;Temporary&lt;/p&gt;

&lt;p&gt;IP changes&lt;/p&gt;

&lt;p&gt;Service&lt;/p&gt;

&lt;p&gt;Permanent&lt;/p&gt;

&lt;p&gt;Stable IP&lt;/p&gt;

&lt;p&gt;Stable DNS&lt;/p&gt;




&lt;h1&gt;
  
  
  Service vs Ingress
&lt;/h1&gt;

&lt;p&gt;Service&lt;/p&gt;

&lt;p&gt;Works inside cluster (and can expose traffic depending on its type).&lt;/p&gt;

&lt;p&gt;Ingress&lt;/p&gt;

&lt;p&gt;Routes external HTTP/HTTPS traffic to one or more Services.&lt;/p&gt;

&lt;p&gt;Ingress never sends traffic directly to Pods.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real Production Example
&lt;/h1&gt;

&lt;p&gt;Netflix&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

AWS ALB

↓

Ingress

↓

payment-service

↓

10 Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pods keep changing.&lt;/p&gt;

&lt;p&gt;Users never notice because the Service provides a stable endpoint.&lt;/p&gt;




&lt;h1&gt;
  
  
  Common Interview Questions
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Q1. Why do we need Services?
&lt;/h2&gt;

&lt;p&gt;Because Pods are ephemeral and their IP addresses change. Services provide a stable IP, DNS name, and load balancing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q2. Does a Service create Pods?
&lt;/h2&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;Deployments/ReplicaSets create Pods.&lt;/p&gt;

&lt;p&gt;Services only provide networking to Pods.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q3. How does a Service identify Pods?
&lt;/h2&gt;

&lt;p&gt;Using label selectors.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q4. Difference between &lt;code&gt;port&lt;/code&gt; and &lt;code&gt;targetPort&lt;/code&gt;?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;port&lt;/code&gt;: The port exposed by the Service.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;targetPort&lt;/code&gt;: The port on the container where traffic is forwarded.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Q5. What is the default Service type?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;ClusterIP&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q6. Which Service type is used in AWS Production?
&lt;/h2&gt;

&lt;p&gt;Usually a &lt;code&gt;LoadBalancer&lt;/code&gt; Service behind a cloud load balancer, often together with an Ingress Controller for HTTP/HTTPS routing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q7. Can one Service send traffic to multiple Pods?
&lt;/h2&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;It load balances across all matching healthy Pods.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q8. Can multiple Services point to the same Pods?
&lt;/h2&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;If they use selectors that match the same Pods, multiple Services can expose those Pods differently.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q9. Can a Service work without selectors?
&lt;/h2&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;You can create a Service without a selector and manually define an &lt;code&gt;Endpoints&lt;/code&gt; or &lt;code&gt;EndpointSlice&lt;/code&gt; resource. This is often used to represent external or non-Kubernetes backends.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q10. Why don't applications call Pod IPs directly?
&lt;/h2&gt;

&lt;p&gt;Because Pod IPs change whenever Pods are recreated. Services provide a stable network identity.&lt;/p&gt;




&lt;h1&gt;
  
  
  Full Architecture So Far
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Namespace
      │
Labels
      │
Deployment
      │
ReplicaSet
      │
Pods
      │
Service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Next Topic (Very Important)
&lt;/h1&gt;

&lt;p&gt;The next topic is &lt;strong&gt;Service Discovery &amp;amp; DNS&lt;/strong&gt;, where you'll learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How &lt;code&gt;payment-service&lt;/code&gt; automatically becomes a DNS name.&lt;/li&gt;
&lt;li&gt;What &lt;strong&gt;CoreDNS&lt;/strong&gt; does.&lt;/li&gt;
&lt;li&gt;Why applications never hardcode IP addresses.&lt;/li&gt;
&lt;li&gt;How cross-namespace communication works.&lt;/li&gt;
&lt;li&gt;How Kubernetes resolves names like:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-service.default.svc.cluster.local
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Once you understand Service Discovery, &lt;strong&gt;Ingress, Istio, and Kubernetes Networking&lt;/strong&gt; become much easier to master.
&lt;/h1&gt;

&lt;p&gt;Excellent. Now we are entering one of the &lt;strong&gt;most asked Kubernetes interview topics&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you're interviewing for &lt;strong&gt;DevOps, SRE, Platform Engineer, Backend Engineer (Spring Boot), or Cloud Engineer&lt;/strong&gt;, expect multiple questions about &lt;strong&gt;Ingress&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Topic 8 — Ingress &amp;amp; Ingress Controller (Master Level)
&lt;/h1&gt;




&lt;h1&gt;
  
  
  First Understand the Problem
&lt;/h1&gt;

&lt;p&gt;Suppose your company has three applications.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Payment Service

Order Service

User Service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each has its own Service.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-service

order-service

user-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Suppose you expose all of them using &lt;strong&gt;LoadBalancer&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

AWS Load Balancer

↓

payment-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

AWS Load Balancer

↓

order-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

AWS Load Balancer

↓

user-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Question:&lt;/p&gt;

&lt;p&gt;How many AWS Load Balancers?&lt;/p&gt;

&lt;p&gt;Answer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Suppose company has&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;200 Services
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Need&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;200 Load Balancers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Very expensive.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Ingress?
&lt;/h1&gt;

&lt;p&gt;Ingress allows &lt;strong&gt;one external entry point&lt;/strong&gt; for many Services.&lt;/p&gt;

&lt;p&gt;Instead of&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

200 Load Balancers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

1 Load Balancer

↓

Ingress Controller

↓

200 Services
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Huge cost savings.&lt;/p&gt;




&lt;h1&gt;
  
  
  What is Ingress?
&lt;/h1&gt;

&lt;p&gt;Ingress is a Kubernetes object that defines &lt;strong&gt;HTTP/HTTPS routing rules&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/api/payment

↓

payment-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/api/order

↓

order-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/api/user

↓

user-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ingress itself does &lt;strong&gt;not&lt;/strong&gt; process traffic.&lt;/p&gt;

&lt;p&gt;It only stores routing rules.&lt;/p&gt;




&lt;h1&gt;
  
  
  Biggest Interview Trap
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Question: Does Ingress receive traffic?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;❌ Wrong&lt;/p&gt;

&lt;p&gt;"Yes"&lt;/p&gt;

&lt;p&gt;✅ Correct&lt;/p&gt;

&lt;p&gt;Ingress is only a &lt;strong&gt;configuration object&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Ingress Controller&lt;/strong&gt; receives and processes traffic.&lt;/p&gt;




&lt;h1&gt;
  
  
  What is an Ingress Controller?
&lt;/h1&gt;

&lt;p&gt;The Ingress Controller is the software that reads Ingress rules and routes traffic.&lt;/p&gt;

&lt;p&gt;Popular controllers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NGINX Ingress Controller&lt;/li&gt;
&lt;li&gt;AWS Load Balancer Controller&lt;/li&gt;
&lt;li&gt;HAProxy Ingress&lt;/li&gt;
&lt;li&gt;Traefik&lt;/li&gt;
&lt;li&gt;Kong&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of it like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ingress

↓

Configuration

↓

NGINX Ingress Controller

↓

Actual Traffic Routing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet
     │
     ▼
AWS Load Balancer
     │
     ▼
NGINX Ingress Controller
     │
     ▼
Ingress Rules
     │
 ┌───────────────┬───────────────┬───────────────┐
 ▼               ▼               ▼
payment-service order-service user-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Real Company Example
&lt;/h1&gt;

&lt;p&gt;Amazon&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;amazon.com/pay
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Payment Service&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;amazon.com/orders
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Order Service&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;amazon.com/users
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;User Service&lt;/p&gt;

&lt;p&gt;One Load Balancer.&lt;/p&gt;

&lt;p&gt;One Ingress Controller.&lt;/p&gt;

&lt;p&gt;Many Services.&lt;/p&gt;




&lt;h1&gt;
  
  
  Ingress YAML
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;networking.k8s.io/v1&lt;/span&gt;

&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Ingress&lt;/span&gt;

&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ecommerce-ingress&lt;/span&gt;

&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;rules&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;shop.company.com&lt;/span&gt;

    &lt;span class="na"&gt;http&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

      &lt;span class="na"&gt;paths&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/payment&lt;/span&gt;

        &lt;span class="na"&gt;pathType&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Prefix&lt;/span&gt;

        &lt;span class="na"&gt;backend&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

          &lt;span class="na"&gt;service&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

            &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment-service&lt;/span&gt;

            &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

              &lt;span class="na"&gt;number&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Understanding Every Field
&lt;/h1&gt;

&lt;h2&gt;
  
  
  host
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;shop.company.com&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only requests for&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;shop.company.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;match.&lt;/p&gt;




&lt;h2&gt;
  
  
  path
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only URLs beginning with&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;match.&lt;/p&gt;




&lt;h2&gt;
  
  
  backend
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;backend&lt;/span&gt;

&lt;span class="s"&gt;↓&lt;/span&gt;

&lt;span class="s"&gt;payment-service&lt;/span&gt;

&lt;span class="s"&gt;↓&lt;/span&gt;

&lt;span class="m"&gt;80&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Traffic goes there.&lt;/p&gt;




&lt;h1&gt;
  
  
  Path-Based Routing
&lt;/h1&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;shop.company.com/payment

↓

payment-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;shop.company.com/order

↓

order-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;shop.company.com/user

↓

user-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One domain.&lt;/p&gt;

&lt;p&gt;Different paths.&lt;/p&gt;




&lt;h1&gt;
  
  
  Host-Based Routing
&lt;/h1&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment.company.com

↓

payment-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;order.company.com

↓

order-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;user.company.com

↓

user-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Different domains.&lt;/p&gt;

&lt;p&gt;Different Services.&lt;/p&gt;




&lt;h1&gt;
  
  
  PathType
&lt;/h1&gt;

&lt;p&gt;Three options:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Exact

Prefix

ImplementationSpecific
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Most common&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;pathType&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Prefix&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Matches&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/payment

/payment/123

/payment/create
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  TLS
&lt;/h1&gt;

&lt;p&gt;Ingress supports HTTPS.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;tls&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;hosts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;shop.company.com&lt;/span&gt;

  &lt;span class="na"&gt;secretName&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;tls-secret&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Certificate stored in Secret.&lt;/p&gt;

&lt;p&gt;Controller terminates HTTPS.&lt;/p&gt;




&lt;h1&gt;
  
  
  Request Flow
&lt;/h1&gt;

&lt;p&gt;User&lt;/p&gt;

&lt;p&gt;↓&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;shop.company.com/payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;AWS Load Balancer&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;NGINX Ingress Controller&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Ingress Rule&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;payment-service&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Payment Pods&lt;/p&gt;




&lt;h1&gt;
  
  
  Without Ingress
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

LB1

↓

payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

LB2

↓

order
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

LB3

↓

user
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  With Ingress
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

One Load Balancer

↓

NGINX Ingress

↓

Payment

↓

Order

↓

User
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Does Ingress Talk to Pods?
&lt;/h1&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;Flow&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ingress Controller

↓

Service

↓

Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Never&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ingress

↓

Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Difference
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Service
&lt;/h2&gt;

&lt;p&gt;Connects&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Service

↓

Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Ingress
&lt;/h2&gt;

&lt;p&gt;Connects&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

Service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Real AWS Production
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

Route53

↓

AWS ALB

↓

NGINX Ingress Controller

↓

Ingress

↓

Service

↓

Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Commands
&lt;/h1&gt;

&lt;p&gt;Create&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; ingress.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;List&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get ingress
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Short&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get ing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Describe&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl describe ingress ecommerce-ingress
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Delete&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl delete ingress ecommerce-ingress
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Common Mistakes
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Mistake 1
&lt;/h3&gt;

&lt;p&gt;Thinking Ingress replaces Service.&lt;/p&gt;

&lt;p&gt;Wrong.&lt;/p&gt;

&lt;p&gt;Ingress routes to Services.&lt;/p&gt;

&lt;p&gt;Services route to Pods.&lt;/p&gt;




&lt;h3&gt;
  
  
  Mistake 2
&lt;/h3&gt;

&lt;p&gt;Thinking Ingress itself handles traffic.&lt;/p&gt;

&lt;p&gt;Wrong.&lt;/p&gt;

&lt;p&gt;Ingress Controller handles traffic.&lt;/p&gt;




&lt;h3&gt;
  
  
  Mistake 3
&lt;/h3&gt;

&lt;p&gt;Creating Ingress without an Ingress Controller.&lt;/p&gt;

&lt;p&gt;Nothing works.&lt;/p&gt;

&lt;p&gt;Ingress rules exist, but no component reads them.&lt;/p&gt;




&lt;h1&gt;
  
  
  NGINX Ingress Controller
&lt;/h1&gt;

&lt;p&gt;NGINX runs inside Kubernetes.&lt;/p&gt;

&lt;p&gt;Responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Watches Ingress resources&lt;/li&gt;
&lt;li&gt;Generates NGINX configuration&lt;/li&gt;
&lt;li&gt;Reloads NGINX when rules change&lt;/li&gt;
&lt;li&gt;Routes HTTP/HTTPS requests&lt;/li&gt;
&lt;li&gt;Terminates TLS&lt;/li&gt;
&lt;li&gt;Supports rewrites, redirects, rate limiting, etc.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Ingress vs LoadBalancer
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Ingress&lt;/th&gt;
&lt;th&gt;LoadBalancer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;L4/L7&lt;/td&gt;
&lt;td&gt;L7 (HTTP/HTTPS)&lt;/td&gt;
&lt;td&gt;Usually L4 (TCP/UDP); some cloud LBs also support L7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One IP for many apps&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌ Usually one LB per Service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Path routing&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Host routing&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TLS termination&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;Depends on cloud/load balancer configuration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost&lt;/td&gt;
&lt;td&gt;Lower for many services&lt;/td&gt;
&lt;td&gt;Higher with many Services&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Ingress vs NodePort
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ingress&lt;/th&gt;
&lt;th&gt;NodePort&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Production&lt;/td&gt;
&lt;td&gt;Mostly testing/simple exposure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain support&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTTPS&lt;/td&gt;
&lt;td&gt;No native TLS termination&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Path routing&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Host routing&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;NodePort simply exposes a port on every node.&lt;/p&gt;




&lt;h1&gt;
  
  
  Ingress vs API Gateway
&lt;/h1&gt;

&lt;p&gt;This is asked in senior interviews.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ingress&lt;/th&gt;
&lt;th&gt;API Gateway&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Routes HTTP traffic&lt;/td&gt;
&lt;td&gt;Routes + authentication + rate limiting + quotas + transformations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kubernetes-native&lt;/td&gt;
&lt;td&gt;Application/API management layer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic routing&lt;/td&gt;
&lt;td&gt;Advanced API policies&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Examples of API Gateways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kong&lt;/li&gt;
&lt;li&gt;Apigee&lt;/li&gt;
&lt;li&gt;AWS API Gateway&lt;/li&gt;
&lt;li&gt;Azure API Management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A common architecture is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet
      │
AWS API Gateway
      │
NGINX Ingress
      │
Services
      │
Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Common Interview Questions
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Q1. What is Ingress?
&lt;/h3&gt;

&lt;p&gt;A Kubernetes API resource that defines HTTP/HTTPS routing rules for external traffic.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q2. Does Ingress receive traffic?
&lt;/h3&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Ingress Controller&lt;/strong&gt; receives traffic and applies the Ingress rules.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q3. Why do we need an Ingress Controller?
&lt;/h3&gt;

&lt;p&gt;Because Ingress is only a configuration object. Without a controller, the rules are never enforced.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q4. Can Ingress route directly to Pods?
&lt;/h3&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;It routes to &lt;strong&gt;Services&lt;/strong&gt;, and Services route to Pods.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q5. Difference between Service and Ingress?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Service:&lt;/strong&gt; Exposes Pods inside (or optionally outside) the cluster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ingress:&lt;/strong&gt; Provides HTTP/HTTPS routing from external clients to Services.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Q6. Why not expose every Service with a LoadBalancer?
&lt;/h3&gt;

&lt;p&gt;Each LoadBalancer typically provisions separate cloud infrastructure, increasing cost and management overhead. Ingress allows many Services to share one external entry point.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q7. Can Ingress handle HTTPS?
&lt;/h3&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;TLS certificates are typically stored in Kubernetes Secrets and used by the Ingress Controller.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q8. What is path-based routing?
&lt;/h3&gt;

&lt;p&gt;Different URL paths are routed to different backend Services.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/payment&lt;/code&gt; → &lt;code&gt;payment-service&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/orders&lt;/code&gt; → &lt;code&gt;order-service&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Q9. What is host-based routing?
&lt;/h3&gt;

&lt;p&gt;Different hostnames route to different Services.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;pay.company.com&lt;/code&gt; → &lt;code&gt;payment-service&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;orders.company.com&lt;/code&gt; → &lt;code&gt;order-service&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Q10. What is the production request flow?
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet
    │
Route53 / DNS
    │
Cloud Load Balancer (e.g., ALB)
    │
Ingress Controller
    │
Ingress Rules
    │
Service
    │
Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Kubernetes Architecture So Far
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Namespace
      │
Labels
      │
Deployment
      │
ReplicaSet
      │
Pods
      │
Service
      │
CoreDNS
      │
Ingress
      │
Ingress Controller
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  What's Next?
&lt;/h1&gt;

&lt;h1&gt;
  
  
  The next topic should be &lt;strong&gt;StatefulSet&lt;/strong&gt;, because it explains why databases like &lt;strong&gt;MySQL, PostgreSQL, MongoDB, Kafka, Cassandra, Redis Cluster, and ZooKeeper&lt;/strong&gt; are &lt;strong&gt;not&lt;/strong&gt; typically deployed with a Deployment, and how Kubernetes provides stable identities and storage for stateful applications.
&lt;/h1&gt;

&lt;p&gt;Excellent. Now we move to one of the &lt;strong&gt;most misunderstood Kubernetes topics&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Senior interview question:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;"Why can't we run MySQL using a Deployment?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you answer this properly, the interviewer immediately knows you understand Kubernetes architecture.&lt;/p&gt;




&lt;h1&gt;
  
  
  Topic 9 — StatefulSet (Master Level)
&lt;/h1&gt;




&lt;h1&gt;
  
  
  First Understand the Problem
&lt;/h1&gt;

&lt;p&gt;Suppose you deploy MySQL using a Deployment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Deployment
      │
ReplicaSet
      │
mysql-pod-abc123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything is working.&lt;/p&gt;

&lt;p&gt;Now the Pod crashes.&lt;/p&gt;

&lt;p&gt;ReplicaSet creates another Pod.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Old Pod

mysql-pod-abc123

↓

Deleted

↓

New Pod

mysql-pod-xyz789
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Looks okay.&lt;/p&gt;

&lt;p&gt;But...&lt;/p&gt;




&lt;h1&gt;
  
  
  The Problem
&lt;/h1&gt;

&lt;p&gt;The new Pod has&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New Name&lt;/li&gt;
&lt;li&gt;New IP&lt;/li&gt;
&lt;li&gt;New Identity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a Spring Boot application, that's fine.&lt;/p&gt;

&lt;p&gt;For MySQL?&lt;/p&gt;

&lt;p&gt;❌ Not fine.&lt;/p&gt;

&lt;p&gt;Databases need a &lt;strong&gt;stable identity&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why?
&lt;/h1&gt;

&lt;p&gt;Suppose you have MySQL Replication.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Master

↓

Replica1

↓

Replica2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replica1 knows the Master as&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the Master suddenly becomes&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-abc123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replication breaks.&lt;/p&gt;




&lt;h1&gt;
  
  
  Deployment vs StatefulSet
&lt;/h1&gt;

&lt;p&gt;Deployment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-abc123

payment-def456

payment-ghi789
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Random names.&lt;/p&gt;




&lt;p&gt;StatefulSet&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-0

mysql-1

mysql-2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stable names.&lt;/p&gt;

&lt;p&gt;Always.&lt;/p&gt;




&lt;h1&gt;
  
  
  What is StatefulSet?
&lt;/h1&gt;

&lt;p&gt;A StatefulSet is a Kubernetes controller used for applications that require:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stable Pod names&lt;/li&gt;
&lt;li&gt;Stable storage&lt;/li&gt;
&lt;li&gt;Ordered deployment&lt;/li&gt;
&lt;li&gt;Ordered scaling&lt;/li&gt;
&lt;li&gt;Ordered termination&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examples&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MySQL&lt;/li&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;MongoDB Replica Set&lt;/li&gt;
&lt;li&gt;Cassandra&lt;/li&gt;
&lt;li&gt;Kafka&lt;/li&gt;
&lt;li&gt;ZooKeeper&lt;/li&gt;
&lt;li&gt;Elasticsearch (often)&lt;/li&gt;
&lt;li&gt;Redis Cluster&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Biggest Interview Difference
&lt;/h1&gt;

&lt;p&gt;Deployment&lt;/p&gt;

&lt;p&gt;Pods are &lt;strong&gt;replaceable&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;StatefulSet&lt;/p&gt;

&lt;p&gt;Pods have &lt;strong&gt;identity&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Stable Pod Name
&lt;/h1&gt;

&lt;p&gt;Deployment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-asd987
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-hjk456
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;StatefulSet&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same name.&lt;/p&gt;




&lt;h1&gt;
  
  
  Stable DNS
&lt;/h1&gt;

&lt;p&gt;Deployment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One Service.&lt;/p&gt;




&lt;p&gt;StatefulSet&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-0.mysql

mysql-1.mysql

mysql-2.mysql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each Pod gets its own DNS name.&lt;/p&gt;




&lt;h1&gt;
  
  
  Stable Storage
&lt;/h1&gt;

&lt;p&gt;Deployment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod Dies

↓

Volume may be replaced depending on configuration
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;StatefulSet&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-0

↓

PVC

↓

Persistent Volume
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Same PVC&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Same Data&lt;/p&gt;




&lt;h1&gt;
  
  
  Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;StatefulSet

↓

Headless Service

↓

mysql-0

mysql-1

mysql-2

↓

Persistent Volume Claims

↓

Persistent Volumes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice:&lt;/p&gt;

&lt;p&gt;StatefulSets almost always use a &lt;strong&gt;Headless Service&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Headless Service?
&lt;/h1&gt;

&lt;p&gt;Normal Service&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-service

↓

10.96.10.5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One virtual IP.&lt;/p&gt;




&lt;p&gt;Headless Service&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;clusterIP&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;None&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Returns&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-0.mysql

mysql-1.mysql

mysql-2.mysql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each Pod individually.&lt;/p&gt;

&lt;p&gt;Databases need this.&lt;/p&gt;




&lt;h1&gt;
  
  
  Ordered Deployment
&lt;/h1&gt;

&lt;p&gt;Deployment&lt;/p&gt;

&lt;p&gt;Creates Pods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1

2

3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No guaranteed order.&lt;/p&gt;




&lt;p&gt;StatefulSet&lt;/p&gt;

&lt;p&gt;Creates&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-0

↓

mysql-1

↓

mysql-2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sequential.&lt;/p&gt;




&lt;h1&gt;
  
  
  Ordered Deletion
&lt;/h1&gt;

&lt;p&gt;Delete StatefulSet.&lt;/p&gt;

&lt;p&gt;Pods terminate&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-2

↓

mysql-1

↓

mysql-0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reverse order.&lt;/p&gt;

&lt;p&gt;Useful for clustered databases.&lt;/p&gt;




&lt;h1&gt;
  
  
  Ordered Scaling
&lt;/h1&gt;

&lt;p&gt;Current&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-0

mysql-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Scale to&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creates&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only after previous Pods are ready.&lt;/p&gt;




&lt;h1&gt;
  
  
  StatefulSet YAML
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;apps/v1&lt;/span&gt;

&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;StatefulSet&lt;/span&gt;

&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql&lt;/span&gt;

&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;serviceName&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql&lt;/span&gt;

  &lt;span class="na"&gt;replicas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;

  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

      &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql&lt;/span&gt;

  &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

      &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

        &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql&lt;/span&gt;

    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

      &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql&lt;/span&gt;

        &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql:8&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Very Important Field
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;serviceName&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not optional.&lt;/p&gt;

&lt;p&gt;StatefulSet uses it to create stable DNS names.&lt;/p&gt;




&lt;h1&gt;
  
  
  Persistent Volume Claims
&lt;/h1&gt;

&lt;p&gt;Each Pod gets its own PVC.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-0

↓

mysql-pvc-0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-1

↓

mysql-pvc-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-2

↓

mysql-pvc-2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each Pod owns its own storage.&lt;/p&gt;




&lt;h1&gt;
  
  
  Pod Restart
&lt;/h1&gt;

&lt;p&gt;Pod crashes.&lt;/p&gt;

&lt;p&gt;Deployment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-abc123

↓

payment-xyz111
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Different identity.&lt;/p&gt;




&lt;p&gt;StatefulSet&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-0

↓

mysql-0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same identity.&lt;/p&gt;

&lt;p&gt;Same storage.&lt;/p&gt;




&lt;h1&gt;
  
  
  Scaling
&lt;/h1&gt;

&lt;p&gt;Current&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-0

mysql-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Scale&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;replicas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creates&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-2

mysql-3

mysql-4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One at a time.&lt;/p&gt;




&lt;h1&gt;
  
  
  Can StatefulSet Load Balance?
&lt;/h1&gt;

&lt;p&gt;Usually&lt;/p&gt;

&lt;p&gt;Applications use&lt;/p&gt;

&lt;p&gt;Headless Service&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Individual Pods.&lt;/p&gt;

&lt;p&gt;Sometimes another normal Service is added for client traffic.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real Production Example
&lt;/h1&gt;

&lt;p&gt;Kafka Cluster&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kafka-0

↓

Broker1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kafka-1

↓

Broker2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kafka-2

↓

Broker3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every broker has&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stable hostname&lt;/li&gt;
&lt;li&gt;Stable storage&lt;/li&gt;
&lt;li&gt;Stable identity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Exactly why StatefulSet exists.&lt;/p&gt;




&lt;h1&gt;
  
  
  MySQL Example
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-0

Master
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-1

Replica
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-2

Replica
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replication depends on stable identities.&lt;/p&gt;




&lt;h1&gt;
  
  
  StatefulSet vs Deployment
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Deployment&lt;/th&gt;
&lt;th&gt;StatefulSet&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pod Names&lt;/td&gt;
&lt;td&gt;Random suffix&lt;/td&gt;
&lt;td&gt;Stable ordinal (&lt;code&gt;app-0&lt;/code&gt;, &lt;code&gt;app-1&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pod Identity&lt;/td&gt;
&lt;td&gt;Temporary&lt;/td&gt;
&lt;td&gt;Stable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;Often shared or recreated depending on setup&lt;/td&gt;
&lt;td&gt;Dedicated PVC per Pod&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ordered Start&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ordered Delete&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Headless Service&lt;/td&gt;
&lt;td&gt;Not required&lt;/td&gt;
&lt;td&gt;Usually required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Databases&lt;/td&gt;
&lt;td&gt;❌ Usually not ideal&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  StatefulSet vs ReplicaSet
&lt;/h1&gt;

&lt;p&gt;ReplicaSet&lt;/p&gt;

&lt;p&gt;Keeps Pod count.&lt;/p&gt;

&lt;p&gt;StatefulSet&lt;/p&gt;

&lt;p&gt;Keeps&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pod count&lt;/li&gt;
&lt;li&gt;Pod identity&lt;/li&gt;
&lt;li&gt;Storage&lt;/li&gt;
&lt;li&gt;Ordering&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Interview Scenario
&lt;/h1&gt;

&lt;p&gt;Interviewer&lt;/p&gt;

&lt;p&gt;Why don't we deploy MySQL using Deployment?&lt;/p&gt;

&lt;p&gt;Correct Answer&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Because MySQL requires stable identities, stable storage, and predictable networking. Deployments recreate Pods with new identities, whereas StatefulSets preserve Pod names, dedicated storage, and ordered operations, which are essential for stateful workloads.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Commands
&lt;/h1&gt;

&lt;p&gt;Create&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; statefulset.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;View&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get statefulsets
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Short&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get sts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Describe&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl describe sts mysql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Scale&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl scale sts mysql &lt;span class="nt"&gt;--replicas&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Delete&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl delete sts mysql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Common Interview Questions
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Q1. What is StatefulSet?
&lt;/h2&gt;

&lt;p&gt;A Kubernetes controller for stateful applications requiring stable identities, storage, and ordered operations.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q2. Why use StatefulSet instead of Deployment?
&lt;/h2&gt;

&lt;p&gt;Because stateful applications need stable Pod names, stable storage, and ordered startup/shutdown.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q3. Does StatefulSet require a Headless Service?
&lt;/h2&gt;

&lt;p&gt;Typically yes. A Headless Service provides stable DNS names for each Pod.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q4. What is a Headless Service?
&lt;/h2&gt;

&lt;p&gt;A Service with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;clusterIP&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;None&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It doesn't allocate a virtual ClusterIP. Instead, DNS resolves directly to the individual Pod IPs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q5. Why is ordered startup important?
&lt;/h2&gt;

&lt;p&gt;Applications like Kafka or database clusters may require one node to be ready before another joins the cluster.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q6. What happens if &lt;code&gt;mysql-1&lt;/code&gt; crashes?
&lt;/h2&gt;

&lt;p&gt;Kubernetes recreates it as &lt;code&gt;mysql-1&lt;/code&gt; and reattaches its dedicated PersistentVolumeClaim.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q7. Does each StatefulSet Pod get its own PVC?
&lt;/h2&gt;

&lt;p&gt;Yes. Each Pod receives a separate PersistentVolumeClaim, typically created from a &lt;code&gt;volumeClaimTemplates&lt;/code&gt; section.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q8. Can StatefulSet perform rolling updates?
&lt;/h2&gt;

&lt;p&gt;Yes. StatefulSets support rolling updates while respecting Pod ordering and identity.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q9. Which applications commonly use StatefulSets?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;MySQL&lt;/li&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;li&gt;Kafka&lt;/li&gt;
&lt;li&gt;Cassandra&lt;/li&gt;
&lt;li&gt;ZooKeeper&lt;/li&gt;
&lt;li&gt;Redis Cluster&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Q10. Can we run Spring Boot applications using StatefulSet?
&lt;/h2&gt;

&lt;p&gt;Technically yes, but stateless Spring Boot applications are normally deployed using &lt;strong&gt;Deployments&lt;/strong&gt; because they don't require stable identities or dedicated storage.&lt;/p&gt;




&lt;h1&gt;
  
  
  Complete Kubernetes Architecture So Far
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Namespace
      │
Labels
      │
Deployment ─────► Stateless Apps
      │
ReplicaSet
      │
Pods
      │
Service
      │
CoreDNS
      │
Ingress
      │
Ingress Controller

StatefulSet ────► Databases / Kafka / ZooKeeper
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Real Production Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet
      │
Route53
      │
AWS ALB
      │
NGINX Ingress Controller
      │
Ingress
      │
Services
      │
├── Deployment
│      │
│   ReplicaSet
│      │
│   Spring Boot Pods
│
└── StatefulSet
       │
   MySQL-0
   MySQL-1
   MySQL-2
       │
 Persistent Volumes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Next Topic
&lt;/h1&gt;

&lt;p&gt;The next topic should be &lt;strong&gt;DaemonSet&lt;/strong&gt;, because it answers another classic interview question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"How does Prometheus Node Exporter, Fluent Bit, Filebeat, or Datadog Agent automatically run on every Kubernetes node?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  DaemonSets are the standard solution for running one Pod per node across the cluster.
&lt;/h1&gt;

&lt;p&gt;Excellent. Now we reach another &lt;strong&gt;very frequently asked interview topic&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Almost every DevOps interview includes this question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"How does Fluent Bit, Filebeat, Datadog Agent, Node Exporter, or Falco automatically run on every Kubernetes node?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The answer is &lt;strong&gt;DaemonSet&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Topic 10 — DaemonSet (Master Level)
&lt;/h1&gt;




&lt;h1&gt;
  
  
  First Understand the Problem
&lt;/h1&gt;

&lt;p&gt;Suppose your Kubernetes cluster has&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cluster

Node-1

Node-2

Node-3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You install &lt;strong&gt;Fluent Bit&lt;/strong&gt; to collect logs.&lt;/p&gt;

&lt;p&gt;Question:&lt;/p&gt;

&lt;p&gt;Should you manually create&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Fluent Bit

Node-1

Fluent Bit

Node-2

Fluent Bit

Node-3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;Imagine a cluster with&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;500 Nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Impossible.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Solution
&lt;/h1&gt;

&lt;p&gt;DaemonSet.&lt;/p&gt;

&lt;p&gt;DaemonSet automatically ensures&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Exactly one Pod runs on every eligible Node.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  What is DaemonSet?
&lt;/h1&gt;

&lt;p&gt;A DaemonSet is a Kubernetes controller that ensures a copy of a Pod runs on &lt;strong&gt;every eligible Node&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Whenever&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New Node joins&lt;/li&gt;
&lt;li&gt;Node removed&lt;/li&gt;
&lt;li&gt;Node restarted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DaemonSet automatically adjusts Pods.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real Company Example
&lt;/h1&gt;

&lt;p&gt;Amazon EKS Cluster&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cluster

Node-1

Node-2

Node-3

Node-4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DaemonSet&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Creates&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-1

Fluent Bit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-2

Fluent Bit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-3

Fluent Bit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-4

Fluent Bit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One Pod per Node.&lt;/p&gt;




&lt;h1&gt;
  
  
  Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Cluster

├── Node-1
│      └── Fluent Bit
│
├── Node-2
│      └── Fluent Bit
│
├── Node-3
│      └── Fluent Bit
│
└── Node-4
       └── Fluent Bit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Why Not Deployment?
&lt;/h1&gt;

&lt;p&gt;Deployment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;replicas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Suppose&lt;/p&gt;

&lt;p&gt;Cluster&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10 Nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deployment&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Creates only&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3 Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not enough.&lt;/p&gt;

&lt;p&gt;Some Nodes have no logging agent.&lt;/p&gt;




&lt;p&gt;DaemonSet&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10 Nodes

↓

10 Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perfect.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Happens When New Node Joins?
&lt;/h1&gt;

&lt;p&gt;Current&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node1

Node2

Node3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DaemonSet&lt;/p&gt;

&lt;p&gt;↓&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FluentBit

FluentBit

FluentBit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now&lt;/p&gt;

&lt;p&gt;New Node&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Immediately&lt;/p&gt;

&lt;p&gt;DaemonSet creates&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FluentBit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;on Node4.&lt;/p&gt;

&lt;p&gt;No manual work.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Happens If Node Removed?
&lt;/h1&gt;

&lt;p&gt;Current&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node1

Node2

Node3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Node3 deleted.&lt;/p&gt;

&lt;p&gt;DaemonSet removes Pod automatically because the Node no longer exists.&lt;/p&gt;




&lt;h1&gt;
  
  
  DaemonSet YAML
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;apps/v1&lt;/span&gt;

&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;DaemonSet&lt;/span&gt;

&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;fluent-bit&lt;/span&gt;

&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

      &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;fluent-bit&lt;/span&gt;

  &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

      &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

        &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;fluent-bit&lt;/span&gt;

    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

      &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;fluent-bit&lt;/span&gt;

        &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;fluent/fluent-bit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice:&lt;/p&gt;

&lt;p&gt;No&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;replicas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because DaemonSet decides the number of Pods based on the number of eligible Nodes.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real Production Example
&lt;/h1&gt;

&lt;p&gt;Node&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node1

Pods

Spring Boot

Redis

Kafka
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DaemonSet Pod&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Fluent Bit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Collects logs&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;ElasticSearch&lt;/p&gt;




&lt;h1&gt;
  
  
  Monitoring Example
&lt;/h1&gt;

&lt;p&gt;Prometheus&lt;/p&gt;

&lt;p&gt;Uses&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node Exporter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Need&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;One per Node
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DaemonSet&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Perfect.&lt;/p&gt;




&lt;h1&gt;
  
  
  Security Example
&lt;/h1&gt;

&lt;p&gt;Falco&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Needs&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Every Node
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DaemonSet.&lt;/p&gt;




&lt;h1&gt;
  
  
  Antivirus Example
&lt;/h1&gt;

&lt;p&gt;CrowdStrike Agent&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Every Node&lt;/p&gt;

&lt;p&gt;DaemonSet.&lt;/p&gt;




&lt;h1&gt;
  
  
  Networking Example
&lt;/h1&gt;

&lt;p&gt;Many Kubernetes CNI plugins (such as Calico and Cilium agents) run a DaemonSet so that each node has the required networking components.&lt;/p&gt;




&lt;h1&gt;
  
  
  Can DaemonSet Run on Master Nodes?
&lt;/h1&gt;

&lt;p&gt;Normally&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;Control plane nodes are often tainted to prevent ordinary workloads.&lt;/p&gt;

&lt;p&gt;If needed&lt;/p&gt;

&lt;p&gt;Use&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;tolerations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to allow the DaemonSet to run there.&lt;/p&gt;




&lt;h1&gt;
  
  
  Node Selector
&lt;/h1&gt;

&lt;p&gt;Suppose&lt;/p&gt;

&lt;p&gt;GPU Nodes&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node1

GPU=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node2

GPU=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node3

GPU=false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DaemonSet&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;nodeSelector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;gpu&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;true"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Runs only on GPU nodes.&lt;/p&gt;




&lt;h1&gt;
  
  
  Taints &amp;amp; Tolerations
&lt;/h1&gt;

&lt;p&gt;Suppose&lt;/p&gt;

&lt;p&gt;Master Node&lt;/p&gt;

&lt;p&gt;Has taint&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NoSchedule
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DaemonSet won't run.&lt;/p&gt;

&lt;p&gt;Need&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;tolerations&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then it runs.&lt;/p&gt;




&lt;h1&gt;
  
  
  DaemonSet Update
&lt;/h1&gt;

&lt;p&gt;Suppose&lt;/p&gt;

&lt;p&gt;Current&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FluentBit:v1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FluentBit:v2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DaemonSet performs a rolling update by default, updating Pods on nodes in a controlled manner.&lt;/p&gt;




&lt;h1&gt;
  
  
  Commands
&lt;/h1&gt;

&lt;p&gt;Create&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; daemonset.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;View&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get daemonsets
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Short&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get ds
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Describe&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl describe ds fluent-bit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Delete&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl delete ds fluent-bit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Deployment vs DaemonSet
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Deployment&lt;/th&gt;
&lt;th&gt;DaemonSet&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Replica Count&lt;/td&gt;
&lt;td&gt;Fixed&lt;/td&gt;
&lt;td&gt;One Pod per eligible Node&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;New Node&lt;/td&gt;
&lt;td&gt;Nothing happens automatically&lt;/td&gt;
&lt;td&gt;New Pod created automatically&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use Case&lt;/td&gt;
&lt;td&gt;Applications&lt;/td&gt;
&lt;td&gt;Node-level agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Replicas Field&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  DaemonSet vs StatefulSet
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;DaemonSet&lt;/th&gt;
&lt;th&gt;StatefulSet&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;One Pod per Node&lt;/td&gt;
&lt;td&gt;Stable identity per Pod&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Node-based scheduling&lt;/td&gt;
&lt;td&gt;Identity-based scheduling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logging, Monitoring&lt;/td&gt;
&lt;td&gt;Databases, Kafka&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  DaemonSet vs ReplicaSet
&lt;/h1&gt;

&lt;p&gt;ReplicaSet&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Need

5 Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DaemonSet&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Need

Every Node
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Completely different goals.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real AWS Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EKS Cluster

Node1

Spring Boot

Redis

Fluent Bit

Node Exporter

Datadog Agent

--------------------------------

Node2

Spring Boot

Kafka

Fluent Bit

Node Exporter

Datadog Agent

--------------------------------

Node3

MySQL

Fluent Bit

Node Exporter

Datadog Agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice&lt;/p&gt;

&lt;p&gt;Monitoring Pods&lt;/p&gt;

&lt;p&gt;Every Node.&lt;/p&gt;




&lt;h1&gt;
  
  
  Common Interview Questions
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Q1. What is DaemonSet?
&lt;/h2&gt;

&lt;p&gt;A Kubernetes controller that ensures one Pod runs on every eligible Node.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q2. Does DaemonSet have replicas?
&lt;/h2&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;The number of Pods is determined by the number of eligible Nodes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q3. What happens when a new Node joins?
&lt;/h2&gt;

&lt;p&gt;DaemonSet automatically schedules its Pod onto the new eligible Node.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q4. Why use DaemonSet instead of Deployment?
&lt;/h2&gt;

&lt;p&gt;Because node-level agents (logging, monitoring, networking, security) must run on every Node, not just a fixed number of replicas.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q5. Can DaemonSet run on master/control-plane nodes?
&lt;/h2&gt;

&lt;p&gt;Yes, if the DaemonSet tolerates the control-plane node taints.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q6. Name some real-world DaemonSet applications.
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fluent Bit / Fluentd&lt;/li&gt;
&lt;li&gt;Filebeat&lt;/li&gt;
&lt;li&gt;Prometheus Node Exporter&lt;/li&gt;
&lt;li&gt;Datadog Agent&lt;/li&gt;
&lt;li&gt;Falco&lt;/li&gt;
&lt;li&gt;Calico Node&lt;/li&gt;
&lt;li&gt;Cilium Agent&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Q7. What happens if a Node is deleted?
&lt;/h2&gt;

&lt;p&gt;The DaemonSet Pod on that Node is removed because the Node no longer exists.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q8. Can DaemonSet use rolling updates?
&lt;/h2&gt;

&lt;p&gt;Yes. DaemonSets support rolling updates by default.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q9. Can DaemonSet run only on specific Nodes?
&lt;/h2&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nodeSelector&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nodeAffinity&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tolerations&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Q10. Can multiple DaemonSets run on one Node?
&lt;/h2&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node

↓

Fluent Bit

↓

Node Exporter

↓

Datadog Agent

↓

Falco
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each DaemonSet manages its own Pod.&lt;/p&gt;




&lt;h1&gt;
  
  
  Memory Trick
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Controller&lt;/th&gt;
&lt;th&gt;Think Of&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;td&gt;"Run N application Pods"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ReplicaSet&lt;/td&gt;
&lt;td&gt;"Keep N Pods alive"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;StatefulSet&lt;/td&gt;
&lt;td&gt;"Stable identity &amp;amp; storage"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DaemonSet&lt;/td&gt;
&lt;td&gt;"One Pod per Node"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Job&lt;/td&gt;
&lt;td&gt;"Run once and finish" &lt;em&gt;(next topic)&lt;/em&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CronJob&lt;/td&gt;
&lt;td&gt;"Run on a schedule" &lt;em&gt;(after Job)&lt;/em&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Kubernetes Architecture So Far
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Namespace
      │
Labels
      │
Deployment ─────────► Spring Boot Apps
      │
ReplicaSet
      │
Pods
      │
Service
      │
CoreDNS
      │
Ingress
      │
Ingress Controller
      │
StatefulSet ────────► MySQL, Kafka
      │
DaemonSet ──────────► Fluent Bit, Node Exporter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Next Topic
&lt;/h1&gt;

&lt;p&gt;The next topic is &lt;strong&gt;Jobs &amp;amp; CronJobs&lt;/strong&gt;, where you'll learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why not every workload should run forever.&lt;/li&gt;
&lt;li&gt;How Kubernetes executes one-time tasks.&lt;/li&gt;
&lt;li&gt;How scheduled jobs (like backups and reports) work.&lt;/li&gt;
&lt;li&gt;The differences between &lt;strong&gt;Deployment vs Job vs CronJob&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  * Real production examples such as database backups, report generation, ETL jobs, and cleanup tasks.
&lt;/h1&gt;

&lt;p&gt;Excellent. Now we move to another topic that is &lt;strong&gt;very common in real production&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Interview Question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Would you deploy a database backup script using a Deployment?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Correct Answer:&lt;/strong&gt; No. Use a &lt;strong&gt;Job&lt;/strong&gt; or &lt;strong&gt;CronJob&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This topic is extremely important because many beginners misuse Deployments for one-time tasks.&lt;/p&gt;




&lt;h1&gt;
  
  
  Topic 11 — Jobs &amp;amp; CronJobs (Master Level)
&lt;/h1&gt;




&lt;h1&gt;
  
  
  First Understand the Problem
&lt;/h1&gt;

&lt;p&gt;Suppose your company needs to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Take a MySQL backup&lt;/li&gt;
&lt;li&gt;Generate a monthly report&lt;/li&gt;
&lt;li&gt;Send salary emails&lt;/li&gt;
&lt;li&gt;Run an ETL pipeline&lt;/li&gt;
&lt;li&gt;Clean temporary files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Question:&lt;/p&gt;

&lt;p&gt;Should these applications run forever?&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Database Backup

↓

Finished
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Should Kubernetes restart it forever?&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;Deployment is the wrong choice.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Deployment is Wrong
&lt;/h1&gt;

&lt;p&gt;Deployment assumes&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Application

↓

Should always be Running
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If container exits,&lt;/p&gt;

&lt;p&gt;ReplicaSet creates another Pod.&lt;/p&gt;

&lt;p&gt;Again&lt;/p&gt;

&lt;p&gt;Again&lt;/p&gt;

&lt;p&gt;Again&lt;/p&gt;

&lt;p&gt;Forever.&lt;/p&gt;




&lt;p&gt;Suppose&lt;/p&gt;

&lt;p&gt;Backup completed successfully.&lt;/p&gt;

&lt;p&gt;Container exits.&lt;/p&gt;

&lt;p&gt;Deployment thinks&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod Died

↓

Create New Pod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Backup runs again.&lt;/p&gt;

&lt;p&gt;Wrong.&lt;/p&gt;




&lt;h1&gt;
  
  
  Solution
&lt;/h1&gt;

&lt;p&gt;Use&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Job
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  What is a Job?
&lt;/h1&gt;

&lt;p&gt;A Job is a Kubernetes controller that runs a task until it completes successfully.&lt;/p&gt;

&lt;p&gt;Once completed,&lt;/p&gt;

&lt;p&gt;Kubernetes considers the Job successful and &lt;strong&gt;does not restart it&lt;/strong&gt; (unless retry policies require it).&lt;/p&gt;




&lt;h1&gt;
  
  
  Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Job

↓

Pod

↓

Run Script

↓

Exit

↓

Completed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Real Company Example
&lt;/h1&gt;

&lt;p&gt;Nightly Database Backup&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Job

↓

Backup MySQL

↓

Upload to S3

↓

Exit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finished.&lt;/p&gt;




&lt;h1&gt;
  
  
  Job YAML
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;batch/v1&lt;/span&gt;

&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Job&lt;/span&gt;

&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql-backup&lt;/span&gt;

&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

      &lt;span class="na"&gt;restartPolicy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Never&lt;/span&gt;

      &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;backup&lt;/span&gt;

        &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql-backup:latest&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;restartPolicy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Never&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Pod won't restart itself. If the Pod fails, the &lt;strong&gt;Job controller&lt;/strong&gt; decides whether to create a replacement Pod based on settings like &lt;code&gt;backoffLimit&lt;/code&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Job Lifecycle
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Job

↓

Pod Created

↓

Script Executes

↓

Success

↓

Completed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Done.&lt;/p&gt;




&lt;h1&gt;
  
  
  What If Job Fails?
&lt;/h1&gt;

&lt;p&gt;Suppose&lt;/p&gt;

&lt;p&gt;Backup failed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Exit Code = 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Job retries.&lt;/p&gt;

&lt;p&gt;Default retry behavior is controlled by &lt;code&gt;backoffLimit&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;backoffLimit&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning:&lt;/p&gt;

&lt;p&gt;Retry up to 4 times before marking the Job as failed.&lt;/p&gt;




&lt;h1&gt;
  
  
  Job Commands
&lt;/h1&gt;

&lt;p&gt;Create&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; job.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;View&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get &lt;span class="nb"&gt;jobs&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Describe&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl describe job mysql-backup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Logs&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl logs job/mysql-backup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Delete&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl delete job mysql-backup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Parallel Jobs
&lt;/h1&gt;

&lt;p&gt;Suppose&lt;/p&gt;

&lt;p&gt;Need&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;100 Images

↓

Resize
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One Pod&lt;/p&gt;

&lt;p&gt;Too slow.&lt;/p&gt;

&lt;p&gt;Use&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;parallelism&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;

&lt;span class="na"&gt;completions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning&lt;/p&gt;

&lt;p&gt;10 Pods run simultaneously.&lt;/p&gt;

&lt;p&gt;Need 100 successful completions.&lt;/p&gt;




&lt;h1&gt;
  
  
  Completion Mode
&lt;/h1&gt;

&lt;p&gt;Suppose&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;completions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Need&lt;/p&gt;

&lt;p&gt;5 successful runs.&lt;/p&gt;

&lt;p&gt;Even if some Pods fail,&lt;/p&gt;

&lt;p&gt;Job continues until&lt;/p&gt;

&lt;p&gt;5 successful completions occur or it exceeds retry limits.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real Example
&lt;/h1&gt;

&lt;p&gt;ETL Pipeline&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Read CSV

↓

Transform

↓

Load Database

↓

Finished
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perfect Job.&lt;/p&gt;




&lt;h1&gt;
  
  
  What is CronJob?
&lt;/h1&gt;

&lt;p&gt;Suppose&lt;/p&gt;

&lt;p&gt;Need backup&lt;/p&gt;

&lt;p&gt;Every day&lt;/p&gt;

&lt;p&gt;2 AM.&lt;/p&gt;

&lt;p&gt;Should engineer wake up daily?&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;Use&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CronJob
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  CronJob = Scheduler
&lt;/h1&gt;

&lt;p&gt;CronJob creates Jobs according to a schedule.&lt;/p&gt;

&lt;p&gt;Architecture&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CronJob

↓

Job

↓

Pod

↓

Finished
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Real Company Example
&lt;/h1&gt;

&lt;p&gt;Amazon&lt;/p&gt;

&lt;p&gt;Every Night&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2 AM

↓

Backup Database

↓

Upload S3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CronJob.&lt;/p&gt;




&lt;h1&gt;
  
  
  CronJob YAML
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;batch/v1&lt;/span&gt;

&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;CronJob&lt;/span&gt;

&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;backup&lt;/span&gt;

&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;schedule&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;2&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*"&lt;/span&gt;

  &lt;span class="na"&gt;jobTemplate&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

      &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

        &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

          &lt;span class="na"&gt;restartPolicy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Never&lt;/span&gt;

          &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;backup&lt;/span&gt;

            &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;backup-image&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Cron Schedule
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* * * * *

│ │ │ │ │

│ │ │ │ Day of Week

│ │ │ Month

│ │ Day of Month

│ Hour

Minute
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Examples
&lt;/h1&gt;

&lt;p&gt;Every Minute&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* * * * *
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every Hour&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0 * * * *
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Daily 2 AM&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0 2 * * *
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every Sunday&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0 0 * * 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every Monday 9 AM&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0 9 * * 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Production Examples
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Backup
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Daily 2 AM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Report Generation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Monthly
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Cleanup Logs
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Every Midnight
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Delete Temp Files
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Every Hour
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Send Salary Emails
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1st of Every Month
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Job vs CronJob
&lt;/h1&gt;

&lt;p&gt;Job&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Run Once
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CronJob&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Run Repeatedly
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Simple.&lt;/p&gt;




&lt;h1&gt;
  
  
  Deployment vs Job
&lt;/h1&gt;

&lt;p&gt;Deployment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Run Forever
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Job&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Run Once

↓

Exit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Job vs StatefulSet
&lt;/h1&gt;

&lt;p&gt;StatefulSet&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Database

Runs Forever
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Job&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Backup Database

Runs Once
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  CronJob Flow
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2 AM

↓

CronJob

↓

Job

↓

Pod

↓

Backup

↓

Exit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next day&lt;/p&gt;

&lt;p&gt;Again.&lt;/p&gt;




&lt;h1&gt;
  
  
  Useful Fields
&lt;/h1&gt;

&lt;h2&gt;
  
  
  successfulJobsHistoryLimit
&lt;/h2&gt;

&lt;p&gt;Keep only a certain number of successful Jobs.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;successfulJobsHistoryLimit&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  failedJobsHistoryLimit
&lt;/h2&gt;

&lt;p&gt;Keep only recent failed Jobs.&lt;/p&gt;




&lt;h2&gt;
  
  
  concurrencyPolicy
&lt;/h2&gt;

&lt;p&gt;Controls overlapping runs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Allow (default)
&lt;/h3&gt;

&lt;p&gt;New Job starts even if previous one is still running.&lt;/p&gt;




&lt;h3&gt;
  
  
  Forbid
&lt;/h3&gt;

&lt;p&gt;If previous Job is running,&lt;/p&gt;

&lt;p&gt;Don't start another.&lt;/p&gt;

&lt;p&gt;Useful for backups.&lt;/p&gt;




&lt;h3&gt;
  
  
  Replace
&lt;/h3&gt;

&lt;p&gt;Stop old Job.&lt;/p&gt;

&lt;p&gt;Start new Job.&lt;/p&gt;




&lt;h1&gt;
  
  
  Common Interview Questions
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Q1. What is Job?
&lt;/h2&gt;

&lt;p&gt;A Kubernetes controller that runs a task until it completes successfully.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q2. Difference between Deployment and Job?
&lt;/h2&gt;

&lt;p&gt;Deployment keeps Pods running continuously.&lt;/p&gt;

&lt;p&gt;Job runs until completion and then stops.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q3. Difference between Job and CronJob?
&lt;/h2&gt;

&lt;p&gt;Job executes once.&lt;/p&gt;

&lt;p&gt;CronJob schedules Jobs repeatedly based on a cron expression.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q4. Can Job retry after failure?
&lt;/h2&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Controlled by&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;backoffLimit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Q5. What is &lt;code&gt;parallelism&lt;/code&gt;?
&lt;/h2&gt;

&lt;p&gt;The number of Pods that can run simultaneously for a Job.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q6. What is &lt;code&gt;completions&lt;/code&gt;?
&lt;/h2&gt;

&lt;p&gt;The total number of successful Pod completions required before the Job is considered complete.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q7. What is &lt;code&gt;restartPolicy&lt;/code&gt; in a Job?
&lt;/h2&gt;

&lt;p&gt;Usually &lt;code&gt;Never&lt;/code&gt; or &lt;code&gt;OnFailure&lt;/code&gt;. &lt;code&gt;Always&lt;/code&gt; is not supported for Job Pods.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q8. Give real examples of Jobs.
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Database backup&lt;/li&gt;
&lt;li&gt;Data migration&lt;/li&gt;
&lt;li&gt;ETL processing&lt;/li&gt;
&lt;li&gt;Report generation&lt;/li&gt;
&lt;li&gt;Image processing&lt;/li&gt;
&lt;li&gt;Batch import/export&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Q9. Give real examples of CronJobs.
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Daily backup&lt;/li&gt;
&lt;li&gt;Weekly cleanup&lt;/li&gt;
&lt;li&gt;Monthly billing&lt;/li&gt;
&lt;li&gt;Certificate renewal&lt;/li&gt;
&lt;li&gt;Log rotation&lt;/li&gt;
&lt;li&gt;Scheduled reports&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Q10. What happens if a CronJob triggers while the previous run is still executing?
&lt;/h2&gt;

&lt;p&gt;It depends on &lt;code&gt;concurrencyPolicy&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Allow&lt;/strong&gt;: Both run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Forbid&lt;/strong&gt;: Skip the new run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Replace&lt;/strong&gt;: Stop the old Job and start a new one.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Deployment vs StatefulSet vs DaemonSet vs Job vs CronJob
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Deployment&lt;/th&gt;
&lt;th&gt;StatefulSet&lt;/th&gt;
&lt;th&gt;DaemonSet&lt;/th&gt;
&lt;th&gt;Job&lt;/th&gt;
&lt;th&gt;CronJob&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Runs Forever&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One-Time Task&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scheduled Task&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stable Identity&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One Pod Per Node&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typical Use&lt;/td&gt;
&lt;td&gt;Web Apps&lt;/td&gt;
&lt;td&gt;Databases&lt;/td&gt;
&lt;td&gt;Node Agents&lt;/td&gt;
&lt;td&gt;Backup/Migration&lt;/td&gt;
&lt;td&gt;Scheduled Backup&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Real Production Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet
     │
ALB
     │
Ingress
     │
Service
     │
Deployment
     │
ReplicaSet
     │
Pods

StatefulSet
     │
MySQL

DaemonSet
     │
Fluent Bit

CronJob
     │
Nightly Backup Job
     │
Backup Pod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Kubernetes Controllers Covered So Far
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Deployment   → Stateless applications
ReplicaSet   → Maintain desired Pod count
StatefulSet  → Databases &amp;amp; stateful workloads
DaemonSet    → One Pod per Node
Job          → Run once
CronJob      → Run on a schedule
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  What Comes Next?
&lt;/h1&gt;

&lt;p&gt;The next topic should be &lt;strong&gt;ConfigMaps &amp;amp; Secrets&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is another &lt;strong&gt;top interview topic&lt;/strong&gt; because every real-world application needs configuration such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spring Boot &lt;code&gt;application.yml&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Database URLs&lt;/li&gt;
&lt;li&gt;Redis host&lt;/li&gt;
&lt;li&gt;Kafka brokers&lt;/li&gt;
&lt;li&gt;API keys&lt;/li&gt;
&lt;li&gt;JWT secrets&lt;/li&gt;
&lt;li&gt;AWS credentials&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You'll learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why configuration should never be hardcoded.&lt;/li&gt;
&lt;li&gt;ConfigMap vs Secret.&lt;/li&gt;
&lt;li&gt;How applications consume them as environment variables or mounted files.&lt;/li&gt;
&lt;li&gt;Real Spring Boot production examples.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  * Common interview traps around security and configuration management.
&lt;/h1&gt;

&lt;p&gt;next&lt;br&gt;
Excellent. This is one of the &lt;strong&gt;most important production topics&lt;/strong&gt; in Kubernetes.&lt;/p&gt;

&lt;p&gt;Every real company uses &lt;strong&gt;ConfigMaps&lt;/strong&gt; and &lt;strong&gt;Secrets&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you're working with &lt;strong&gt;Spring Boot + Kubernetes + AWS&lt;/strong&gt;, you'll use them every day.&lt;/p&gt;

&lt;p&gt;A common senior interview question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"Where do you store your database password in Kubernetes?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If your answer is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;application.yml&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;❌ Wrong.&lt;/p&gt;

&lt;p&gt;The correct answer is &lt;strong&gt;Kubernetes Secrets&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Topic 12 — ConfigMaps &amp;amp; Secrets (Master Level)
&lt;/h1&gt;




&lt;h1&gt;
  
  
  First Understand the Problem
&lt;/h1&gt;

&lt;p&gt;Suppose you have a Spring Boot application.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;spring&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;datasource&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;jdbc:mysql://mysql:3306/ecommerce&lt;/span&gt;
    &lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;root&lt;/span&gt;
    &lt;span class="na"&gt;password&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;root123&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Looks fine.&lt;/p&gt;

&lt;p&gt;But imagine your code is pushed to GitHub.&lt;/p&gt;

&lt;p&gt;Now everyone can see&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;password=root123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a security risk.&lt;/p&gt;




&lt;h1&gt;
  
  
  Another Problem
&lt;/h1&gt;

&lt;p&gt;Suppose today the database URL is&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tomorrow&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql-prod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Should developers rebuild Docker images every time?&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;Configuration should be external.&lt;/p&gt;




&lt;h1&gt;
  
  
  Solution
&lt;/h1&gt;

&lt;p&gt;Kubernetes provides two objects.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ConfigMap

Secret
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Difference
&lt;/h1&gt;

&lt;h2&gt;
  
  
  ConfigMap
&lt;/h2&gt;

&lt;p&gt;Stores&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configuration&lt;/li&gt;
&lt;li&gt;URLs&lt;/li&gt;
&lt;li&gt;Hostnames&lt;/li&gt;
&lt;li&gt;Ports&lt;/li&gt;
&lt;li&gt;Feature flags&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examples&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;APP_NAME

REDIS_HOST

KAFKA_BROKERS

LOG_LEVEL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Secret
&lt;/h2&gt;

&lt;p&gt;Stores&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Passwords&lt;/li&gt;
&lt;li&gt;API Keys&lt;/li&gt;
&lt;li&gt;Tokens&lt;/li&gt;
&lt;li&gt;Certificates&lt;/li&gt;
&lt;li&gt;JWT Secret&lt;/li&gt;
&lt;li&gt;AWS Credentials&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Biggest Interview Question
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;ConfigMap vs Secret&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ConfigMap&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Non-sensitive configuration.&lt;/p&gt;

&lt;p&gt;Secret&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Sensitive information.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real Production Example
&lt;/h1&gt;

&lt;p&gt;Spring Boot&lt;/p&gt;

&lt;p&gt;Needs&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Database URL

Redis Host

Kafka Broker

JWT Secret

Database Password
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Store&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ConfigMap

↓

Database URL

Redis Host

Kafka Broker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Store&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Secret

↓

Password

JWT Secret

AWS Keys
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spring Boot Pod

↓

ConfigMap

↓

Database URL

Redis Host

Kafka Host

-----------------------

Secret

↓

Password

JWT Secret
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  ConfigMap YAML
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;

&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ConfigMap&lt;/span&gt;

&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;app-config&lt;/span&gt;

&lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;DB_HOST&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql&lt;/span&gt;

  &lt;span class="na"&gt;DB_PORT&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;3306"&lt;/span&gt;

  &lt;span class="na"&gt;REDIS_HOST&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;redis&lt;/span&gt;

  &lt;span class="na"&gt;LOG_LEVEL&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;INFO&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Secret YAML
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;

&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Secret&lt;/span&gt;

&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;app-secret&lt;/span&gt;

&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Opaque&lt;/span&gt;

&lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;DB_PASSWORD&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;cm9vdDEyMw==&lt;/span&gt;

  &lt;span class="na"&gt;JWT_SECRET&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;c2VjcmV0MTIz&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice&lt;/p&gt;

&lt;p&gt;Values are&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Base64 Encoded
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Biggest Interview Trap
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Question&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Are Kubernetes Secrets encrypted?&lt;/p&gt;

&lt;p&gt;Many beginners answer&lt;/p&gt;

&lt;p&gt;"Yes"&lt;/p&gt;

&lt;p&gt;Wrong.&lt;/p&gt;

&lt;p&gt;By default,&lt;/p&gt;

&lt;p&gt;Secrets are &lt;strong&gt;Base64 encoded&lt;/strong&gt;, &lt;strong&gt;not encrypted&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Whether they are encrypted &lt;strong&gt;at rest&lt;/strong&gt; depends on whether the cluster administrator has enabled &lt;strong&gt;encryption at rest&lt;/strong&gt; in the Kubernetes API server.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Base64?
&lt;/h1&gt;

&lt;p&gt;Example&lt;/p&gt;

&lt;p&gt;Password&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Encoded&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cm9vdDEyMw==
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Anyone can decode it.&lt;/p&gt;

&lt;p&gt;So Base64 is &lt;strong&gt;not&lt;/strong&gt; security.&lt;/p&gt;




&lt;h1&gt;
  
  
  Better Production Security
&lt;/h1&gt;

&lt;p&gt;Companies use&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Secrets Manager&lt;/li&gt;
&lt;li&gt;HashiCorp Vault&lt;/li&gt;
&lt;li&gt;Azure Key Vault&lt;/li&gt;
&lt;li&gt;Google Secret Manager&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;instead of storing all secrets directly in Kubernetes.&lt;/p&gt;




&lt;h1&gt;
  
  
  Using ConfigMap as Environment Variables
&lt;/h1&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;DB_HOST&lt;/span&gt;

  &lt;span class="na"&gt;valueFrom&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;configMapKeyRef&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;app-config&lt;/span&gt;

      &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;DB_HOST&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Spring Boot&lt;/p&gt;

&lt;p&gt;Reads&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DB_HOST=mysql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Using Secret as Environment Variable
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;DB_PASSWORD&lt;/span&gt;

  &lt;span class="na"&gt;valueFrom&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;secretKeyRef&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;app-secret&lt;/span&gt;

      &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;DB_PASSWORD&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Application gets&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;after Kubernetes decodes the Base64 value before injecting it.&lt;/p&gt;




&lt;h1&gt;
  
  
  Mount ConfigMap as File
&lt;/h1&gt;

&lt;p&gt;Sometimes&lt;/p&gt;

&lt;p&gt;Instead of Environment Variables&lt;/p&gt;

&lt;p&gt;Need file.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;application.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ConfigMap&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Mounted&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/etc/config/application.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Useful for large configuration files.&lt;/p&gt;




&lt;h1&gt;
  
  
  Mount Secret as File
&lt;/h1&gt;

&lt;p&gt;TLS Certificates&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tls.crt

tls.key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mounted&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/etc/tls/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NGINX Ingress&lt;/p&gt;

&lt;p&gt;Reads certificates from mounted Secret files.&lt;/p&gt;




&lt;h1&gt;
  
  
  Spring Boot Example
&lt;/h1&gt;

&lt;p&gt;ConfigMap&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SPRING_DATASOURCE_URL

SPRING_REDIS_HOST

SPRING_KAFKA_BOOTSTRAP_SERVERS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Secret&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SPRING_DATASOURCE_PASSWORD

JWT_SECRET

AWS_ACCESS_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Spring Boot automatically maps these environment variables to configuration properties (especially when using relaxed binding).&lt;/p&gt;




&lt;h1&gt;
  
  
  Updating ConfigMap
&lt;/h1&gt;

&lt;p&gt;Suppose&lt;/p&gt;

&lt;p&gt;Old&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LOG_LEVEL=INFO
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;New&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LOG_LEVEL=DEBUG
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; configmap.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pods may not automatically pick up the new value.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Environment variables&lt;/strong&gt; require the Pod to restart.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mounted ConfigMap volumes&lt;/strong&gt; are updated automatically after a short delay, but the application may need to reload the file.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Updating Secret
&lt;/h1&gt;

&lt;p&gt;Same concept.&lt;/p&gt;

&lt;p&gt;Applications may need restart depending on how they consume it.&lt;/p&gt;




&lt;h1&gt;
  
  
  Commands
&lt;/h1&gt;

&lt;p&gt;Create ConfigMap&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; configmap.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;View&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get configmaps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Short&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get cm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Describe&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl describe cm app-config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Secrets&lt;/p&gt;

&lt;p&gt;View&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get secrets
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Describe&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl describe secret app-secret
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Decode&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get secret app-secret &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="nv"&gt;jsonpath&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"{.data.DB_PASSWORD}"&lt;/span&gt; | &lt;span class="nb"&gt;base64&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  ConfigMap vs Secret
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;ConfigMap&lt;/th&gt;
&lt;th&gt;Secret&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sensitive Data&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Password&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API Key&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JWT Secret&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database URL&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Log Level&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Environment Variables vs Files
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Environment Variable&lt;/th&gt;
&lt;th&gt;Mounted File&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Simple values&lt;/td&gt;
&lt;td&gt;Large configs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database URL&lt;/td&gt;
&lt;td&gt;application.yml&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Redis Host&lt;/td&gt;
&lt;td&gt;TLS Certificates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kafka Broker&lt;/td&gt;
&lt;td&gt;JSON/XML configs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Production Example
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spring Boot

↓

ConfigMap

↓

application.yml values

↓

Secret

↓

Database Password

↓

JWT Secret

↓

AWS Credentials
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Real AWS Example
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spring Boot Pod

↓

AWS Secrets Manager

↓

Database Password

↓

RDS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sometimes Kubernetes Secrets are synchronized from AWS Secrets Manager using tools like the &lt;strong&gt;Secrets Store CSI Driver&lt;/strong&gt; or &lt;strong&gt;External Secrets Operator&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Common Interview Questions
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Q1. What is ConfigMap?
&lt;/h2&gt;

&lt;p&gt;A Kubernetes object for storing &lt;strong&gt;non-sensitive configuration&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q2. What is Secret?
&lt;/h2&gt;

&lt;p&gt;A Kubernetes object for storing &lt;strong&gt;sensitive information&lt;/strong&gt; such as passwords, API keys, and certificates.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q3. Difference between ConfigMap and Secret?
&lt;/h2&gt;

&lt;p&gt;ConfigMap stores configuration.&lt;/p&gt;

&lt;p&gt;Secret stores confidential data.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q4. Are Kubernetes Secrets encrypted?
&lt;/h2&gt;

&lt;p&gt;By default, they are &lt;strong&gt;Base64 encoded&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Encryption at rest must be explicitly enabled.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q5. Can applications read ConfigMaps as environment variables?
&lt;/h2&gt;

&lt;p&gt;Yes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q6. Can applications read Secrets as files?
&lt;/h2&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Secrets can be mounted as volumes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q7. Should database passwords go into ConfigMaps?
&lt;/h2&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;Use Secrets.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q8. Can ConfigMaps be updated?
&lt;/h2&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Applications may require reloads or Pod restarts depending on how the data is consumed.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q9. What are real examples of ConfigMaps?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Database host&lt;/li&gt;
&lt;li&gt;Redis host&lt;/li&gt;
&lt;li&gt;Kafka brokers&lt;/li&gt;
&lt;li&gt;Log level&lt;/li&gt;
&lt;li&gt;Feature flags&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Q10. What are real examples of Secrets?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Database password&lt;/li&gt;
&lt;li&gt;JWT secret&lt;/li&gt;
&lt;li&gt;OAuth client secret&lt;/li&gt;
&lt;li&gt;TLS certificate&lt;/li&gt;
&lt;li&gt;AWS credentials&lt;/li&gt;
&lt;li&gt;API tokens&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Kubernetes Controllers &amp;amp; Resources Covered So Far
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Deployment   → Stateless Apps
ReplicaSet   → Desired Pod Count
StatefulSet  → Databases
DaemonSet    → One Pod Per Node
Job          → One-Time Task
CronJob      → Scheduled Task

Service       → Stable Networking
CoreDNS       → Service Discovery
Ingress       → External HTTP Routing

ConfigMap     → Configuration
Secret        → Sensitive Data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Complete Production Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet
      │
Route53
      │
ALB
      │
Ingress Controller
      │
Ingress
      │
Service
      │
Deployment
      │
Pods
      │
├── ConfigMap
│      ├── DB_HOST
│      ├── REDIS_HOST
│      └── LOG_LEVEL
│
└── Secret
       ├── DB_PASSWORD
       ├── JWT_SECRET
       └── TLS_CERT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Next Topic (Very Important)
&lt;/h1&gt;

&lt;p&gt;The next topic is &lt;strong&gt;Labels &amp;amp; Selectors&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is one of the most fundamental Kubernetes concepts because almost every resource depends on it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deployment → ReplicaSet&lt;/li&gt;
&lt;li&gt;ReplicaSet → Pods&lt;/li&gt;
&lt;li&gt;Service → Pods&lt;/li&gt;
&lt;li&gt;NetworkPolicy → Pods&lt;/li&gt;
&lt;li&gt;Monitoring → Pods&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Without understanding &lt;strong&gt;Labels &amp;amp; Selectors&lt;/strong&gt;, it's impossible to fully understand how Kubernetes resources are connected.
&lt;/h1&gt;

&lt;p&gt;Excellent. Now we reach the &lt;strong&gt;foundation of Kubernetes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If I ask you:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How does a Service know which Pods belong to it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does a Deployment know which Pods it owns?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does a NetworkPolicy know which Pods to allow?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The answer to all three is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Labels &amp;amp; Selectors&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is one of the most important interview topics because almost every Kubernetes object depends on it.&lt;/p&gt;




&lt;h1&gt;
  
  
  Topic 13 — Labels &amp;amp; Selectors (Master Level)
&lt;/h1&gt;




&lt;h1&gt;
  
  
  First Understand the Problem
&lt;/h1&gt;

&lt;p&gt;Suppose your cluster has 500 Pods.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-7d8f9

payment-8h7j2

payment-4k5l1

order-2a4d7

order-6t9m8

redis-abc

mysql-xyz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now suppose a Service needs to send traffic only to the Payment Pods.&lt;/p&gt;

&lt;p&gt;How will Kubernetes know?&lt;/p&gt;

&lt;p&gt;By Pod names?&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;Pod names change.&lt;/p&gt;

&lt;p&gt;By IP?&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;IPs change.&lt;/p&gt;




&lt;h1&gt;
  
  
  Solution
&lt;/h1&gt;

&lt;p&gt;Labels.&lt;/p&gt;

&lt;p&gt;Every Pod can have metadata.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Another Pod&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;order&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now Kubernetes can identify them.&lt;/p&gt;




&lt;h1&gt;
  
  
  What is a Label?
&lt;/h1&gt;

&lt;p&gt;A Label is a &lt;strong&gt;key-value pair&lt;/strong&gt; attached to a Kubernetes object.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Key&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Value&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Real Company Example
&lt;/h1&gt;

&lt;p&gt;Amazon&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Payment Team

↓

app=payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Order Team&lt;/p&gt;

&lt;p&gt;↓&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app=order
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Redis&lt;/p&gt;

&lt;p&gt;↓&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app=redis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything becomes easy to identify.&lt;/p&gt;




&lt;h1&gt;
  
  
  Labels are NOT only for Pods
&lt;/h1&gt;

&lt;p&gt;Labels can be added to&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pods&lt;/li&gt;
&lt;li&gt;Deployments&lt;/li&gt;
&lt;li&gt;Services&lt;/li&gt;
&lt;li&gt;Nodes&lt;/li&gt;
&lt;li&gt;Namespaces&lt;/li&gt;
&lt;li&gt;ConfigMaps&lt;/li&gt;
&lt;li&gt;PersistentVolumes&lt;/li&gt;
&lt;li&gt;Almost every Kubernetes object&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Common Labels
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
  &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;prod&lt;/span&gt;
  &lt;span class="na"&gt;tier&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;backend&lt;/span&gt;
  &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
  &lt;span class="na"&gt;team&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payments&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app = Which application?

env = Which environment?

tier = Frontend or Backend?

version = Application version?

team = Owning team?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Example
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;

  &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;production&lt;/span&gt;

  &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v2&lt;/span&gt;

  &lt;span class="na"&gt;region&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ap-south-1&lt;/span&gt;

  &lt;span class="na"&gt;team&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;backend&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  What is a Selector?
&lt;/h1&gt;

&lt;p&gt;A Selector is a query used to find objects based on labels.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning&lt;/p&gt;

&lt;p&gt;Find&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app=payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pods.&lt;/p&gt;




&lt;h1&gt;
  
  
  Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pods

Pod1

app=payment

Pod2

app=payment

Pod3

app=order

↓

Service Selector

↓

app=payment

↓

Pod1

Pod2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pod3 ignored.&lt;/p&gt;




&lt;h1&gt;
  
  
  Service Example
&lt;/h1&gt;

&lt;p&gt;Pods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Service&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Automatically connects.&lt;/p&gt;




&lt;h1&gt;
  
  
  Deployment Example
&lt;/h1&gt;

&lt;p&gt;Deployment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deployment only manages Pods having&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app=payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  ReplicaSet Example
&lt;/h1&gt;

&lt;p&gt;ReplicaSet&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Selector&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Pods&lt;/p&gt;

&lt;p&gt;Everything is connected through labels.&lt;/p&gt;




&lt;h1&gt;
  
  
  Node Labels
&lt;/h1&gt;

&lt;p&gt;Nodes also have labels.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node1

↓

gpu=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DaemonSet&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;nodeSelector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;gpu&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;true"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Runs only there.&lt;/p&gt;




&lt;h1&gt;
  
  
  MatchLabels
&lt;/h1&gt;

&lt;p&gt;Most common selector.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning&lt;/p&gt;

&lt;p&gt;Exactly&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app=payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  MatchExpressions
&lt;/h1&gt;

&lt;p&gt;More powerful.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;matchExpressions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;env&lt;/span&gt;

  &lt;span class="na"&gt;operator&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;In&lt;/span&gt;

  &lt;span class="na"&gt;values&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;prod&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;stage&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning&lt;/p&gt;

&lt;p&gt;Accept&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;env=prod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;env=stage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Operators
&lt;/h1&gt;

&lt;h2&gt;
  
  
  In
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;env In (prod,stage)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  NotIn
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;env NotIn (dev)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Exists
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;team Exists&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Any Pod having the &lt;code&gt;team&lt;/code&gt; label matches.&lt;/p&gt;




&lt;h2&gt;
  
  
  DoesNotExist
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;debug DoesNotExist&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pods without a &lt;code&gt;debug&lt;/code&gt; label match.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real Example
&lt;/h1&gt;

&lt;p&gt;Pods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment

env=prod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;order

env=dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Selector&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;matchExpressions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;env&lt;/span&gt;

  &lt;span class="na"&gt;operator&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;In&lt;/span&gt;

  &lt;span class="na"&gt;values&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;prod&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only Payment Pod selected.&lt;/p&gt;




&lt;h1&gt;
  
  
  Commands
&lt;/h1&gt;

&lt;p&gt;Show Labels&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods &lt;span class="nt"&gt;--show-labels&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Filter&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods &lt;span class="nt"&gt;-l&lt;/span&gt; &lt;span class="nv"&gt;app&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Multiple Labels&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods &lt;span class="nt"&gt;-l&lt;/span&gt; &lt;span class="nv"&gt;app&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;payment,env&lt;span class="o"&gt;=&lt;/span&gt;prod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Add Label&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl label pod payment-abc &lt;span class="nv"&gt;version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;v2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Remove Label&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl label pod payment-abc version-
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Why Labels Matter
&lt;/h1&gt;

&lt;p&gt;Without labels&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Service

↓

???

↓

500 Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Impossible.&lt;/p&gt;

&lt;p&gt;With labels&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Service

↓

app=payment

↓

Only Payment Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Real Production Example
&lt;/h1&gt;

&lt;p&gt;Spring Boot&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment

↓

labels

app=payment

env=prod

version=v2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Service&lt;/p&gt;

&lt;p&gt;↓&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app=payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NetworkPolicy&lt;/p&gt;

&lt;p&gt;↓&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app=payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Prometheus&lt;/p&gt;

&lt;p&gt;↓&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app=payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything works because of labels.&lt;/p&gt;




&lt;h1&gt;
  
  
  Labels vs Names
&lt;/h1&gt;

&lt;p&gt;Pod Name&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-6d8f79c4b-jvksl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Changes after recreation.&lt;/p&gt;

&lt;p&gt;Label&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app=payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Doesn't change unless you change it.&lt;/p&gt;




&lt;h1&gt;
  
  
  Best Practices
&lt;/h1&gt;

&lt;p&gt;Good labels&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
  &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;prod&lt;/span&gt;
  &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
  &lt;span class="na"&gt;tier&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;backend&lt;/span&gt;
  &lt;span class="na"&gt;team&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payments&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Avoid using changing values (like timestamps) as labels because labels are meant for grouping and selection.&lt;/p&gt;




&lt;h1&gt;
  
  
  Common Interview Questions
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Q1. What is a Label?
&lt;/h3&gt;

&lt;p&gt;A key-value pair attached to a Kubernetes object for identification and organization.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q2. What is a Selector?
&lt;/h3&gt;

&lt;p&gt;A mechanism to select Kubernetes objects based on their labels.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q3. Why do Services use labels?
&lt;/h3&gt;

&lt;p&gt;Services use label selectors to discover and route traffic to the correct Pods.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q4. Can Deployments use selectors?
&lt;/h3&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Deployments use selectors to identify the Pods they manage.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q5. Difference between Labels and Selectors?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Label:&lt;/strong&gt; Metadata attached to an object.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Selector:&lt;/strong&gt; A query used to find objects with matching labels.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Q6. What is &lt;code&gt;matchLabels&lt;/code&gt;?
&lt;/h3&gt;

&lt;p&gt;An exact label match.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Q7. What is &lt;code&gt;matchExpressions&lt;/code&gt;?
&lt;/h3&gt;

&lt;p&gt;A more flexible selector supporting operators like &lt;code&gt;In&lt;/code&gt;, &lt;code&gt;NotIn&lt;/code&gt;, &lt;code&gt;Exists&lt;/code&gt;, and &lt;code&gt;DoesNotExist&lt;/code&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q8. Can one Pod have multiple labels?
&lt;/h3&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
  &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;prod&lt;/span&gt;
  &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v2&lt;/span&gt;
  &lt;span class="na"&gt;team&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;backend&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Q9. Can two Pods have the same label?
&lt;/h3&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;In fact, that's the common pattern. A Service usually selects many Pods that share the same label.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q10. Give a real-world example.
&lt;/h3&gt;

&lt;p&gt;A Payment Service might use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to route requests to every Payment Pod, regardless of their individual names or IP addresses.&lt;/p&gt;




&lt;h1&gt;
  
  
  Where Labels Are Used
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kubernetes Resource&lt;/th&gt;
&lt;th&gt;Uses Labels?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ReplicaSet&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Service&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;StatefulSet&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DaemonSet&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Job&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CronJob&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NetworkPolicy&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PodAffinity / AntiAffinity&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monitoring (Prometheus)&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Complete Production Flow
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Deployment
      │
      ▼
Selector (app=payment)
      │
      ▼
Pods
      │
      ▼
Service (selector: app=payment)
      │
      ▼
Ingress
      │
      ▼
Internet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice something important:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Labels are the glue that connects Kubernetes resources together.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Without labels, Services wouldn't know which Pods to route to, Deployments wouldn't know which Pods to manage, and many other Kubernetes features would stop working.&lt;/p&gt;




&lt;h1&gt;
  
  
  Next Topic (One of the Hardest Interview Topics)
&lt;/h1&gt;

&lt;p&gt;The next topic should be &lt;strong&gt;Networking (Pod-to-Pod Communication, CNI, ClusterIP, kube-proxy, Network Policies)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is one of the deepest Kubernetes topics and is commonly asked in &lt;strong&gt;senior DevOps and platform engineering interviews&lt;/strong&gt; because it explains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How Pods on different nodes communicate.&lt;/li&gt;
&lt;li&gt;Why every Pod gets its own IP.&lt;/li&gt;
&lt;li&gt;What CNI plugins (Calico, Cilium, Flannel) do.&lt;/li&gt;
&lt;li&gt;How &lt;code&gt;kube-proxy&lt;/code&gt; routes Service traffic.&lt;/li&gt;
&lt;li&gt;How NetworkPolicies secure Pod communication.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Once you master Kubernetes networking, you'll understand the core of how a cluster actually works.
&lt;/h1&gt;

&lt;p&gt;Excellent. This is the topic that separates &lt;strong&gt;beginner Kubernetes engineers from experienced DevOps engineers&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Most people know how to create a Pod.&lt;/p&gt;

&lt;p&gt;Very few know &lt;strong&gt;how a packet travels from one Pod to another&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Senior interviewers often ask questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;How does Pod A communicate with Pod B on another node?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Who assigns Pod IPs?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What is CNI?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What does kube-proxy do?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Why does every Pod have a unique IP?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How do Services load balance traffic?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How do NetworkPolicies block traffic?&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you master this topic, you'll understand the networking foundation of Kubernetes.&lt;/p&gt;




&lt;h1&gt;
  
  
  Topic 14 — Kubernetes Networking (Master Level)
&lt;/h1&gt;




&lt;h1&gt;
  
  
  Kubernetes Networking Rules
&lt;/h1&gt;

&lt;p&gt;Every Kubernetes cluster follows these fundamental rules:&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 1
&lt;/h3&gt;

&lt;p&gt;Every Pod gets its &lt;strong&gt;own unique IP address&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-1

10.244.1.5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-2

10.244.1.6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No two Pods share the same IP.&lt;/p&gt;




&lt;h3&gt;
  
  
  Rule 2
&lt;/h3&gt;

&lt;p&gt;Pods can communicate directly with each other.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod A

↓

Pod B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No NAT is required for Pod-to-Pod communication.&lt;/p&gt;




&lt;h3&gt;
  
  
  Rule 3
&lt;/h3&gt;

&lt;p&gt;Pods on different Nodes can also communicate directly.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-1

Pod A

↓

↓

Node-2

Pod B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Even on different nodes, communication should work.&lt;/p&gt;




&lt;h3&gt;
  
  
  Rule 4
&lt;/h3&gt;

&lt;p&gt;Services provide a stable virtual IP (ClusterIP) for a group of Pods.&lt;/p&gt;

&lt;p&gt;Applications usually talk to Services instead of Pod IPs.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real Production Example
&lt;/h1&gt;

&lt;p&gt;Suppose you have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Order Service

↓

Payment Service

↓

Inventory Service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Order Pod

10.244.1.10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Payment Pod

10.244.2.20
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Different Nodes.&lt;/p&gt;

&lt;p&gt;Still communicate successfully.&lt;/p&gt;




&lt;h1&gt;
  
  
  Question
&lt;/h1&gt;

&lt;p&gt;Who gives Pods their IP addresses?&lt;/p&gt;

&lt;p&gt;Answer:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The CNI Plugin&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  What is CNI?
&lt;/h1&gt;

&lt;p&gt;CNI stands for&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Container Network Interface
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is the networking standard used by Kubernetes to connect Pods to the network.&lt;/p&gt;

&lt;p&gt;The kubelet calls the CNI plugin whenever a Pod is created or deleted.&lt;/p&gt;




&lt;h1&gt;
  
  
  Responsibilities of CNI
&lt;/h1&gt;

&lt;p&gt;When a Pod starts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a network interface&lt;/li&gt;
&lt;li&gt;Assign a Pod IP&lt;/li&gt;
&lt;li&gt;Connect Pod to the cluster network&lt;/li&gt;
&lt;li&gt;Configure routes&lt;/li&gt;
&lt;li&gt;Configure networking rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without a CNI plugin, Pods cannot communicate.&lt;/p&gt;




&lt;h1&gt;
  
  
  Popular CNI Plugins
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plugin&lt;/th&gt;
&lt;th&gt;Highlights&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Calico&lt;/td&gt;
&lt;td&gt;Routing + NetworkPolicy support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cilium&lt;/td&gt;
&lt;td&gt;eBPF-based, high performance, advanced security&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flannel&lt;/td&gt;
&lt;td&gt;Simple overlay networking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Weave Net&lt;/td&gt;
&lt;td&gt;Overlay networking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS VPC CNI&lt;/td&gt;
&lt;td&gt;Uses VPC IPs directly for Pods in EKS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-1

Pod A

10.244.1.5

↓

CNI

↓

Network

↓

Node-2

Pod B

10.244.2.6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CNI plugin makes this communication possible.&lt;/p&gt;




&lt;h1&gt;
  
  
  Pod-to-Pod Communication
&lt;/h1&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spring Boot Pod

↓

HTTP Request

↓

Redis Pod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Traffic&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10.244.1.5

↓

10.244.2.6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Direct communication.&lt;/p&gt;




&lt;h1&gt;
  
  
  Different Nodes
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-1

Order Pod

10.244.1.3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;↓&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-2

Payment Pod

10.244.2.8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CNI handles routing between nodes.&lt;/p&gt;




&lt;h1&gt;
  
  
  Who Creates Pod IP?
&lt;/h1&gt;

&lt;p&gt;Flow&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Scheduler

↓

Node Selected

↓

Kubelet

↓

CNI Plugin

↓

Assign Pod IP

↓

Pod Starts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  What is ClusterIP?
&lt;/h1&gt;

&lt;p&gt;Suppose&lt;/p&gt;

&lt;p&gt;Three Payment Pods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-1

10.244.1.5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-2

10.244.1.6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-3

10.244.2.7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Service&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-service

↓

10.96.0.15
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Applications call&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of individual Pod IPs.&lt;/p&gt;




&lt;h1&gt;
  
  
  Traffic Flow
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Order Pod

↓

payment-service

↓

ClusterIP

↓

Payment Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  What is kube-proxy?
&lt;/h1&gt;

&lt;p&gt;One of the most asked interview questions.&lt;/p&gt;

&lt;p&gt;kube-proxy runs on every Node.&lt;/p&gt;

&lt;p&gt;Responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Watches Service and Endpoint/EndpointSlice changes&lt;/li&gt;
&lt;li&gt;Programs networking rules (iptables, IPVS, or nftables depending on mode and platform)&lt;/li&gt;
&lt;li&gt;Routes Service traffic to backend Pods&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It &lt;strong&gt;does not&lt;/strong&gt; create Pods or assign Pod IPs.&lt;/p&gt;




&lt;h1&gt;
  
  
  Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Order Pod

↓

ClusterIP

↓

kube-proxy

↓

Payment Pod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Does kube-proxy Load Balance?
&lt;/h1&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Suppose&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Payment1

Payment2

Payment3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Request 1&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Payment1&lt;/p&gt;

&lt;p&gt;Request 2&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Payment2&lt;/p&gt;

&lt;p&gt;Request 3&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Payment3&lt;/p&gt;

&lt;p&gt;The exact distribution depends on the kube-proxy mode (iptables/IPVS) and connection behavior.&lt;/p&gt;




&lt;h1&gt;
  
  
  Endpoints
&lt;/h1&gt;

&lt;p&gt;Service&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Needs Pod IPs.&lt;/p&gt;

&lt;p&gt;Endpoints (or EndpointSlices in modern Kubernetes) contain those backend addresses.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-service

↓

Endpoints

↓

10.244.1.5

10.244.1.6

10.244.2.7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  EndpointSlice
&lt;/h1&gt;

&lt;p&gt;Modern Kubernetes uses &lt;strong&gt;EndpointSlices&lt;/strong&gt; to scale better than the older Endpoints object.&lt;/p&gt;

&lt;p&gt;Interview tip:&lt;/p&gt;

&lt;p&gt;If asked what replaces Endpoints for large clusters:&lt;/p&gt;

&lt;p&gt;Answer:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EndpointSlices&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  DNS Flow
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Order Pod

↓

payment-service

↓

CoreDNS

↓

ClusterIP

↓

kube-proxy

↓

Payment Pod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice how multiple Kubernetes components work together.&lt;/p&gt;




&lt;h1&gt;
  
  
  Pod-to-Pod Communication Flow
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spring Boot

↓

DNS Lookup

↓

CoreDNS

↓

ClusterIP

↓

kube-proxy

↓

CNI Network

↓

Payment Pod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Overlay Network
&lt;/h1&gt;

&lt;p&gt;Many CNI plugins create an &lt;strong&gt;overlay network&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-1

Pod

10.244.1.5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Overlay&lt;/p&gt;

&lt;p&gt;↓&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Node-2

Pod

10.244.2.7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Applications don't need to know which Node the destination Pod is running on.&lt;/p&gt;

&lt;p&gt;Note: Not every CNI uses an overlay. For example, the AWS VPC CNI assigns VPC IPs directly instead of building an overlay.&lt;/p&gt;




&lt;h1&gt;
  
  
  AWS EKS Example
&lt;/h1&gt;

&lt;p&gt;In Amazon EKS&lt;/p&gt;

&lt;p&gt;Most commonly&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AWS VPC CNI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pod gets a VPC IP address.&lt;/p&gt;

&lt;p&gt;No overlay network is required.&lt;/p&gt;

&lt;p&gt;This improves integration with AWS networking.&lt;/p&gt;




&lt;h1&gt;
  
  
  NetworkPolicy
&lt;/h1&gt;

&lt;p&gt;By default, many Kubernetes installations allow Pods to communicate freely unless a NetworkPolicy is enforced (behavior also depends on the CNI plugin).&lt;/p&gt;

&lt;p&gt;Suppose&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Payment

↓

MySQL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Allowed.&lt;/p&gt;

&lt;p&gt;Now&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frontend

↓

MySQL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Should be blocked.&lt;/p&gt;

&lt;p&gt;Use&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NetworkPolicy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  NetworkPolicy Example
&lt;/h1&gt;

&lt;p&gt;Allow only&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;podSelector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mysql&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and permit ingress only from Pods matching:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;podSelector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;payment&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now only Payment Pods can reach MySQL.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real Production Example
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

Ingress

↓

Frontend

↓

Payment

↓

MySQL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Allowed&lt;/p&gt;

&lt;p&gt;Frontend&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;MySQL&lt;/p&gt;

&lt;p&gt;Blocked.&lt;/p&gt;




&lt;h1&gt;
  
  
  Commands
&lt;/h1&gt;

&lt;p&gt;View Pods&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods &lt;span class="nt"&gt;-o&lt;/span&gt; wide
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shows Pod IPs.&lt;/p&gt;




&lt;p&gt;View Services&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get svc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;View Endpoints&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get endpoints
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get endpointslices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;View NetworkPolicies&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get networkpolicy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Common Interview Questions
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Q1. What are the Kubernetes networking rules?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Every Pod gets a unique IP.&lt;/li&gt;
&lt;li&gt;Pods can communicate directly.&lt;/li&gt;
&lt;li&gt;Pods on different Nodes can communicate.&lt;/li&gt;
&lt;li&gt;Services provide stable virtual IPs.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Q2. What is CNI?
&lt;/h2&gt;

&lt;p&gt;The Container Network Interface standard and its plugins provide Pod networking by assigning IPs and configuring connectivity.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q3. Name popular CNI plugins.
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Calico&lt;/li&gt;
&lt;li&gt;Cilium&lt;/li&gt;
&lt;li&gt;Flannel&lt;/li&gt;
&lt;li&gt;Weave Net&lt;/li&gt;
&lt;li&gt;AWS VPC CNI&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Q4. Who assigns Pod IPs?
&lt;/h2&gt;

&lt;p&gt;The CNI plugin, invoked by the kubelet.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q5. What is kube-proxy?
&lt;/h2&gt;

&lt;p&gt;A component running on each Node that implements Service networking by programming routing/load-balancing rules.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q6. Does kube-proxy assign Pod IPs?
&lt;/h2&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;The CNI plugin assigns Pod IPs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q7. What is ClusterIP?
&lt;/h2&gt;

&lt;p&gt;The default Service type that provides a stable virtual IP for internal communication.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q8. What is an Endpoint?
&lt;/h2&gt;

&lt;p&gt;A representation of the backend Pods behind a Service. Modern Kubernetes primarily uses EndpointSlices.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q9. What is a NetworkPolicy?
&lt;/h2&gt;

&lt;p&gt;A resource that controls allowed network traffic between Pods (and optionally namespaces/IP blocks), provided the CNI plugin supports NetworkPolicies.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q10. How does Pod A communicate with Pod B?
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Pod A
   │
DNS lookup (CoreDNS)
   │
ClusterIP Service
   │
kube-proxy
   │
CNI network
   │
Pod B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If Pod A already knows Pod B's IP (for example, via a headless Service), it may communicate directly without going through a Service.&lt;/p&gt;




&lt;h1&gt;
  
  
  Component Responsibilities (Very Important)
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Responsibility&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CoreDNS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Resolve Service names to IP addresses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Service&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Stable virtual endpoint&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;EndpointSlice&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;List backend Pod IPs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;kube-proxy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Route/load-balance Service traffic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CNI Plugin&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Assign Pod IPs and connect Pods to the network&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NetworkPolicy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Control allowed network communication&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Complete Request Flow (Spring Boot → Payment)
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spring Boot Pod
        │
        ▼
http://payment-service
        │
        ▼
CoreDNS
        │
        ▼
ClusterIP
        │
        ▼
kube-proxy
        │
        ▼
EndpointSlice
        │
        ▼
CNI Network
        │
        ▼
Payment Pod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Master Interview Scenario
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Interviewer:&lt;/strong&gt; Explain how a request from the Order Service reaches the Payment Service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strong answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The Order Service sends a request to the Service DNS name, such as &lt;code&gt;payment-service&lt;/code&gt;. CoreDNS resolves that name to the Service's ClusterIP. kube-proxy uses the Service's EndpointSlices to select one of the healthy backend Pods and forwards the traffic. The CNI plugin provides the underlying Pod-to-Pod connectivity, even if the Pods are on different Nodes.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  What Should We Cover Next?
&lt;/h1&gt;

&lt;p&gt;The next advanced networking topic is:&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;NGINX vs Istio (Service Mesh)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What problems Istio solves that Services and Ingress don't.&lt;/li&gt;
&lt;li&gt;NGINX vs Ingress Controller vs Istio.&lt;/li&gt;
&lt;li&gt;Sidecar proxies.&lt;/li&gt;
&lt;li&gt;Envoy architecture.&lt;/li&gt;
&lt;li&gt;mTLS.&lt;/li&gt;
&lt;li&gt;Traffic splitting (90% v1 / 10% v2).&lt;/li&gt;
&lt;li&gt;Circuit breaking.&lt;/li&gt;
&lt;li&gt;Retries.&lt;/li&gt;
&lt;li&gt;Observability.&lt;/li&gt;
&lt;li&gt;Zero-trust networking.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  This is a &lt;strong&gt;senior-level Kubernetes and microservices interview topic&lt;/strong&gt; and is especially valuable if you're targeting backend, DevOps, or platform engineering roles.
&lt;/h1&gt;

&lt;p&gt;Perfect. This is one of the &lt;strong&gt;highest-level Kubernetes interview topics&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you understand this topic, you can answer questions asked in &lt;strong&gt;Amazon, Microsoft, Walmart, Flipkart, Adobe, Oracle, VMware, Cisco&lt;/strong&gt;, and many product companies.&lt;/p&gt;

&lt;p&gt;Many engineers confuse:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NGINX&lt;/li&gt;
&lt;li&gt;Ingress&lt;/li&gt;
&lt;li&gt;Ingress Controller&lt;/li&gt;
&lt;li&gt;API Gateway&lt;/li&gt;
&lt;li&gt;Service Mesh&lt;/li&gt;
&lt;li&gt;Istio&lt;/li&gt;
&lt;li&gt;Envoy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After this, you won't.&lt;/p&gt;




&lt;h1&gt;
  
  
  Topic 15 — NGINX vs Ingress vs Istio (Master Level)
&lt;/h1&gt;




&lt;h1&gt;
  
  
  First Understand the Evolution
&lt;/h1&gt;

&lt;p&gt;Suppose you have one application.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet
    │
Spring Boot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Simple.&lt;/p&gt;

&lt;p&gt;Now company grows.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet
      │
Frontend

Payment

Order

Inventory

User

Notification

Auth

Shipping
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now routing becomes difficult.&lt;/p&gt;

&lt;p&gt;Need something smarter.&lt;/p&gt;




&lt;h1&gt;
  
  
  Stage 1 — NGINX
&lt;/h1&gt;

&lt;p&gt;Initially companies had&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

NGINX

↓

Spring Boot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NGINX acts as&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reverse Proxy&lt;/li&gt;
&lt;li&gt;Load Balancer&lt;/li&gt;
&lt;li&gt;SSL Termination&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Client

↓

NGINX

↓

Spring Boot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  What is Reverse Proxy?
&lt;/h1&gt;

&lt;p&gt;Client&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;doesn't know backend.&lt;/p&gt;

&lt;p&gt;Instead&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser

↓

NGINX

↓

Backend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NGINX hides backend servers.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Use NGINX?
&lt;/h1&gt;

&lt;p&gt;Suppose&lt;/p&gt;

&lt;p&gt;5 Spring Boot servers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spring1

Spring2

Spring3

Spring4

Spring5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NGINX&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Load balances.&lt;/p&gt;




&lt;h1&gt;
  
  
  SSL Termination
&lt;/h1&gt;

&lt;p&gt;Without NGINX&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTTPS

↓

Spring Boot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every application handles SSL.&lt;/p&gt;

&lt;p&gt;Instead&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTTPS

↓

NGINX

↓

HTTP

↓

Spring Boot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Much easier.&lt;/p&gt;




&lt;h1&gt;
  
  
  Then Kubernetes Came
&lt;/h1&gt;

&lt;p&gt;Now&lt;/p&gt;

&lt;p&gt;Pods keep changing.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-a12

↓

Deleted
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;New Pod&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment-z45
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NGINX cannot manually track every Pod.&lt;/p&gt;

&lt;p&gt;Need Kubernetes integration.&lt;/p&gt;




&lt;h1&gt;
  
  
  Solution
&lt;/h1&gt;

&lt;p&gt;Ingress.&lt;/p&gt;




&lt;h1&gt;
  
  
  What is Ingress?
&lt;/h1&gt;

&lt;p&gt;Ingress is &lt;strong&gt;not software&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is a Kubernetes &lt;strong&gt;API resource&lt;/strong&gt; that defines HTTP/HTTPS routing rules.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;amazon.com&lt;/span&gt;

&lt;span class="s"&gt;↓&lt;/span&gt;

&lt;span class="s"&gt;payment-service&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Important Interview Trap
&lt;/h1&gt;

&lt;p&gt;Question&lt;/p&gt;

&lt;p&gt;Is Ingress a Load Balancer?&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;Ingress is only a configuration object.&lt;/p&gt;

&lt;p&gt;Something must read it.&lt;/p&gt;




&lt;h1&gt;
  
  
  Who Reads Ingress?
&lt;/h1&gt;

&lt;p&gt;Ingress Controller.&lt;/p&gt;




&lt;h1&gt;
  
  
  What is Ingress Controller?
&lt;/h1&gt;

&lt;p&gt;Real software.&lt;/p&gt;

&lt;p&gt;Examples&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NGINX Ingress Controller&lt;/li&gt;
&lt;li&gt;AWS Load Balancer Controller&lt;/li&gt;
&lt;li&gt;Traefik&lt;/li&gt;
&lt;li&gt;HAProxy&lt;/li&gt;
&lt;li&gt;Kong&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It watches Ingress resources and configures routing.&lt;/p&gt;




&lt;h1&gt;
  
  
  Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

NGINX Ingress Controller

↓

Ingress Rules

↓

Services

↓

Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Example
&lt;/h1&gt;

&lt;p&gt;Ingress&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;/api/payment&lt;/span&gt;

&lt;span class="s"&gt;↓&lt;/span&gt;

&lt;span class="s"&gt;payment-service&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;/api/order&lt;/span&gt;

&lt;span class="s"&gt;↓&lt;/span&gt;

&lt;span class="s"&gt;order-service&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Browser&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/api/payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Payment Service.&lt;/p&gt;




&lt;h1&gt;
  
  
  Host Based Routing
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;payment.company.com

↓

Payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;order.company.com

↓

Order
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same Ingress Controller.&lt;/p&gt;

&lt;p&gt;Different Services.&lt;/p&gt;




&lt;h1&gt;
  
  
  Path Based Routing
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/api/payment

↓

Payment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/api/order

↓

Order
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Can Ingress Load Balance?
&lt;/h1&gt;

&lt;p&gt;Indirectly.&lt;/p&gt;

&lt;p&gt;Flow&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ingress

↓

Service

↓

Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Service performs load balancing to Pods (with kube-proxy or the underlying dataplane).&lt;/p&gt;




&lt;h1&gt;
  
  
  Real Production Flow
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

AWS ALB

↓

NGINX Ingress Controller

↓

Ingress

↓

ClusterIP Service

↓

Pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Where Does Istio Come?
&lt;/h1&gt;

&lt;p&gt;Suppose&lt;/p&gt;

&lt;p&gt;100 Microservices.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Payment

↓

Order

↓

Inventory

↓

Shipping

↓

Email

↓

Redis

↓

Kafka
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every service talks to every other service.&lt;/p&gt;

&lt;p&gt;Need&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Retry&lt;/li&gt;
&lt;li&gt;Circuit Breaker&lt;/li&gt;
&lt;li&gt;Metrics&lt;/li&gt;
&lt;li&gt;mTLS&lt;/li&gt;
&lt;li&gt;Traffic Control&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Can Ingress do this?&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;




&lt;h1&gt;
  
  
  Service Mesh
&lt;/h1&gt;

&lt;p&gt;Istio is a &lt;strong&gt;Service Mesh&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It manages &lt;strong&gt;service-to-service communication&lt;/strong&gt; inside the cluster.&lt;/p&gt;




&lt;h1&gt;
  
  
  Biggest Difference
&lt;/h1&gt;

&lt;p&gt;Ingress&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;North-South Traffic&lt;/p&gt;

&lt;p&gt;(Internet → Cluster)&lt;/p&gt;

&lt;p&gt;Istio&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;East-West Traffic&lt;/p&gt;

&lt;p&gt;(Service → Service)&lt;/p&gt;




&lt;h1&gt;
  
  
  North-South
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

Cluster
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  East-West
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Payment

↓

Inventory

↓

Shipping

↓

User

↓

Redis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Internal communication.&lt;/p&gt;




&lt;h1&gt;
  
  
  How Istio Works
&lt;/h1&gt;

&lt;p&gt;Istio injects an &lt;strong&gt;Envoy sidecar proxy&lt;/strong&gt; into each Pod.&lt;/p&gt;

&lt;p&gt;Instead of&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spring Boot

↓

Spring Boot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Traffic becomes&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spring

↓

Envoy

↓

Envoy

↓

Spring
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Applications don't need to implement these networking features themselves.&lt;/p&gt;




&lt;h1&gt;
  
  
  Sidecar
&lt;/h1&gt;

&lt;p&gt;Payment Pod&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spring Boot

+

Envoy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Order Pod&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spring Boot

+

Envoy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every Pod gets Envoy (when sidecar injection is enabled).&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Envoy?
&lt;/h1&gt;

&lt;p&gt;Envoy provides&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Routing&lt;/li&gt;
&lt;li&gt;Retry&lt;/li&gt;
&lt;li&gt;Timeout&lt;/li&gt;
&lt;li&gt;Metrics&lt;/li&gt;
&lt;li&gt;mTLS&lt;/li&gt;
&lt;li&gt;Load balancing&lt;/li&gt;
&lt;li&gt;Circuit breaking&lt;/li&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Retry
&lt;/h1&gt;

&lt;p&gt;Without Istio&lt;/p&gt;

&lt;p&gt;Spring Boot code&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;RetryTemplate&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With Istio&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Retry

↓

Configured in Istio
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No code changes.&lt;/p&gt;




&lt;h1&gt;
  
  
  Circuit Breaker
&lt;/h1&gt;

&lt;p&gt;Payment Service&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Down.&lt;/p&gt;

&lt;p&gt;Without Istio&lt;/p&gt;

&lt;p&gt;Every request waits and eventually times out.&lt;/p&gt;

&lt;p&gt;With Istio&lt;/p&gt;

&lt;p&gt;Circuit opens.&lt;/p&gt;

&lt;p&gt;Requests fail fast until the service recovers.&lt;/p&gt;




&lt;h1&gt;
  
  
  mTLS
&lt;/h1&gt;

&lt;p&gt;Without Istio&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Payment

↓

HTTP

↓

Inventory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Traffic may be unencrypted inside the cluster.&lt;/p&gt;

&lt;p&gt;With Istio&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Payment

↓

Encrypted (mTLS)

↓

Inventory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both services authenticate each other and encrypt traffic.&lt;/p&gt;




&lt;h1&gt;
  
  
  Traffic Splitting
&lt;/h1&gt;

&lt;p&gt;Suppose&lt;/p&gt;

&lt;p&gt;New Version&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Payment v2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Need&lt;/p&gt;

&lt;p&gt;10%&lt;/p&gt;

&lt;p&gt;traffic.&lt;/p&gt;

&lt;p&gt;Istio&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;90%

↓

v1

10%

↓

v2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perfect for Canary Deployment.&lt;/p&gt;




&lt;h1&gt;
  
  
  Blue Green
&lt;/h1&gt;

&lt;p&gt;Istio can shift&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;100%

↓

Blue
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;100%

↓

Green
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;without changing application code.&lt;/p&gt;




&lt;h1&gt;
  
  
  Observability
&lt;/h1&gt;

&lt;p&gt;Istio automatically collects&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Latency&lt;/li&gt;
&lt;li&gt;Error Rate&lt;/li&gt;
&lt;li&gt;Request Count&lt;/li&gt;
&lt;li&gt;Success Rate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No application changes required.&lt;/p&gt;




&lt;h1&gt;
  
  
  Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Internet

↓

ALB

↓

NGINX Ingress Controller

↓

Payment Pod

Spring Boot

+

Envoy

↓

Inventory Pod

Spring Boot

+

Envoy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  NGINX vs Ingress vs Istio
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;NGINX&lt;/th&gt;
&lt;th&gt;Ingress&lt;/th&gt;
&lt;th&gt;Istio&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Software&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌ (API Resource)&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reverse Proxy&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Via Envoy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;External Routing&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;Defines rules&lt;/td&gt;
&lt;td&gt;Limited (through Gateway)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internal Routing&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mTLS&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Traffic Splitting&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Circuit Breaker&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Retries&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Observability&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Rich telemetry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sidecar Proxy&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ (Envoy)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Interview Questions
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Q1. What is Ingress?
&lt;/h2&gt;

&lt;p&gt;A Kubernetes API resource that defines HTTP/HTTPS routing rules into the cluster.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q2. Is Ingress a Load Balancer?
&lt;/h2&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;It only defines routing rules.&lt;/p&gt;

&lt;p&gt;An Ingress Controller implements those rules.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q3. What is an Ingress Controller?
&lt;/h2&gt;

&lt;p&gt;A controller (such as NGINX Ingress Controller or Traefik) that watches Ingress resources and configures routing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q4. Difference between NGINX and Ingress?
&lt;/h2&gt;

&lt;p&gt;NGINX is software.&lt;/p&gt;

&lt;p&gt;Ingress is a Kubernetes resource.&lt;/p&gt;

&lt;p&gt;NGINX Ingress Controller is software that implements Ingress.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q5. What is Istio?
&lt;/h2&gt;

&lt;p&gt;A service mesh that manages service-to-service communication using Envoy proxies.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q6. What problem does Istio solve?
&lt;/h2&gt;

&lt;p&gt;It provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mTLS&lt;/li&gt;
&lt;li&gt;Retries&lt;/li&gt;
&lt;li&gt;Timeouts&lt;/li&gt;
&lt;li&gt;Circuit breaking&lt;/li&gt;
&lt;li&gt;Traffic management&lt;/li&gt;
&lt;li&gt;Observability&lt;/li&gt;
&lt;li&gt;Policy enforcement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;without requiring application code changes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q7. What is a Sidecar?
&lt;/h2&gt;

&lt;p&gt;An additional container running in the same Pod as the application.&lt;/p&gt;

&lt;p&gt;In Istio, the sidecar is typically an Envoy proxy.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q8. What is East-West traffic?
&lt;/h2&gt;

&lt;p&gt;Communication between services inside the cluster.&lt;/p&gt;




&lt;h2&gt;
  
  
  Q9. What is North-South traffic?
&lt;/h2&gt;

&lt;p&gt;Traffic entering or leaving the cluster (for example, users accessing your application).&lt;/p&gt;




&lt;h2&gt;
  
  
  Q10. Can Istio replace Ingress?
&lt;/h2&gt;

&lt;p&gt;Not exactly.&lt;/p&gt;

&lt;p&gt;Istio has its own Gateway for external traffic, but many production environments still use an external load balancer and sometimes an Ingress Controller depending on architecture and operational preferences.&lt;/p&gt;




&lt;h1&gt;
  
  
  Real Production Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    Internet
                        │
                 AWS Route53
                        │
                 AWS ALB (Load Balancer)
                        │
               NGINX Ingress Controller
                        │
                  Ingress Rules
                        │
              ┌─────────┴─────────┐
              │                   │
      payment-service      order-service
              │                   │
      ┌───────┘                   └───────┐
      │                                   │
+------------------+             +------------------+
| Payment Pod      |             | Order Pod        |
| Spring Boot      |             | Spring Boot      |
| Envoy Sidecar    |◄──────────► | Envoy Sidecar    |
+------------------+   mTLS      +------------------+
             │
             ▼
     inventory-service
             │
+----------------------+
| Inventory Pod        |
| Spring Boot          |
| Envoy Sidecar        |
+----------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Complete Kubernetes Roadmap So Far
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Namespace
    │
Labels
    │
Deployment
    │
ReplicaSet
    │
Pods
    │
Service
    │
CoreDNS
    │
Ingress
    │
Ingress Controller
    │
ConfigMap
    │
Secrets
    │
StatefulSet
    │
DaemonSet
    │
Job
    │
CronJob
    │
Networking
    │
CNI
    │
kube-proxy
    │
NetworkPolicy
    │
NGINX
    │
Ingress
    │
Istio
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Senior Interview Tip
&lt;/h2&gt;

&lt;p&gt;One of the strongest answers you can give is to clearly distinguish the responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NGINX&lt;/strong&gt;: Reverse proxy and web server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ingress&lt;/strong&gt;: Kubernetes routing configuration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ingress Controller&lt;/strong&gt;: Software that enforces Ingress rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service&lt;/strong&gt;: Internal stable endpoint for Pods.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Istio&lt;/strong&gt;: Service mesh for secure, observable, and controlled service-to-service communication.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Envoy&lt;/strong&gt;: Sidecar proxy that carries out Istio's traffic management policies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding where each component fits in the request path is what interviewers are usually looking for.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>devops</category>
      <category>infrastructure</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>MYSQL-3 CTE PRACTICE</title>
      <dc:creator>Er. Bhupendra</dc:creator>
      <pubDate>Tue, 11 Aug 2026 15:08:14 +0000</pubDate>
      <link>https://dev.to/bhu_kalki/mysql-3-cte-practice-1i9h</link>
      <guid>https://dev.to/bhu_kalki/mysql-3-cte-practice-1i9h</guid>
      <description>&lt;h1&gt;
  
  
  CTE — 100 Interview Questions (Data Engineer Edition)
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Har question ke saath demo table diya gaya hai jitna zaroori ho — koi bhi query bina data dekhe mat samjho.
&lt;/h3&gt;




&lt;h2&gt;
  
  
  🎯 Pehle samjho: CTE hai kya (analogy)
&lt;/h2&gt;

&lt;p&gt;Socho tum ek &lt;strong&gt;factory assembly line&lt;/strong&gt; bana rahe ho. Har station pe ek intermediate part banta hai, phir agla station usko use karta hai. CTE (&lt;code&gt;WITH&lt;/code&gt; clause) bilkul waisa hi hai — ek &lt;strong&gt;temporary, named result set&lt;/strong&gt; jo query ke andar hi define hota hai aur agli line mein use ho jata hai. Subquery jaisa hi kaam karta hai, but &lt;strong&gt;readable, reusable (within the same query), aur recursive bhi ho sakta hai&lt;/strong&gt; — jo subquery nahi kar sakta.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;station1&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;raw_table&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;station1&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="p"&gt;...;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  📦 DEMO TABLES (used across most questions)
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- Table 1: Employees&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;emp_id&lt;/span&gt;      &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;emp_name&lt;/span&gt;    &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;manager_id&lt;/span&gt;  &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;dept_id&lt;/span&gt;     &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;salary&lt;/span&gt;      &lt;span class="nb"&gt;DECIMAL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;hire_date&lt;/span&gt;   &lt;span class="nb"&gt;DATE&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Ravi'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;90000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2018-01-15'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Anita'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;75000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2019-03-10'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Suresh'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;72000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2019-07-20'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Priya'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;60000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2020-01-05'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Kiran'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;62000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2020-06-15'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Meena'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;58000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2021-02-11'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Arjun'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;61000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2021-09-01'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Divya'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2022-03-19'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;-- Table 2: Departments&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;dept_id&lt;/span&gt;   &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;dept_name&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Engineering'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Sales'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'HR'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;-- Table 3: Orders (for data-engineering style aggregation questions)&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;order_id&lt;/span&gt;    &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;order_date&lt;/span&gt;  &lt;span class="nb"&gt;DATE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;amount&lt;/span&gt;      &lt;span class="nb"&gt;DECIMAL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;status&lt;/span&gt;      &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;101&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2024-01-05'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="s1"&gt;'COMPLETED'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;102&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2024-01-20'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="s1"&gt;'COMPLETED'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;103&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2024-01-10'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;700&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="s1"&gt;'CANCELLED'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;104&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2024-02-01'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="s1"&gt;'COMPLETED'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;105&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2024-02-15'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'COMPLETED'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;106&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2024-03-01'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;450&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="s1"&gt;'COMPLETED'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;107&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2024-03-10'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;150&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="s1"&gt;'COMPLETED'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;-- Table 4: Product Events (log-style table, for pipeline dedup / gaps-islands questions)&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;product_events&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;event_id&lt;/span&gt;    &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;product_id&lt;/span&gt;  &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;event_type&lt;/span&gt;  &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;event_time&lt;/span&gt;  &lt;span class="nb"&gt;TIMESTAMP&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;product_events&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'VIEW'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="s1"&gt;'2024-05-01 10:00:00'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'VIEW'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="s1"&gt;'2024-05-01 10:00:00'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;  &lt;span class="c1"&gt;-- duplicate row&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'CLICK'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2024-05-01 10:05:00'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'BUY'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="s1"&gt;'2024-05-01 10:10:00'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'VIEW'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="s1"&gt;'2024-05-01 11:00:00'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'CLICK'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2024-05-01 11:02:00'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  SECTION A — CTE Fundamentals (Q1–15)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q1.&lt;/strong&gt; Simple CTE se saare employees dikhao jinki salary 65000 se zyada hai.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;high_earners&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;65000&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;high_earners&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q2.&lt;/strong&gt; CTE vs Subquery — dono se same output nikaalo (dept-wise avg salary &amp;gt; overall avg).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;dept_avg&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;avg_sal&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;dept_avg&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;avg_sal&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Interview point: CTE readability better hai jab query multi-step ho; subquery deeply nested ho jaati hai.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q3.&lt;/strong&gt; CTE ko ek se zyada baar reference karo (same query mein).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;dept_avg&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;avg_sal&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;avg_sal&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;dept_avg&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;avg_sal&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q4.&lt;/strong&gt; Non-recursive CTE ka syntax explain karo aur ek dummy example do (no table needed — conceptual).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q5.&lt;/strong&gt; CTE ki scope kya hoti hai? (query khatam hote hi CTE gayab ho jaata hai — table create nahi hota) — Conceptual, demo table optional.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q6.&lt;/strong&gt; Multiple CTEs ek saath chain karo — dept avg nikaalo, phir usse top dept find karo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;dept_avg&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;avg_sal&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;
&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="n"&gt;top_dept&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;dept_avg&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;avg_sal&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt; &lt;span class="k"&gt;LIMIT&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;top_dept&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q7.&lt;/strong&gt; CTE ke andar CTE (nested reference) — 3 stage pipeline banao (filter → aggregate → rank).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;filtered&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;hire_date&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="s1"&gt;'2019-01-01'&lt;/span&gt;
&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="n"&gt;aggregated&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;cnt&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;filtered&lt;/span&gt; &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;aggregated&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;cnt&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q8.&lt;/strong&gt; &lt;code&gt;orders&lt;/code&gt; table se monthly revenue CTE banao.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;monthly_revenue&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;DATE_TRUNC&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'month'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="k"&gt;month&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;revenue&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'COMPLETED'&lt;/span&gt;
    &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;DATE_TRUNC&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'month'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;monthly_revenue&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="k"&gt;month&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q9.&lt;/strong&gt; CTE mein &lt;code&gt;WHERE&lt;/code&gt; vs bahar &lt;code&gt;WHERE&lt;/code&gt; — dono ka fark dikhao (filter before vs after aggregation).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q10.&lt;/strong&gt; CTE ka use karke duplicate rows detect karo (&lt;code&gt;product_events&lt;/code&gt; table).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;dup_check&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ROW_NUMBER&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;product_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;event_type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;event_time&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;event_id&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;product_events&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;dup_check&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q11.&lt;/strong&gt; Above se duplicates delete karo (data engineering must-know).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;dup_check&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;event_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ROW_NUMBER&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;product_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;event_type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;event_time&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;event_id&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;product_events&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;DELETE&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;product_events&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;event_id&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;event_id&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;dup_check&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q12.&lt;/strong&gt; CTE ke saath &lt;code&gt;INSERT INTO ... SELECT&lt;/code&gt; combine karo (staging → target table load pattern).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;cleaned&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;DISTINCT&lt;/span&gt; &lt;span class="n"&gt;product_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;event_type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;event_time&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;product_events&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;product_events_clean&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;cleaned&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q13.&lt;/strong&gt; CTE column alias explicitly define karo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;dept_summary&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;total_emp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;dept_summary&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q14.&lt;/strong&gt; CTE mein &lt;code&gt;JOIN&lt;/code&gt; use karo — employee + department name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;emp_dept&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;emp_dept&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q15.&lt;/strong&gt; CTE performance ka trade-off explain karo — materialize hota hai ya not (DB dependent: Postgres &amp;lt;12 always materialized, 12+ inlines by default; SQL Server/Oracle mostly inline/optimizer-decided).&lt;/p&gt;




&lt;h2&gt;
  
  
  SECTION B — CTE with Window Functions (Q16–35)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q16.&lt;/strong&gt; Har department ka top earner nikaalo &lt;code&gt;RANK()&lt;/code&gt; + CTE se.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;RANK&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;rnk&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;rnk&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q17.&lt;/strong&gt; Nth highest salary (N=2) CTE se.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;DENSE_RANK&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;rnk&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;rnk&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q18.&lt;/strong&gt; Dept-wise Nth highest salary.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;DENSE_RANK&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;rnk&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;rnk&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q19.&lt;/strong&gt; Running total of salary (order by hire_date).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;running&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hire_date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;hire_date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;running_total&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;running&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q20.&lt;/strong&gt; Moving average (last 2 orders) per customer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;movavg&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
               &lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt;
               &lt;span class="k"&gt;ROWS&lt;/span&gt; &lt;span class="k"&gt;BETWEEN&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;PRECEDING&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="k"&gt;CURRENT&lt;/span&gt; &lt;span class="k"&gt;ROW&lt;/span&gt;
           &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;moving_avg&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;movavg&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q21.&lt;/strong&gt; &lt;code&gt;LAG()&lt;/code&gt; se pichle order ka amount compare karo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;lag_amt&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="n"&gt;LAG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;prev_amount&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;prev_amount&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;diff&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;lag_amt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q22.&lt;/strong&gt; &lt;code&gt;LEAD()&lt;/code&gt; se agla order date nikaalo, phir gap days calculate karo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;lead_date&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="n"&gt;LEAD&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;next_date&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;next_date&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;gap_days&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;lead_date&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q23.&lt;/strong&gt; Cumulative distinct customers count per month (&lt;code&gt;COUNT(DISTINCT)&lt;/code&gt; window trick via CTE + subquery).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q24.&lt;/strong&gt; &lt;code&gt;NTILE(4)&lt;/code&gt; se employees ko 4 salary buckets mein baato.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;buckets&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;NTILE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;quartile&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;buckets&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q25.&lt;/strong&gt; Percentage of total salary contributed by each employee within dept.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;dept_total&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;total_sal&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;ROUND&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;total_sal&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;pct_of_dept&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;dept_total&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q26.&lt;/strong&gt; First and last hired employee per dept (&lt;code&gt;FIRST_VALUE&lt;/code&gt;/&lt;code&gt;LAST_VALUE&lt;/code&gt;).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;fv&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hire_date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="n"&gt;FIRST_VALUE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;hire_date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;first_hired&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="n"&gt;LAST_VALUE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
               &lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;hire_date&lt;/span&gt;
               &lt;span class="k"&gt;ROWS&lt;/span&gt; &lt;span class="k"&gt;BETWEEN&lt;/span&gt; &lt;span class="n"&gt;UNBOUNDED&lt;/span&gt; &lt;span class="k"&gt;PRECEDING&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;UNBOUNDED&lt;/span&gt; &lt;span class="k"&gt;FOLLOWING&lt;/span&gt;
           &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;last_hired&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;DISTINCT&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;first_hired&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;last_hired&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;fv&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q27.&lt;/strong&gt; Salary gap between consecutive ranked employees (dept-wise).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q28.&lt;/strong&gt; Median salary per dept using CTE + &lt;code&gt;PERCENTILE_CONT&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;med&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="n"&gt;PERCENTILE_CONT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;WITHIN&lt;/span&gt; &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;median_sal&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;DISTINCT&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;median_sal&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;med&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q29.&lt;/strong&gt; Employees earning above their manager's salary (self-join + CTE).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;mgr_sal&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;mgr_salary&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mgr_salary&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;mgr_sal&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mgr_salary&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q30.&lt;/strong&gt; Second most recent order per customer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ROW_NUMBER&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q31–35.&lt;/strong&gt; &lt;em&gt;(Practice variants — same pattern, different metric):&lt;/em&gt; top-3 orders per customer (&lt;code&gt;rn&amp;lt;=3&lt;/code&gt;); dept with highest salary variance (&lt;code&gt;STDDEV&lt;/code&gt; + CTE); % month-over-month revenue growth (&lt;code&gt;LAG&lt;/code&gt; on monthly CTE from Q8); employees hired in the same year as their manager; rank departments by total headcount.&lt;/p&gt;




&lt;h2&gt;
  
  
  SECTION C — Recursive CTE (Q36–55)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Analogy:&lt;/strong&gt; Recursive CTE ek &lt;strong&gt;loop&lt;/strong&gt; jaisa hai jo apna hi output next iteration ka input bana leta hai, jab tak stop condition (anchor se disconnect) na aa jaaye. Do parts hote hain: &lt;strong&gt;anchor member&lt;/strong&gt; (starting point) + &lt;strong&gt;recursive member&lt;/strong&gt; (jo khud ko call karta hai) &lt;code&gt;UNION ALL&lt;/code&gt; se joined.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;RECURSIVE&lt;/span&gt; &lt;span class="n"&gt;cte_name&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="c1"&gt;-- Anchor&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; 
    &lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt;
    &lt;span class="c1"&gt;-- Recursive part (references cte_name itself)&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="k"&gt;table&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;cte_name&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;cte_name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q36.&lt;/strong&gt; Employee-Manager hierarchy — Ravi (CEO) se top-down poora org chart print karo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;RECURSIVE&lt;/span&gt; &lt;span class="n"&gt;org_chart&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;manager_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="k"&gt;level&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;

    &lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt;

    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;level&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;
    &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;org_chart&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;org_chart&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="k"&gt;level&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q37.&lt;/strong&gt; Same hierarchy mein indentation ke saath naam print karo (visual tree).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;RECURSIVE&lt;/span&gt; &lt;span class="n"&gt;org_chart&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;manager_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="k"&gt;level&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nb"&gt;TEXT&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;
    &lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;level&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="s1"&gt;' -&amp;gt; '&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;org_chart&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;REPEAT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'  '&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;level&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;emp_name&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;org_tree&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;org_chart&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q38.&lt;/strong&gt; Ek specific employee (Meena, id=6) ke saare managers (bottom-up chain) nikaalo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;RECURSIVE&lt;/span&gt; &lt;span class="n"&gt;manager_chain&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;
    &lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;manager_chain&lt;/span&gt; &lt;span class="n"&gt;mc&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;manager_chain&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q39.&lt;/strong&gt; Har employee ke direct + indirect reports ki total count nikaalo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;RECURSIVE&lt;/span&gt; &lt;span class="n"&gt;reports&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;root_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;
    &lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;root_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;reports&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;root_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;total_reports&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;reports&lt;/span&gt; &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;root_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q40.&lt;/strong&gt; Generate a number series 1 to 10 (classic recursive CTE — no table needed).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;RECURSIVE&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;
    &lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;nums&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q41.&lt;/strong&gt; Generate a date series for Jan 2024 (calendar dimension — bahut common data-engineering pattern).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;RECURSIVE&lt;/span&gt; &lt;span class="n"&gt;date_series&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="nb"&gt;DATE&lt;/span&gt; &lt;span class="s1"&gt;'2024-01-01'&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;dt&lt;/span&gt;
    &lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;dt&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;INTERVAL&lt;/span&gt; &lt;span class="s1"&gt;'1 day'&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;date_series&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;dt&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nb"&gt;DATE&lt;/span&gt; &lt;span class="s1"&gt;'2024-01-31'&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;date_series&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q42.&lt;/strong&gt; Fibonacci series first 10 numbers using recursive CTE (no table).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;RECURSIVE&lt;/span&gt; &lt;span class="n"&gt;fib&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;
    &lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;fib&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;fib&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q43.&lt;/strong&gt; Infinite loop se bachne ka tarika — &lt;code&gt;MAXRECURSION&lt;/code&gt;/depth guard kaise lagayein.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;RECURSIVE&lt;/span&gt; &lt;span class="n"&gt;org_chart&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;manager_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="k"&gt;level&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;
    &lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;level&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;org_chart&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;
    &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;level&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;   &lt;span class="c1"&gt;-- 👈 safety guard against cycles&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;org_chart&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Interview point: cyclic data (A manages B, B manages A) infinite loop bana sakta hai — hamesha depth-limit ya visited-check lagao.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q44.&lt;/strong&gt; Recursive CTE se factorial of a number (n=5) nikaalo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;RECURSIVE&lt;/span&gt; &lt;span class="n"&gt;fact&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="k"&gt;result&lt;/span&gt;
    &lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;result&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;fact&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;fact&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q45.&lt;/strong&gt; Bill of Materials (BOM) style — ek naya demo table lo (parts explosion, common data-eng interview Q).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;parts&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;part_id&lt;/span&gt;   &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;part_name&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;parent_id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;parts&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Car'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Engine'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Wheel'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Piston'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Bolt'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;RECURSIVE&lt;/span&gt; &lt;span class="n"&gt;bom&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;part_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;part_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;parent_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="k"&gt;level&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;parts&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;parent_id&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;
    &lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;part_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;part_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parent_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;level&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;parts&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;bom&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parent_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;part_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;bom&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="k"&gt;level&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q46.&lt;/strong&gt; Total leaf-level part count per top-level assembly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q47.&lt;/strong&gt; Employee hierarchy mein sirf level 2 tak restrict karo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;RECURSIVE&lt;/span&gt; &lt;span class="n"&gt;org_chart&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;manager_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="k"&gt;level&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;
    &lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;level&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;org_chart&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;
    &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;level&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;org_chart&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q48.&lt;/strong&gt; Recursive CTE se cumulative running salary budget per level of hierarchy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q49.&lt;/strong&gt; Graph traversal — connected components find karo (ek "friends" edge table lo).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;friendships&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;person_a&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;person_b&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;friendships&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;RECURSIVE&lt;/span&gt; &lt;span class="n"&gt;network&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;person_a&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;start_person&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;person_a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;person_b&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;friendships&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;person_a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;start_person&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;person_a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;person_b&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;friendships&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;
    &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;network&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;person_a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;person_b&lt;/span&gt; &lt;span class="k"&gt;OR&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;person_b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;person_a&lt;/span&gt;
    &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;person_a&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;person_a&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;DISTINCT&lt;/span&gt; &lt;span class="n"&gt;person_a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;person_b&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;network&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q50.&lt;/strong&gt; &lt;code&gt;UNION&lt;/code&gt; vs &lt;code&gt;UNION ALL&lt;/code&gt; recursive CTE mein kyun &lt;code&gt;UNION ALL&lt;/code&gt; prefer karte hain (performance + duplicate control ka trade-off).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q51–55.&lt;/strong&gt; &lt;em&gt;(Practice variants):&lt;/em&gt; recursive CTE se hierarchical path string banao (&lt;code&gt;emp1 &amp;gt; emp2 &amp;gt; emp3&lt;/code&gt;); category → sub-category tree (e-commerce schema); recursive CTE se 1-100 ke saare even numbers; recursive CTE se pagination-style batch id generate karo; recursive CTE se employee count per hierarchy depth level.&lt;/p&gt;




&lt;h2&gt;
  
  
  SECTION D — Data Engineering Scenario CTEs (Q56–80)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q56.&lt;/strong&gt; Gaps and Islands — &lt;code&gt;product_events&lt;/code&gt; mein consecutive event groups banao (session detection).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;ordered&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ROW_NUMBER&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;product_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;event_time&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;product_events&lt;/span&gt;
&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="n"&gt;islands&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;event_time&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rn&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;INTERVAL&lt;/span&gt; &lt;span class="s1"&gt;'1 minute'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;grp&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;ordered&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;product_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;MIN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event_time&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;session_start&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;MAX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event_time&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;session_end&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;islands&lt;/span&gt; &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;product_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;grp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q57.&lt;/strong&gt; Slowly Changing Dimension (SCD Type 2) — latest active record per key nikaalo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ROW_NUMBER&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q58.&lt;/strong&gt; Incremental load pattern — CTE se "new rows since last load" nikaalo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;last_loaded&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;MAX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;max_dt&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders_target&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt; &lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;last_loaded&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;order_date&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;max_dt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q59.&lt;/strong&gt; Data quality check — CTE se null/invalid rows flag karo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;validation&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;CASE&lt;/span&gt; &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt; &lt;span class="k"&gt;OR&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt; &lt;span class="s1"&gt;'INVALID'&lt;/span&gt; &lt;span class="k"&gt;ELSE&lt;/span&gt; &lt;span class="s1"&gt;'VALID'&lt;/span&gt; &lt;span class="k"&gt;END&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;dq_flag&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;dq_flag&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;validation&lt;/span&gt; &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;dq_flag&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q60.&lt;/strong&gt; Pivot-style CTE — dept-wise headcount ko columns mein convert karo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;dept_count&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;cnt&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt;
    &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;CASE&lt;/span&gt; &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt; &lt;span class="n"&gt;cnt&lt;/span&gt; &lt;span class="k"&gt;END&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;engineering&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;CASE&lt;/span&gt; &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt; &lt;span class="n"&gt;cnt&lt;/span&gt; &lt;span class="k"&gt;END&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;sales&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;dept_count&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q61.&lt;/strong&gt; Unpivot-style CTE (columns ko rows mein — reverse of Q60).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q62.&lt;/strong&gt; Deduplicate keeping latest record by &lt;code&gt;updated_at&lt;/code&gt; (CDC pattern) — new demo table.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;customer_cdc&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;updated_at&lt;/span&gt; &lt;span class="nb"&gt;TIMESTAMP&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;customer_cdc&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Rahul'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;      &lt;span class="s1"&gt;'2024-01-01 10:00:00'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Rahul Kumar'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'2024-02-01 10:00:00'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Sneha'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;      &lt;span class="s1"&gt;'2024-01-15 10:00:00'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;latest&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ROW_NUMBER&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;updated_at&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;customer_cdc&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;updated_at&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;latest&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q63.&lt;/strong&gt; Fan-out check — CTE se detect karo ki join se rows duplicate to nahi ho rahi.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q64.&lt;/strong&gt; Late-arriving data handle — CTE se "records jo apne batch window ke baad aaye" nikaalo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q65.&lt;/strong&gt; Rolling 7-day active customers CTE se.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;daily&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;DISTINCT&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;d1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;DISTINCT&lt;/span&gt; &lt;span class="n"&gt;d2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;active_last_7d&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;daily&lt;/span&gt; &lt;span class="n"&gt;d1&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;daily&lt;/span&gt; &lt;span class="n"&gt;d2&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;d2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;order_date&lt;/span&gt; &lt;span class="k"&gt;BETWEEN&lt;/span&gt; &lt;span class="n"&gt;d1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;order_date&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;d1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;order_date&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;d1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q66.&lt;/strong&gt; Funnel analysis CTE — VIEW → CLICK → BUY conversion per product.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;funnel&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;product_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;MAX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;CASE&lt;/span&gt; &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;event_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'VIEW'&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;ELSE&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;END&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;viewed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;MAX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;CASE&lt;/span&gt; &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;event_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'CLICK'&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;ELSE&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;END&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;clicked&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;MAX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;CASE&lt;/span&gt; &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;event_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'BUY'&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;ELSE&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="k"&gt;END&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;bought&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;product_events&lt;/span&gt; &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;product_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;viewed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;total_view&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;clicked&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;total_click&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bought&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;total_buy&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;funnel&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q67.&lt;/strong&gt; Cohort retention — CTE se first-order-month cohort banao, phir retention track karo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q68.&lt;/strong&gt; CTE se orphan records find karo (orders jinka customer employees/customers table mein nahi hai — referential integrity check).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q69.&lt;/strong&gt; CTE se schema drift detect karna (conceptual — column count/type check via information_schema CTE).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q70.&lt;/strong&gt; Partition pruning-friendly CTE likho (date filter early CTE mein daalo, late nahi).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q71.&lt;/strong&gt; CTE se top-N per group (top 2 orders by amount per customer) — classic interview favorite.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ROW_NUMBER&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q72.&lt;/strong&gt; CTE se anti-join pattern (customers with zero completed orders).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;completed&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;DISTINCT&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'COMPLETED'&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;
&lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;completed&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;customer_id&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q73.&lt;/strong&gt; CTE se semi-join pattern (&lt;code&gt;EXISTS&lt;/code&gt; vs CTE + &lt;code&gt;IN&lt;/code&gt; comparison).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q74.&lt;/strong&gt; CTE se data skew check (group sizes ka distribution — bahut bade partitions dhoondo).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q75.&lt;/strong&gt; ETL staging pattern — raw → cleaned → aggregated, teen CTE stages mein.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;raw&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt;
&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="n"&gt;cleaned&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;raw&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'COMPLETED'&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="n"&gt;aggregated&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;total_spent&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;cleaned&lt;/span&gt; &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;aggregated&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;total_spent&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q76.&lt;/strong&gt; CTE se percentile-based outlier detection (orders jinka amount 95th percentile se upar hai).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q77.&lt;/strong&gt; CTE se year-over-year growth calculate karo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q78.&lt;/strong&gt; CTE se surrogate key generate karna (&lt;code&gt;ROW_NUMBER()&lt;/code&gt; as synthetic PK during load).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q79.&lt;/strong&gt; CTE + &lt;code&gt;MERGE&lt;/code&gt;/upsert pattern (conceptual — SCD Type 1 upsert).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q80.&lt;/strong&gt; CTE se partitioned table ke liye daily row-count audit report banao.&lt;/p&gt;




&lt;h2&gt;
  
  
  SECTION E — Tricky / Conceptual / Trade-off Questions (Q81–100)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q81.&lt;/strong&gt; CTE vs Temp Table vs View — teeno mein fark (lifetime, materialization, reusability).&lt;br&gt;
&lt;strong&gt;Q82.&lt;/strong&gt; CTE vs Subquery — kab kaunsa use karna chahiye (readability vs optimizer behavior).&lt;br&gt;
&lt;strong&gt;Q83.&lt;/strong&gt; Recursive CTE mein &lt;code&gt;UNION ALL&lt;/code&gt; mandatory kyun hai (&lt;code&gt;UNION&lt;/code&gt; allowed nahi har DB mein, aur duplicates ka issue).&lt;br&gt;
&lt;strong&gt;Q84.&lt;/strong&gt; Kya CTE ko index kiya ja sakta hai? (Nahi — CTE physical object nahi hai, temp table use karo agar indexing chahiye)&lt;br&gt;
&lt;strong&gt;Q85.&lt;/strong&gt; Multiple CTEs ek dusre ko reference kar sakte hain kya? (Haan, agar order mein defined ho — forward reference allowed nahi)&lt;br&gt;
&lt;strong&gt;Q86.&lt;/strong&gt; Postgres 12+ mein CTE &lt;code&gt;MATERIALIZED&lt;/code&gt; keyword ka use kya hai.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;filtered&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;MATERIALIZED&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'COMPLETED'&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;filtered&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q87.&lt;/strong&gt; CTE ke andar &lt;code&gt;DISTINCT&lt;/code&gt;, &lt;code&gt;GROUP BY&lt;/code&gt;, &lt;code&gt;ORDER BY&lt;/code&gt; allowed hain kya — kaunsa restriction hai (&lt;code&gt;ORDER BY&lt;/code&gt; bina &lt;code&gt;LIMIT/TOP/OFFSET&lt;/code&gt; ke kai DB mein CTE ke andar ignore/error ho sakta hai).&lt;br&gt;
&lt;strong&gt;Q88.&lt;/strong&gt; Recursive CTE mein anchor query mein &lt;code&gt;ORDER BY&lt;/code&gt; allowed hai kya (generally not, sirf outer query mein).&lt;br&gt;
&lt;strong&gt;Q89.&lt;/strong&gt; CTE se large dataset process karte waqt performance pitfall kya ho sakta hai (non-materialized CTE = repeated computation agar multiple baar reference ho).&lt;br&gt;
&lt;strong&gt;Q90.&lt;/strong&gt; CTE ka execution plan kaise dekhein (&lt;code&gt;EXPLAIN ANALYZE&lt;/code&gt;) aur kya batayega.&lt;br&gt;
&lt;strong&gt;Q91.&lt;/strong&gt; CTE se self-referencing table update karna directly possible hai kya (nahi directly — CTE read-only hota hai target ke against, workaround: join based update).&lt;br&gt;
&lt;strong&gt;Q92.&lt;/strong&gt; Recursive CTE ki max depth limit kya hoti hai (SQL Server default 100 via &lt;code&gt;MAXRECURSION&lt;/code&gt;, Postgres by default unlimited but memory-bound).&lt;br&gt;
&lt;strong&gt;Q93.&lt;/strong&gt; CTE aur window function ka combination kyun powerful hota hai ETL mein (filter + rank + dedupe ek hi readable flow mein).&lt;br&gt;
&lt;strong&gt;Q94.&lt;/strong&gt; CTE ke andar dynamic SQL possible hai kya (nahi directly — CTE static hai, dynamic SQL alag se banake execute karo).&lt;br&gt;
&lt;strong&gt;Q95.&lt;/strong&gt; CTE naming collision ka rule (agar CTE naam existing table se match kare to CTE priority leta hai usi query scope mein).&lt;br&gt;
&lt;strong&gt;Q96.&lt;/strong&gt; Spark SQL / BigQuery mein CTE ka behavior traditional RDBMS se kaise differ karta hai (lazy evaluation, Catalyst optimizer CTE ko predicate pushdown ke saath inline kar sakta hai).&lt;br&gt;
&lt;strong&gt;Q97.&lt;/strong&gt; CTE se recursive hierarchy mein cycle detect karna (&lt;code&gt;visited&lt;/code&gt; array/path track karke).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;RECURSIVE&lt;/span&gt; &lt;span class="n"&gt;org_chart&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;manager_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ARRAY&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;visited&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;
    &lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;visited&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;org_chart&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;oc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;
    &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;ANY&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;oc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;visited&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;   &lt;span class="c1"&gt;-- 👈 cycle guard&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;org_chart&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q98.&lt;/strong&gt; CTE data pipelines mein &lt;code&gt;dbt&lt;/code&gt; jaise tools kaise CTE ka heavy use karte hain (modular models = compiled CTEs).&lt;br&gt;
&lt;strong&gt;Q99.&lt;/strong&gt; Ek real interview trap: "CTE hamesha subquery se fast hota hai" — sach hai ya myth? (Myth — depends on optimizer, materialization strategy, aur data size).&lt;br&gt;
&lt;strong&gt;Q100.&lt;/strong&gt; Final case study: &lt;code&gt;employees&lt;/code&gt; + &lt;code&gt;orders&lt;/code&gt; + &lt;code&gt;product_events&lt;/code&gt; teeno tables combine karke ek CTE pipeline banao jo — dept-wise total revenue-influencing customers dikhaye (multi-CTE capstone).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;completed_orders&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;total_spent&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'COMPLETED'&lt;/span&gt;
    &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;
&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="n"&gt;active_products&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;DISTINCT&lt;/span&gt; &lt;span class="n"&gt;product_id&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;product_events&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;event_type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'BUY'&lt;/span&gt;
&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="n"&gt;summary&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;co&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;co&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;total_spent&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;completed_orders&lt;/span&gt; &lt;span class="n"&gt;co&lt;/span&gt;
    &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;co&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;total_spent&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;summary&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;total_spent&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🧠 Interview-ready one-liner (agar poochein "CTE explain karo 30 seconds mein")
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"CTE ek named temporary result set hai jo &lt;code&gt;WITH&lt;/code&gt; clause se define hota hai, query ke scope tak hi live rehta hai, readability improve karta hai complex multi-step logic mein, aur recursive CTE ke through hierarchical ya graph data (org charts, BOM, category trees) handle karne ka standard tarika hai. Trade-off yeh hai ki yeh index nahi ho sakta aur DB-dependent hai ki materialize hoga ya inline optimize hoga."&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>PYTHON-REVISION</title>
      <dc:creator>Er. Bhupendra</dc:creator>
      <pubDate>Tue, 11 Aug 2026 14:58:48 +0000</pubDate>
      <link>https://dev.to/bhu_kalki/python-revision-3pnm</link>
      <guid>https://dev.to/bhu_kalki/python-revision-3pnm</guid>
      <description>&lt;p&gt;These are good beginner notes. For a &lt;strong&gt;Data Engineering interview&lt;/strong&gt;, I would make them more structured and fix a few technical points. Here are the important corrections and additions.&lt;/p&gt;




&lt;h1&gt;
  
  
  1. What is Python?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Definition&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Python is a &lt;strong&gt;high-level, interpreted, general-purpose, object-oriented programming language&lt;/strong&gt; known for its simple syntax and powerful libraries.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Easy to read and write&lt;/li&gt;
&lt;li&gt;Platform independent&lt;/li&gt;
&lt;li&gt;Open source&lt;/li&gt;
&lt;li&gt;Dynamically typed&lt;/li&gt;
&lt;li&gt;Huge standard library&lt;/li&gt;
&lt;li&gt;Supports Object-Oriented Programming (OOP)&lt;/li&gt;
&lt;li&gt;Used in Web Development, AI/ML, Automation, Data Engineering, Data Science, Testing, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello World&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  2. Why Python for Data Engineering?
&lt;/h1&gt;

&lt;p&gt;A Data Engineer mainly performs &lt;strong&gt;ETL&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Extract&lt;/strong&gt; → Read data from APIs, files, databases&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transform&lt;/strong&gt; → Clean, filter, validate, aggregate&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Load&lt;/strong&gt; → Store into Data Warehouse, Data Lake, Database&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Python provides libraries for every step.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;p&gt;Extraction&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Transformation&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Loading&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;psycopg2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cloud&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Real Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;100&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;200&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;abc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;300&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isdigit&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;600
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is exactly the kind of cleaning Data Engineers perform.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. Why Python instead of Java?
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Python&lt;/th&gt;
&lt;th&gt;Java&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Easy syntax&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Less code&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fast development&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pandas&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NumPy&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PySpark&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Automation&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Python has a much richer ecosystem for data processing.&lt;/p&gt;




&lt;h1&gt;
  
  
  4. Applications of Python in Data Engineering
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Build ETL pipelines&lt;/li&gt;
&lt;li&gt;Process CSV/JSON/XML&lt;/li&gt;
&lt;li&gt;API Integration&lt;/li&gt;
&lt;li&gt;Automation&lt;/li&gt;
&lt;li&gt;Data Validation&lt;/li&gt;
&lt;li&gt;Cloud Automation&lt;/li&gt;
&lt;li&gt;PySpark Jobs&lt;/li&gt;
&lt;li&gt;Airflow DAGs&lt;/li&gt;
&lt;li&gt;Kafka Consumers&lt;/li&gt;
&lt;li&gt;Database Operations&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  5. How Python Executes Code
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Python Code
      ↓
Lexer
      ↓
Parser
      ↓
AST (Abstract Syntax Tree)
      ↓
Bytecode (.pyc)
      ↓
Python Virtual Machine (PVM)
      ↓
Machine Code
      ↓
Output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Execution&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Source Code
↓

Bytecode

↓

Python Virtual Machine

↓

Output = 15
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  6. Is Python Compiled or Interpreted?
&lt;/h1&gt;

&lt;p&gt;Interview Answer:&lt;/p&gt;

&lt;p&gt;Python is often called an interpreted language, but internally it first compiles source code into bytecode and then executes that bytecode using the Python Virtual Machine (PVM).&lt;/p&gt;

&lt;p&gt;So the process is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.py file
↓

Bytecode (.pyc)

↓

Python Virtual Machine

↓

Output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  7. Variables
&lt;/h1&gt;

&lt;p&gt;Variable = Name that refers to an object in memory.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Memory&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a ─────► 10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Assignment&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Memory&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a ─┐
   ├────► 10
b ─┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both variables reference the same object initially.&lt;/p&gt;




&lt;h1&gt;
  
  
  8. Variable Rules
&lt;/h1&gt;

&lt;p&gt;Valid&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Amit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;_age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;
&lt;span class="n"&gt;salary1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Invalid&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Raj&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rules&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start with letter or _&lt;/li&gt;
&lt;li&gt;Cannot start with digit&lt;/li&gt;
&lt;li&gt;Case sensitive
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;name&lt;/span&gt;
&lt;span class="n"&gt;Name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These are different variables.&lt;/p&gt;




&lt;h1&gt;
  
  
  9. Data Types
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Integer
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Used for&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IDs&lt;/li&gt;
&lt;li&gt;Counts&lt;/li&gt;
&lt;li&gt;Quantities&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Float
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;price&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;99.99&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Used for&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prices&lt;/li&gt;
&lt;li&gt;Metrics&lt;/li&gt;
&lt;li&gt;Calculations&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  String
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Amit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Used for&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Names&lt;/li&gt;
&lt;li&gt;Cities&lt;/li&gt;
&lt;li&gt;Emails&lt;/li&gt;
&lt;li&gt;JSON&lt;/li&gt;
&lt;li&gt;CSV&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Operations&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt; Error Log &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;upper&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Warning&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Boolean
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;is_active&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Used in&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conditions&lt;/li&gt;
&lt;li&gt;Filtering&lt;/li&gt;
&lt;li&gt;Flags&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  List
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;nums&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ordered and mutable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tuple
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ordered and immutable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Set
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Unique values only.&lt;/p&gt;




&lt;h2&gt;
  
  
  Dictionary
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;student&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Amit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;age&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stores key-value pairs.&lt;/p&gt;




&lt;h1&gt;
  
  
  10. Type Conversion
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;100&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;150
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Difference&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;10&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;20&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1020
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because they are strings.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;30
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Type Checking&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;10&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  11. Operators
&lt;/h1&gt;

&lt;p&gt;Arithmetic&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;+&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;
&lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;
&lt;span class="o"&gt;//&lt;/span&gt;
&lt;span class="o"&gt;%&lt;/span&gt;
&lt;span class="o"&gt;**&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Examples&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3.333
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Comparison&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;

&lt;span class="o"&gt;&amp;gt;=&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;

&lt;span class="o"&gt;==&lt;/span&gt;

&lt;span class="o"&gt;!=&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Logical&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="ow"&gt;and&lt;/span&gt;

&lt;span class="ow"&gt;or&lt;/span&gt;

&lt;span class="ow"&gt;not&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Membership&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="ow"&gt;in&lt;/span&gt;

&lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;True
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  12. Small Real-World Example
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1000&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;High Transaction&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Practice Problems
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Problem 1
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Even&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Odd&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Problem 2
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;10&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;20&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;30
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Problem 3
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;100&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;200&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;abc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;300&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isdigit&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;100
200
300
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Common Mistakes
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Using &lt;code&gt;=&lt;/code&gt; instead of &lt;code&gt;==&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Forgetting type conversion (&lt;code&gt;int()&lt;/code&gt;, &lt;code&gt;float()&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Ignoring leading/trailing spaces (&lt;code&gt;strip()&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Case sensitivity (&lt;code&gt;Name&lt;/code&gt; vs &lt;code&gt;name&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Mixing strings and integers without conversion&lt;/li&gt;
&lt;li&gt;Incorrect indentation (Python uses indentation to define blocks)&lt;/li&gt;
&lt;li&gt;Assuming lists and dictionaries behave the same (lists use indexes; dictionaries use keys)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These notes form a strong foundation for Python in Data Engineering. The next logical topics are &lt;strong&gt;Control Flow (if/else, loops)&lt;/strong&gt;, &lt;strong&gt;Functions&lt;/strong&gt;, &lt;strong&gt;Lists/Tuples/Sets/Dictionaries in depth&lt;/strong&gt;, &lt;strong&gt;File Handling&lt;/strong&gt;, &lt;strong&gt;Exception Handling&lt;/strong&gt;, and &lt;strong&gt;Modules &amp;amp; Packages&lt;/strong&gt;, which are commonly asked in Data Engineering interviews.&lt;/p&gt;

&lt;p&gt;========================================&lt;/p&gt;

&lt;h1&gt;
  
  
  from above contain interview questions
&lt;/h1&gt;

&lt;p&gt;Based only on the topics you've covered, here are the &lt;strong&gt;most common Data Engineering interview questions&lt;/strong&gt; along with &lt;strong&gt;short interview-ready answers&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  1. What is Python?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Python is a high-level, interpreted, general-purpose programming language. It is easy to read and write, supports object-oriented programming, and has a rich ecosystem of libraries. In Data Engineering, Python is widely used for ETL pipelines, automation, data processing, and working with big data frameworks like PySpark.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  2. Why is Python preferred for Data Engineering?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Python is preferred because it has simple syntax, faster development, powerful libraries like Pandas and NumPy, support for PySpark, excellent API integration, and strong cloud support. It helps build ETL pipelines quickly with less code.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  3. What is ETL?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ETL stands for Extract, Transform, and Load.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Extract data from sources like databases, APIs, or files.&lt;/li&gt;
&lt;li&gt;Transform the data by cleaning, filtering, and validating it.&lt;/li&gt;
&lt;li&gt;Load the processed data into a data warehouse or database.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  4. Give a real-world example of ETL.
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Suppose we receive a CSV file containing customer transactions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Extract the CSV file.&lt;/li&gt;
&lt;li&gt;Remove invalid records, convert data types, and clean the data.&lt;/li&gt;
&lt;li&gt;Load the cleaned data into PostgreSQL or Snowflake for reporting.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  5. Why is Python better than Java for Data Engineering?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Python requires less code, has better support for data processing libraries, integrates easily with cloud services, and is the primary language used in PySpark. Java is faster in execution, but Python provides faster development.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  6. How does Python execute code?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Python first converts source code into bytecode (.pyc). The bytecode is then executed by the Python Virtual Machine (PVM), which produces the output.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Flow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Source Code
      ↓
Bytecode
      ↓
Python Virtual Machine
      ↓
Output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  7. Is Python interpreted or compiled?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Python is considered an interpreted language. Internally, it first compiles the source code into bytecode, and then the Python Virtual Machine interprets and executes that bytecode.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  8. What is bytecode?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Bytecode is an intermediate representation of Python code generated before execution. It is platform-independent and is executed by the Python Virtual Machine.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  9. What is PVM?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;PVM stands for Python Virtual Machine. It reads bytecode instructions and executes them to produce the final output.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  10. What is a variable in Python?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A variable is a reference to an object stored in memory. It does not directly store the value; instead, it points to the object.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  11. Explain reference assignment.
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Both &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;b&lt;/code&gt; reference the same integer object until one of them is reassigned.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  12. What are the rules for naming variables?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Must start with a letter or underscore (_)&lt;/li&gt;
&lt;li&gt;Cannot start with a number&lt;/li&gt;
&lt;li&gt;Case-sensitive&lt;/li&gt;
&lt;li&gt;Cannot use Python keywords&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  13. What are the basic data types in Python?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;int&lt;/li&gt;
&lt;li&gt;float&lt;/li&gt;
&lt;li&gt;str&lt;/li&gt;
&lt;li&gt;bool&lt;/li&gt;
&lt;li&gt;list&lt;/li&gt;
&lt;li&gt;tuple&lt;/li&gt;
&lt;li&gt;set&lt;/li&gt;
&lt;li&gt;dict&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  14. Which data type is most common in Data Engineering?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;String is the most common because most data from CSV files, APIs, logs, and JSON arrives as text and is converted later into appropriate data types.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  15. Difference between int and float.
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;int stores whole numbers.&lt;/li&gt;
&lt;li&gt;float stores decimal numbers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="mf"&gt;10.5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  16. What is a string?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A string is a sequence of characters enclosed in single or double quotes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bhupendra&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  17. Name some common string methods.
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;lower()&lt;/li&gt;
&lt;li&gt;upper()&lt;/li&gt;
&lt;li&gt;strip()&lt;/li&gt;
&lt;li&gt;replace()&lt;/li&gt;
&lt;li&gt;split()&lt;/li&gt;
&lt;li&gt;join()&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  18. Why is strip() important?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It removes leading and trailing spaces, which helps clean incoming data before processing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;  Amit  &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  19. Explain Boolean.
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Boolean has only two values: &lt;code&gt;True&lt;/code&gt; and &lt;code&gt;False&lt;/code&gt;. It is mainly used in conditions and filtering.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  20. What is dynamic typing?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Python determines the data type at runtime. We don't need to declare variable types.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  21. What does "Everything is an object" mean?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In Python, integers, strings, lists, functions, and classes are all objects.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  22. What is indentation?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Python uses indentation instead of curly braces to define code blocks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  23. Difference between = and ==
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;=&lt;/code&gt; assigns a value.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;==&lt;/code&gt; compares two values.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  24. Explain type conversion.
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Type conversion changes one data type into another.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;100&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  25. Difference between
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;10&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;20&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;"10" + "20"&lt;/code&gt; performs string concatenation and returns &lt;code&gt;"1020"&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;10 + 20&lt;/code&gt; performs integer addition and returns &lt;code&gt;30&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  26. Why is type conversion important in Data Engineering?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Data from CSV files, APIs, and JSON is often stored as strings. We convert it into integers, floats, or dates before performing calculations or loading it into databases.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  27. Explain Arithmetic Operators.
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;+&lt;/code&gt; Addition&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-&lt;/code&gt; Subtraction&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;*&lt;/code&gt; Multiplication&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/&lt;/code&gt; Division&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;//&lt;/code&gt; Floor Division&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;%&lt;/code&gt; Modulus&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;**&lt;/code&gt; Power&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  28. Difference between / and //.
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;returns&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3.3333
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;returns&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  29. What is modulus (%) used for?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Even/Odd checking&lt;/li&gt;
&lt;li&gt;Finding remainder&lt;/li&gt;
&lt;li&gt;Pattern generation&lt;/li&gt;
&lt;li&gt;Validation logic&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  30. What are comparison operators?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;&lt;/li&gt;
&lt;li&gt;&amp;gt; =&lt;/li&gt;
&lt;li&gt;&amp;lt;=&lt;/li&gt;
&lt;li&gt;==&lt;/li&gt;
&lt;li&gt;!=&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They return a Boolean value (&lt;code&gt;True&lt;/code&gt; or &lt;code&gt;False&lt;/code&gt;).&lt;/p&gt;




&lt;h1&gt;
  
  
  31. What are logical operators?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;and&lt;/li&gt;
&lt;li&gt;or&lt;/li&gt;
&lt;li&gt;not&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They combine multiple conditions.&lt;/p&gt;




&lt;h1&gt;
  
  
  32. What is the membership operator?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It checks whether a value exists in a sequence.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Returns:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;True
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  33. Explain this code.
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1000&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;High Transaction&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The amount is initially a string. We convert it to an integer using &lt;code&gt;int()&lt;/code&gt; before comparing it. Since 1000 is greater than 500, the condition evaluates to &lt;code&gt;True&lt;/code&gt;, and &lt;code&gt;"High Transaction"&lt;/code&gt; is printed.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  34. How would you clean invalid numeric data?
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;100&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;200&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;abc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;300&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isdigit&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;I validate each value using &lt;code&gt;isdigit()&lt;/code&gt;. Only numeric values are converted to integers, while invalid values such as &lt;code&gt;"abc"&lt;/code&gt; are skipped.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  35. What are common mistakes beginners make in Python?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using &lt;code&gt;=&lt;/code&gt; instead of &lt;code&gt;==&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Forgetting type conversion&lt;/li&gt;
&lt;li&gt;Ignoring whitespace in strings&lt;/li&gt;
&lt;li&gt;Case sensitivity (&lt;code&gt;Name&lt;/code&gt; vs &lt;code&gt;name&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Incorrect indentation&lt;/li&gt;
&lt;li&gt;Mixing strings and numbers without conversion&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⭐ Most Important Interview Question (Frequently Asked)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Question:&lt;/strong&gt; Suppose a CSV file contains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;100&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;200&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;abc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;500&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;700xyz&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;How will you clean it before loading it into a database?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;100&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;200&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;abc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;500&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;700xyz&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;clean_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;isdigit&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="n"&gt;clean_data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;clean_data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Interview explanation:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;h1&gt;
  
  
  In Data Engineering, incoming data often contains invalid or missing values. Before loading it into a database, I validate the data, remove invalid records, convert the remaining values to the correct data type, and then load the cleaned data. This is a basic example of the &lt;strong&gt;Transform&lt;/strong&gt; step in an ETL pipeline.
&lt;/h1&gt;
&lt;h1&gt;
  
  
  python basics end
&lt;/h1&gt;
&lt;/blockquote&gt;

&lt;p&gt;=====================&lt;/p&gt;

&lt;h1&gt;
  
  
  Loop
&lt;/h1&gt;

&lt;p&gt;======================&lt;br&gt;
related interview question &lt;/p&gt;

&lt;p&gt;Chalo, isse ek &lt;strong&gt;interview-ready Q&amp;amp;A&lt;/strong&gt; format mein todte hain — short, crisp answers jo actually interview mein bolne layak hon.&lt;/p&gt;
&lt;h2&gt;
  
  
  Conditional Statements &amp;amp; Loops — Interview Q&amp;amp;A
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q1. Data engineering mein conditions aur loops ki zaroorat kyun hoti hai?&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Kyunki hum ek record nahi, millions of records process karte hain. Har record par condition check karni hoti hai (business rule) aur loop se hum ise scale par apply karte hain. Analogy: ek factory conveyor belt — har item pe ek check hota hai (defective/not), loop belt ko chalata rehta hai.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Q2. &lt;code&gt;if-elif-else&lt;/code&gt; kaise kaam karta hai — execution order kya hai?&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Top se bottom check hota hai. Jaise hi koi condition &lt;code&gt;True&lt;/code&gt; milti hai, uska block execute hota hai aur baaki &lt;code&gt;elif/else&lt;/code&gt; skip ho jaate hain. Agar koi bhi condition true nahi, tab &lt;code&gt;else&lt;/code&gt; chalta hai.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Q3. Condition evaluation ka core rule kya hai?&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Har condition ek Boolean (&lt;code&gt;True&lt;/code&gt;/&lt;code&gt;False&lt;/code&gt;) mein evaluate hoti hai — &lt;code&gt;amount &amp;gt; 10000&lt;/code&gt; khud ek boolean expression hai, tabhi &lt;code&gt;if&lt;/code&gt; use kar paate hain.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Q4. Nested conditions kab use karte ho? Example do.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Jab ek rule ke andar dusra rule check karna ho — complex business logic mein. Fraud detection example: pehle &lt;code&gt;amount &amp;gt; 10000&lt;/code&gt; check karo, uske andar &lt;code&gt;country != "India"&lt;/code&gt; check karo → "International Fraud" flag. Ye AND logic ko readable tarike se likhne ka way hai.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Q5. &lt;code&gt;for&lt;/code&gt; loop vs &lt;code&gt;while&lt;/code&gt; loop — kab kaunsa use karoge?&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;for&lt;/code&gt; loop tab jab known/fixed collection ya range par iterate karna ho (list, range). &lt;code&gt;while&lt;/code&gt; loop tab jab condition-based, unknown-count tak repeat karna ho (jaise "jab tak data available hai tab tak read karo").&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Q6. &lt;code&gt;range(start, stop, step)&lt;/code&gt; explain karo.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;range(1, 10, 2)&lt;/code&gt; → 1,3,5,7,9. Start inclusive, stop exclusive, step increment. Data engineering mein batch processing (jaise "har 5th record process karo") ke liye useful.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Q7. Infinite loop ka risk kya hota hai aur kaise avoid karte ho?&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;while True&lt;/code&gt; mein agar exit condition (break ya condition update) na ho, loop kabhi rukega nahi — production mein ye resource leak/hang create karta hai. Hamesha explicit &lt;code&gt;break&lt;/code&gt; ya counter increment/condition update rakho.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Q8. &lt;code&gt;break&lt;/code&gt; vs &lt;code&gt;continue&lt;/code&gt; mein fark?&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;break&lt;/code&gt; — loop ko turant terminate kar deta hai. &lt;code&gt;continue&lt;/code&gt; — current iteration skip karke next pe jaata hai, loop chalta rehta hai. Analogy: &lt;code&gt;break&lt;/code&gt; = "bus se utar jao", &lt;code&gt;continue&lt;/code&gt; = "is stop pe mat utro, next dekho".&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Q9. Loop + condition combine karke data cleaning kaise karte ho? Code likho.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;100&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;abc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;200&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isdigit&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Loop iterate karta hai, condition (&lt;code&gt;isdigit()&lt;/code&gt;) validate karti hai ki value numeric hai ya nahi, tabhi convert/action hota hai. Ye exactly ETL pipeline ka validation step hai.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Q10. Practice: count values &amp;gt; 1000 from a list.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# 2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q11. Practice: sum only numeric strings from a mixed list.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;100&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;abc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;200&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isdigit&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# 300
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q12. Interviewer follow-up: is approach (&lt;code&gt;for&lt;/code&gt; + &lt;code&gt;if&lt;/code&gt;) production mein scale karega bade datasets par?&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pure Python loops millions of rows ke liye slow hote hain (row-by-row overhead). Real pipelines mein vectorized operations (Pandas/PySpark) use karte hain — jaise &lt;code&gt;df[df['amount'] &amp;gt; 10000]&lt;/code&gt; — jo internally optimized/batch processing karta hai. Loop ka logic samajhna zaroori hai, but interview mein ye bhi mention karo ki production mein hum vectorization prefer karte hain.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Interview tip:&lt;/strong&gt; Jab bhi code likho, verbally bolo — "yahan condition validate kar rahi hai, loop iterate kar raha hai, ye pattern ETL/data-cleaning steps mein common hai" — ye interviewer ko dikhata hai ki tumhe &lt;em&gt;concept ka application&lt;/em&gt; pata hai, sirf syntax nahi.&lt;/p&gt;

&lt;p&gt;Agla topic bolo (functions, list comprehensions, error handling, ya Pandas/PySpark) — usi Q&amp;amp;A format mein bana deta hoon.&lt;/p&gt;

&lt;p&gt;These notes are good, but for interviews and learning &lt;strong&gt;Python for Data Engineering&lt;/strong&gt;, they need proper indentation, execution flow, dry runs, and real-world examples.&lt;/p&gt;




&lt;h1&gt;
  
  
  Conditional Statements &amp;amp; Loops (Python)
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Why Conditions &amp;amp; Loops?
&lt;/h2&gt;

&lt;p&gt;In real-world Data Engineering, we don't process just one record—we process &lt;strong&gt;millions of records&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For every record we may need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check conditions&lt;/li&gt;
&lt;li&gt;Apply business rules&lt;/li&gt;
&lt;li&gt;Transform data&lt;/li&gt;
&lt;li&gt;Filter invalid records&lt;/li&gt;
&lt;li&gt;Store results&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example: Fraud Detection
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;12000&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Fraud Alert&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Normal Transaction&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Fraud Alert
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, the program checks whether the amount exceeds ₹10,000.&lt;/p&gt;




&lt;h1&gt;
  
  
  2. Conditional Statements
&lt;/h1&gt;

&lt;p&gt;Python makes decisions using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;if&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;elif&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;else&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Syntax
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# code
&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# code
&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# code
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;12000&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;High Risk&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Medium Risk&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Low Risk&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Output
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;High Risk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Execution Flow
&lt;/h2&gt;

&lt;p&gt;Python checks conditions &lt;strong&gt;from top to bottom&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Is amount &amp;gt; 10000?
       |
     Yes
       |
Print High Risk
Stop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the first condition is false:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Check second condition
      |
True -&amp;gt; Execute
False -&amp;gt; Check else
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only &lt;strong&gt;one block&lt;/strong&gt; executes.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. Condition Evaluation
&lt;/h1&gt;

&lt;p&gt;A condition must return either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;True&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;False&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;12000&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;True
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;More examples&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;      &lt;span class="c1"&gt;# True
&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;      &lt;span class="c1"&gt;# False
&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;      &lt;span class="c1"&gt;# True
&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;      &lt;span class="c1"&gt;# True
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Comparison Operators
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operator&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;&lt;/td&gt;
&lt;td&gt;Greater than&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;&lt;/td&gt;
&lt;td&gt;Less than&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;=&lt;/td&gt;
&lt;td&gt;Greater than or equal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;=&lt;/td&gt;
&lt;td&gt;Less than or equal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;==&lt;/td&gt;
&lt;td&gt;Equal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;!=&lt;/td&gt;
&lt;td&gt;Not Equal&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  4. Nested Conditions
&lt;/h1&gt;

&lt;p&gt;A condition inside another condition.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;15000&lt;/span&gt;
&lt;span class="n"&gt;country&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;USA&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;country&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;India&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;International Fraud&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;International Fraud
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Execution&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Check amount

True

↓

Check country

True

↓

Print
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Used in complex business rules.&lt;/p&gt;




&lt;h1&gt;
  
  
  5. Loops
&lt;/h1&gt;

&lt;p&gt;Loops execute the same code repeatedly.&lt;/p&gt;

&lt;p&gt;Without loop&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With loop&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;transactions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;transactions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;100
200
300
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Why Loops?
&lt;/h1&gt;

&lt;p&gt;Imagine&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10 Million Transactions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without loops&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Impossible
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With loops&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Automatically process every record.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  6. For Loop
&lt;/h1&gt;

&lt;p&gt;Syntax&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;variable&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;iterable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# code
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0
1
2
3
4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  7. Understanding range()
&lt;/h1&gt;

&lt;p&gt;Syntax&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;stop&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;step&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Example 1
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Produces&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0 1 2 3 4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Example 2
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1
2
3
4
5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Example 3
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1
3
5
7
9
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  8. Loop Through List
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;transactions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;transactions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;100
200
5000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python automatically picks one element at a time.&lt;/p&gt;

&lt;p&gt;Iteration&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;t = 100

↓

t = 200

↓

t = 5000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  9. Combining Loop + Condition
&lt;/h1&gt;

&lt;p&gt;Very common in Data Engineering.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;transactions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;transactions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Flagged:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Flagged: 5000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Execution&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;100

↓

Condition False

↓

5000

↓

Condition True

↓

Print

↓

200

↓

Condition False
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This pattern is used in ETL pipelines for filtering records.&lt;/p&gt;




&lt;h1&gt;
  
  
  10. While Loop
&lt;/h1&gt;

&lt;p&gt;Runs until a condition becomes False.&lt;/p&gt;

&lt;p&gt;Syntax&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# code
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1
2
3
4
5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Infinite Loop
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Running&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This never stops.&lt;/p&gt;

&lt;p&gt;Always provide an exit condition.&lt;/p&gt;




&lt;h1&gt;
  
  
  11. Break Statement
&lt;/h1&gt;

&lt;p&gt;Stops the loop immediately.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;

    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0
1
2
3
4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When &lt;code&gt;i&lt;/code&gt; becomes &lt;code&gt;5&lt;/code&gt;, the loop terminates.&lt;/p&gt;




&lt;h1&gt;
  
  
  12. Continue Statement
&lt;/h1&gt;

&lt;p&gt;Skips only the current iteration.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;continue&lt;/span&gt;

    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0
1
3
4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;2&lt;/code&gt; is skipped.&lt;/p&gt;




&lt;h1&gt;
  
  
  Break vs Continue
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Break&lt;/th&gt;
&lt;th&gt;Continue&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Stops entire loop&lt;/td&gt;
&lt;td&gt;Skips current iteration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Loop ends&lt;/td&gt;
&lt;td&gt;Loop continues&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Used when no more processing is needed&lt;/td&gt;
&lt;td&gt;Used to ignore invalid data&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  13. Data Cleaning Example
&lt;/h1&gt;

&lt;p&gt;One of the most common interview examples.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;100&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;abc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;200&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isdigit&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;100
200
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Explanation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Loop processes every value.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;isdigit()&lt;/code&gt; checks whether the value contains only digits.&lt;/li&gt;
&lt;li&gt;Invalid data (&lt;code&gt;"abc"&lt;/code&gt;) is skipped.&lt;/li&gt;
&lt;li&gt;Valid strings are converted to integers.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  14. Practice Problem 1
&lt;/h1&gt;

&lt;p&gt;Count values greater than 1000.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  15. Practice Problem 2
&lt;/h1&gt;

&lt;p&gt;Sum only numeric strings.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;100&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;abc&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;200&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isdigit&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
        &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;300
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  16. Interview Questions
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Q1. Difference between &lt;code&gt;if&lt;/code&gt; and &lt;code&gt;elif&lt;/code&gt;?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;if&lt;/code&gt; starts condition checking.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;elif&lt;/code&gt; checks another condition only if previous conditions are false.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Q2. Difference between &lt;code&gt;for&lt;/code&gt; and &lt;code&gt;while&lt;/code&gt;?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;For Loop&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Used when the number of iterations is known.&lt;/li&gt;
&lt;li&gt;Iterates over sequences like lists, tuples, strings, or &lt;code&gt;range()&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;While Loop&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Used when the number of iterations is unknown.&lt;/li&gt;
&lt;li&gt;Continues until a condition becomes false.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Q3. What does &lt;code&gt;break&lt;/code&gt; do?
&lt;/h3&gt;

&lt;p&gt;Stops the loop immediately.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q4. What does &lt;code&gt;continue&lt;/code&gt; do?
&lt;/h3&gt;

&lt;p&gt;Skips the current iteration and proceeds to the next one.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q5. Why are loops important in Data Engineering?
&lt;/h3&gt;

&lt;p&gt;Loops are essential because they allow processing of &lt;strong&gt;millions of records automatically&lt;/strong&gt;. Combined with conditions, they enable filtering, validation, transformation, aggregation, and business-rule enforcement in ETL pipelines.&lt;/p&gt;

&lt;p&gt;===========================&lt;/p&gt;

&lt;h1&gt;
  
  
  end loop and conditionbal
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>DOCKER REVISION</title>
      <dc:creator>Er. Bhupendra</dc:creator>
      <pubDate>Tue, 11 Aug 2026 14:55:38 +0000</pubDate>
      <link>https://dev.to/bhu_kalki/docker-revision-5800</link>
      <guid>https://dev.to/bhu_kalki/docker-revision-5800</guid>
      <description>&lt;p&gt;Your notes are good for interview revision. Here is a corrected and more interview-friendly version.&lt;/p&gt;




&lt;h1&gt;
  
  
  Docker Notes (Interview Revision)
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Docker
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Docker is an &lt;strong&gt;open-source containerization platform&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;It is used to &lt;strong&gt;build, package, and run applications&lt;/strong&gt; in containers.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Why is Docker lightweight?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker &lt;strong&gt;shares the host operating system's kernel&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Unlike Virtual Machines, Docker does &lt;strong&gt;not require a separate guest OS&lt;/strong&gt;, so it uses less CPU, RAM, and storage.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Dockerfile
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;Dockerfile&lt;/strong&gt; is a text file that contains &lt;strong&gt;instructions and commands&lt;/strong&gt; to build a Docker image.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Common instructions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;FROM&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WORKDIR&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;COPY&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RUN&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;EXPOSE&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CMD&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ENTRYPOINT&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Docker Image
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A Docker image is a &lt;strong&gt;read-only template&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;It contains the application, dependencies, libraries, and configuration.&lt;/li&gt;
&lt;li&gt;Images are used to create Docker containers.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Docker Container
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A Docker container is a &lt;strong&gt;running instance of a Docker image&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;It is isolated from the host and other containers.&lt;/li&gt;
&lt;li&gt;Multiple containers can be created from the same image.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Docker Volume
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Docker volumes are used to &lt;strong&gt;persist container data&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;By default, if a container is removed, its data is lost.&lt;/li&gt;
&lt;li&gt;Volumes store data outside the container, so the data remains even if the container is deleted.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. Docker Swarm
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Docker Swarm is Docker's &lt;strong&gt;native container orchestration tool&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It is used to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manage multiple containers&lt;/li&gt;
&lt;li&gt;Scale applications&lt;/li&gt;
&lt;li&gt;Provide load balancing&lt;/li&gt;
&lt;li&gt;High availability&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Similar purpose as Kubernetes, but Kubernetes is more powerful and widely used.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  7. Docker Registry
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A Docker Registry stores Docker images.&lt;/li&gt;
&lt;li&gt;It allows developers to push and pull images.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker Hub&lt;/li&gt;
&lt;li&gt;Nexus Repository&lt;/li&gt;
&lt;li&gt;JFrog Artifactory&lt;/li&gt;
&lt;li&gt;Amazon ECR&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Most Used Docker Commands
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker images                  &lt;span class="c"&gt;# List all images&lt;/span&gt;

docker ps                      &lt;span class="c"&gt;# Running containers&lt;/span&gt;

docker ps &lt;span class="nt"&gt;-a&lt;/span&gt;                   &lt;span class="c"&gt;# All containers&lt;/span&gt;

docker logs &amp;lt;container-id&amp;gt;     &lt;span class="c"&gt;# View container logs&lt;/span&gt;

docker start &amp;lt;container-id&amp;gt;    &lt;span class="c"&gt;# Start container&lt;/span&gt;

docker stop &amp;lt;container-id&amp;gt;     &lt;span class="c"&gt;# Stop container&lt;/span&gt;

docker restart &amp;lt;container-id&amp;gt;  &lt;span class="c"&gt;# Restart container&lt;/span&gt;

docker &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; &amp;lt;container-id&amp;gt; bash
&lt;span class="c"&gt;# Enter running container&lt;/span&gt;

docker &lt;span class="nb"&gt;rm&lt;/span&gt; &amp;lt;container-id&amp;gt;       &lt;span class="c"&gt;# Remove container&lt;/span&gt;

docker rmi &amp;lt;image-id&amp;gt;          &lt;span class="c"&gt;# Remove image&lt;/span&gt;

docker top &amp;lt;container-id&amp;gt;      &lt;span class="c"&gt;# Running processes inside container&lt;/span&gt;

docker inspect &amp;lt;container-id&amp;gt;  &lt;span class="c"&gt;# Detailed information&lt;/span&gt;

docker pull &amp;lt;image-name&amp;gt;       &lt;span class="c"&gt;# Download image&lt;/span&gt;

docker push &amp;lt;image-name&amp;gt;       &lt;span class="c"&gt;# Push image to registry&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Docker Architecture
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                +----------------------+
                |   Docker CLI         |
                +----------+-----------+
                           |
                           v
                +----------------------+
                | Docker Engine (API)  |
                +----------+-----------+
                           |
          +----------------+----------------+
          |                                 |
          v                                 v
+--------------------+          +----------------------+
| Docker Images      |          | Docker Containers    |
| (Read-only)        | -------&amp;gt; | (Running Instance)   |
+--------------------+          +----------------------+
                           |
                           v
                  +------------------+
                  | Docker Volumes   |
                  | (Persistent Data)|
                  +------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Docker Engine Components
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Docker CLI&lt;/strong&gt; – Used to execute Docker commands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker API&lt;/strong&gt; – Accepts requests from the CLI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;containerd&lt;/strong&gt; – Manages the lifecycle of containers (create, start, stop, delete).&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Interview Points (Remember These)
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Docker is &lt;strong&gt;lightweight because it shares the host OS kernel&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dockerfile → Docker Image → Docker Container&lt;/strong&gt; (this flow is asked very often).&lt;/li&gt;
&lt;li&gt;Images are &lt;strong&gt;read-only&lt;/strong&gt;, while containers are &lt;strong&gt;running instances&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Volumes provide &lt;strong&gt;persistent storage&lt;/strong&gt; even after containers are removed.&lt;/li&gt;
&lt;li&gt;Docker Swarm is Docker's orchestration tool, whereas &lt;strong&gt;Kubernetes is the industry standard&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is enough for answering most Docker interview questions for Java, Spring Boot, and DevOps roles.&lt;/p&gt;

&lt;p&gt;============================&lt;/p&gt;

&lt;p&gt;Bahut achha question hai. &lt;strong&gt;Docker Volume database nahi hota&lt;/strong&gt;, balki &lt;strong&gt;storage&lt;/strong&gt; hota hai. Isko AWS se relate karke samajho.&lt;/p&gt;

&lt;h3&gt;
  
  
  Without Volume
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Docker Container
----------------------
App
MySQL
Database Files
----------------------
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Suppose MySQL container me data save hua.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;employee&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'Rahul'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ab agar tumne container delete kar diya:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;rm &lt;/span&gt;mysql-container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;❌ Pura data bhi delete ho jayega.&lt;/p&gt;




&lt;h3&gt;
  
  
  With Docker Volume
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;          Docker Volume
      (/var/lib/docker/volumes)
             |
             |
     +------------------+
     | Database Files   |
     +------------------+
             ^
             |
      MySQL Container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ab MySQL ka data volume me store hoga.&lt;/p&gt;

&lt;p&gt;Container delete ho jaye:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;rm &lt;/span&gt;mysql-container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔️ Data volume me safe rahega.&lt;/p&gt;

&lt;p&gt;Naya container banaoge aur same volume attach kar doge:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-v&lt;/span&gt; mysql-data:/var/lib/mysql mysql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To purana sara database wapas mil jayega.&lt;/p&gt;




&lt;h2&gt;
  
  
  AWS Example
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Docker&lt;/th&gt;
&lt;th&gt;AWS Equivalent&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Docker Volume&lt;/td&gt;
&lt;td&gt;EBS (mostly)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Container&lt;/td&gt;
&lt;td&gt;EC2 Instance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Image&lt;/td&gt;
&lt;td&gt;AMI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Docker Registry&lt;/td&gt;
&lt;td&gt;ECR / Docker Hub&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Volume &lt;strong&gt;EBS jaisa&lt;/strong&gt; hai.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EC2 = delete ho sakta hai&lt;/li&gt;
&lt;li&gt;EBS = data bach jata hai&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Waise hi&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Container = delete ho sakta hai&lt;/li&gt;
&lt;li&gt;Volume = data bach jata hai&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  RAM hai kya?
&lt;/h2&gt;

&lt;p&gt;❌ &lt;strong&gt;Nahi.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;RAM temporary memory hoti hai.&lt;/p&gt;

&lt;p&gt;Docker Volume &lt;strong&gt;disk storage&lt;/strong&gt; hai (SSD/HDD), RAM nahi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RAM (Temporary)
        ↓
Application Running
        ↓
Write Data
        ↓
Docker Volume (Disk)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Database aur Volume ka relation
&lt;/h2&gt;

&lt;p&gt;MySQL/PostgreSQL jaise database apna data files me likhte hain.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MySQL
   |
   | writes data
   v
/var/lib/mysql
   |
   v
Docker Volume
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Volume sirf storage provide karta hai.&lt;/p&gt;

&lt;p&gt;Database us storage me apni files save karta hai.&lt;/p&gt;




&lt;h3&gt;
  
  
  Interview Line (Yaad rakhna)
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Docker Volume is a persistent storage mechanism. It is not a database. It stores application or database files outside the container so that data remains available even if the container is stopped or deleted. It is similar to an AWS EBS volume attached to an EC2 instance.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;==================================&lt;br&gt;
Short answer:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Jab tak tum delete nahi karte, tab tak data save rahta hai.&lt;/strong&gt; Iska koi fixed time limit (30 days, 1 year, etc.) nahi hota.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Storage&lt;/th&gt;
&lt;th&gt;Data kitne din rahega?&lt;/th&gt;
&lt;th&gt;Kab delete hoga?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Docker Volume&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;td&gt;Jab volume delete (&lt;code&gt;docker volume rm&lt;/code&gt;) karoge ya disk fail ho jaye&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AWS EBS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;td&gt;Jab EBS volume delete karoge (ya EC2 terminate ke time "Delete on termination" enabled ho)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AWS EFS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;td&gt;Jab EFS file system delete karoge&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Docker Volume
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Data host machine ki disk me store hota hai.&lt;/li&gt;
&lt;li&gt;Container 1 saal baad bhi delete ho jaye, agar volume delete nahi hua hai to data rahega.&lt;/li&gt;
&lt;li&gt;Agar host machine ki disk crash ho gayi aur backup nahi tha, to data bhi chala sakta hai.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  AWS EBS
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Ye EC2 ke liye block storage hai.&lt;/li&gt;
&lt;li&gt;EC2 stop/start karne se data nahi jata.&lt;/li&gt;
&lt;li&gt;EC2 terminate karne par bhi data bach sakta hai &lt;strong&gt;agar "Delete on termination" disabled ho&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Snapshots lekar data ko aur bhi safely store kar sakte ho.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  AWS EFS
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Ye network file system hai.&lt;/li&gt;
&lt;li&gt;Multiple EC2 instances ek hi time par use kar sakte hain.&lt;/li&gt;
&lt;li&gt;Data tab tak rahega jab tak tum EFS delete nahi karte.&lt;/li&gt;
&lt;li&gt;High durability ke liye AWS automatically multiple Availability Zones me data replicate karta hai.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Interview Answer
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;h1&gt;
  
  
  &lt;strong&gt;Docker Volume, AWS EBS, and AWS EFS do not have an expiry period. Data remains stored until it is explicitly deleted. Docker Volume stores data on the host machine, EBS stores persistent block storage for EC2, and EFS provides shared persistent file storage that can be accessed by multiple EC2 instances.&lt;/strong&gt;
&lt;/h1&gt;
&lt;/blockquote&gt;

&lt;p&gt;Simple answer:&lt;/p&gt;

&lt;p&gt;❌ &lt;strong&gt;Na RAM hota hai, na ROM.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ye &lt;strong&gt;persistent disk storage&lt;/strong&gt; hota hai (SSD/HDD).&lt;/p&gt;

&lt;p&gt;Comparison:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Memory&lt;/th&gt;
&lt;th&gt;Data Save?&lt;/th&gt;
&lt;th&gt;Fast?&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;RAM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ No (Power off → Data lost)&lt;/td&gt;
&lt;td&gt;Very Fast&lt;/td&gt;
&lt;td&gt;Running application memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ROM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✔️ Yes&lt;/td&gt;
&lt;td&gt;Read-only&lt;/td&gt;
&lt;td&gt;BIOS/Firmware&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Disk Storage (SSD/HDD)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✔️ Yes&lt;/td&gt;
&lt;td&gt;Slower than RAM&lt;/td&gt;
&lt;td&gt;Docker Volume, EBS, EFS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Docker Volume
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;❌ RAM nahi&lt;/li&gt;
&lt;li&gt;❌ ROM nahi&lt;/li&gt;
&lt;li&gt;✔️ Host machine ki &lt;strong&gt;disk (SSD/HDD)&lt;/strong&gt; par stored hota hai.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  AWS EBS
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✔️ Persistent &lt;strong&gt;block storage&lt;/strong&gt; (SSD/HDD based).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  AWS EFS
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;✔️ Persistent &lt;strong&gt;network file storage&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Easy Analogy
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RAM&lt;/strong&gt; = Table (jis par abhi kaam kar rahe ho)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disk (Docker Volume/EBS/EFS)&lt;/strong&gt; = Almirah (kaam khatam hone ke baad files yahan rakhte ho)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ROM&lt;/strong&gt; = Printed instruction manual (normally sirf read karte ho, change nahi karte)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Interview Line
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Docker Volume, AWS EBS, and AWS EFS are persistent disk storage systems. They are neither RAM nor ROM. They store data on SSD/HDD so the data remains available even after the application or container stops.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;===========================================&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# 🐳 DOCKER CONCEPTS&lt;/span&gt;
&lt;span class="p"&gt;
---
&lt;/span&gt;
&lt;span class="gu"&gt;## Installation Commands&lt;/span&gt;

In Ubuntu 16.04 or any latest version, Docker installation commands:

&lt;span class="p"&gt;```&lt;/span&gt;&lt;span class="nl"&gt;bash
&lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;apt-transport-https ca-certificates curl software-properties-common
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://download.docker.com/linux/ubuntu/gpg | &lt;span class="nb"&gt;sudo &lt;/span&gt;apt-key add -
&lt;span class="nb"&gt;sudo &lt;/span&gt;add-apt-repository &lt;span class="s2"&gt;"deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable"&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update
apt-cache search docker-ce
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;docker-ce
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sample output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker-ce - Docker: the open-source application container engine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Docker Container Commands
&lt;/h2&gt;

&lt;p&gt;Docker container is a running instance of an image. A container combined only libraries and settings required to make the application work. It is a lightweight and portable encapsulated environment for an application.&lt;/p&gt;

&lt;p&gt;Run Docker Container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run hello-world
docker run &lt;span class="nt"&gt;-it&lt;/span&gt; centos
docker ps
docker ps &lt;span class="nt"&gt;-a&lt;/span&gt;
docker inspect &amp;lt;containerid&amp;gt;
docker stop &amp;lt;containerid&amp;gt;
docker &lt;span class="nb"&gt;rm&lt;/span&gt; &amp;lt;containerid&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Docker Images
&lt;/h2&gt;

&lt;p&gt;An image is an inert, immutable file that’s essentially a snapshot of a container.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker images
docker pull centos
docker rmi centos
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Docker Data Volumes
&lt;/h2&gt;

&lt;p&gt;In Docker, data volumes are useful for managing data with Docker containers and host machines.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create Data Volume Container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker create &lt;span class="nt"&gt;-v&lt;/span&gt; /data &lt;span class="nt"&gt;--name&lt;/span&gt; data_container centos
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Use Data Volume in New Container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="nt"&gt;--volumes-from&lt;/span&gt; data_container centos /bin/bash
&lt;span class="nb"&gt;cd&lt;/span&gt; /data
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Hello Docker"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; file.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Verify Files on Data Volume
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="nt"&gt;--volumes-from&lt;/span&gt; data_container centos /bin/bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Share Host Volume with Container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; /var/www:/data centos
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Working with Dockerfile
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; image_name &lt;span class="nb"&gt;.&lt;/span&gt;
docker build &lt;span class="nt"&gt;-t&lt;/span&gt; image_name &lt;span class="nt"&gt;-f&lt;/span&gt; /path/to/Dockerfile &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Dockerfile Directives
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; ubuntu&lt;/span&gt;

&lt;span class="k"&gt;LABEL&lt;/span&gt;&lt;span class="s"&gt; maintainer="kiran"&lt;/span&gt;
&lt;span class="k"&gt;LABEL&lt;/span&gt;&lt;span class="s"&gt; vendor="org"&lt;/span&gt;
&lt;span class="k"&gt;LABEL&lt;/span&gt;&lt;span class="s"&gt; com.example.version="0.0.1"&lt;/span&gt;

&lt;span class="k"&gt;RUN &lt;/span&gt;apt-get update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;automake &lt;span class="se"&gt;\
&lt;/span&gt;build-essential &lt;span class="se"&gt;\
&lt;/span&gt;curl

&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; html/* /var/www/html/&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; *.conf /etc/apache2/sites-available/&lt;/span&gt;

&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /opt&lt;/span&gt;

&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["apachectl", "-D", "FOREGROUND"]&lt;/span&gt;

&lt;span class="k"&gt;EXPOSE&lt;/span&gt;&lt;span class="s"&gt; 80&lt;/span&gt;
&lt;span class="k"&gt;EXPOSE&lt;/span&gt;&lt;span class="s"&gt; 443&lt;/span&gt;

&lt;span class="k"&gt;ENV&lt;/span&gt;&lt;span class="s"&gt; PATH=$PATH:/usr/local/pgsql/bin/ \&lt;/span&gt;
PG_MAJOR=9.6.0

&lt;span class="k"&gt;VOLUME&lt;/span&gt;&lt;span class="s"&gt; ["/data"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Manage Ports in Docker
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:80 nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Docker POCs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Running MySQL as Docker
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker pull mysql/mysql-server
docker pull mysql/mysql-server:5.5
docker run &lt;span class="nt"&gt;--name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;mysql1 &lt;span class="nt"&gt;-d&lt;/span&gt; mysql/mysql-server
docker run &lt;span class="nt"&gt;--name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;mysql1 &lt;span class="nt"&gt;-d&lt;/span&gt; mysql/mysql-server:5.5
docker logs mysql1
docker run &lt;span class="nt"&gt;--name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;mysql1 &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;MYSQL_ROOT_HOST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;% &lt;span class="nt"&gt;-p&lt;/span&gt; 3306:3306 &lt;span class="nt"&gt;-d&lt;/span&gt; mysql/mysql-server
docker run &lt;span class="nt"&gt;--name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;mysql1 &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;MYSQL_ROOT_HOST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;% &lt;span class="nt"&gt;-p&lt;/span&gt; 3306:3306 &lt;span class="nt"&gt;-d&lt;/span&gt; mysql/mysql-server:5.5
docker logs mysql1 2&amp;gt;&amp;amp;1 | &lt;span class="nb"&gt;grep &lt;/span&gt;GENERATED
docker &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; mysql1 mysql &lt;span class="nt"&gt;-u&lt;/span&gt; root &lt;span class="nt"&gt;-p&lt;/span&gt;
docker ps &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;USER&lt;/span&gt; &lt;span class="s1"&gt;'root'&lt;/span&gt;&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="s1"&gt;'localhost'&lt;/span&gt; &lt;span class="n"&gt;IDENTIFIED&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="s1"&gt;'admin@123'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;USER&lt;/span&gt; &lt;span class="s1"&gt;'newUser'&lt;/span&gt;&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="s1"&gt;'%'&lt;/span&gt; &lt;span class="n"&gt;IDENTIFIED&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="s1"&gt;'newPass123'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;USER&lt;/span&gt; &lt;span class="s1"&gt;'newUser'&lt;/span&gt;&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="s1"&gt;'%'&lt;/span&gt; &lt;span class="n"&gt;IDENTIFIED&lt;/span&gt; &lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;mysql_native_password&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="s1"&gt;'newPass123'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;GRANT&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt; &lt;span class="k"&gt;PRIVILEGES&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;TO&lt;/span&gt; &lt;span class="s1"&gt;'newUser'&lt;/span&gt;&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="s1"&gt;'%'&lt;/span&gt; &lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="k"&gt;GRANT&lt;/span&gt; &lt;span class="k"&gt;OPTION&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Run Tomcat as Docker
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="nt"&gt;--rm&lt;/span&gt; tomcat:8.0
docker run &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 8888:8080 tomcat:8.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dockerfile for WAR:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; tomcat:8.0.43-jre8&lt;/span&gt;
&lt;span class="k"&gt;ADD&lt;/span&gt;&lt;span class="s"&gt; webdemodocker.war /usr/local/tomcat/webapps/&lt;/span&gt;
&lt;span class="k"&gt;EXPOSE&lt;/span&gt;&lt;span class="s"&gt; 8080&lt;/span&gt;
&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; chmod +x /usr/local/tomcat/bin/catalina.sh&lt;/span&gt;
&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["catalina.sh", "run"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; webdemo &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;docker run &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="nt"&gt;-t&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:8080 webdemo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Dockerfile for Nginx
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; nginx&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; index.html /usr/share/nginx/html&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;index.html:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;This is hello world to Nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; mynginx &lt;span class="nb"&gt;.&lt;/span&gt;
docker run &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:80 mynginx
docker run &lt;span class="nt"&gt;-it&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 8081:80 mynginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Spring Boot Dockerfile
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; openjdk:8-jdk-alpine&lt;/span&gt;
&lt;span class="k"&gt;VOLUME&lt;/span&gt;&lt;span class="s"&gt; /tmp&lt;/span&gt;
&lt;span class="k"&gt;ARG&lt;/span&gt;&lt;span class="s"&gt; JAR_FILE&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; ${JAR_FILE} springbootapp.jar&lt;/span&gt;
&lt;span class="k"&gt;ENTRYPOINT&lt;/span&gt;&lt;span class="s"&gt; ["java","-Djava.security.egd=file:/dev/./urandom","-jar","springbootapp.jar"]&lt;/span&gt;
&lt;span class="k"&gt;EXPOSE&lt;/span&gt;&lt;span class="s"&gt; 8080&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; myspringbootapp &lt;span class="nt"&gt;--build-arg&lt;/span&gt; &lt;span class="nv"&gt;JAR_FILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"springbootapp.jar"&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;===========================================&lt;/p&gt;

</description>
    </item>
    <item>
      <title>MYSQL 2nd ON JOINS PRACTICES</title>
      <dc:creator>Er. Bhupendra</dc:creator>
      <pubDate>Sun, 09 Aug 2026 18:02:39 +0000</pubDate>
      <link>https://dev.to/bhu_kalki/mysql-2nd-on-joins-pratices-57ih</link>
      <guid>https://dev.to/bhu_kalki/mysql-2nd-on-joins-pratices-57ih</guid>
      <description>&lt;p&gt;Yes. The best way to learn JOINs is to use &lt;strong&gt;one database&lt;/strong&gt; for all questions.&lt;/p&gt;

&lt;p&gt;We'll use &lt;strong&gt;4 tables&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Table 1: Department
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;Department&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="nb"&gt;INTEGER&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;dept_name&lt;/span&gt; &lt;span class="nb"&gt;TEXT&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;Department&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'IT'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'HR'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'Finance'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'Sales'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Table 2: Employee
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="nb"&gt;INTEGER&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;emp_name&lt;/span&gt; &lt;span class="nb"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="nb"&gt;INTEGER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="nb"&gt;INTEGER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="nb"&gt;INTEGER&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'Rahul'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;70000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'Amit'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;60000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'Neha'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;50000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'Priya'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;65000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'Rohit'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;90000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'Ankit'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;95000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'Karan'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;55000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Table 3: Project
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;Project&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;project_id&lt;/span&gt; &lt;span class="nb"&gt;INTEGER&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;project_name&lt;/span&gt; &lt;span class="nb"&gt;TEXT&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;Project&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;101&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'Banking'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;102&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'Ecommerce'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;103&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'Healthcare'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;104&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'AI'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Table 4: Employee_Project
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;Employee_Project&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="nb"&gt;INTEGER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;project_id&lt;/span&gt; &lt;span class="nb"&gt;INTEGER&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;Employee_Project&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;101&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;102&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;102&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;103&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;101&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;104&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  JOIN Practice Questions
&lt;/h1&gt;




&lt;h2&gt;
  
  
  INNER JOIN
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Q1
&lt;/h3&gt;

&lt;p&gt;Employee Name + Department Name&lt;/p&gt;




&lt;h3&gt;
  
  
  Q2
&lt;/h3&gt;

&lt;p&gt;Employee Salary + Department Name&lt;/p&gt;




&lt;h3&gt;
  
  
  Q3
&lt;/h3&gt;

&lt;p&gt;Employees working in IT&lt;/p&gt;




&lt;h3&gt;
  
  
  Q4
&lt;/h3&gt;

&lt;p&gt;Employees working in HR&lt;/p&gt;




&lt;h3&gt;
  
  
  Q5
&lt;/h3&gt;

&lt;p&gt;Department-wise Employee List&lt;/p&gt;




&lt;h3&gt;
  
  
  Q6
&lt;/h3&gt;

&lt;p&gt;Employee + Department + Salary&lt;/p&gt;




&lt;h3&gt;
  
  
  Q7
&lt;/h3&gt;

&lt;p&gt;Employees with Department IDs&lt;/p&gt;




&lt;h3&gt;
  
  
  Q8
&lt;/h3&gt;

&lt;p&gt;Department Names with Employees&lt;/p&gt;




&lt;h3&gt;
  
  
  Q9
&lt;/h3&gt;

&lt;p&gt;Employee Count per Department&lt;/p&gt;




&lt;h3&gt;
  
  
  Q10
&lt;/h3&gt;

&lt;p&gt;Highest Salary in each Department&lt;/p&gt;




&lt;h1&gt;
  
  
  LEFT JOIN
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Q11
&lt;/h3&gt;

&lt;p&gt;Show all employees with department.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q12
&lt;/h3&gt;

&lt;p&gt;Find employees without department.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q13
&lt;/h3&gt;

&lt;p&gt;Show all departments.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q14
&lt;/h3&gt;

&lt;p&gt;Departments having no employees.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q15
&lt;/h3&gt;

&lt;p&gt;Employees even if department missing.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q16
&lt;/h3&gt;

&lt;p&gt;Projects with employees.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q17
&lt;/h3&gt;

&lt;p&gt;Projects without employees.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q18
&lt;/h3&gt;

&lt;p&gt;Employees without projects.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q19
&lt;/h3&gt;

&lt;p&gt;All projects.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q20
&lt;/h3&gt;

&lt;p&gt;Departments with employee count.&lt;/p&gt;




&lt;h1&gt;
  
  
  RIGHT JOIN (SQLite doesn't support RIGHT JOIN)
&lt;/h1&gt;

&lt;p&gt;Practice by reversing table order with &lt;code&gt;LEFT JOIN&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Q21
&lt;/h3&gt;

&lt;p&gt;All departments with employees.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q22
&lt;/h3&gt;

&lt;p&gt;Departments without employees.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q23
&lt;/h3&gt;

&lt;p&gt;Projects without employees.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q24
&lt;/h3&gt;

&lt;p&gt;Employees with NULL department.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q25
&lt;/h3&gt;

&lt;p&gt;Employees with department names.&lt;/p&gt;




&lt;h1&gt;
  
  
  SELF JOIN
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Q26
&lt;/h3&gt;

&lt;p&gt;Employee + Manager Name&lt;/p&gt;




&lt;h3&gt;
  
  
  Q27
&lt;/h3&gt;

&lt;p&gt;Managers with Employees&lt;/p&gt;




&lt;h3&gt;
  
  
  Q28
&lt;/h3&gt;

&lt;p&gt;Employees without managers&lt;/p&gt;




&lt;h3&gt;
  
  
  Q29
&lt;/h3&gt;

&lt;p&gt;Manager-wise Employee Count&lt;/p&gt;




&lt;h3&gt;
  
  
  Q30
&lt;/h3&gt;

&lt;p&gt;Employees reporting to Rohit&lt;/p&gt;




&lt;h3&gt;
  
  
  Q31
&lt;/h3&gt;

&lt;p&gt;Employees reporting to Ankit&lt;/p&gt;




&lt;h3&gt;
  
  
  Q32
&lt;/h3&gt;

&lt;p&gt;CEO (Manager NULL)&lt;/p&gt;




&lt;h3&gt;
  
  
  Q33
&lt;/h3&gt;

&lt;p&gt;Manager hierarchy&lt;/p&gt;




&lt;h3&gt;
  
  
  Q34
&lt;/h3&gt;

&lt;p&gt;Manager Salary + Employee Salary&lt;/p&gt;




&lt;h3&gt;
  
  
  Q35
&lt;/h3&gt;

&lt;p&gt;Employees earning more than manager&lt;/p&gt;




&lt;h1&gt;
  
  
  MANY TO MANY JOIN
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Q36
&lt;/h3&gt;

&lt;p&gt;Employee + Project&lt;/p&gt;




&lt;h3&gt;
  
  
  Q37
&lt;/h3&gt;

&lt;p&gt;Project + Employee Count&lt;/p&gt;




&lt;h3&gt;
  
  
  Q38
&lt;/h3&gt;

&lt;p&gt;Project-wise Employee List&lt;/p&gt;




&lt;h3&gt;
  
  
  Q39
&lt;/h3&gt;

&lt;p&gt;Employees in Banking Project&lt;/p&gt;




&lt;h3&gt;
  
  
  Q40
&lt;/h3&gt;

&lt;p&gt;Employees in AI Project&lt;/p&gt;




&lt;h3&gt;
  
  
  Q41
&lt;/h3&gt;

&lt;p&gt;Employees in more than one project&lt;/p&gt;




&lt;h3&gt;
  
  
  Q42
&lt;/h3&gt;

&lt;p&gt;Projects having multiple employees&lt;/p&gt;




&lt;h3&gt;
  
  
  Q43
&lt;/h3&gt;

&lt;p&gt;Projects having only one employee&lt;/p&gt;




&lt;h3&gt;
  
  
  Q44
&lt;/h3&gt;

&lt;p&gt;Employee + Department + Project&lt;/p&gt;




&lt;h3&gt;
  
  
  Q45
&lt;/h3&gt;

&lt;p&gt;Project + Department&lt;/p&gt;




&lt;h1&gt;
  
  
  Multiple JOIN
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Q46
&lt;/h3&gt;

&lt;p&gt;Employee + Department + Project&lt;/p&gt;




&lt;h3&gt;
  
  
  Q47
&lt;/h3&gt;

&lt;p&gt;Department + Project Count&lt;/p&gt;




&lt;h3&gt;
  
  
  Q48
&lt;/h3&gt;

&lt;p&gt;Highest Salary in each Project&lt;/p&gt;




&lt;h3&gt;
  
  
  Q49
&lt;/h3&gt;

&lt;p&gt;Department-wise Project Count&lt;/p&gt;




&lt;h3&gt;
  
  
  Q50
&lt;/h3&gt;

&lt;p&gt;Employee + Manager + Department&lt;/p&gt;




&lt;h1&gt;
  
  
  JOIN + GROUP BY
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Q51
&lt;/h3&gt;

&lt;p&gt;Department-wise Avg Salary&lt;/p&gt;




&lt;h3&gt;
  
  
  Q52
&lt;/h3&gt;

&lt;p&gt;Department-wise Max Salary&lt;/p&gt;




&lt;h3&gt;
  
  
  Q53
&lt;/h3&gt;

&lt;p&gt;Department-wise Min Salary&lt;/p&gt;




&lt;h3&gt;
  
  
  Q54
&lt;/h3&gt;

&lt;p&gt;Department-wise Employee Count&lt;/p&gt;




&lt;h3&gt;
  
  
  Q55
&lt;/h3&gt;

&lt;p&gt;Project-wise Employee Count&lt;/p&gt;




&lt;h3&gt;
  
  
  Q56
&lt;/h3&gt;

&lt;p&gt;Project-wise Average Salary&lt;/p&gt;




&lt;h3&gt;
  
  
  Q57
&lt;/h3&gt;

&lt;p&gt;Manager-wise Team Count&lt;/p&gt;




&lt;h3&gt;
  
  
  Q58
&lt;/h3&gt;

&lt;p&gt;Manager-wise Average Salary&lt;/p&gt;




&lt;h3&gt;
  
  
  Q59
&lt;/h3&gt;

&lt;p&gt;Project-wise Highest Salary&lt;/p&gt;




&lt;h3&gt;
  
  
  Q60
&lt;/h3&gt;

&lt;p&gt;Department-wise Total Salary&lt;/p&gt;




&lt;h1&gt;
  
  
  JOIN + HAVING
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Q61
&lt;/h3&gt;

&lt;p&gt;Departments having more than 2 employees&lt;/p&gt;




&lt;h3&gt;
  
  
  Q62
&lt;/h3&gt;

&lt;p&gt;Projects having more than 1 employee&lt;/p&gt;




&lt;h3&gt;
  
  
  Q63
&lt;/h3&gt;

&lt;p&gt;Managers having more than 1 employee&lt;/p&gt;




&lt;h3&gt;
  
  
  Q64
&lt;/h3&gt;

&lt;p&gt;Departments with Avg Salary &amp;gt;70000&lt;/p&gt;




&lt;h3&gt;
  
  
  Q65
&lt;/h3&gt;

&lt;p&gt;Projects with Avg Salary &amp;gt;60000&lt;/p&gt;




&lt;h1&gt;
  
  
  Advanced JOIN
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Q66
&lt;/h3&gt;

&lt;p&gt;Second Highest Salary in each Department&lt;/p&gt;




&lt;h3&gt;
  
  
  Q67
&lt;/h3&gt;

&lt;p&gt;Highest Paid Employee in each Project&lt;/p&gt;




&lt;h3&gt;
  
  
  Q68
&lt;/h3&gt;

&lt;p&gt;Employees working on multiple projects&lt;/p&gt;




&lt;h3&gt;
  
  
  Q69
&lt;/h3&gt;

&lt;p&gt;Departments with highest payroll&lt;/p&gt;




&lt;h3&gt;
  
  
  Q70
&lt;/h3&gt;

&lt;p&gt;Top 2 salary employees in every department&lt;/p&gt;




&lt;h1&gt;
  
  
  Product Company Level
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Q71
&lt;/h3&gt;

&lt;p&gt;Employee working on all projects&lt;/p&gt;

&lt;h3&gt;
  
  
  Q72
&lt;/h3&gt;

&lt;p&gt;Projects having all IT employees&lt;/p&gt;

&lt;h3&gt;
  
  
  Q73
&lt;/h3&gt;

&lt;p&gt;Employees not assigned any project&lt;/p&gt;

&lt;h3&gt;
  
  
  Q74
&lt;/h3&gt;

&lt;p&gt;Projects without employees&lt;/p&gt;

&lt;h3&gt;
  
  
  Q75
&lt;/h3&gt;

&lt;p&gt;Departments without projects&lt;/p&gt;

&lt;h3&gt;
  
  
  Q76
&lt;/h3&gt;

&lt;p&gt;Employees with maximum projects&lt;/p&gt;

&lt;h3&gt;
  
  
  Q77
&lt;/h3&gt;

&lt;p&gt;Projects with maximum employees&lt;/p&gt;

&lt;h3&gt;
  
  
  Q78
&lt;/h3&gt;

&lt;p&gt;Department having maximum employees&lt;/p&gt;

&lt;h3&gt;
  
  
  Q79
&lt;/h3&gt;

&lt;p&gt;Manager handling maximum employees&lt;/p&gt;

&lt;h3&gt;
  
  
  Q80
&lt;/h3&gt;

&lt;p&gt;Highest salary manager&lt;/p&gt;




&lt;h1&gt;
  
  
  Interview Level
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Q81–Q100
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Employees whose salary &amp;gt; department average&lt;/li&gt;
&lt;li&gt;Employees working with their manager in same department&lt;/li&gt;
&lt;li&gt;Employees sharing same project&lt;/li&gt;
&lt;li&gt;Employees not sharing any project&lt;/li&gt;
&lt;li&gt;Department-wise top salary&lt;/li&gt;
&lt;li&gt;Department-wise bottom salary&lt;/li&gt;
&lt;li&gt;Project-wise top performer&lt;/li&gt;
&lt;li&gt;Manager hierarchy (2 levels)&lt;/li&gt;
&lt;li&gt;Employees working in Banking &amp;amp; AI both&lt;/li&gt;
&lt;li&gt;Employees working in Banking but not AI&lt;/li&gt;
&lt;li&gt;Departments with no active projects&lt;/li&gt;
&lt;li&gt;Employees on exactly one project&lt;/li&gt;
&lt;li&gt;Employees on three or more projects&lt;/li&gt;
&lt;li&gt;Projects with no IT employee&lt;/li&gt;
&lt;li&gt;Department with highest average salary&lt;/li&gt;
&lt;li&gt;Employee with maximum colleagues&lt;/li&gt;
&lt;li&gt;Employees who report indirectly to a manager&lt;/li&gt;
&lt;li&gt;Cross-team project participation&lt;/li&gt;
&lt;li&gt;Employees without a manager but with projects&lt;/li&gt;
&lt;li&gt;Complete employee–department–manager–project report&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Recommended Practice Order
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Q1–10&lt;/strong&gt; → Master &lt;code&gt;INNER JOIN&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Q11–25&lt;/strong&gt; → Learn &lt;code&gt;LEFT JOIN&lt;/code&gt; (SQLite doesn't support &lt;code&gt;RIGHT JOIN&lt;/code&gt;, so use reversed &lt;code&gt;LEFT JOIN&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Q26–35&lt;/strong&gt; → &lt;code&gt;SELF JOIN&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Q36–50&lt;/strong&gt; → Many-to-many and multi-table joins.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Q51–65&lt;/strong&gt; → Aggregation with joins.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Q66–100&lt;/strong&gt; → Advanced interview-style join problems.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This progression mirrors how JOIN concepts typically build in real interviews and helps you strengthen one pattern before moving to the next.&lt;/p&gt;

&lt;p&gt;================================&lt;/p&gt;

&lt;h1&gt;
  
  
  SQL JOINs — Interview Master Sheet (Analysis + Extra Questions)
&lt;/h1&gt;

&lt;p&gt;Pehle seedha baat: tera existing 100-question bank &lt;strong&gt;solid foundation&lt;/strong&gt; hai — INNER, LEFT, self-join, many-to-many, GROUP BY+HAVING sab cover ho gaya. Lekin agar interview mein "SQL heavy" role hai (backend/data), toh 5 gaps hain jo interviewers &lt;strong&gt;specifically&lt;/strong&gt; poochte hain aur tere sheet mein missing hain. Neeche pehle gap analysis, phir un gaps ko cover karne wale naye questions + solutions.&lt;/p&gt;




&lt;h2&gt;
  
  
  Gap Analysis — Kya Missing Hai
&lt;/h2&gt;

&lt;p&gt;Think of JOIN types as &lt;strong&gt;transport modes&lt;/strong&gt;: INNER JOIN is a train jo sirf common stations pe milti hai; LEFT JOIN ek bus jo apne saare passengers ko le jaati hai chahe doosri bus khali ho; CROSS JOIN har passenger ko har seat se milaana (no filter) — yeh teesra mode tere sheet mein hai hi nahi.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Gap&lt;/th&gt;
&lt;th&gt;Kyun matter karta hai interview mein&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CROSS JOIN&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;"Cartesian product samjhao" — bahut common warm-up question, aur accidental cross join (missing ON clause) real bugs ka top cause hai&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;FULL OUTER JOIN emulation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;MySQL/SQLite mein FULL JOIN nahi hota — &lt;code&gt;LEFT JOIN UNION RIGHT JOIN&lt;/code&gt; se banana interviewer test karta hai&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Window functions with JOIN&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Q66, Q70 ("2nd highest", "top 2 per department") — yeh classic subquery se solve karne se puchte hain, but &lt;strong&gt;RANK()/DENSE_RANK()&lt;/strong&gt; production-grade answer hai. Interviewer dono expect karta hai&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ON vs WHERE placement (LEFT JOIN)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ek chhota sa trap: &lt;code&gt;LEFT JOIN ... WHERE b.col = X&lt;/code&gt; silently INNER JOIN ban jaata hai. Bahut common "spot the bug" question&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;NATURAL JOIN / USING clause&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Kam asked but "difference from ON clause" is a quick 1-mark question&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Self-join for duplicates/gaps&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Managers-of-managers (2-level hierarchy), duplicate row detection — self join ka ek deeper use-case jo tera Q26-35 sirf 1-level tak covers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Same 4 tables (Department, Employee, Project, Employee_Project) use karte hain — koi naya schema nahi chahiye.&lt;/p&gt;




&lt;h2&gt;
  
  
  Extra Questions — CROSS JOIN
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q101.&lt;/strong&gt; Har employee ko har project ke saath match karo (Cartesian product) — dekho total kitne rows aate hain.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;CROSS&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Project&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;-- 7 employees x 4 projects = 28 rows&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q102.&lt;/strong&gt; Explain the bug: &lt;code&gt;SELECT * FROM Employee e, Department d;&lt;/code&gt; (comma join without WHERE) — yeh implicit CROSS JOIN hai. Fix karo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- BUG version:&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Department&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;   &lt;span class="c1"&gt;-- 7 x 4 = 28 rows, galat!&lt;/span&gt;

&lt;span class="c1"&gt;-- FIX:&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Department&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Extra Questions — FULL OUTER JOIN (emulated)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q103.&lt;/strong&gt; Saare employees AUR saare departments dikhao, chahe match ho ya na ho (FULL OUTER JOIN, SQLite/MySQL mein nahi hota).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Department&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;
&lt;span class="k"&gt;UNION&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;RIGHT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Department&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- SQLite mein RIGHT bhi nahi hota, toh:&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Department&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;
&lt;span class="k"&gt;UNION&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Department&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q104.&lt;/strong&gt; Sirf woh rows dikhao jo dono taraf se unmatched hain (department bina employee, employee bina department) — "FULL OUTER JOIN minus INNER JOIN" pattern.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Department&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;
&lt;span class="k"&gt;UNION&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Department&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Extra Questions — Window Functions + JOIN (production-grade Q66/Q70)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q105.&lt;/strong&gt; Har department ka 2nd highest salary — window function se (Q66 ka better answer).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;dept_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="n"&gt;DENSE_RANK&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;rnk&lt;/span&gt;
  &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Department&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;rnk&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q106.&lt;/strong&gt; Har department ke top 2 salary earners (Q70 ka window-function version).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;dept_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="n"&gt;ROW_NUMBER&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt;
  &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Department&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q107.&lt;/strong&gt; Har project ka highest-paid employee (Q67 ka window version — ties bhi handle karta hai).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;project_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="n"&gt;RANK&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;rnk&lt;/span&gt;
  &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee_Project&lt;/span&gt; &lt;span class="n"&gt;ep&lt;/span&gt;
  &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;ep&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;
  &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Project&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;ep&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;rnk&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Extra Questions — ON vs WHERE Trap (spot-the-bug, high-frequency)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q108.&lt;/strong&gt; Yeh query LEFT JOIN hone ke bawajood INNER JOIN jaisa result kyun deti hai? Fix karo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- WRONG: filters out unmatched (department-less) employees&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Department&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'IT'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;   &lt;span class="c1"&gt;-- yeh NULLs ko drop kar deta hai, LEFT JOIN ka fayda khatam&lt;/span&gt;

&lt;span class="c1"&gt;-- CORRECT: filter condition ON clause mein le jao&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Department&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'IT'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Interview one-liner:&lt;/strong&gt; WHERE clause LEFT JOIN ke &lt;em&gt;baad&lt;/em&gt; apply hoti hai, toh agar tu right-table column pe WHERE lagata hai, NULL rows automatically drop ho jaati hain — LEFT JOIN silently INNER JOIN ban jaata hai. Filter condition ko ON clause mein daalo agar unmatched rows preserve karni hain.&lt;/p&gt;




&lt;h2&gt;
  
  
  Extra Questions — Deeper Self-Join
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q109.&lt;/strong&gt; 2-level manager hierarchy — employee, uska manager, aur manager ka manager (agar ho).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;employee&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;m1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;manager&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;m2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;skip_level_manager&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;
&lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;m1&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;m1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;
&lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;m2&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;m1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;m2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q110.&lt;/strong&gt; Employees jo khud manager bhi hain aur kisi ke under bhi kaam karte hain (dono role).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;DISTINCT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;sub&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q111.&lt;/strong&gt; Ek manager jiske under 2+ employees hain, unka naam aur team size.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;manager&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;team_size&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;manager_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;
&lt;span class="k"&gt;HAVING&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Extra Questions — Real Interview Curveballs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q112.&lt;/strong&gt; Employees jo Banking (101) AUR AI (104) dono projects mein hain (intersection via self-join on Employee_Project).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Employee_Project&lt;/span&gt; &lt;span class="n"&gt;ep1&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ep1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;ep1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;101&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Employee_Project&lt;/span&gt; &lt;span class="n"&gt;ep2&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ep2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;ep2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;104&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q113.&lt;/strong&gt; Employees jo Banking mein hain but AI mein NAHI (set difference via LEFT JOIN + IS NULL).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Employee_Project&lt;/span&gt; &lt;span class="n"&gt;ep1&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ep1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;ep1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;101&lt;/span&gt;
&lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Employee_Project&lt;/span&gt; &lt;span class="n"&gt;ep2&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ep2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;ep2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;104&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;ep2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project_id&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q114.&lt;/strong&gt; Do employees jo same project share karte hain — pair list (self-join on Employee_Project, avoid duplicate pairs).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;emp1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;emp2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee_Project&lt;/span&gt; &lt;span class="n"&gt;ep1&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Employee_Project&lt;/span&gt; &lt;span class="n"&gt;ep2&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;ep1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ep2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project_id&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;ep1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;ep2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e1&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;ep1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;e1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e2&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;ep2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;e2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Project&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;ep1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q115.&lt;/strong&gt; Departments jahan koi bhi employee company-average se zyada kama raha hai.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;DISTINCT&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Department&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q116.&lt;/strong&gt; Employee ka salary uske department ke average se compare karo (self-referencing via JOIN on subquery).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dept_avg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;avg_sal&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="k"&gt;CASE&lt;/span&gt; &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;dept_avg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;avg_sal&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt; &lt;span class="s1"&gt;'Above Avg'&lt;/span&gt; &lt;span class="k"&gt;ELSE&lt;/span&gt; &lt;span class="s1"&gt;'Below/Equal'&lt;/span&gt; &lt;span class="k"&gt;END&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;avg_sal&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;dept_avg&lt;/span&gt;
  &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;dept_avg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Q117.&lt;/strong&gt; Duplicate rows detect karo agar Employee_Project mein same (emp_id, project_id) pair 2 baar insert ho gaya ho (self-join method).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;ep1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ep1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;cnt&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employee_Project&lt;/span&gt; &lt;span class="n"&gt;ep1&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;ep1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ep1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;project_id&lt;/span&gt;
&lt;span class="k"&gt;HAVING&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Quick Interview One-Liners (rapid-fire, likely to be asked verbally)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;INNER vs LEFT vs CROSS in one line:&lt;/strong&gt; INNER = sirf matches, LEFT = left table full + matches, CROSS = har row ka har row se combination (no condition).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why is LEFT JOIN + WHERE on right table dangerous?&lt;/strong&gt; WHERE filters after join, silently drops NULLs, join effectively INNER ban jaata hai.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JOIN vs Subquery — kab kya use karo?&lt;/strong&gt; JOIN jab tumhe dono tables ka data ek saath chahiye (columns from both); subquery jab sirf filter/existence check karna hai aur columns sirf ek table se chahiye — subquery aksar zyada readable hota hai for EXISTS/NOT EXISTS checks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Index impact:&lt;/strong&gt; JOIN columns (foreign keys) pe index na ho toh optimizer nested-loop join karega jo bade tables pe slow hota hai — dept_id, manager_id, emp_id pe index expect karo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;USING vs ON:&lt;/strong&gt; &lt;code&gt;USING(col)&lt;/code&gt; sirf tab chalega jab dono tables mein column ka naam same ho aur ek hi column output mein aaye; &lt;code&gt;ON&lt;/code&gt; flexible hai, kisi bhi condition ke liye.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Suggested Order to Add These
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Do Q101-102 (CROSS JOIN) right after your existing Q11-25 (LEFT JOIN block) — logical flow hai.&lt;/li&gt;
&lt;li&gt;Q103-104 (FULL OUTER emulation) fits after Q21-25 (your "RIGHT JOIN via LEFT JOIN" section).&lt;/li&gt;
&lt;li&gt;Q108 (ON vs WHERE trap) — do this &lt;strong&gt;early&lt;/strong&gt;, it's a favorite 2-minute interview trap question.&lt;/li&gt;
&lt;li&gt;Q105-107 (window functions) go after your Q66-70 as the "better answer" version.&lt;/li&gt;
&lt;li&gt;Q109-117 (curveballs) as final round before mock interview.&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>MYSQL PRACTICE</title>
      <dc:creator>Er. Bhupendra</dc:creator>
      <pubDate>Wed, 05 Aug 2026 12:29:18 +0000</pubDate>
      <link>https://dev.to/bhu_kalki/mysql-pratice-2il0</link>
      <guid>https://dev.to/bhu_kalki/mysql-pratice-2il0</guid>
      <description>&lt;p&gt;CREATE TABLE Employee (&lt;br&gt;
    emp_id INTEGER PRIMARY KEY,&lt;br&gt;
    emp_name TEXT,&lt;br&gt;
    department TEXT,&lt;br&gt;
    salary INTEGER,&lt;br&gt;
    age INTEGER,&lt;br&gt;
    city TEXT,&lt;br&gt;
    joining_date DATE&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO Employee VALUES&lt;br&gt;
(101, 'Rahul', 'IT', 70000, 25, 'Delhi', '2022-01-10'),&lt;br&gt;
(102, 'Priya', 'HR', 50000, 28, 'Mumbai', '2021-05-15'),&lt;br&gt;
(103, 'Amit', 'IT', 80000, 30, 'Pune', '2020-03-20'),&lt;br&gt;
(104, 'Sneha', 'Finance', 60000, 29, 'Delhi', '2023-07-01'),&lt;br&gt;
(105, 'Rohan', 'IT', 90000, 35, 'Bangalore', '2019-11-11'),&lt;br&gt;
(106, 'Neha', 'HR', 55000, 27, 'Mumbai', '2022-08-25'),&lt;br&gt;
(107, 'Vikas', 'Finance', 75000, 32, 'Pune', '2018-02-18'),&lt;br&gt;
(108, 'Anjali', 'Sales', 45000, 24, 'Delhi', '2024-01-12'),&lt;br&gt;
(109, 'Karan', 'Sales', 52000, 31, 'Bangalore', '2021-09-09'),&lt;br&gt;
(110, 'Pooja', 'IT', 85000, 29, 'Mumbai', '2020-06-30'),&lt;br&gt;
(111, 'Arjun', 'Finance', 65000, 33, 'Delhi', '2019-12-01'),&lt;br&gt;
(112, 'Meera', 'HR', 58000, 26, 'Pune', '2023-03-15'),&lt;br&gt;
(113, 'Nikhil', 'IT', 72000, 28, 'Delhi', '2021-04-22'),&lt;br&gt;
(114, 'Simran', 'Sales', 48000, 27, 'Mumbai', '2022-10-10'),&lt;br&gt;
(115, 'Deepak', 'Finance', 82000, 36, 'Bangalore', '2017-05-05');&lt;/p&gt;

&lt;p&gt;SELECT * FROM Employee;&lt;/p&gt;

&lt;h2&gt;
  
  
  -- Find the total number of employees.
&lt;/h2&gt;

&lt;p&gt;--  SELECT  count(&lt;em&gt;) FROM  Employee;&lt;br&gt;
--  recommeded and count(&lt;/em&gt;) haar column ki row count karo&lt;br&gt;
--   SELECT  count(emp_id) FROM  Employee; not this &lt;/p&gt;

&lt;p&gt;-- Find the highest salary.&lt;br&gt;
select    MAX(salary)  from Employee;&lt;br&gt;
-- Find the lowest salary.Employee&lt;br&gt;
SELECT min(salary) from Employee;&lt;br&gt;
-- Find the average salary.Employee&lt;br&gt;
SELECT avg(salary) from Employee;&lt;br&gt;
-- Find the total salary paid to all employees.Employee&lt;br&gt;
SELECT sum(salary) from Employee;&lt;br&gt;
-- Count employees in the IT department.&lt;br&gt;
SELECT count(department) from Employee where department='IT';&lt;br&gt;
-- Find the highest age&lt;br&gt;
SELECT max(age) from Employee;&lt;br&gt;
-- Find the lowest age.&lt;br&gt;
SELECT min(age) from Employee;&lt;br&gt;
-- Find the average age.&lt;br&gt;
SELECT avg(age) from Employee;&lt;br&gt;
-- Find the total number of distinct departments.&lt;br&gt;
SELECT count(DISTINCT(department)) from Employee;&lt;/p&gt;

&lt;p&gt;SELECT DISTINCT(department) from Employee;&lt;/p&gt;

&lt;p&gt;-- Level 2: WHERE + Aggregate (11–20)&lt;br&gt;
-- Find the highest salary in the IT department.&lt;br&gt;
SELECT MAX(salary),department from Employee WHERE salary &amp;lt; (SELECT MAX(salary) from Employee);&lt;/p&gt;

&lt;p&gt;-- Find the lowest salary in the HR department.&lt;br&gt;
-- Find the average salary of Finance employees.&lt;br&gt;
-- Count employees from Delhi.&lt;br&gt;
-- Count employees whose salary is greater than 70,000.&lt;br&gt;
-- Find the total salary of employees from Mumbai.&lt;br&gt;
-- Find the maximum salary of employees older than 30.&lt;br&gt;
-- Find the minimum salary of employees younger than 30.&lt;br&gt;
-- Count employees whose age is between 25 and 30.&lt;br&gt;
-- Find the average salary of employees who joined after 2021.&lt;/p&gt;

&lt;p&gt;-- Level 3: GROUP BY (21–30)&lt;br&gt;
-- Count employees in each department.&lt;br&gt;
-- Find the average salary of each department.&lt;br&gt;
-- Find the maximum salary in each department.&lt;br&gt;
-- Find the minimum salary in each department.&lt;br&gt;
-- Find the total salary of each department.&lt;br&gt;
-- Count employees in each city.&lt;br&gt;
-- Find the average age in each city.&lt;br&gt;
-- Find the highest salary in each city.&lt;br&gt;
-- Find the total salary paid in each city.&lt;br&gt;
-- Count employees by department and city.&lt;/p&gt;

&lt;p&gt;-- Level 4: HAVING (31–38)&lt;br&gt;
-- Show departments having more than 2 employees.&lt;br&gt;
-- Show cities having more than 2 employees.&lt;br&gt;
-- Show departments where the average salary is greater than 70,000.&lt;br&gt;
-- Show departments whose total salary is more than 2,50,000.&lt;br&gt;
-- Show cities where the maximum salary is greater than 80,000.&lt;br&gt;
-- Show departments where the minimum salary is less than 50,000.&lt;br&gt;
-- Show departments having at least 3 employees.&lt;br&gt;
-- Show cities where the average age is greater than 28.&lt;/p&gt;

&lt;p&gt;-- Level 5: Real Interview Questions (39–50)&lt;br&gt;
-- Find the second highest salary.&lt;br&gt;
-- Find the third highest salary.&lt;br&gt;
-- Find all employees earning the highest salary.&lt;br&gt;
-- Find all employees earning the lowest salary.&lt;br&gt;
-- Find employees whose salary is greater than the average salary.&lt;br&gt;
-- Find departments whose average salary is greater than the companys average salary.&lt;br&gt;
-- Find the department with the highest average salary.&lt;br&gt;
-- Find the city with the maximum number of employees.&lt;br&gt;
-- Find the department that pays the highest total salary.&lt;br&gt;
-- Find departments where every employee earns more than 50,000.&lt;br&gt;
-- Find departments where at least one employee earns more than 85,000.&lt;br&gt;
-- Find the difference between the highest and lowest salary.&lt;/p&gt;

&lt;p&gt;-- After these 50, practice these advanced questions:&lt;/p&gt;

&lt;p&gt;-- Find the Nth highest salary.&lt;br&gt;
-- Find duplicate salaries.&lt;br&gt;
-- Find employees with the same salary.&lt;br&gt;
-- Find top 3 highest-paid employees.&lt;br&gt;
-- Find bottom 3 lowest-paid employees.&lt;br&gt;
-- Find department-wise highest-paid employee.&lt;br&gt;
-- Find department-wise lowest-paid employee.&lt;br&gt;
-- Find employees earning above their department average.&lt;br&gt;
-- Find employees earning below their department average.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Java Full Stack Developer</title>
      <dc:creator>Er. Bhupendra</dc:creator>
      <pubDate>Sun, 02 Aug 2026 16:32:57 +0000</pubDate>
      <link>https://dev.to/bhu_kalki/java-full-stack-developer-2iel</link>
      <guid>https://dev.to/bhu_kalki/java-full-stack-developer-2iel</guid>
      <description>&lt;p&gt;This is a very good &lt;strong&gt;Deloitte Java Full Stack Developer L1 interview list&lt;/strong&gt;. Below are &lt;strong&gt;interviewer-level answers&lt;/strong&gt; in a structured format. These are suitable for &lt;strong&gt;3 years of Java Spring Boot experience&lt;/strong&gt; and are detailed enough to handle follow-up questions.&lt;/p&gt;




&lt;h1&gt;
  
  
  1) Tell me about yourself
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Answer
&lt;/h2&gt;

&lt;p&gt;"Hello, my name is Bhupendra Kumar. I have around &lt;strong&gt;3 years of experience as a Java Full Stack Developer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I primarily work on developing enterprise applications using &lt;strong&gt;Java 17, Spring Boot, Spring MVC, Spring Data JPA, Hibernate, Spring Security, REST APIs, Microservices, Kafka, Redis, MySQL/PostgreSQL, Angular 14, and AWS services like EC2, S3, and RDS.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In my recent project, which is a Hotel Management System built on Microservices architecture, I worked on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developing REST APIs using Spring Boot&lt;/li&gt;
&lt;li&gt;Designing and implementing Microservices&lt;/li&gt;
&lt;li&gt;Kafka-based asynchronous communication&lt;/li&gt;
&lt;li&gt;JWT Authentication and Authorization&lt;/li&gt;
&lt;li&gt;Redis caching for performance improvement&lt;/li&gt;
&lt;li&gt;MySQL/PostgreSQL database design&lt;/li&gt;
&lt;li&gt;AWS S3 integration for image uploads&lt;/li&gt;
&lt;li&gt;Docker containerization&lt;/li&gt;
&lt;li&gt;Git and Maven for version/build management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also actively participated in bug fixing, production issue analysis, API optimization, code reviews, and Agile Scrum ceremonies.&lt;/p&gt;

&lt;p&gt;Now I'm looking for an opportunity where I can contribute to scalable enterprise applications while continuously improving my technical skills."&lt;/p&gt;




&lt;h3&gt;
  
  
  Follow-up Questions
&lt;/h3&gt;

&lt;h3&gt;
  
  
  What is your daily work?
&lt;/h3&gt;

&lt;p&gt;"My day usually starts with the Scrum stand-up meeting.&lt;/p&gt;

&lt;p&gt;After that I:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pick Jira stories&lt;/li&gt;
&lt;li&gt;Develop new REST APIs&lt;/li&gt;
&lt;li&gt;Fix production bugs&lt;/li&gt;
&lt;li&gt;Review pull requests&lt;/li&gt;
&lt;li&gt;Write SQL queries&lt;/li&gt;
&lt;li&gt;Test APIs using Postman&lt;/li&gt;
&lt;li&gt;Coordinate with frontend developers&lt;/li&gt;
&lt;li&gt;Participate in code reviews&lt;/li&gt;
&lt;li&gt;Deploy builds on testing environments&lt;/li&gt;
&lt;li&gt;Attend sprint planning and retrospective meetings."&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  2) If API is slow how do you debug it?
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Step-by-step approach
&lt;/h2&gt;

&lt;p&gt;Whenever an API is slow, I never assume the problem.&lt;/p&gt;

&lt;p&gt;I follow a systematic approach.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1
&lt;/h3&gt;

&lt;p&gt;Check API response time&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Postman

or

Browser Developer Tools

or

APM Tools
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 2
&lt;/h3&gt;

&lt;p&gt;Check Application Logs&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;INFO
WARN
ERROR
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Look for&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exceptions&lt;/li&gt;
&lt;li&gt;Timeout&lt;/li&gt;
&lt;li&gt;Retry&lt;/li&gt;
&lt;li&gt;Long processing&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Step 3
&lt;/h3&gt;

&lt;p&gt;Check Database Query&lt;/p&gt;

&lt;p&gt;Most slow APIs are caused by SQL.&lt;/p&gt;

&lt;p&gt;Check&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Slow Query&lt;/li&gt;
&lt;li&gt;Missing Index&lt;/li&gt;
&lt;li&gt;Full Table Scan&lt;/li&gt;
&lt;li&gt;Joins&lt;/li&gt;
&lt;li&gt;N+1 Query Problem&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;EXPLAIN&lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 4
&lt;/h3&gt;

&lt;p&gt;Check External APIs&lt;/p&gt;

&lt;p&gt;Maybe&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Payment API
Email API
OTP API
SMS API
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;are slow.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 5
&lt;/h3&gt;

&lt;p&gt;Thread Dump&lt;/p&gt;

&lt;p&gt;Maybe all threads are blocked.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;jstack
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 6
&lt;/h3&gt;

&lt;p&gt;CPU &amp;amp; Memory&lt;/p&gt;

&lt;p&gt;Check&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;top

htop

jconsole

VisualVM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 7
&lt;/h3&gt;

&lt;p&gt;Network Latency&lt;/p&gt;

&lt;p&gt;Maybe&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;API Gateway

Load Balancer

Firewall
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is causing delay.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 8
&lt;/h3&gt;

&lt;p&gt;Profiling&lt;/p&gt;

&lt;p&gt;Use&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spring Boot Actuator

Prometheus

Grafana

New Relic

Dynatrace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Finally optimize
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Redis Cache&lt;/li&gt;
&lt;li&gt;Database Index&lt;/li&gt;
&lt;li&gt;Async Processing&lt;/li&gt;
&lt;li&gt;Pagination&lt;/li&gt;
&lt;li&gt;Connection Pool&lt;/li&gt;
&lt;li&gt;Batch Queries&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  3) Explain how to optimize slow running SQL Queries
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Answer
&lt;/h2&gt;

&lt;p&gt;There are multiple ways.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Create Indexes
&lt;/h3&gt;

&lt;p&gt;Without index&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Full Table Scan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With Index&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Index Scan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Huge improvement.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Use EXPLAIN PLAN
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;EXPLAIN&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employee&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Table Scan&lt;/li&gt;
&lt;li&gt;Index Usage&lt;/li&gt;
&lt;li&gt;Cost&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. Avoid SELECT *
&lt;/h3&gt;

&lt;p&gt;Instead&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  4. Avoid unnecessary joins
&lt;/h3&gt;

&lt;p&gt;Only join required tables.&lt;/p&gt;




&lt;h3&gt;
  
  
  5. Use Pagination
&lt;/h3&gt;

&lt;p&gt;Instead of&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;LIMIT&lt;/span&gt;
&lt;span class="k"&gt;OFFSET&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  6. Optimize WHERE clause
&lt;/h3&gt;

&lt;p&gt;Bad&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="k"&gt;UPPER&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Good&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'John'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  7. Batch Insert
&lt;/h3&gt;

&lt;p&gt;Instead of&lt;/p&gt;

&lt;p&gt;1000 Inserts&lt;/p&gt;

&lt;p&gt;Use&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Batch Insert
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  8. Remove Duplicate Queries
&lt;/h3&gt;

&lt;p&gt;Avoid&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;N+1 Query Problem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  9. Normalize or Denormalize carefully
&lt;/h3&gt;

&lt;p&gt;Depends on use case.&lt;/p&gt;




&lt;h3&gt;
  
  
  10. Cache frequently used data
&lt;/h3&gt;

&lt;p&gt;Using Redis.&lt;/p&gt;




&lt;h1&gt;
  
  
  4) How Microservices communicate?
&lt;/h1&gt;

&lt;p&gt;There are two ways.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Synchronous Communication
&lt;/h2&gt;

&lt;p&gt;Request waits for response.&lt;/p&gt;

&lt;p&gt;Examples&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;REST API&lt;/li&gt;
&lt;li&gt;Feign Client&lt;/li&gt;
&lt;li&gt;WebClient&lt;/li&gt;
&lt;li&gt;gRPC&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Flow&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Order Service

↓

User Service

↓

Response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Advantages&lt;/p&gt;

&lt;p&gt;Simple&lt;/p&gt;

&lt;p&gt;Easy debugging&lt;/p&gt;

&lt;p&gt;Disadvantages&lt;/p&gt;

&lt;p&gt;Tightly dependent&lt;/p&gt;

&lt;p&gt;Slow if downstream fails&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Asynchronous Communication
&lt;/h2&gt;

&lt;p&gt;Uses Message Broker.&lt;/p&gt;

&lt;p&gt;Examples&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kafka&lt;/li&gt;
&lt;li&gt;RabbitMQ&lt;/li&gt;
&lt;li&gt;ActiveMQ&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Flow&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Booking Service

↓

Kafka Topic

↓

Notification Service

↓

Email Service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Advantages&lt;/p&gt;

&lt;p&gt;High throughput&lt;/p&gt;

&lt;p&gt;Loose coupling&lt;/p&gt;

&lt;p&gt;Scalable&lt;/p&gt;

&lt;p&gt;Reliable&lt;/p&gt;




&lt;h1&gt;
  
  
  5) LEFT JOIN vs RIGHT JOIN
&lt;/h1&gt;

&lt;p&gt;Assume&lt;/p&gt;

&lt;p&gt;Employee&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 Rahul

2 Amit

3 Neha
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Department&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 HR

2 IT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;LEFT JOIN&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Department&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Returns&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Rahul HR

Amit IT

Neha NULL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All rows from LEFT table.&lt;/p&gt;




&lt;p&gt;RIGHT JOIN&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;Employee&lt;/span&gt; &lt;span class="k"&gt;RIGHT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Department&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Returns&lt;/p&gt;

&lt;p&gt;All rows from RIGHT table.&lt;/p&gt;




&lt;p&gt;If no matching record exists in RIGHT table during a LEFT JOIN:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Right table columns become NULL.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If no matching record exists in LEFT table during a RIGHT JOIN:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Left table columns become NULL.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  6) Optional class
&lt;/h1&gt;

&lt;p&gt;Purpose&lt;/p&gt;

&lt;p&gt;Avoid&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NullPointerException
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Example&lt;/p&gt;

&lt;p&gt;Without Optional&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;employee&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getName&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;length&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Null → Exception&lt;/p&gt;




&lt;p&gt;With Optional&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Optional&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
&lt;span class="nc"&gt;Optional&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ofNullable&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;employee&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getName&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Methods&lt;/p&gt;

&lt;h3&gt;
  
  
  of()
&lt;/h3&gt;

&lt;p&gt;Non-null value only&lt;/p&gt;




&lt;h3&gt;
  
  
  ofNullable()
&lt;/h3&gt;

&lt;p&gt;Allows null&lt;/p&gt;




&lt;h3&gt;
  
  
  empty()
&lt;/h3&gt;

&lt;p&gt;Creates empty Optional&lt;/p&gt;




&lt;h3&gt;
  
  
  isPresent()
&lt;/h3&gt;

&lt;p&gt;Checks value exists&lt;/p&gt;




&lt;h3&gt;
  
  
  ifPresent()
&lt;/h3&gt;

&lt;p&gt;Executes if present&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ifPresent&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  orElse()
&lt;/h3&gt;

&lt;p&gt;Returns default value&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;orElse&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Unknown"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  orElseGet()
&lt;/h3&gt;

&lt;p&gt;Lazy evaluation&lt;/p&gt;




&lt;h3&gt;
  
  
  orElseThrow()
&lt;/h3&gt;

&lt;p&gt;Throws exception&lt;/p&gt;




&lt;h3&gt;
  
  
  map()
&lt;/h3&gt;

&lt;p&gt;Transforms value&lt;/p&gt;




&lt;h3&gt;
  
  
  filter()
&lt;/h3&gt;

&lt;p&gt;Filters Optional&lt;/p&gt;




&lt;h1&gt;
  
  
  7) transient vs volatile
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;transient&lt;/th&gt;
&lt;th&gt;volatile&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Used in Serialization&lt;/td&gt;
&lt;td&gt;Used in Multithreading&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Field not serialized&lt;/td&gt;
&lt;td&gt;Ensures latest value is visible across threads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JVM ignores during serialization&lt;/td&gt;
&lt;td&gt;Prevents thread-local caching&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Object state&lt;/td&gt;
&lt;td&gt;Thread visibility&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;transient&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Password won't be serialized.&lt;/p&gt;






&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;volatile&lt;/span&gt; &lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;running&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All threads immediately see updates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Follow-up:&lt;/strong&gt; &lt;code&gt;volatile&lt;/code&gt; ensures &lt;strong&gt;visibility&lt;/strong&gt;, but it does &lt;strong&gt;not&lt;/strong&gt; make compound operations (like &lt;code&gt;count++&lt;/code&gt;) atomic.&lt;/p&gt;




&lt;h1&gt;
  
  
  8) Java Streams - Sort Employees
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
         &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sorted&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
             &lt;span class="nc"&gt;Comparator&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;comparing&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;Employee:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;getAge&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                       &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;thenComparing&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;Employee:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;getSalary&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
         &lt;span class="o"&gt;)&lt;/span&gt;
         &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;forEach&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Descending salary&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sorted&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
&lt;span class="nc"&gt;Comparator&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;comparing&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;Employee:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;getSalary&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;reversed&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;forEach&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;println&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Time Complexity&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;O(n log n)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  9) CompletableFuture
&lt;/h1&gt;

&lt;p&gt;Purpose&lt;/p&gt;

&lt;p&gt;Execute tasks asynchronously without blocking the main thread.&lt;/p&gt;

&lt;p&gt;Example&lt;/p&gt;

&lt;p&gt;Suppose an API needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User Details&lt;/li&gt;
&lt;li&gt;Orders&lt;/li&gt;
&lt;li&gt;Payments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sequential&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2 + 3 + 2 = 7 sec
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Parallel&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;max(2,3,2)=3 sec
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Code&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;CompletableFuture&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
&lt;span class="nc"&gt;CompletableFuture&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;supplyAsync&lt;/span&gt;&lt;span class="o"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;getUser&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;

&lt;span class="nc"&gt;CompletableFuture&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Order&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
&lt;span class="nc"&gt;CompletableFuture&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;supplyAsync&lt;/span&gt;&lt;span class="o"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;getOrders&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;

&lt;span class="nc"&gt;CompletableFuture&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Payment&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;payment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
&lt;span class="nc"&gt;CompletableFuture&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;supplyAsync&lt;/span&gt;&lt;span class="o"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;getPayment&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;

&lt;span class="nc"&gt;CompletableFuture&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;allOf&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;payment&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;join&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

&lt;span class="nc"&gt;Response&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Response&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;join&lt;/span&gt;&lt;span class="o"&gt;(),&lt;/span&gt;
        &lt;span class="n"&gt;orders&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;join&lt;/span&gt;&lt;span class="o"&gt;(),&lt;/span&gt;
        &lt;span class="n"&gt;payment&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;join&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Useful methods:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;supplyAsync()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;runAsync()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;thenApply()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;thenCompose()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;thenCombine()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;exceptionally()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;allOf()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;anyOf()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;join()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  10) Internal Working of HashMap
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Step 1
&lt;/h3&gt;

&lt;p&gt;HashMap computes hash&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hash(key)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 2
&lt;/h3&gt;

&lt;p&gt;Find bucket&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;index = hash % capacity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 3
&lt;/h3&gt;

&lt;p&gt;Store Entry&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Key

Value

Hash

Next Node
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Collision
&lt;/h3&gt;

&lt;p&gt;Two keys&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;101

201
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;may map to same bucket.&lt;/p&gt;

&lt;p&gt;Earlier (before Java 8)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Linked List
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After Java 8&lt;/p&gt;

&lt;p&gt;If bucket size &amp;gt; 8 and capacity ≥ 64&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Red Black Tree
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Otherwise&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Linked List
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Same key inserted again?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;map&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;put&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"A"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;map&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;put&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"A"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Old value&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is replaced with&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;200
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;HashMap uses &lt;code&gt;equals()&lt;/code&gt; and &lt;code&gt;hashCode()&lt;/code&gt; to determine if the key already exists.&lt;/p&gt;




&lt;h1&gt;
  
  
  11) How do you handle exceptions in Spring Boot?
&lt;/h1&gt;

&lt;p&gt;I use centralized exception handling to keep APIs consistent.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Service Layer
&lt;/h3&gt;

&lt;p&gt;Throw meaningful custom exceptions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ResourceNotFoundException&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"User not found"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Global Exception Handler
&lt;/h3&gt;

&lt;p&gt;Use &lt;code&gt;@RestControllerAdvice&lt;/code&gt; and &lt;code&gt;@ExceptionHandler&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@RestControllerAdvice&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;GlobalExceptionHandler&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nd"&gt;@ExceptionHandler&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;ResourceNotFoundException&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;ResponseEntity&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;handle&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;ResourceNotFoundException&lt;/span&gt; &lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;ResponseEntity&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;HttpStatus&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;NOT_FOUND&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                             &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ex&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getMessage&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Validation Errors
&lt;/h3&gt;

&lt;p&gt;Use &lt;code&gt;@Valid&lt;/code&gt; with &lt;code&gt;MethodArgumentNotValidException&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Standard Error Response
&lt;/h3&gt;

&lt;p&gt;Return a consistent JSON like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"timestamp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-08-02T16:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Not Found"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"User not found"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"path"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/users/1"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cleaner controller code&lt;/li&gt;
&lt;li&gt;Consistent API responses&lt;/li&gt;
&lt;li&gt;Easier debugging&lt;/li&gt;
&lt;li&gt;Better client experience&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  12) What is Drools? How do you integrate it with Spring Boot?
&lt;/h1&gt;

&lt;h3&gt;
  
  
  What is Drools?
&lt;/h3&gt;

&lt;p&gt;Drools is a &lt;strong&gt;Business Rule Management System (BRMS)&lt;/strong&gt;. It allows business rules to be written separately from Java code, so rules can change without modifying the application's core logic.&lt;/p&gt;

&lt;p&gt;Example use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Insurance premium calculation&lt;/li&gt;
&lt;li&gt;Loan eligibility&lt;/li&gt;
&lt;li&gt;Discount calculation&lt;/li&gt;
&lt;li&gt;Fraud detection&lt;/li&gt;
&lt;li&gt;Order validation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Key Components
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Facts&lt;/strong&gt;: Java objects passed into the rule engine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rules&lt;/strong&gt;: Written in &lt;code&gt;.drl&lt;/code&gt; files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge Base (KieBase)&lt;/strong&gt;: Stores compiled rules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session (KieSession)&lt;/strong&gt;: Executes the rules.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example Rule
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rule "Senior Citizen Discount"
when
    $customer : Customer(age &amp;gt;= 60)
then
    $customer.setDiscount(20);
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Spring Boot Integration Steps
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Add Drools dependencies (&lt;code&gt;kie-api&lt;/code&gt;, &lt;code&gt;drools-core&lt;/code&gt;, &lt;code&gt;drools-compiler&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Place &lt;code&gt;.drl&lt;/code&gt; files under &lt;code&gt;src/main/resources&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Configure a &lt;code&gt;KieContainer&lt;/code&gt; and &lt;code&gt;KieSession&lt;/code&gt; bean.&lt;/li&gt;
&lt;li&gt;Inject &lt;code&gt;KieSession&lt;/code&gt; into your service.&lt;/li&gt;
&lt;li&gt;Insert facts and fire rules.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;kieSession&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;insert&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;customer&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;kieSession&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;fireAllRules&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Advantages
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Business rules are separated from application code.&lt;/li&gt;
&lt;li&gt;Rules can be updated with minimal code changes.&lt;/li&gt;
&lt;li&gt;Easy for business analysts to manage rule logic.&lt;/li&gt;
&lt;li&gt;Suitable for complex decision-making systems.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Deloitte Interview Tips
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Answer using the &lt;strong&gt;STAR (Situation–Task–Action–Result)&lt;/strong&gt; approach for experience-based questions.&lt;/li&gt;
&lt;li&gt;Explain concepts first, then provide a simple example.&lt;/li&gt;
&lt;li&gt;Mention practical tools you've used (Postman, Redis, Kafka, Spring Boot Actuator, MySQL, AWS, Docker).&lt;/li&gt;
&lt;li&gt;If you don't know a topic deeply (like Drools), be honest about your exposure and explain the fundamentals correctly.&lt;/li&gt;
&lt;li&gt;Expect follow-up questions after each answer, especially on &lt;code&gt;HashMap&lt;/code&gt;, &lt;code&gt;CompletableFuture&lt;/code&gt;, SQL optimization, and exception handling, as these are common areas for deeper discussion.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These answers are suitable for an experienced Java Full Stack Developer interview and provide a strong foundation for handling follow-up questions.&lt;/p&gt;

&lt;p&gt;============================================&lt;/p&gt;

&lt;p&gt;This is an excellent list for a &lt;strong&gt;Deloitte Java Full Stack (3+ Years Experience)&lt;/strong&gt; interview. Deloitte interviewers usually expect:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Definition&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Why it is used&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Real-time example&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interview follow-up questions&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Below are structured answers.&lt;/p&gt;




&lt;h1&gt;
  
  
  ROUND 1
&lt;/h1&gt;

&lt;h1&gt;
  
  
  1. Difference between Abstraction and Interface
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Abstraction
&lt;/h2&gt;

&lt;p&gt;Abstraction means hiding the implementation details and showing only the necessary functionality to the user.&lt;/p&gt;

&lt;p&gt;It focuses on &lt;strong&gt;what an object does&lt;/strong&gt;, not &lt;strong&gt;how it does it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is achieved using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Abstract class&lt;/li&gt;
&lt;li&gt;Interface&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;abstract&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Vehicle&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;abstract&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;stop&lt;/span&gt;&lt;span class="o"&gt;(){&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Vehicle stopped"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An abstract class can have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Abstract methods&lt;/li&gt;
&lt;li&gt;Concrete methods&lt;/li&gt;
&lt;li&gt;Constructors&lt;/li&gt;
&lt;li&gt;Instance variables&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Interface
&lt;/h2&gt;

&lt;p&gt;An interface defines a contract that implementing classes must follow.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;Payment&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;pay&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CreditCard&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;Payment&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;pay&lt;/span&gt;&lt;span class="o"&gt;(){&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Payment done"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Differences
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Abstract Class&lt;/th&gt;
&lt;th&gt;Interface&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Can have constructors&lt;/td&gt;
&lt;td&gt;No constructors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can have instance variables&lt;/td&gt;
&lt;td&gt;Only constants&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can have abstract &amp;amp; concrete methods&lt;/td&gt;
&lt;td&gt;Java 8+: default, static &amp;amp; private methods&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Single inheritance&lt;/td&gt;
&lt;td&gt;Multiple inheritance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Used when classes share common behavior&lt;/td&gt;
&lt;td&gt;Used for capability/contract&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  Real Example
&lt;/h3&gt;

&lt;p&gt;Vehicle hierarchy&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Vehicle

↓

Car

↓

Bike
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Abstract class is better because all vehicles have common properties.&lt;/p&gt;




&lt;p&gt;Payment Gateway&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Payment

↓

UPI

Credit Card

PayPal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Interface is better because all payment methods implement the same contract.&lt;/p&gt;




&lt;h1&gt;
  
  
  Follow-up
&lt;/h1&gt;

&lt;p&gt;Why does Java support multiple inheritance through interfaces but not classes?&lt;/p&gt;

&lt;p&gt;Because multiple class inheritance creates the &lt;strong&gt;Diamond Problem&lt;/strong&gt;, causing ambiguity. Interfaces avoid this because they primarily define contracts, and Java resolves conflicts if default methods clash.&lt;/p&gt;




&lt;h1&gt;
  
  
  2. equals() and hashCode() Contract
&lt;/h1&gt;

&lt;p&gt;Both methods come from Object class.&lt;/p&gt;




&lt;h2&gt;
  
  
  equals()
&lt;/h2&gt;

&lt;p&gt;Used to compare object contents.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;emp1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;equals&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;emp2&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Returns&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;true

false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  hashCode()
&lt;/h2&gt;

&lt;p&gt;Returns an integer hash value used by HashMap and HashSet.&lt;/p&gt;




&lt;h3&gt;
  
  
  Contract
&lt;/h3&gt;

&lt;p&gt;If&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;equals&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;hashCode&lt;/span&gt;&lt;span class="o"&gt;()==&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;hashCode&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;must also be true.&lt;/p&gt;

&lt;p&gt;The reverse is &lt;strong&gt;not required&lt;/strong&gt;: two different objects may have the same hash code (collision).&lt;/p&gt;




&lt;h3&gt;
  
  
  Why?
&lt;/h3&gt;

&lt;p&gt;HashMap first compares hashCode() to find the bucket, then uses equals() to confirm key equality.&lt;/p&gt;




&lt;h3&gt;
  
  
  Real Example
&lt;/h3&gt;

&lt;p&gt;Employee ID&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;101
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two employee objects with ID 101 should be equal.&lt;/p&gt;




&lt;h3&gt;
  
  
  Follow-up
&lt;/h3&gt;

&lt;p&gt;What happens if hashCode() is overridden but equals() isn't?&lt;/p&gt;

&lt;p&gt;HashMap/HashSet may behave incorrectly because logically equal objects won't be recognized as equal.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. Why String is Immutable
&lt;/h1&gt;

&lt;p&gt;String cannot be modified after creation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Java"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;concat&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"17"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Java&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A new String object is created; &lt;code&gt;s&lt;/code&gt; still refers to the original object.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Security
&lt;/h3&gt;

&lt;p&gt;Passwords&lt;/p&gt;

&lt;p&gt;Database URLs&lt;/p&gt;

&lt;p&gt;File Paths&lt;/p&gt;

&lt;p&gt;cannot be modified accidentally.&lt;/p&gt;




&lt;h3&gt;
  
  
  Thread Safe
&lt;/h3&gt;

&lt;p&gt;Multiple threads can safely share Strings.&lt;/p&gt;




&lt;h3&gt;
  
  
  String Pool
&lt;/h3&gt;

&lt;p&gt;Reduces memory usage.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Java"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Java"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both refer to the same pooled object.&lt;/p&gt;




&lt;h3&gt;
  
  
  HashMap Key
&lt;/h3&gt;

&lt;p&gt;Since String never changes, its hashCode remains stable.&lt;/p&gt;




&lt;h3&gt;
  
  
  Follow-up
&lt;/h3&gt;

&lt;p&gt;Can immutable objects be modified?&lt;/p&gt;

&lt;p&gt;No. Any apparent modification creates a new object.&lt;/p&gt;




&lt;h1&gt;
  
  
  4. Java 7 Interface vs Java 8 Interface
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Java 7
&lt;/h2&gt;

&lt;p&gt;Only&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;abstract&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;methods.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;A&lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;display&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Java 8
&lt;/h2&gt;

&lt;p&gt;Introduced&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Default methods&lt;/li&gt;
&lt;li&gt;Static methods
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="o"&gt;(){}&lt;/span&gt;

&lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;show&lt;/span&gt;&lt;span class="o"&gt;(){}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Java 9 additionally introduced private methods in interfaces.&lt;/p&gt;




&lt;h3&gt;
  
  
  Why?
&lt;/h3&gt;

&lt;p&gt;To add new methods to interfaces without breaking existing implementations.&lt;/p&gt;




&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sort&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is implemented using default methods.&lt;/p&gt;




&lt;h1&gt;
  
  
  5. Checked vs Unchecked Exception
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Checked
&lt;/h2&gt;

&lt;p&gt;Checked at compile time.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;IOException

SQLException
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Must be handled using&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;try-catch

throws
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Unchecked
&lt;/h2&gt;

&lt;p&gt;Occurs during runtime.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NullPointerException

ArithmeticException

ArrayIndexOutOfBoundsException
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Handling is optional.&lt;/p&gt;




&lt;h3&gt;
  
  
  Differences
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Checked&lt;/th&gt;
&lt;th&gt;Unchecked&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Compile Time&lt;/td&gt;
&lt;td&gt;Runtime&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Must Handle&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extends Exception&lt;/td&gt;
&lt;td&gt;Extends RuntimeException&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  throw vs throws
&lt;/h1&gt;

&lt;h2&gt;
  
  
  throw
&lt;/h2&gt;

&lt;p&gt;Used to explicitly throw an exception.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;RuntimeException&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  throws
&lt;/h2&gt;

&lt;p&gt;Declares that a method may throw an exception.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="kd"&gt;throws&lt;/span&gt; &lt;span class="nc"&gt;IOException&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  6. Comparable vs Comparator
&lt;/h1&gt;

&lt;p&gt;Comparable&lt;/p&gt;

&lt;p&gt;Natural ordering.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;compareTo&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside class.&lt;/p&gt;




&lt;p&gt;Comparator&lt;/p&gt;

&lt;p&gt;Custom sorting.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;compare&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Outside class.&lt;/p&gt;




&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;Sort by Age&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Comparator&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;comparing&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;Employee:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;getAge&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sort by Salary&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Comparator&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;comparing&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;Employee:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;getSalary&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  7. Sort Employee List
&lt;/h1&gt;

&lt;p&gt;Age&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sorted&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Comparator&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;comparing&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;Employee:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;getAge&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toList&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Salary Desc&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sorted&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Comparator&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;comparing&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;Employee:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;getSalary&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;reversed&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toList&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Filter Salary &amp;gt; 50000&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;filter&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getSalary&lt;/span&gt;&lt;span class="o"&gt;()&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;50000&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toList&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  8. @SpringBootApplication
&lt;/h1&gt;

&lt;p&gt;It is a combination of three annotations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@SpringBootConfiguration&lt;/span&gt;
&lt;span class="nd"&gt;@EnableAutoConfiguration&lt;/span&gt;
&lt;span class="nd"&gt;@ComponentScan&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Responsibilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Configuration class&lt;/li&gt;
&lt;li&gt;Auto-configures Spring Boot&lt;/li&gt;
&lt;li&gt;Scans beans in the current package and subpackages&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  9. How Microservices Communicate
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Synchronous
&lt;/h2&gt;

&lt;p&gt;REST API&lt;/p&gt;

&lt;p&gt;Feign Client&lt;/p&gt;

&lt;p&gt;WebClient&lt;/p&gt;

&lt;p&gt;gRPC&lt;/p&gt;

&lt;p&gt;Client waits for response.&lt;/p&gt;




&lt;h2&gt;
  
  
  Asynchronous
&lt;/h2&gt;

&lt;p&gt;Kafka&lt;/p&gt;

&lt;p&gt;RabbitMQ&lt;/p&gt;

&lt;p&gt;ActiveMQ&lt;/p&gt;

&lt;p&gt;Producer sends event → Consumer processes later.&lt;/p&gt;




&lt;h3&gt;
  
  
  Real Example
&lt;/h3&gt;

&lt;p&gt;Booking Service&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Kafka&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Notification Service&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Email&lt;/p&gt;




&lt;h1&gt;
  
  
  ROUND 2
&lt;/h1&gt;

&lt;h1&gt;
  
  
  10. Process vs Thread
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Process&lt;/th&gt;
&lt;th&gt;Thread&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Independent program&lt;/td&gt;
&lt;td&gt;Smallest execution unit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Own memory&lt;/td&gt;
&lt;td&gt;Shared memory within process&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heavyweight&lt;/td&gt;
&lt;td&gt;Lightweight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slow creation&lt;/td&gt;
&lt;td&gt;Fast creation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  11. Multitasking vs Multithreading
&lt;/h1&gt;

&lt;p&gt;Multitasking&lt;/p&gt;

&lt;p&gt;Multiple applications running.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Chrome

VS Code

Spotify
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Multithreading&lt;/p&gt;

&lt;p&gt;Multiple threads inside one application.&lt;/p&gt;

&lt;p&gt;Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Download

UI

Logging
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  12. Runnable vs Callable
&lt;/h1&gt;

&lt;p&gt;Runnable&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No return value.&lt;/p&gt;

&lt;p&gt;Cannot throw checked exceptions.&lt;/p&gt;




&lt;p&gt;Callable&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;call&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Returns result.&lt;/p&gt;

&lt;p&gt;Can throw checked exceptions.&lt;/p&gt;

&lt;p&gt;Used with Future/CompletableFuture.&lt;/p&gt;




&lt;h1&gt;
  
  
  13. How Concurrency is Achieved
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Multiple threads&lt;/li&gt;
&lt;li&gt;ExecutorService&lt;/li&gt;
&lt;li&gt;Thread Pool&lt;/li&gt;
&lt;li&gt;CompletableFuture&lt;/li&gt;
&lt;li&gt;Synchronization&lt;/li&gt;
&lt;li&gt;Locks&lt;/li&gt;
&lt;li&gt;Virtual Threads (Java 21)&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  14. volatile Keyword
&lt;/h1&gt;

&lt;p&gt;Ensures &lt;strong&gt;visibility&lt;/strong&gt; of changes across threads.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;volatile&lt;/span&gt; &lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;running&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One thread updates the value, other threads immediately see the updated value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; &lt;code&gt;volatile&lt;/code&gt; does &lt;strong&gt;not&lt;/strong&gt; make compound operations (&lt;code&gt;count++&lt;/code&gt;) atomic.&lt;/p&gt;




&lt;h1&gt;
  
  
  15. Producer Consumer Problem
&lt;/h1&gt;

&lt;p&gt;Producer creates data.&lt;/p&gt;

&lt;p&gt;Consumer processes data.&lt;/p&gt;

&lt;p&gt;Shared queue.&lt;/p&gt;

&lt;p&gt;Java solution&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;BlockingQueue

Kafka

RabbitMQ
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  16. Thread Pool Executor
&lt;/h1&gt;

&lt;p&gt;Instead of creating new threads every time,&lt;/p&gt;

&lt;p&gt;Reuse existing threads.&lt;/p&gt;

&lt;p&gt;Benefits&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better performance&lt;/li&gt;
&lt;li&gt;Less memory&lt;/li&gt;
&lt;li&gt;Controlled thread creation&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  17. Bean Definition
&lt;/h1&gt;

&lt;p&gt;Bean is an object managed by Spring IoC Container.&lt;/p&gt;

&lt;p&gt;Created using&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Component&lt;/span&gt;

&lt;span class="nd"&gt;@Service&lt;/span&gt;

&lt;span class="nd"&gt;@Repository&lt;/span&gt;

&lt;span class="nd"&gt;@Bean&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  18. Stereotype Annotations
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Annotation&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;@Component&lt;/td&gt;
&lt;td&gt;Generic Bean&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;@Service&lt;/td&gt;
&lt;td&gt;Business Logic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;@Repository&lt;/td&gt;
&lt;td&gt;Database Layer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;@Controller&lt;/td&gt;
&lt;td&gt;MVC Controller&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;@RestController&lt;/td&gt;
&lt;td&gt;REST APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  19. &lt;a class="mentioned-user" href="https://dev.to/primary"&gt;@primary&lt;/a&gt; vs @Qualifier
&lt;/h1&gt;

&lt;p&gt;If multiple beans of the same type exist:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a class="mentioned-user" href="https://dev.to/primary"&gt;@primary&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Default bean.&lt;/p&gt;

&lt;h3&gt;
  
  
  @Qualifier
&lt;/h3&gt;

&lt;p&gt;Select a specific bean by name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Autowired&lt;/span&gt;
&lt;span class="nd"&gt;@Qualifier&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"upiPayment"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;Payment&lt;/span&gt; &lt;span class="n"&gt;payment&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  20. Prototype Bean inside Singleton
&lt;/h1&gt;

&lt;p&gt;Injecting a prototype bean directly into a singleton creates it only once.&lt;/p&gt;

&lt;p&gt;Solutions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ObjectProvider&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Provider&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ApplicationContext&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Method injection (&lt;code&gt;@Lookup&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  21. N+1 Problem
&lt;/h1&gt;

&lt;p&gt;Occurs when one query loads parent records and additional queries load each child's data individually.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1 query → Employees

100 queries → Departments
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Total = 101 queries.&lt;/p&gt;

&lt;p&gt;Solutions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fetch Join&lt;/li&gt;
&lt;li&gt;EntityGraph&lt;/li&gt;
&lt;li&gt;Batch Fetching&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  22. SQL vs NoSQL
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;SQL&lt;/th&gt;
&lt;th&gt;NoSQL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Structured&lt;/td&gt;
&lt;td&gt;Flexible&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fixed Schema&lt;/td&gt;
&lt;td&gt;Dynamic Schema&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ACID&lt;/td&gt;
&lt;td&gt;BASE (often)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MySQL/PostgreSQL&lt;/td&gt;
&lt;td&gt;MongoDB/Cassandra&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  23. Kafka
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Partition
&lt;/h2&gt;

&lt;p&gt;Allows parallel processing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Offset
&lt;/h2&gt;

&lt;p&gt;Unique position of a message inside a partition.&lt;/p&gt;

&lt;p&gt;Consumer stores offsets to resume processing.&lt;/p&gt;




&lt;h1&gt;
  
  
  ROUND 3
&lt;/h1&gt;

&lt;h1&gt;
  
  
  24. SOLID Principles
&lt;/h1&gt;

&lt;h3&gt;
  
  
  S — Single Responsibility Principle
&lt;/h3&gt;

&lt;p&gt;One class should have only one reason to change.&lt;/p&gt;




&lt;h3&gt;
  
  
  O — Open/Closed Principle
&lt;/h3&gt;

&lt;p&gt;Open for extension, closed for modification.&lt;/p&gt;




&lt;h3&gt;
  
  
  L — Liskov Substitution Principle
&lt;/h3&gt;

&lt;p&gt;Child class should be replaceable for parent class without breaking behavior.&lt;/p&gt;




&lt;h3&gt;
  
  
  I — Interface Segregation Principle
&lt;/h3&gt;

&lt;p&gt;Clients should not depend on methods they don't use.&lt;/p&gt;




&lt;h3&gt;
  
  
  D — Dependency Inversion Principle
&lt;/h3&gt;

&lt;p&gt;Depend on abstractions (interfaces), not concrete implementations.&lt;/p&gt;




&lt;h1&gt;
  
  
  25. DRY Principle
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Don't Repeat Yourself.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Avoid duplicate code by extracting common logic into reusable methods, classes, or utilities.&lt;/p&gt;




&lt;h1&gt;
  
  
  26. Circuit Breaker, Retry &amp;amp; Fallback
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Circuit Breaker
&lt;/h3&gt;

&lt;p&gt;Stops repeated calls to a failing service after a threshold, preventing cascading failures.&lt;/p&gt;

&lt;h3&gt;
  
  
  Retry
&lt;/h3&gt;

&lt;p&gt;Automatically retries transient failures (e.g., temporary network issues) a limited number of times.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fallback
&lt;/h3&gt;

&lt;p&gt;Provides an alternate response when the primary service is unavailable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-world example:&lt;/strong&gt;&lt;br&gt;
If the Payment Service is temporarily down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Retry 3 times.&lt;/li&gt;
&lt;li&gt;If it still fails, the Circuit Breaker opens and stops further calls.&lt;/li&gt;
&lt;li&gt;Return a fallback response such as: &lt;em&gt;"Payment service is currently unavailable. Please try again later."&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In Spring Boot, these patterns are commonly implemented using &lt;strong&gt;Resilience4j&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  27. AWS EC2, SNS &amp;amp; SQS
&lt;/h1&gt;

&lt;h3&gt;
  
  
  EC2 (Elastic Compute Cloud)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Virtual machine in AWS.&lt;/li&gt;
&lt;li&gt;Used to host Spring Boot applications.&lt;/li&gt;
&lt;li&gt;Supports Auto Scaling and Load Balancers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  SNS (Simple Notification Service)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Pub/Sub messaging service.&lt;/li&gt;
&lt;li&gt;One message can be delivered to multiple subscribers (email, SMS, SQS, Lambda, HTTP).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  SQS (Simple Queue Service)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Message queue for asynchronous communication.&lt;/li&gt;
&lt;li&gt;Producers send messages; consumers process them independently.&lt;/li&gt;
&lt;li&gt;Helps decouple microservices and improves reliability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Common interview follow-up:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;When to use SNS vs SQS?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SNS:&lt;/strong&gt; One-to-many message distribution (fan-out).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQS:&lt;/strong&gt; Reliable one-to-one message queuing with durable processing.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Deloitte Interview Tips
&lt;/h2&gt;

&lt;p&gt;When answering technical questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start with a &lt;strong&gt;clear definition&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Explain &lt;strong&gt;why it is used&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Give a &lt;strong&gt;real-world project example&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Mention &lt;strong&gt;advantages and limitations&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Be ready for follow-up questions.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  This answer format matches what Deloitte interviewers typically expect from candidates with around &lt;strong&gt;3 years of Java Full Stack experience&lt;/strong&gt;.
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Oxidation - reducation</title>
      <dc:creator>Er. Bhupendra</dc:creator>
      <pubDate>Sun, 12 Jul 2026 19:09:27 +0000</pubDate>
      <link>https://dev.to/bhu_kalki/oxidation-reducation-4i4b</link>
      <guid>https://dev.to/bhu_kalki/oxidation-reducation-4i4b</guid>
      <description>&lt;p&gt;जब भी किसी पदार्थ (substance) के अंदर Oxygen जुड़ती है, तो वह उसके साथ रासायनिक क्रिया (chemical reaction) करके उस पदार्थ का रूप, रंग या स्वाद बदल देती है। इसी बदलाव को हम Oxidation कहते हैं।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;think like :
koi A substance hai iss me oxygen chala gya + ab reaction kar ki substances me changes la dega ==&amp;gt; oxidation hai 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;==================================&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;जब किसी पदार्थ के अंदर Hydrogen ($H_2$) जुड़ जाती है, तो उसे Reduction कहते हैं। आपकी यह बात 100% सच है।
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Federalism</title>
      <dc:creator>Er. Bhupendra</dc:creator>
      <pubDate>Sun, 12 Jul 2026 18:43:20 +0000</pubDate>
      <link>https://dev.to/bhu_kalki/federalism-1h30</link>
      <guid>https://dev.to/bhu_kalki/federalism-1h30</guid>
      <description>&lt;p&gt;State PCS (jaise UPPCS) ke GS Paper 2 ke liye &lt;strong&gt;Federalism&lt;/strong&gt; ki topper-style, high-yield &lt;strong&gt;Short Summary/Revision Notes&lt;/strong&gt; (without losing quality):&lt;/p&gt;




&lt;h2&gt;
  
  
  🏛️ 1. Core Concept &amp;amp; Article 1
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Definition:&lt;/strong&gt; Central &amp;amp; State governments ke beech &lt;strong&gt;Division of Power&lt;/strong&gt;, dono apne daayre me independent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Article 1:&lt;/strong&gt; India is a &lt;strong&gt;"Union of States"&lt;/strong&gt; (Not 'Federal').&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ambedkar's View:&lt;/strong&gt; Indian federation koi 'Agreement' nahi hai; States ko alag (secede) hone ka right nahi hai.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚖️ 2. Federal vs Unitary Matrix (Quick Revision Table)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Federal Features (संघीय)&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Unitary Features (एकात्मक - Strong Center)&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Dual Polity:&lt;/strong&gt; 2-level governance (Center + States)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Strong Center:&lt;/strong&gt; 7th Schedule tilts towards Center&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Written &amp;amp; Rigid Const.:&lt;/strong&gt; States' ratification needed for amendments&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Residuary Powers (Art 248):&lt;/strong&gt; Exclusively with Center&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;7th Schedule:&lt;/strong&gt; 3 Lists (Union, State, Concurrent)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Emergency (Art 352/356):&lt;/strong&gt; Converts structure into Unitary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Independent Judiciary:&lt;/strong&gt; SC acts as an Umpire (Art 131)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Art 3:&lt;/strong&gt; Destructible States (&lt;em&gt;Indestructible Union&lt;/em&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Other:&lt;/strong&gt; Governor, AIS (IAS/IPS), Single Citizenship&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Topper Note:&lt;/strong&gt; K.C. Wheare called it &lt;strong&gt;"Quasi-Federal"&lt;/strong&gt;. &lt;em&gt;S.R. Bommai Case (1994)&lt;/em&gt; declared Federalism as part of the &lt;strong&gt;Basic Structure&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  ⚠️ 3. Friction Points (Mains Challenges)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Political:&lt;/strong&gt; Governor's role (bill delays, acting as Center's agent) &amp;amp; Misuse of central agencies (CBI/ED).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Financial:&lt;/strong&gt; Center's reliance on &lt;em&gt;Cess &amp;amp; Surcharges&lt;/em&gt; (not shared with states) &amp;amp; GST Compensation disputes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Legislative:&lt;/strong&gt; Center encroaching on State List subjects (e.g., Farm Laws issue).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 4. Way Forward (Topper's Conclusion Keywords)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Commissions:&lt;/strong&gt; Implement &lt;strong&gt;Sarkaria &amp;amp; Punchhi Commission&lt;/strong&gt; reports (e.g., Non-partisan Governor appointment).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Institutionalism:&lt;/strong&gt; Activate &lt;strong&gt;Inter-State Council (Art 263)&lt;/strong&gt; &amp;amp; Zonal Councils for dispute resolution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Philosophy:&lt;/strong&gt; Move from confrontation to &lt;strong&gt;Cooperative &amp;amp; Competitive Federalism&lt;/strong&gt; via NITI Aayog.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
  </channel>
</rss>
