Skip to main content

Apple Software Engineer Interview Questions

Review this list of 90 Apple Software Engineer interview questions and answers verified by hiring managers and candidates.
  • Apple logoAsked at Apple 

    "class TrieNode { constructor() { this.children = {}; this.isEndOfWord = false; } } class Trie { constructor() { this.root = new TrieNode(); } insert(word) { let node = this.root; for (const char of word) { if (!node.children[char]) { node.children[char] = new TrieNode(); } node = node.children[char]; } node.isEndOfWord = true; } search(word) { l"

    Tiago R. - "class TrieNode { constructor() { this.children = {}; this.isEndOfWord = false; } } class Trie { constructor() { this.root = new TrieNode(); } insert(word) { let node = this.root; for (const char of word) { if (!node.children[char]) { node.children[char] = new TrieNode(); } node = node.children[char]; } node.isEndOfWord = true; } search(word) { l"See full answer

    Software Engineer
    Data Structures & Algorithms
    +3 more
  • Apple logoAsked at Apple 

    "Message queue is like a buffer. Its has 3 parts: Producer -> which creates a message and sends it to the queue. Queue -> which acta like a buffer pipe and stores the message. Subscriber -> which processes and releases messages one by one in FIFO manner."

    Rasika D. - "Message queue is like a buffer. Its has 3 parts: Producer -> which creates a message and sends it to the queue. Queue -> which acta like a buffer pipe and stores the message. Subscriber -> which processes and releases messages one by one in FIFO manner."See full answer

    Software Engineer
    System Design
  • Apple logoAsked at Apple 
    Video answer for 'Solve John Conway's "Game of Life".'
    Software Engineer
    Data Structures & Algorithms
    +2 more
  • Apple logoAsked at Apple 

    Permutations

    IDE
    Medium

    "function permute(nums) { if (nums.length <= 1) { return [nums]; } const prevPermutations = permute(nums.slice(0, nums.length-1)); const currentNum = nums[nums.length-1]; const permutations = new Set(); for (let prev of prevPermutations) { for (let i=0; i < prev.length; i++) { permutations.add([...prev.slice(0, i), currentNum, ...prev.slice(i)]); } permutations.add([...prev, currentNum]); } return [...permutations]"

    Tiago R. - "function permute(nums) { if (nums.length <= 1) { return [nums]; } const prevPermutations = permute(nums.slice(0, nums.length-1)); const currentNum = nums[nums.length-1]; const permutations = new Set(); for (let prev of prevPermutations) { for (let i=0; i < prev.length; i++) { permutations.add([...prev.slice(0, i), currentNum, ...prev.slice(i)]); } permutations.add([...prev, currentNum]); } return [...permutations]"See full answer

    Software Engineer
    Data Structures & Algorithms
    +3 more
  • Apple logoAsked at Apple 
    Software Engineer
    System Design
  • 🧠 Want an expert answer to a question? Saving questions lets us know what content to make next.

  • Software Engineer
    Behavioral
    +1 more
  • Apple logoAsked at Apple 

    "func isMatch(text: String, pattern: String) -> Bool { // Convert strings to arrays for easier indexing let s = Array(text.characters) let p = Array(pattern.characters) guard !s.isEmpty && !p.isEmpty else { return true } // Create DP table: dpi represents if s[0...i-1] matches p[0...j-1] var dp = Array(repeating: Array(repeating: false, count: p.count + 1), count: s.count + 1) // Empty pattern matches empty string dp[0]["

    Reno S. - "func isMatch(text: String, pattern: String) -> Bool { // Convert strings to arrays for easier indexing let s = Array(text.characters) let p = Array(pattern.characters) guard !s.isEmpty && !p.isEmpty else { return true } // Create DP table: dpi represents if s[0...i-1] matches p[0...j-1] var dp = Array(repeating: Array(repeating: false, count: p.count + 1), count: s.count + 1) // Empty pattern matches empty string dp[0]["See full answer

    Software Engineer
    Data Structures & Algorithms
    +3 more
  • Apple logoAsked at Apple 

    "Sorting is a technique to arrange data in either increasing order or decreasing order, and, the function that implements this functionality is called sort function"

    Farhan -. - "Sorting is a technique to arrange data in either increasing order or decreasing order, and, the function that implements this functionality is called sort function"See full answer

    Software Engineer
    Data Structures & Algorithms
    +1 more
  • Apple logoAsked at Apple 

    "Reproduce the bug, read error messages, isolate the problem, use a debugger, check assumptions, review recent changes, consult documentation, Text Edge Cases, take break"

    Jennifer C. - "Reproduce the bug, read error messages, isolate the problem, use a debugger, check assumptions, review recent changes, consult documentation, Text Edge Cases, take break"See full answer

    Software Engineer
    Behavioral
  • Apple logoAsked at Apple 

    "A full stack developer could be summarized as the person who both writes the APIs and consumes the APIs. They are familiar with Databases/Data-layer services, middle-layer/application services and business logic, and finally familiar with the consumers whether front-end applications/UIs or other systems. They can understand the trade-offs up and down the stack, where to adjust along the service-call-path. Ideally they are comfortable programming both async calls (front end javascript promises, e"

    Luke P. - "A full stack developer could be summarized as the person who both writes the APIs and consumes the APIs. They are familiar with Databases/Data-layer services, middle-layer/application services and business logic, and finally familiar with the consumers whether front-end applications/UIs or other systems. They can understand the trade-offs up and down the stack, where to adjust along the service-call-path. Ideally they are comfortable programming both async calls (front end javascript promises, e"See full answer

    Software Engineer
    Technical
  • Apple logoAsked at Apple 
    +5

    "Make current as root. 2 while current is not null, if p and q are less than current, go left. If p and q are greater than current, go right. else return current. return null"

    Vaibhav D. - "Make current as root. 2 while current is not null, if p and q are less than current, go left. If p and q are greater than current, go right. else return current. return null"See full answer

    Software Engineer
    Data Structures & Algorithms
    +4 more
  • Apple logoAsked at Apple 

    Coin Change

    IDE
    Medium
    +9

    "The example given is wrong. The 2nd test case should have answer 3, as we can get to 6 by using 3 coins of denomination 2."

    Anmol R. - "The example given is wrong. The 2nd test case should have answer 3, as we can get to 6 by using 3 coins of denomination 2."See full answer

    Software Engineer
    Coding
    +4 more
  • Apple logoAsked at Apple 

    "na"

    Nishigandha B. - "na"See full answer

    Software Engineer
    Data Structures & Algorithms
    +1 more
  • Apple logoAsked at Apple 
    +6

    "function isPalindrome(s, start, end) { while (s[start] === s[end] && end >= start) { start++; end--; } return end <= start; } function longestPalindromicSubstring(s) { let longestPalindrome = ''; for (let i=0; i < s.length; i++) { let j = s.length-1; while (s[i] !== s[j] && i <= j) { j--; } if (s[i] === s[j]) { if (isPalindrome(s, i, j)) { const validPalindrome = s.substring(i, j+1"

    Tiago R. - "function isPalindrome(s, start, end) { while (s[start] === s[end] && end >= start) { start++; end--; } return end <= start; } function longestPalindromicSubstring(s) { let longestPalindrome = ''; for (let i=0; i < s.length; i++) { let j = s.length-1; while (s[i] !== s[j] && i <= j) { j--; } if (s[i] === s[j]) { if (isPalindrome(s, i, j)) { const validPalindrome = s.substring(i, j+1"See full answer

    Software Engineer
    Data Structures & Algorithms
    +3 more
  • Apple logoAsked at Apple 

    "Leetcode 347: Heap + Hashtable Follow up question: create heap with the length of K instead of N (more time complexity but less space )"

    Chen J. - "Leetcode 347: Heap + Hashtable Follow up question: create heap with the length of K instead of N (more time complexity but less space )"See full answer

    Software Engineer
    Data Structures & Algorithms
    +3 more
  • Apple logoAsked at Apple 
    Software Engineer
    Behavioral
  • Apple logoAsked at Apple 
    Software Engineer
    Data Structures & Algorithms
    +1 more
  • Apple logoAsked at Apple 
    Software Engineer
    Data Structures & Algorithms
    +1 more
  • Apple logoAsked at Apple 
    Software Engineer
    Data Structures & Algorithms
    +1 more
  • Apple logoAsked at Apple 

    "A doubly linked list is like a train where the engine is its head, and the compartments doors are interconnected, you can travel though them. The last compartment is the tail and is not connected with anything. Following is a visual: Head C1 C2 C3....Cn Tail Pseudocode: **class Node: Data pointer next pointer prev End class DLL = NULL //pointer to list insertion: if DLL is NULL: head = new Node() DLL = head DLL.prev = NU"

    Rasika D. - "A doubly linked list is like a train where the engine is its head, and the compartments doors are interconnected, you can travel though them. The last compartment is the tail and is not connected with anything. Following is a visual: Head C1 C2 C3....Cn Tail Pseudocode: **class Node: Data pointer next pointer prev End class DLL = NULL //pointer to list insertion: if DLL is NULL: head = new Node() DLL = head DLL.prev = NU"See full answer

    Software Engineer
    Data Structures & Algorithms
    +1 more
Showing 61-80 of 90