Skip to main content

Software Engineer Coding Interview Questions

Review this list of 236 Coding Software Engineer interview questions and answers verified by hiring managers and candidates.
  • Adobe logoAsked at Adobe 
    Video answer for 'Product of Array Except Self'
    +58

    "If 0's aren't a concern, couldn't we just multiply all numbers. and then divide product by each number in the list ? if there's more than one zero, then we just return an array of 0s if there's one zero, then we just replace 0 with product and rest 0s. what am i missing?"

    Sachin R. - "If 0's aren't a concern, couldn't we just multiply all numbers. and then divide product by each number in the list ? if there's more than one zero, then we just return an array of 0s if there's one zero, then we just replace 0 with product and rest 0s. what am i missing?"See full answer

    Software Engineer
    Coding
    +3 more
  • Software Engineer
    Coding
    +1 more
  • Amazon logoAsked at Amazon 

    "It was like say we have a library A which has a library B as a dependency and so on, how would we determine in the dependency chain that whether there is a circular depedency?"

    Chris R. - "It was like say we have a library A which has a library B as a dependency and so on, how would we determine in the dependency chain that whether there is a circular depedency?"See full answer

    Software Engineer
    Coding
    +1 more
  • Microsoft logoAsked at Microsoft 

    "Let me try to explain it with simple life analogy You're cooking dinner in the kitchen. Multithreading is when you've got a bunch of friends helping out. Each friend does a different job—like one chops veggies while another stirs a sauce. Everyone focuses on their task, and together, you all make the meal faster. In a computer, it's like different jobs happening all at once, making stuff happen quicker, just like having lots of friends helping makes dinner ready faster."

    Praveen D. - "Let me try to explain it with simple life analogy You're cooking dinner in the kitchen. Multithreading is when you've got a bunch of friends helping out. Each friend does a different job—like one chops veggies while another stirs a sauce. Everyone focuses on their task, and together, you all make the meal faster. In a computer, it's like different jobs happening all at once, making stuff happen quicker, just like having lots of friends helping makes dinner ready faster."See full answer

    Software Engineer
    Coding
    +1 more
  • Amazon logoAsked at Amazon 
    Video answer for 'Implement k-means clustering.'

    "at first I want to know number of cluster I will put random number if I don't know and I will use method called Elbow method or Silhouette Score ,Gap Statistic and Davies–Bouldin Index to know the best number of cluster and I will use scikit-learn library to import kmeans from sklearn.cluster import KMeans kmeans = KMeans(nclusters=2, randomstate=0) kmeans.fit(X) and X this my data "

    Taheia S. - "at first I want to know number of cluster I will put random number if I don't know and I will use method called Elbow method or Silhouette Score ,Gap Statistic and Davies–Bouldin Index to know the best number of cluster and I will use scikit-learn library to import kmeans from sklearn.cluster import KMeans kmeans = KMeans(nclusters=2, randomstate=0) kmeans.fit(X) and X this my data "See full answer

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

  • "Use Dutch National Flag Algorithm to solve the problem"

    Sireesha R. - "Use Dutch National Flag Algorithm to solve the problem"See full answer

    Software Engineer
    Coding
    +1 more
  • Google logoAsked at Google 
    Video answer for 'Write functions to serialize and deserialize a list of strings.'
    +4

    "Maybe we can use this solution: 1, connect all the strings together, and add an integer value ahead each string. 2, use Huffmans algorithm to encode the step 1 result, to make the result size smaller. 3, return the root of Huffmans tree. This solution man be slower than the common serialize method, but it can save a lot of memory, I think, at lease doing serialize is mainly for tranfering data or storing data."

    Jordan Z. - "Maybe we can use this solution: 1, connect all the strings together, and add an integer value ahead each string. 2, use Huffmans algorithm to encode the step 1 result, to make the result size smaller. 3, return the root of Huffmans tree. This solution man be slower than the common serialize method, but it can save a lot of memory, I think, at lease doing serialize is mainly for tranfering data or storing data."See full answer

    Software Engineer
    Coding
    +1 more
  • +10

    " class Node { constructor(data) { this.data = data; this.left = null; this.right = null; } } function diameterOfTree(root) { if (root === null || root.left === null & root.right === null) { return 0; } function countBranch(node, count) { if (node.left === null && node.right === null) { return count; } let left = node.left === null ? 0 : countBranch(node.left, count+1); let right = no"

    Jeff S. - " class Node { constructor(data) { this.data = data; this.left = null; this.right = null; } } function diameterOfTree(root) { if (root === null || root.left === null & root.right === null) { return 0; } function countBranch(node, count) { if (node.left === null && node.right === null) { return count; } let left = node.left === null ? 0 : countBranch(node.left, count+1); let right = no"See full answer

    Software Engineer
    Coding
    +1 more
  • Google logoAsked at Google 
    +23

    "def friend_distance(friends, userA, userB): step = 0 total_neighs = set() llen = len(total_neighs) total_neighs.add(userB) while len(total_neighs)!=llen: s = set() step += 1 llen = len(total_neighs) for el in total_neighs: nes = neighbours(friends, userA, el) if userA in nes: return step for p in nes: s.add(p) for el in s: total_neighs.add(el) return -1 def neighbours(A,n1, n2): out = set() for i in range(len(A[n2])): if An2: out.add(i) return out"

    Batman X. - "def friend_distance(friends, userA, userB): step = 0 total_neighs = set() llen = len(total_neighs) total_neighs.add(userB) while len(total_neighs)!=llen: s = set() step += 1 llen = len(total_neighs) for el in total_neighs: nes = neighbours(friends, userA, el) if userA in nes: return step for p in nes: s.add(p) for el in s: total_neighs.add(el) return -1 def neighbours(A,n1, n2): out = set() for i in range(len(A[n2])): if An2: out.add(i) return out"See full answer

    Software Engineer
    Coding
    +1 more
  • "int reverse(int x) { int rev = 0; bool isNegative = false; if(x 0){ int r = x % 10; rev = rev * 10 + r; x = x / 10; } if(isNegative){ return -rev; } return rev; } `"

    Nilay B. - "int reverse(int x) { int rev = 0; bool isNegative = false; if(x 0){ int r = x % 10; rev = rev * 10 + r; x = x / 10; } if(isNegative){ return -rev; } return rev; } `"See full answer

    Software Engineer
    Coding
    +1 more
  • "Abstract class A class that can have Abstract methods - without implementations and Concerete Methods i.e with implementation. Can have private, protected and public access modifiers. Supports Single inheritance i.e a class can extend only 1 abstract class Can have constructors Mainly used when sharing common behaviors Interface Class A collection of abstract methods ( can have static and default methods also - onwards of java 8) Public, static, final are the access"

    Sue G. - "Abstract class A class that can have Abstract methods - without implementations and Concerete Methods i.e with implementation. Can have private, protected and public access modifiers. Supports Single inheritance i.e a class can extend only 1 abstract class Can have constructors Mainly used when sharing common behaviors Interface Class A collection of abstract methods ( can have static and default methods also - onwards of java 8) Public, static, final are the access"See full answer

    Software Engineer
    Coding
    +2 more
  • Adobe logoAsked at Adobe 
    +9

    " function climbStairs(n) { // 4 iterations of Dynamic Programming solutions: // Step 1: Recursive: // if (n <= 2) return n // return climbStairs(n-1) + climbStairs(n-2) // Step 2: Top-down Memoization // const memo = {0:0, 1:1, 2:2} // function f(x) { // if (x in memo) return memo[x] // memo[x] = f(x-1) + f(x-2) // return memo[x] // } // return f(n) // Step 3: Bottom-up Tabulation // const tab = [0,1,2] // f"

    Matthew K. - " function climbStairs(n) { // 4 iterations of Dynamic Programming solutions: // Step 1: Recursive: // if (n <= 2) return n // return climbStairs(n-1) + climbStairs(n-2) // Step 2: Top-down Memoization // const memo = {0:0, 1:1, 2:2} // function f(x) { // if (x in memo) return memo[x] // memo[x] = f(x-1) + f(x-2) // return memo[x] // } // return f(n) // Step 3: Bottom-up Tabulation // const tab = [0,1,2] // f"See full answer

    Software Engineer
    Coding
    +3 more
  • "python: def justifywords(wordslist, width): result = [] currlinechar_count = 0 curr_words = [] for word in words_list: if curr_words: space_needed = len(word) + 1 # Space needed for the word and a preceding space else: space_needed = len(word) if currlinecharcount + spaceneeded > width: result.append(' '.join(curr_words)) curr_words = [word] currlinechar_count = len("

    Anonymous Unicorn - "python: def justifywords(wordslist, width): result = [] currlinechar_count = 0 curr_words = [] for word in words_list: if curr_words: space_needed = len(word) + 1 # Space needed for the word and a preceding space else: space_needed = len(word) if currlinecharcount + spaceneeded > width: result.append(' '.join(curr_words)) curr_words = [word] currlinechar_count = len("See full answer

    Software Engineer
    Coding
  • Amazon logoAsked at Amazon 

    "class Node: def init(self, value): self.value = value self.children = [] def inorder_traversal(root): if not root: return [] result = [] n = len(root.children) for i in range(n): result.extend(inorder_traversal(root.children[i])) if i == n // 2: result.append(root.value) if n == 0: result.append(root.value) return result Example usage: root = Node(1) child1 = Node(2) chil"

    Teddy Y. - "class Node: def init(self, value): self.value = value self.children = [] def inorder_traversal(root): if not root: return [] result = [] n = len(root.children) for i in range(n): result.extend(inorder_traversal(root.children[i])) if i == n // 2: result.append(root.value) if n == 0: result.append(root.value) return result Example usage: root = Node(1) child1 = Node(2) chil"See full answer

    Software Engineer
    Coding
    +1 more
  • Amazon logoAsked at Amazon 
    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
  • Software Engineer
    Coding
    +1 more
  • Microsoft logoAsked at Microsoft 
    +1

    "#simple solution 1.firstly find the node in the bst (O(logn) time complexity it take) 2.now removing the node consists of 3 cases: 1.if the node is leaf (no children): (keep track of parent and do) parent.left or parent.right=NULL simply remove the node () 2.if(has one child) replace the node with its child 3.if has both childs we replace the node with either inorder predesor(max of left tree)or inorder succesor and remove the node wh"

    Sambangi C. - "#simple solution 1.firstly find the node in the bst (O(logn) time complexity it take) 2.now removing the node consists of 3 cases: 1.if the node is leaf (no children): (keep track of parent and do) parent.left or parent.right=NULL simply remove the node () 2.if(has one child) replace the node with its child 3.if has both childs we replace the node with either inorder predesor(max of left tree)or inorder succesor and remove the node wh"See full answer

    Software Engineer
    Coding
  • Adobe logoAsked at Adobe 
    +47

    "from typing import List def two_sum(nums: List[int], target: int) -> List[int]: prevMap = {} for i, n in enumerate(nums): diff = target - n if diff in prevMap: return [prevMap[diff], i] else: prevMap[n] = i return [] debug your code below print(two_sum([2, 7, 11, 15], 9)) `"

    Anonymous Roadrunner - "from typing import List def two_sum(nums: List[int], target: int) -> List[int]: prevMap = {} for i, n in enumerate(nums): diff = target - n if diff in prevMap: return [prevMap[diff], i] else: prevMap[n] = i return [] debug your code below print(two_sum([2, 7, 11, 15], 9)) `"See full answer

    Software Engineer
    Coding
    +5 more
Showing 61-80 of 236