Skip to main content

Google Software Engineer Interview Questions

Review this list of 143 Google Software Engineer interview questions and answers verified by hiring managers and candidates.
  • Google logoAsked at Google 
    1 answer

    "Question: An array of n integers is given, and a positive integer k, where k << n. k indicates that the absolute difference between each element's current index (icurrent) and the index in the sorted array (isorted) is less than k (|icurr - isorted| < k). Sort the given array. The most common solution is with a Heap: def solution(arr, k): min_heap = [] result = [] for i in range(len(arr)) heapq.heappush(min_heap, arr[i]) "

    Guilherme M. - "Question: An array of n integers is given, and a positive integer k, where k << n. k indicates that the absolute difference between each element's current index (icurrent) and the index in the sorted array (isorted) is less than k (|icurr - isorted| < k). Sort the given array. The most common solution is with a Heap: def solution(arr, k): min_heap = [] result = [] for i in range(len(arr)) heapq.heappush(min_heap, arr[i]) "See full answer

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

    "Clarifying questions: is this a brand new product, or are we improving an existing one? (i.e. are we going to have to migrate an existing codebase or are we starting from scratch?). are we resource-strapped (e.g. # engineers, time)? are there any specific priorities for the product, or should i leave it open-ended? Assume: brand new product, well-resourced, no specific priorities. It seems that there are two sides to this question: 1) technical evaluation of different languages, and 2)"

    Laura S. - "Clarifying questions: is this a brand new product, or are we improving an existing one? (i.e. are we going to have to migrate an existing codebase or are we starting from scratch?). are we resource-strapped (e.g. # engineers, time)? are there any specific priorities for the product, or should i leave it open-ended? Assume: brand new product, well-resourced, no specific priorities. It seems that there are two sides to this question: 1) technical evaluation of different languages, and 2)"See full answer

    Software Engineer
    Technical
  • Google logoAsked at Google 
    1 answer

    "Functional Requirement Monitor health, metrics Alert in case of failure/anomaly Visualize the live health Analyse machines on periodic basis Non Functional Should not exert load on machines low latency Highly scalable Logs/Metrics Gathering push - machine gather and send to system and low priority background thread along with batching pull - heart beat check (for offline machines) Processing Real time streaming using Kafka/kinesis + Flink TimeSeries database for stor"

    Sourabh G. - "Functional Requirement Monitor health, metrics Alert in case of failure/anomaly Visualize the live health Analyse machines on periodic basis Non Functional Should not exert load on machines low latency Highly scalable Logs/Metrics Gathering push - machine gather and send to system and low priority background thread along with batching pull - heart beat check (for offline machines) Processing Real time streaming using Kafka/kinesis + Flink TimeSeries database for stor"See full answer

    Software Engineer
    System Design
    +2 more
  • Google logoAsked at Google 
    9 answers
    +6

    "import time class Task: def init\(self, description, interval=None): self.description = description self.interval = interval self.next_run = time.time() class SimpleTaskScheduler: def init\(self): self.tasks = [] def add_task(self, description, interval=None): self.tasks.append(Task(description, interval)) def run(self, duration=60): end_time = time.time() + duration while time.time() < end_time: curr"

    Yash N. - "import time class Task: def init\(self, description, interval=None): self.description = description self.interval = interval self.next_run = time.time() class SimpleTaskScheduler: def init\(self): self.tasks = [] def add_task(self, description, interval=None): self.tasks.append(Task(description, interval)) def run(self, duration=60): end_time = time.time() + duration while time.time() < end_time: curr"See full answer

    Software Engineer
    Data Structures & Algorithms
    +3 more
  • Google logoAsked at Google 
    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
    +2 more
  • 🧠 Want an expert answer to a question? Saving questions lets us know what content to make next.

  • Google logoAsked at Google 
    4 answers
    +1

    "After more than five years at my previous company, I had contributed significantly to many important projects and helped the team navigate critical transitions, such as our shift from a monolithic to a microservices architecture. However, over time, I realized that my goals and the direction of the company were no longer fully aligned. I felt I had outgrown the position and was ready for new challenges, where I could continue to grow both technically and professionally. Ultimately, I’m excited a"

    Chinedu ekene O. - "After more than five years at my previous company, I had contributed significantly to many important projects and helped the team navigate critical transitions, such as our shift from a monolithic to a microservices architecture. However, over time, I realized that my goals and the direction of the company were no longer fully aligned. I felt I had outgrown the position and was ready for new challenges, where I could continue to grow both technically and professionally. Ultimately, I’m excited a"See full answer

    Software Engineer
    Behavioral
    +2 more
  • Google logoAsked at Google 
    5 answers
    +2

    "I would try to understand their perspective, focus on the issue, find common ground, brainstorm solutions, and agree on a course of action."

    Alemayehu m G. - "I would try to understand their perspective, focus on the issue, find common ground, brainstorm solutions, and agree on a course of action."See full answer

    Software Engineer
    Behavioral
    +3 more
  • Google logoAsked at Google 
    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
  • Google logoAsked at Google 
    30 answers
    +22

    "This problem could be solved in two ways(both using Kadane's algorithm): Simple iterating 1-D dp function maxSubarraySum(nums) { const n = nums.length; if ( n === 0) return 0; const dp = Array(n).fill(0); dp[0] = nums[0]; for (let i = 1; i < n; i++) { dp[i] = Math.max(nums[i], dp[i - 1] + nums[i]); } return Math.max(...dp); } "

    Mark K. - "This problem could be solved in two ways(both using Kadane's algorithm): Simple iterating 1-D dp function maxSubarraySum(nums) { const n = nums.length; if ( n === 0) return 0; const dp = Array(n).fill(0); dp[0] = nums[0]; for (let i = 1; i < n; i++) { dp[i] = Math.max(nums[i], dp[i - 1] + nums[i]); } return Math.max(...dp); } "See full answer

    Software Engineer
    Data Structures & Algorithms
    +4 more
  • Google logoAsked at Google 
    3 answers

    "SQL databases are relational, NoSQL databases are non-relational. SQL databases use structured query language and have a predefined schema. NoSQL databases have dynamic schemas for unstructured data. SQL databases are vertically scalable, while NoSQL databases are horizontally scalable."

    Ali H. - "SQL databases are relational, NoSQL databases are non-relational. SQL databases use structured query language and have a predefined schema. NoSQL databases have dynamic schemas for unstructured data. SQL databases are vertically scalable, while NoSQL databases are horizontally scalable."See full answer

    Software Engineer
    Concept
    +7 more
  • Google logoAsked at Google 
    10 answers
    +7

    "Should this question be BST, not just BT? Otherwise it would not be possible to reconstruct the tree solely based on the array regardless of its order"

    TreeOfWisdom - "Should this question be BST, not just BT? Otherwise it would not be possible to reconstruct the tree solely based on the array regardless of its order"See full answer

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

    "i am a fresher"

    Akash A. - "i am a fresher"See full answer

    Software Engineer
    Behavioral
  • Google logoAsked at Google 
    2 answers

    "Conflict is unavoidable for any project. The most important part of moving past conflict is to understand why it manifested in the first place. I would start by understanding: What type of conflict is it? 1 on 1, with another team, with another function? What shape it? Is it about communication, strategy, implementation, style? What impact does it have? Will it affect our timelines, how we work together, etc How do I feel about it? Is it a thorn in my side or something"

    James W. - "Conflict is unavoidable for any project. The most important part of moving past conflict is to understand why it manifested in the first place. I would start by understanding: What type of conflict is it? 1 on 1, with another team, with another function? What shape it? Is it about communication, strategy, implementation, style? What impact does it have? Will it affect our timelines, how we work together, etc How do I feel about it? Is it a thorn in my side or something"See full answer

    Software Engineer
    Behavioral
    +1 more
  • Google logoAsked at Google 
    13 answers
    Video answer for 'Merge k sorted linked lists.'
    +7

    "A much better solution than the one in the article, below: It looks like the ones writing articles here in Javascript do not understand the time/space complexity of javascript methods. shift, splice, sort, etc... In the solution article you have a shift and a sort being done inside a while, that is, the multiplication of Ns. My solution, below, iterates through the list once and then sorts it, separately. It´s O(N+Log(N)) class ListNode { constructor(val = 0, next = null) { th"

    Guilherme F. - "A much better solution than the one in the article, below: It looks like the ones writing articles here in Javascript do not understand the time/space complexity of javascript methods. shift, splice, sort, etc... In the solution article you have a shift and a sort being done inside a while, that is, the multiplication of Ns. My solution, below, iterates through the list once and then sorts it, separately. It´s O(N+Log(N)) class ListNode { constructor(val = 0, next = null) { th"See full answer

    Software Engineer
    Data Structures & Algorithms
    +4 more
  • Google logoAsked at Google 
    18 answers
    +13

    "function areSentencesSimilar(sentence1, sentence2, similarPairs) { if (sentence1.length !== sentence2.length) return false; for (let i=0; i (w1 === word1 && !visited.has(w2)) || (w2 === word1 && !visited.has(w1))); if (!edge) { "

    Tiago R. - "function areSentencesSimilar(sentence1, sentence2, similarPairs) { if (sentence1.length !== sentence2.length) return false; for (let i=0; i (w1 === word1 && !visited.has(w2)) || (w2 === word1 && !visited.has(w1))); if (!edge) { "See full answer

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

    "def encode(root): if not root: return [] def dfs(node): if not node: return res.append(node.val) res.append(len(node,children)) for child_node in node.children: dfs(child_node) res = [] dfs(root) return res def decode(arr): if not arr: return None n = len(arr) i = 0 def dfs(val, children_count): if children_count == 0: return Node(val) cur_node = Node(val) cur_node.children = [] for j in range(children_count): nonlocal i i += 2 cur_node.children.append(dfs(arr[i], arr[i"

    Ying T. - "def encode(root): if not root: return [] def dfs(node): if not node: return res.append(node.val) res.append(len(node,children)) for child_node in node.children: dfs(child_node) res = [] dfs(root) return res def decode(arr): if not arr: return None n = len(arr) i = 0 def dfs(val, children_count): if children_count == 0: return Node(val) cur_node = Node(val) cur_node.children = [] for j in range(children_count): nonlocal i i += 2 cur_node.children.append(dfs(arr[i], arr[i"See full answer

    Software Engineer
    Coding
  • Google logoAsked at Google 
    4 answers
    +1

    "As far as i know, when we type a web address in the browser- the broswer connects to the DNS server & finds the address of the website we are looking for after finding it, the browser sends an HTTP request message to the server,with a request to send a copy of the website to the user. all of this information is sent using TCP/IP protocol across your internet"

    Debajyoti B. - "As far as i know, when we type a web address in the browser- the broswer connects to the DNS server & finds the address of the website we are looking for after finding it, the browser sends an HTTP request message to the server,with a request to send a copy of the website to the user. all of this information is sent using TCP/IP protocol across your internet"See full answer

    Software Engineer
    Technical
  • Google logoAsked at Google 
    16 answers
    +12

    "Problem Statement: The Fibonacci sequence is defined as F(n) = F(n-1) + F(n-2) with F(0) = 1 and F(1) = 1. The solution is given in the problem statement itself. If the value of n = 0, return 1. If the value of n = 1, return 1. Otherwise, return the sum of data at (n - 1) and (n - 2). Explanation: The Fibonacci sequence is a series of numbers where each number is the sum of the two preceding ones, typically starting with 0 and 1. Java Solution: public static int fib(int n"

    Rishi G. - "Problem Statement: The Fibonacci sequence is defined as F(n) = F(n-1) + F(n-2) with F(0) = 1 and F(1) = 1. The solution is given in the problem statement itself. If the value of n = 0, return 1. If the value of n = 1, return 1. Otherwise, return the sum of data at (n - 1) and (n - 2). Explanation: The Fibonacci sequence is a series of numbers where each number is the sum of the two preceding ones, typically starting with 0 and 1. Java Solution: public static int fib(int n"See full answer

    Software Engineer
    Data Structures & Algorithms
    +2 more
  • Google logoAsked at Google 
    Add answer
    Software Engineer
    Behavioral
    +4 more
  • Google logoAsked at Google 
    1 answer

    "A load balancer accepts requests from clients (e.g. web browsers on the Internet) and backend services (e.g. a web server). Load balancers are useful for replicating backend services onto multiple machines to meet increased demand. The design of a load balancer should address the following questions: What protocols should be supported? IP allows computers to communicate using packets, similarly to how people send letters. IP packets are addressed using an IP address and port number. "

    Anonymous Hyena - "A load balancer accepts requests from clients (e.g. web browsers on the Internet) and backend services (e.g. a web server). Load balancers are useful for replicating backend services onto multiple machines to meet increased demand. The design of a load balancer should address the following questions: What protocols should be supported? IP allows computers to communicate using packets, similarly to how people send letters. IP packets are addressed using an IP address and port number. "See full answer

    Software Engineer
    System Design
Showing 81-100 of 143
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