diff --git a/coding-exercise/src/exercises/exercise-03-useCallback-memoization/Problem.js b/coding-exercise/src/exercises/exercise-03-useCallback-memoization/Problem.js
new file mode 100644
index 00000000..b083939b
--- /dev/null
+++ b/coding-exercise/src/exercises/exercise-03-useCallback-memoization/Problem.js
@@ -0,0 +1,77 @@
+import React, { useState, useCallback } from 'react';
+
+/**
+ * CODING EXERCISE 3: useCallback and Unnecessary Re-renders
+ *
+ * PROBLEM:
+ * In the code below, the ChildComponent re-renders every time the parent's count changes,
+ * even though the child only depends on the handleClick function.
+ *
+ * Options:
+ * A) ChildComponent re-renders only when button is clicked
+ * B) ChildComponent re-renders every time count changes
+ * C) ChildComponent never re-renders
+ * D) React throws an error about missing dependencies
+ *
+ * BONUS: How would you prevent unnecessary re-renders of ChildComponent?
+ */
+
+// Child component that should only re-render when its props change
+const ChildComponent = ({ onClick }) => {
+ console.log('ChildComponent rendered');
+ return (
+
+
I'm a child component
+
+
+ );
+};
+
+function Problem() {
+ const [count, setCount] = useState(0);
+ const [childClicks, setChildClicks] = useState(0);
+
+ // This function is recreated on every render
+ const handleClick = () => {
+ setChildClicks(prev => prev + 1);
+ };
+
+ return (
+
+
Exercise 3: useCallback & Memoization Problem
+
+
+
Parent Count: {count}
+
+
+
+
+
Child Clicks: {childClicks}
+
+
+
+
+
+
⚠️ Question: What happens when you click "Increment Parent Count"?
+
Think about:
+
+
Does the ChildComponent re-render?
+
Why does it re-render (or not)?
+
How can you prevent unnecessary re-renders?
+
Check the console to see render logs
+
+
+ Tip: Open the browser console and click the parent button multiple times
+
+
+
+ );
+}
+
+export default Problem;
diff --git a/coding-exercise/src/exercises/exercise-03-useCallback-memoization/Solution.js b/coding-exercise/src/exercises/exercise-03-useCallback-memoization/Solution.js
new file mode 100644
index 00000000..ef2ff777
--- /dev/null
+++ b/coding-exercise/src/exercises/exercise-03-useCallback-memoization/Solution.js
@@ -0,0 +1,274 @@
+import React, { useState, useCallback, memo } from 'react';
+
+/**
+ * CODING EXERCISE 3: useCallback and Unnecessary Re-renders - SOLUTION
+ *
+ * ANSWER: B) ChildComponent re-renders every time count changes
+ *
+ * EXPLANATION:
+ *
+ * 1. FUNCTION REFERENCE PROBLEM:
+ * - Every time the parent re-renders, handleClick is recreated
+ * - Even though the function does the same thing, it's a NEW reference
+ * - React compares props by reference: oldFunction !== newFunction
+ *
+ * 2. WHY IT RE-RENDERS:
+ * - Parent count changes → Parent re-renders
+ * - Parent re-render → handleClick recreated with new reference
+ * - New reference → Child sees "different" prop → Child re-renders
+ *
+ * 3. THE SOLUTION:
+ * - Use useCallback to memoize the function
+ * - Use React.memo to prevent re-renders when props haven't changed
+ * - Combine both for optimal performance
+ */
+
+// Problem: Regular child component (re-renders on every parent render)
+const RegularChild = ({ onClick, label }) => {
+ console.log(`${label} rendered`);
+ return (
+