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.
  • JP Morgan Chase logoAsked at JP Morgan Chase 
    Add answer
    Software Engineer
    Data Structures & Algorithms
    +1 more
  • Canva logoAsked at Canva 
    3 answers

    "inheritance means its acquire all properties from parent class to child class.composition means its acquire some properties as our request is called composition"

    Niteesh V. - "inheritance means its acquire all properties from parent class to child class.composition means its acquire some properties as our request is called composition"See full answer

    Software Engineer
    Concept
  • Google logoAsked at Google 
    2 answers

    "Here’s a commonly used Git branching and release strategy that we used at my previous role: Branching strategy (Git-based) a. Main Branches main: Production-ready branch. Only tested and stable code is merged here. develop: Feature branches are merged here before being merged into main. b. Supporting Branches Feature Branches (feature/) Release Branches (release/) Hotfix Branches (hotfix/) 2.Release Strategy a. Continuous Deplo"

    Anonymous Dingo - "Here’s a commonly used Git branching and release strategy that we used at my previous role: Branching strategy (Git-based) a. Main Branches main: Production-ready branch. Only tested and stable code is merged here. develop: Feature branches are merged here before being merged into main. b. Supporting Branches Feature Branches (feature/) Release Branches (release/) Hotfix Branches (hotfix/) 2.Release Strategy a. Continuous Deplo"See full answer

    Software Engineer
    Technical
  • Confluent logoAsked at Confluent 
    1 answer

    "We are asked to calculate Sum(over value) for time in (t - window_size, t) where key in (key criteria). To develop a function to set this up. Let w be the window size. I would have an observer of some kind note the key-value, and for the first w windows just add the value to a temporary variable in memory if the key meets the key criteria. Then it would delete the oldest value and add the new value if the new key meets the criteria. At each step after "w", we would take the sum / w and store"

    Prashanth A. - "We are asked to calculate Sum(over value) for time in (t - window_size, t) where key in (key criteria). To develop a function to set this up. Let w be the window size. I would have an observer of some kind note the key-value, and for the first w windows just add the value to a temporary variable in memory if the key meets the key criteria. Then it would delete the oldest value and add the new value if the new key meets the criteria. At each step after "w", we would take the sum / w and store"See full answer

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

  • "I don't get it. could you add a little more detail please."

    Karthik S. - "I don't get it. could you add a little more detail please."See full answer

    Software Engineer
    Technical
  • Nvidia logoAsked at Nvidia 
    1 answer

    "Tell me about a time you were with someone on your team who was struggling to meet objectives. How did you address the situation? What kind of feedback did you give the individual? What was the outcome?"

    Jawahir Y. - "Tell me about a time you were with someone on your team who was struggling to meet objectives. How did you address the situation? What kind of feedback did you give the individual? What was the outcome?"See full answer

    Software Engineer
    Behavioral
    +1 more
  • Nvidia logoAsked at Nvidia 
    2 answers

    "`#include using namespace std; void printNumbersTillN(int n){ if(n_==0){ return; } printNumbersTillN(n-1); // go to the end -> reach 1 cout>_n; printNumbersTillN(n); }`"

    Jet 1. - "`#include using namespace std; void printNumbersTillN(int n){ if(n_==0){ return; } printNumbersTillN(n-1); // go to the end -> reach 1 cout>_n; printNumbersTillN(n); }`"See full answer

    Software Engineer
    Coding
  • "I try to solve this initially using quick select where will take a pivot element and position the remaining elements and check if the current index is answer or not and continue the same but it requires o(n*n), but interviewee is expecting the best from me, so at the end i tried solving using heaps where will check the difference between k and n-k to use min or max heap after that we will heap the array, and will keep popping the element k-1 and return the peek one which leads to answer."

    Mourya C. - "I try to solve this initially using quick select where will take a pivot element and position the remaining elements and check if the current index is answer or not and continue the same but it requires o(n*n), but interviewee is expecting the best from me, so at the end i tried solving using heaps where will check the difference between k and n-k to use min or max heap after that we will heap the array, and will keep popping the element k-1 and return the peek one which leads to answer."See full answer

    Software Engineer
    Data Structures & Algorithms
    +2 more
  • Meta logoAsked at Meta 
    Add answer
    Software Engineer
    Data Structures & Algorithms
    +1 more
  • "While all branches should ideally be tested, some are more critical than others based on the following factors: A. High-Risk or Business-Critical Logic Branches that handle authentication & authorization (e.g., login, role-based access control) Financial transactions or payment processing logic (e.g., tax calculations, refunds, invoice generation) Security-related branches (e.g., encryption/decryption, token verification) B. Error Handling & Exception Paths Branches that deal with error conditi"

    Adesegun K. - "While all branches should ideally be tested, some are more critical than others based on the following factors: A. High-Risk or Business-Critical Logic Branches that handle authentication & authorization (e.g., login, role-based access control) Financial transactions or payment processing logic (e.g., tax calculations, refunds, invoice generation) Security-related branches (e.g., encryption/decryption, token verification) B. Error Handling & Exception Paths Branches that deal with error conditi"See full answer

    Software Engineer
    System Design
  • Palantir logoAsked at Palantir 
    3 answers

    "The reason I choose to go to college is because I want to get a Degree in the hospitality field. Additionally, I want to get a diploma after I finish taking all of my college classes At Harper."

    Amparo L. - "The reason I choose to go to college is because I want to get a Degree in the hospitality field. Additionally, I want to get a diploma after I finish taking all of my college classes At Harper."See full answer

    Software Engineer
    Behavioral
  • Google logoAsked at Google 
    Add answer
    Software Engineer
    System Design
    +1 more
  • Service Now logoAsked at Service Now 
    3 answers

    "boolean isMatch(String s, String p) { int i=0; int j=0; int sID=-1; int prevM=-1; while(i<s.length()){ if(j<p.length() && (s.charAt(i)==p.charAt(j) || p.charAt(j)=='?')){ i++; j++; }else if(j<p.length() && p.charAt(j)=='*'){ sID=j; prevM=i; j++; }else if(sID!=-1){ j=sID+1; prevM++; i=prevM; }else{ return false; } } while(j<p.length() && p.charAt(j)=='*') j++; if(i!=s.length() || j!=p.leng"

    Ravi C. - "boolean isMatch(String s, String p) { int i=0; int j=0; int sID=-1; int prevM=-1; while(i<s.length()){ if(j<p.length() && (s.charAt(i)==p.charAt(j) || p.charAt(j)=='?')){ i++; j++; }else if(j<p.length() && p.charAt(j)=='*'){ sID=j; prevM=i; j++; }else if(sID!=-1){ j=sID+1; prevM++; i=prevM; }else{ return false; } } while(j<p.length() && p.charAt(j)=='*') j++; if(i!=s.length() || j!=p.leng"See full answer

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

    "Let’s say the matrix is m x n (i.e., m rows and n columns). Start from the top-right corner of the matrix. Move left if you see a 1. Move down if you see a 0. Keep track of the row index where you last saw the leftmost 1 — that row has the most 1s. public class MaxOnesRow { public static int rowWithMostOnes(int matrix) { int rows = matrix.length; int cols = matrix[0].length; int maxRowIndex = -1; int j = cols - 1; /"

    Khushbu R. - "Let’s say the matrix is m x n (i.e., m rows and n columns). Start from the top-right corner of the matrix. Move left if you see a 1. Move down if you see a 0. Keep track of the row index where you last saw the leftmost 1 — that row has the most 1s. public class MaxOnesRow { public static int rowWithMostOnes(int matrix) { int rows = matrix.length; int cols = matrix[0].length; int maxRowIndex = -1; int j = cols - 1; /"See full answer

    Software Engineer
    Data Structures & Algorithms
    +1 more
  • Gameberry Labs logoAsked at Gameberry Labs 
    2 answers

    "Go is compiled with llvm so, application run on the OS directly. Hence, java is compiled to bytecode, that means, it needs to be run in JVM and needs to recompile inside the VM. So, theoretically, go is faster than java when they run. But, not sure if practically difference"

    Adem C. - "Go is compiled with llvm so, application run on the OS directly. Hence, java is compiled to bytecode, that means, it needs to be run in JVM and needs to recompile inside the VM. So, theoretically, go is faster than java when they run. But, not sure if practically difference"See full answer

    Software Engineer
    Behavioral
    +1 more
  • Mastercard logoAsked at Mastercard 
    2 answers

    "function findMinMax(array){ array.sort((a,b) => a - b); let min = array[0]; let max = array.slice(-1); return [min,max]; } `"

    Adam S. - "function findMinMax(array){ array.sort((a,b) => a - b); let min = array[0]; let max = array.slice(-1); return [min,max]; } `"See full answer

    Software Engineer
    Technical
  • "int a_array[10] = {3,6,4,7,2,1,9}; int index = 0; int index2 = 0; for ( index = 0; index < sizeof(a_array); index++ ) { int tmpindex = index + 1; if ( tmpindex <= sizeof(a_array) ) { for ( index2 = tmpindex; index2 < sizeof(a_array); index2++ ) { if ( aarray[index] <= aarray[index2] ) { print( "%d is the NGE of %d" array[index2], array[index]); break; "

    Mark S. - "int a_array[10] = {3,6,4,7,2,1,9}; int index = 0; int index2 = 0; for ( index = 0; index < sizeof(a_array); index++ ) { int tmpindex = index + 1; if ( tmpindex <= sizeof(a_array) ) { for ( index2 = tmpindex; index2 < sizeof(a_array); index2++ ) { if ( aarray[index] <= aarray[index2] ) { print( "%d is the NGE of %d" array[index2], array[index]); break; "See full answer

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

    "This depends on the list of documents and the length of the documents. My implementation will use Trie with node containing the following: class TrieNode { is_end: boolean, instances: { docid → [wordpositions] }, children: array[26] } Look up for a word will give result instances{docid:wordposition...} dictionary (which can be further improved by methods like max instance on a document....you name it...) Trie space is proportional to the total characters in"

    Aelaf G. - "This depends on the list of documents and the length of the documents. My implementation will use Trie with node containing the following: class TrieNode { is_end: boolean, instances: { docid → [wordpositions] }, children: array[26] } Look up for a word will give result instances{docid:wordposition...} dictionary (which can be further improved by methods like max instance on a document....you name it...) Trie space is proportional to the total characters in"See full answer

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

    "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
Showing 421-440 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