Skip to main content

Top Software Engineer Interview Questions

Review this list of 715 Software Engineer interview questions and answers verified by hiring managers and candidates.
  • Amazon logoAsked at Amazon 
    1 answer
    Video answer for 'Design a Distributed Message Queue'

    "Good Discussion on the distributed messaging queues (Complex topic with lot of nuances) Liked the mind-map style drawing of requirements and metrics capture Touched on different types of queue styles (point to point, pub-sub, fan-out/fan-in) Storage and WAL usage was interesting Some distributed queue challenges that could be helpful to highlight / expand are: Message guarantee / semantics - Ordering of messages across different servers Replication Master slave architecture or Pe"

    Karthik R. - "Good Discussion on the distributed messaging queues (Complex topic with lot of nuances) Liked the mind-map style drawing of requirements and metrics capture Touched on different types of queue styles (point to point, pub-sub, fan-out/fan-in) Storage and WAL usage was interesting Some distributed queue challenges that could be helpful to highlight / expand are: Message guarantee / semantics - Ordering of messages across different servers Replication Master slave architecture or Pe"See full answer

    Software Engineer
    System Design
  • Amazon logoAsked at Amazon 
    1 answer
    Video answer for 'Print the left view of a binary tree.'

    "Initially I asked clarifying questions like whether the tree can be empty or not and asked the interviewer to explain what is meant by left view and the explanation for the sample inputs. Then I came up with the level order traversal approach where we visit each level in the binary tree at once using a queue and at each level print the value of the first node. Interviewer seemed satisfied with the approach and asked me to code it up. Finally gave the time and space complexity of the solution."

    Ds S. - "Initially I asked clarifying questions like whether the tree can be empty or not and asked the interviewer to explain what is meant by left view and the explanation for the sample inputs. Then I came up with the level order traversal approach where we visit each level in the binary tree at once using a queue and at each level print the value of the first node. Interviewer seemed satisfied with the approach and asked me to code it up. Finally gave the time and space complexity of the solution."See full answer

    Software Engineer
  • Meta logoAsked at Meta 
    11 answers
    +8

    "Used Recursive approach to traverse the binary search tree and sum the values of the nodes that fall within the specified range [low, high]"

    Srikant V. - "Used Recursive approach to traverse the binary search tree and sum the values of the nodes that fall within the specified range [low, high]"See full answer

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

    "I would first like to clarify the requirements and assumptions for the system. I am assuming that the system should support basic file operations such as uploading, downloading, deleting, renaming files, and viewing directory structures along with file permissions. The file size can range from around 1MB to 1GB, and the system is expected to be read heavy, meaning downloads will be more frequent than uploads. The system should support a large scale, for example around 10 million total users with"

    Yashasvi C. - "I would first like to clarify the requirements and assumptions for the system. I am assuming that the system should support basic file operations such as uploading, downloading, deleting, renaming files, and viewing directory structures along with file permissions. The file size can range from around 1MB to 1GB, and the system is expected to be read heavy, meaning downloads will be more frequent than uploads. The system should support a large scale, for example around 10 million total users with"See full answer

    Software Engineer
    System Design
    +1 more
  • Amazon logoAsked at Amazon 
    14 answers
    Video answer for 'Implement a k-nearest neighbors algorithm.'
    +10

    "Even more faster and vectorized version, using np.linalg.norm - to avoid loop and np.argpartition to select lowest k. We dont need to sort whole array - we need to be sure that first k elements are lower than the rest. import numpy as np def knn(Xtrain, ytrain, X_new, k): distances = np.linalg.norm(Xtrain - Xnew, axis=1) k_indices = np.argpartition(distances, k)[:k] # O(N) selection instead of O(N log N) sort return int(np.sum(ytrain[kindices]) > k / 2.0) `"

    Dinar M. - "Even more faster and vectorized version, using np.linalg.norm - to avoid loop and np.argpartition to select lowest k. We dont need to sort whole array - we need to be sure that first k elements are lower than the rest. import numpy as np def knn(Xtrain, ytrain, X_new, k): distances = np.linalg.norm(Xtrain - Xnew, axis=1) k_indices = np.argpartition(distances, k)[:k] # O(N) selection instead of O(N log N) sort return int(np.sum(ytrain[kindices]) > k / 2.0) `"See full answer

    Software Engineer
    Coding
    +2 more
  • 🧠 Want an expert answer to a question? Saving questions lets us know what content to make next.

  • ElevenLabs logoAsked at ElevenLabs 
    3 answers

    "Getting things done : I am extremely proud of walking the extra mile to get things done which I am extremely proud of in my career Ladder transfer : Being on the tactical front, to dream about creating a product from its inception to the delivery and being able to achieve it Gaining trust : Leading without authority is critical and gaining trust in the process of the peers and stakeholders is one thing I am extremely proud of."

    Googlepm 1. - "Getting things done : I am extremely proud of walking the extra mile to get things done which I am extremely proud of in my career Ladder transfer : Being on the tactical front, to dream about creating a product from its inception to the delivery and being able to achieve it Gaining trust : Leading without authority is critical and gaining trust in the process of the peers and stakeholders is one thing I am extremely proud of."See full answer

    Software Engineer
    Behavioral
    +1 more
  • Amazon logoAsked at Amazon 
    3 answers

    "During my internship at Datavibe Insights, I was initially brought on to assist with routine data cleaning and Excel reporting for the procurement team. My main task was to support weekly report generation, but I noticed inefficiencies in how data from multiple vendors was being manually compiled and formatted each week. Without being asked, I took the initiative to build an automated reporting tool using Excel Power Query and macros. It cleaned, merged, and visualized the data with a few clicks"

    Dhruv M. - "During my internship at Datavibe Insights, I was initially brought on to assist with routine data cleaning and Excel reporting for the procurement team. My main task was to support weekly report generation, but I noticed inefficiencies in how data from multiple vendors was being manually compiled and formatted each week. Without being asked, I took the initiative to build an automated reporting tool using Excel Power Query and macros. It cleaned, merged, and visualized the data with a few clicks"See full answer

    Software Engineer
    Behavioral
    +1 more
  • Amazon logoAsked at Amazon 
    1 answer

    "Follow STAR Example: In my most recent role at x, we've been working every quarter to set our quarterly goals or even decide for the year but given in 2022 we've been through a great resignation phase there was a high attrition because of which we have overloaded engineering teams. During last quarterly planning, I started to question with my manager about giving a focus to our engineering, so we complete one thing absolutely fine which is more impactful for our customers and add immediate val"

    Ash I. - "Follow STAR Example: In my most recent role at x, we've been working every quarter to set our quarterly goals or even decide for the year but given in 2022 we've been through a great resignation phase there was a high attrition because of which we have overloaded engineering teams. During last quarterly planning, I started to question with my manager about giving a focus to our engineering, so we complete one thing absolutely fine which is more impactful for our customers and add immediate val"See full answer

    Software Engineer
    Behavioral
    +3 more
  • Amazon logoAsked at Amazon 
    1 answer

    "Our team were developing a HQ trivia for fitness. So at that moment our focus was developing an eye-catching animation for both iOS and Android. By the way, implementing an animation were hard without the progress of it. So we wanted to see an immediate progress. So I decided to use tools or libraries such as Lottie or Kite. Then it increased the quality and the productivity dramatically. So our designer were happy with it and also our dev team could reuse the code from the designed animation fr"

    Woongshik C. - "Our team were developing a HQ trivia for fitness. So at that moment our focus was developing an eye-catching animation for both iOS and Android. By the way, implementing an animation were hard without the progress of it. So we wanted to see an immediate progress. So I decided to use tools or libraries such as Lottie or Kite. Then it increased the quality and the productivity dramatically. So our designer were happy with it and also our dev team could reuse the code from the designed animation fr"See full answer

    Software Engineer
    Behavioral
    +1 more
  • Airbnb logoAsked at Airbnb 
    8 answers
    +4

    "I always ask to clarify if this is a brand new team. If so, then I focus on bringing in people with strong technical aptitudes(since I'm hiring for software engineering), but also team members that have experience mentoring and good communication is a must. I look for people who have leadership qualities. I emphasize that building a brand new team isn't something I can do on my own, so the initial hires of that team are very important to help me expand it."

    Catherine I. - "I always ask to clarify if this is a brand new team. If so, then I focus on bringing in people with strong technical aptitudes(since I'm hiring for software engineering), but also team members that have experience mentoring and good communication is a must. I look for people who have leadership qualities. I emphasize that building a brand new team isn't something I can do on my own, so the initial hires of that team are very important to help me expand it."See full answer

    Software Engineer
    Behavioral
    +4 more
  • Amazon logoAsked at Amazon 
    3 answers

    "I started asking some questions regarding the constrains of the system: An antena is emitting a signal that says if the tagged device was out of the room where the interview was happening. I was able to decide which would be the schema for the Antena's message. The antena is sending the info of multiple users. The system doesn't need to push notification to the users when the user left the device behind. Upon reflection, this is what I recollected doing. I propuse the json schema a"

    Eduardo C. - "I started asking some questions regarding the constrains of the system: An antena is emitting a signal that says if the tagged device was out of the room where the interview was happening. I was able to decide which would be the schema for the Antena's message. The antena is sending the info of multiple users. The system doesn't need to push notification to the users when the user left the device behind. Upon reflection, this is what I recollected doing. I propuse the json schema a"See full answer

    Software Engineer
    System Design
  • Airbnb logoAsked at Airbnb 
    4 answers
    Video answer for 'Find the minimum window substring.'

    "What about exploiting the hash set and that is it? def smallestSubstring(s: str, t: str) -> str: if len(t) > len(s): return "" r = len(s) - 1 not_found = True while r > 0 and not_found: subs_set = set(s[0:r + 1]) for c in t: if not c in subs_set: not_found = False if not_found: r -= 1 else: r += 1 l = 0 not_found = True while l < r and not_"

    Gabriele G. - "What about exploiting the hash set and that is it? def smallestSubstring(s: str, t: str) -> str: if len(t) > len(s): return "" r = len(s) - 1 not_found = True while r > 0 and not_found: subs_set = set(s[0:r + 1]) for c in t: if not c in subs_set: not_found = False if not_found: r -= 1 else: r += 1 l = 0 not_found = True while l < r and not_"See full answer

    Software Engineer
    Data Structures & Algorithms
    +1 more
  • Meta logoAsked at Meta 
    4 answers
    Video answer for 'Design an API for searching a folder.'
    Software Engineer
    System Design
    +1 more
  • Uber logoAsked at Uber 
    10 answers
    Video answer for 'A knapsack has a maximum capacity C and there are n items each with weight w[i] and value v[i]. Maximize the knapsack value without exceeding capacity.'
    +7

    " DP Solution Time: O(W * C) Space: O(W * C) from typing import List def knapsack(weight: List[int], values: List[int], cap: int) -> int: dp = [[0] * (cap + 1) for _ in range( len(values) + 1 )] for i in range(1, len(weight)+1): for c in range(1, cap + 1): curr_weight = weight[i - 1] curr_value = values[i - 1] include = 0 exclude = dpi-1 if c - curr_weight >= 0: include = curr_valu"

    Rick E. - " DP Solution Time: O(W * C) Space: O(W * C) from typing import List def knapsack(weight: List[int], values: List[int], cap: int) -> int: dp = [[0] * (cap + 1) for _ in range( len(values) + 1 )] for i in range(1, len(weight)+1): for c in range(1, cap + 1): curr_weight = weight[i - 1] curr_value = values[i - 1] include = 0 exclude = dpi-1 if c - curr_weight >= 0: include = curr_valu"See full answer

    Software Engineer
    Data Structures & Algorithms
    +2 more
  • Accenture logoAsked at Accenture 
    7 answers
    +4

    "public static void sortBinaryArray(int[] array) { int len = array.length; int[] res = new int[len]; int r=len-1; for (int value : array) { if(value==1){ res[r]= 1; r--; } } System.out.println(Arrays.toString(res)); } `"

    Nitin P. - "public static void sortBinaryArray(int[] array) { int len = array.length; int[] res = new int[len]; int r=len-1; for (int value : array) { if(value==1){ res[r]= 1; r--; } } System.out.println(Arrays.toString(res)); } `"See full answer

    Software Engineer
    Data Structures & Algorithms
    +1 more
  • Adobe logoAsked at Adobe 
    30 answers
    +22

    " O(n) time, O(1) space from typing import List def maxsubarraysum(nums: List[int]) -> int: if len(nums) == 0: return 0 maxsum = currsum = nums[0] for i in range(1, len(nums)): currsum = max(currsum + nums[i], nums[i]) maxsum = max(currsum, max_sum) return max_sum debug your code below print(maxsubarraysum([-1, 2, -3, 4])) `"

    Rick E. - " O(n) time, O(1) space from typing import List def maxsubarraysum(nums: List[int]) -> int: if len(nums) == 0: return 0 maxsum = currsum = nums[0] for i in range(1, len(nums)): currsum = max(currsum + nums[i], nums[i]) maxsum = max(currsum, max_sum) return max_sum debug your code below print(maxsubarraysum([-1, 2, -3, 4])) `"See full answer

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

    "function isValid(s) { const stack = []; for (let i=0; i < s.length; i++) { const char = s.charAt(i); if (['(', '{', '['].includes(char)) { stack.push(char); } else { const top = stack.pop(); if ((char === ')' && top !== '(') || (char === '}' && top !== '{') || (char === ']' && top !== '[')) { return false; } } } return stack.length === 0"

    Tiago R. - "function isValid(s) { const stack = []; for (let i=0; i < s.length; i++) { const char = s.charAt(i); if (['(', '{', '['].includes(char)) { stack.push(char); } else { const top = stack.pop(); if ((char === ')' && top !== '(') || (char === '}' && top !== '{') || (char === ']' && top !== '[')) { return false; } } } return stack.length === 0"See full answer

    Software Engineer
    Data Structures & Algorithms
    +4 more
  • Amazon logoAsked at Amazon 
    13 answers
    +10

    "Without using a recursive approach, one can perform a post-order traversal by removing the parent nodes from the stack only if children were visited: def diameterOfTree(root): if root is None: return 0 diameter = 0 stack = deque([[root, False]]) # (node, visited) node_heights = {} while stack: curr_node, visited = stack[-1] if visited: heightleft = nodeheights.get(curr_node.left, 0) heightright = nodehe"

    Gabriele G. - "Without using a recursive approach, one can perform a post-order traversal by removing the parent nodes from the stack only if children were visited: def diameterOfTree(root): if root is None: return 0 diameter = 0 stack = deque([[root, False]]) # (node, visited) node_heights = {} while stack: curr_node, visited = stack[-1] if visited: heightleft = nodeheights.get(curr_node.left, 0) heightright = nodehe"See full answer

    Software Engineer
    Data Structures & Algorithms
    +2 more
  • Salesforce logoAsked at Salesforce 
    Add answer
    Video answer for 'Design Ticketmaster'
    Software Engineer
    System Design
  • Amazon logoAsked at Amazon 
    3 answers

    "I faced a problem about components re-rendering's and unnecessary requests API's which was causing performance complications in my applicactions. I had a structure that create, edit and delete task, so GET, POST, PUT and DELETE API's methods request was necessary and bring that to compliance without compromissing the performance is hard. I started involving componentes and async functions into the useMemo's and useEffect's to have more control, another improvement was take be careful with global"

    Rolemberg J. - "I faced a problem about components re-rendering's and unnecessary requests API's which was causing performance complications in my applicactions. I had a structure that create, edit and delete task, so GET, POST, PUT and DELETE API's methods request was necessary and bring that to compliance without compromissing the performance is hard. I started involving componentes and async functions into the useMemo's and useEffect's to have more control, another improvement was take be careful with global"See full answer

    Software Engineer
    Technical
    +2 more
Showing 121-140 of 715
Exponent

Get updates in your inbox with the latest tips, job listings, and more.

Follow Us

Products
Courses
Interview Questions
Interview Experiences
Popular articles
Guides
Coaching
For Partners
Company
Exponent © 2026
Terms of Service | Privacy