Hiring volume
- Total Hires: 100+ freshers (highly selective)
- Software Engineer I: 90+ selections
- Growth: 10% from 2023
This page collects Apple placement papers from 2024 with previous-year questions, solutions, and the 2024 exam pattern. It is useful when you want real drive history: what the OA looked like, which question types repeated, and how solutions were approached. Work through the papers below to build speed and accuracy, then compare against newer 2025 material so your prep matches both established Apple patterns and the latest shifts.
| Section | Questions | Time | Difficulty | Focus Areas |
|---|---|---|---|---|
| Coding Problem 1 | 1 | 30 min | Medium | Arrays, strings, two pointers |
| Coding Problem 2 | 1 | 30 min | Hard | Trees, graphs, dynamic programming |
| CS Fundamentals MCQs | 18 | 30 min | Medium | DSA, time complexity, iOS/macOS basics |
Total: 20 questions, 90 minutes
This section contains practice questions styled on Apple placement papers 2024 (previous-year pattern), with worked solutions. Use them as timed sectional drills - from student reports drives vary by college and role, so treat this as a high-signal practice bank, not an official paper dump.
Problem Statement: Return the first non-repeating character in a string, or ‘_’ if none.
Example:
Input: "swiss"Output: 'w'Solution (Java):
public char firstUnique(String s) { int[] freq = new int[256]; for (char c : s.toCharArray()) freq[c]++; for (char c : s.toCharArray()) if (freq[c] == 1) return c; return '_';}Time Complexity: O(n)
Space Complexity: O(1)
Problem Statement: Rotate the array to the right by k steps.
Example:
Input: [1,2,3,4,5,6,7], k = 3Output: [5,6,7,1,2,3,4]Solution (Java):
public void rotate(int[] nums, int k) { k %= nums.length; reverse(nums, 0, nums.length - 1); reverse(nums, 0, k - 1); reverse(nums, k, nums.length - 1);}void reverse(int[] a, int l, int r) { while (l < r) { int t = a[l]; a[l++] = a[r]; a[r--] = t; }}Time Complexity: O(n)
Space Complexity: O(1)
Problem Statement: You can climb 1 or 2 steps. How many distinct ways to climb n stairs?
Example:
Input: n = 4Output: 5Solution (Java):
public int climbStairs(int n) { if (n <= 2) return n; int a = 1, b = 2; for (int i = 3; i <= n; i++) { int c = a + b; a = b; b = c; } return b;}Time Complexity: O(n)
Space Complexity: O(1)
Problem Statement: Find the contiguous subarray with the largest sum.
Example:
Input: [-2, 1, -3, 4, -1, 2, 1, -5, 4]Output: 6 // [4, -1, 2, 1]Solution (Java):
public int maxSubArray(int[] nums) { int best = nums[0], cur = nums[0]; for (int i = 1; i < nums.length; i++) { cur = Math.max(nums[i], cur + nums[i]); best = Math.max(best, cur); } return best;}Time Complexity: O(n)
Space Complexity: O(1)
Problem Statement: Given an array of integers and a target, return indices of two numbers that add up to target.
Example:
Input: nums = [2, 7, 11, 15], target = 9Output: [0, 1]Solution (Java):
public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { int need = target - nums[i]; if (map.containsKey(need)) return new int[]{map.get(need), i}; map.put(nums[i], i); } return new int[]{};}Time Complexity: O(n)
Space Complexity: O(n)
Problem Statement: Return the level-order traversal of a binary tree.
Example:
Input: [3,9,20,null,null,15,7]Output: [[3],[9,20],[15,7]]Solution (Java):
public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<>(); if (root == null) return res; Queue<TreeNode> q = new ArrayDeque<>(); q.add(root); while (!q.isEmpty()) { int sz = q.size(); List<Integer> level = new ArrayList<>(); for (int i = 0; i < sz; i++) { TreeNode n = q.poll(); level.add(n.val); if (n.left != null) q.add(n.left); if (n.right != null) q.add(n.right); } res.add(level); } return res;}Time Complexity: O(n)
Space Complexity: O(n)
Problem Statement: Return true if the linked list has a cycle.
Example:
Input: 3→2→0→-4→(back to 2)Output: trueSolution (Java):
public boolean hasCycle(ListNode head) { ListNode slow = head, fast = head; while (fast != null && fast.next != null) { slow = slow.next; fast = fast.next.next; if (slow == fast) return true; } return false;}Time Complexity: O(n)
Space Complexity: O(1)
Solution:
OS uses demand paging (and sometimes segmentation) to implement virtual memory.
Answer: Demand paging
Solution:
HAVING filters aggregates; WHERE filters rows before grouping.
Answer: HAVING
Solution:
1NF: atomic values. 2NF: no partial dependency. 3NF: no transitive dependency.
Answer: 3NF
Solution:
TCP is connection-oriented; UDP is connectionless.
Answer: TCP
Hiring volume
Salary packages
Based on candidate experiences from 2024 Apple interviews:
2024 Interview Process:
Common 2024 Interview Topics:
2024 Interview Questions Examples:
Success Tips:
Difficulty Rating: 3.0/5
For detailed interview experiences, visit Apple Interview Experience page.