Skip to main content
Sproutern LogoSproutern
InterviewsGamesBlogToolsAbout
Sproutern LogoSproutern
Donate
Sproutern LogoSproutern

Your complete education and career platform. Access real interview experiences, free tools, and comprehensive resources to succeed in your professional journey.

Company

About UsContact UsSuccess StoriesOur MethodologyBlog❀️ Donate

For Students

Find InternshipsScholarshipsCompany ReviewsCareer ToolsFree Resources

🌍 Study Abroad

Country GuidesπŸ‡©πŸ‡ͺ Study in GermanyπŸ‡ΊπŸ‡Έ Study in USAπŸ‡¬πŸ‡§ Study in UKπŸ‡¨πŸ‡¦ Study in CanadaGPA Converter

Resources

Resume TemplatesCover Letter SamplesInterview Cheat SheetResume CheckerCGPA ConverterFAQ

Legal

Privacy PolicyTerms & ConditionsCookie PolicyDisclaimerSitemap Support

Β© 2026 Sproutern. All rights reserved.

β€’

Made with ❀️ for students worldwide

Follow Us:
    Back to Google

    Google Interview Questions

    Complete collection of technical, behavioral, and coding questions asked in Google interviews. Master these to crack your Google interview.

    Technical (10) Googleyness (8) Coding (6) System Design (4)

    Technical Interview Questions

    Q1. What is the difference between a process and a thread?

    A process is an independent program in execution with its own memory space. A thread is a lightweight unit of execution within a process that shares the same memory. Processes are isolated and more resource-intensive, while threads allow parallel execution within a single process. Context switching between threads is faster than between processes.

    Q2. Explain how HashMap works internally in Java.

    HashMap uses an array of buckets with linked lists (or trees in Java 8+). Keys are hashed using hashCode(), and the index is calculated using hash % array_length. Collisions are handled via chaining. When load factor exceeds 0.75, the array is resized. Java 8 converts linked lists to red-black trees when bucket size exceeds 8 for O(log n) lookup.

    Q3. What is the CAP theorem?

    CAP theorem states that a distributed system can only guarantee two of three properties: Consistency (all nodes see the same data), Availability (every request receives a response), and Partition Tolerance (system continues despite network failures). In practice, partition tolerance is required, so systems choose between CP (like HBase) or AP (like Cassandra).

    Q4. Explain the difference between SQL and NoSQL databases.

    SQL databases are relational, use structured schemas, support ACID transactions, and use SQL for queries (MySQL, PostgreSQL). NoSQL databases are non-relational, schema-flexible, optimized for specific use cases: document stores (MongoDB), key-value (Redis), column-family (Cassandra), graph (Neo4j). NoSQL scales horizontally better but may sacrifice consistency.

    Q5. What is a distributed system and what challenges does it face?

    A distributed system is a collection of autonomous computers that appear as a single coherent system. Challenges include: network failures, latency, partial failures, consistency, ordering of events, consensus, and debugging complexity. Key concepts: replication, partitioning, consensus protocols (Paxos, Raft), vector clocks.

    Q6. Explain the concept of load balancing.

    Load balancing distributes incoming requests across multiple servers to prevent overload. Types: Round-robin (sequential distribution), Least connections (send to least busy), IP hash (consistent routing), Weighted (based on server capacity). Google uses advanced load balancing with Maglev and global anycast for its services.

    Q7. What are microservices and their advantages/disadvantages?

    Microservices architecture breaks applications into small, independent services. Advantages: independent deployment, technology diversity, scalability, fault isolation. Disadvantages: network latency, distributed system complexity, data consistency challenges, operational overhead. Google uses microservices extensively with gRPC for inter-service communication.

    Q8. Explain the concept of caching and cache invalidation strategies.

    Caching stores frequently accessed data for faster retrieval. Strategies: Write-through (write to cache and DB simultaneously), Write-back (write to cache first, async to DB), Write-around (write to DB only). Invalidation: TTL-based, event-based, LRU eviction. "There are only two hard things in CS: cache invalidation and naming things."

    Q9. What is eventual consistency and when would you use it?

    Eventual consistency guarantees that if no new updates are made, all replicas will eventually converge to the same value. Used when availability is prioritized over immediate consistency. Examples: social media feeds, shopping cart counts, DNS. Contrasts with strong consistency where reads always return the latest write.

    Q10. Explain MapReduce and its use cases.

    MapReduce is a programming model for processing large datasets across distributed clusters. Map phase: transforms input into key-value pairs. Reduce phase: aggregates values by key. Used for: log analysis, indexing, data transformation, machine learning. Google invented it but now uses more advanced systems like Flume and Dataflow.

    Googleyness & Behavioral Questions

    Pro Tip: Googleyness is as important as technical skills. Prepare 8-10 STAR stories covering collaboration, feedback, ambiguity, and user focus.

    Q1. Tell me about a time you had to work with incomplete information.

    Use STAR method. Describe a project where requirements were unclear. Show how you: gathered available data, made reasonable assumptions, validated with stakeholders, iterated based on feedback. Emphasize comfort with ambiguity and proactive information gathering. Google values people who can make progress despite uncertainty.

    Q2. Describe a situation where you received difficult feedback. How did you handle it?

    Share a genuine example of constructive criticism. Explain your initial reaction, how you reflected on it, and specific changes you made. Show intellectual humility and growth mindset. Google values people who seek feedback and genuinely improve from it, not those who become defensive.

    Q3. Tell me about a time you disagreed with a teammate or manager.

    Describe the disagreement respectfully. Focus on: understanding their perspective first, presenting data-driven arguments, finding common ground, accepting the final decision gracefully. Show you can challenge ideas while maintaining relationships. Google wants healthy debate, not conflict avoidance or stubbornness.

    Q4. Give an example of when you helped someone else succeed.

    Share a specific instance of mentoring, pair programming, or supporting a colleague. Describe the situation, your actions, and the positive outcome for them. Google values collaborative people who elevate their teams, not just individual contributors.

    Q5. Describe a project where you had to quickly learn something new.

    Choose an example showing learning agility. Explain your approach: resources used, questions asked, practice methods, timeline. Demonstrate curiosity and systematic learning. Google values continuous learners who can adapt to new technologies and domains quickly.

    Q6. Tell me about a time you went above and beyond for a user.

    Share an example where you prioritized user experience. Could be debugging a customer issue, improving accessibility, or anticipating user needs. Show empathy and user-first thinking. Google's mission is user-focused: "Focus on the user and all else will follow."

    Q7. How do you prioritize when everything seems important?

    Explain your framework: impact vs effort analysis, alignment with goals, stakeholder input, dependencies. Give a specific example. Show you can make tough tradeoffs and communicate them. Google moves fast and expects engineers to make good prioritization decisions independently.

    Q8. Describe a time when you had to push back on a stakeholder request.

    Share an example where you advocated for the right technical or product decision. Explain how you: understood their need, identified concerns, proposed alternatives, reached agreement. Show you can be diplomatic but firm when something matters.

    Coding Questions

    Q1. LRU Cache: Design and implement a Least Recently Used cache.

    class LRUCache {
      constructor(capacity) {
        this.capacity = capacity;
        this.cache = new Map();
      }
      
      get(key) {
        if (!this.cache.has(key)) return -1;
        // Move to end (most recently used)
        const value = this.cache.get(key);
        this.cache.delete(key);
        this.cache.set(key, value);
        return value;
      }
      
      put(key, value) {
        if (this.cache.has(key)) {
          this.cache.delete(key);
        }
        this.cache.set(key, value);
        // Evict oldest if over capacity
        if (this.cache.size > this.capacity) {
          const oldestKey = this.cache.keys().next().value;
          this.cache.delete(oldestKey);
        }
      }
    }
    
    // Time: O(1) for both get and put
    // Space: O(capacity)

    Q2. Find the longest substring without repeating characters.

    function lengthOfLongestSubstring(s) {
      const seen = new Map();
      let maxLength = 0;
      let start = 0;
      
      for (let end = 0; end < s.length; end++) {
        const char = s[end];
        if (seen.has(char) && seen.get(char) >= start) {
          start = seen.get(char) + 1;
        }
        seen.set(char, end);
        maxLength = Math.max(maxLength, end - start + 1);
      }
      
      return maxLength;
    }
    
    // Example: "abcabcbb" β†’ 3 ("abc")
    // Time: O(n), Space: O(min(m, n)) where m is charset size

    Q3. Merge K sorted linked lists efficiently.

    function mergeKLists(lists) {
      if (!lists.length) return null;
      
      // Min-heap approach using priority queue
      const minHeap = new MinPriorityQueue({ priority: x => x.val });
      
      // Add first node from each list
      for (const list of lists) {
        if (list) minHeap.enqueue(list);
      }
      
      const dummy = new ListNode(0);
      let current = dummy;
      
      while (!minHeap.isEmpty()) {
        const node = minHeap.dequeue().element;
        current.next = node;
        current = current.next;
        
        if (node.next) {
          minHeap.enqueue(node.next);
        }
      }
      
      return dummy.next;
    }
    
    // Time: O(N log K) where N is total nodes, K is number of lists
    // Space: O(K) for the heap

    Q4. Word Ladder: Find shortest transformation sequence.

    function ladderLength(beginWord, endWord, wordList) {
      const wordSet = new Set(wordList);
      if (!wordSet.has(endWord)) return 0;
      
      const queue = [[beginWord, 1]];
      const visited = new Set([beginWord]);
      
      while (queue.length) {
        const [word, level] = queue.shift();
        
        if (word === endWord) return level;
        
        // Try all single-character transformations
        for (let i = 0; i < word.length; i++) {
          for (let c = 97; c <= 122; c++) {
            const newWord = word.slice(0, i) + 
                            String.fromCharCode(c) + 
                            word.slice(i + 1);
            
            if (wordSet.has(newWord) && !visited.has(newWord)) {
              visited.add(newWord);
              queue.push([newWord, level + 1]);
            }
          }
        }
      }
      
      return 0;
    }
    
    // BFS guarantees shortest path
    // Time: O(MΒ² Γ— N), Space: O(M Γ— N)

    Q5. Design a rate limiter (sliding window counter).

    class RateLimiter {
      constructor(windowSizeMs, maxRequests) {
        this.windowSize = windowSizeMs;
        this.maxRequests = maxRequests;
        this.requests = new Map(); // userId -> [timestamps]
      }
      
      isAllowed(userId) {
        const now = Date.now();
        const windowStart = now - this.windowSize;
        
        if (!this.requests.has(userId)) {
          this.requests.set(userId, []);
        }
        
        const timestamps = this.requests.get(userId);
        
        // Remove expired timestamps
        while (timestamps.length && timestamps[0] <= windowStart) {
          timestamps.shift();
        }
        
        if (timestamps.length >= this.maxRequests) {
          return false;
        }
        
        timestamps.push(now);
        return true;
      }
    }
    
    // Usage: Allow 100 requests per minute
    const limiter = new RateLimiter(60000, 100);

    Q6. Serialize and deserialize a binary tree.

    function serialize(root) {
      const result = [];
      
      function dfs(node) {
        if (!node) {
          result.push('null');
          return;
        }
        result.push(node.val.toString());
        dfs(node.left);
        dfs(node.right);
      }
      
      dfs(root);
      return result.join(',');
    }
    
    function deserialize(data) {
      const values = data.split(',');
      let index = 0;
      
      function dfs() {
        if (values[index] === 'null') {
          index++;
          return null;
        }
        
        const node = new TreeNode(parseInt(values[index]));
        index++;
        node.left = dfs();
        node.right = dfs();
        return node;
      }
      
      return dfs();
    }
    
    // Preorder traversal ensures unique serialization
    // Time: O(n), Space: O(n)

    System Design Topics

    Design Google Search

    • β€’Web crawling at petabyte scale
    • β€’Inverted index for fast lookups
    • β€’PageRank for relevance ranking
    • β€’Query parsing and spelling correction
    • β€’Sharding by document ID
    • β€’Caching popular queries

    Design YouTube

    • β€’Video upload and transcoding pipeline
    • β€’CDN for global video delivery
    • β€’Recommendation system (collaborative filtering)
    • β€’Live streaming with adaptive bitrate
    • β€’View count with eventual consistency
    • β€’Comment system at scale

    Design Google Drive

    • β€’File chunking and deduplication
    • β€’Sync across devices (operational transforms)
    • β€’Sharing and permissions model
    • β€’Versioning and conflict resolution
    • β€’Metadata storage vs file storage
    • β€’Offline support

    Design Gmail

    • β€’Email storage and threading
    • β€’Spam detection (ML-based)
    • β€’Full-text search over billions of emails
    • β€’Push notifications
    • β€’Labels and filters
    • β€’IMAP/SMTP protocol handling

    Pro Tips for Google Interviews

    • 1.Practice on Google Docs - actual phone screens are conducted there. Get comfortable coding without autocomplete or syntax highlighting.
    • 2.Think aloud constantly. Google interviewers evaluate your problem-solving approach as much as the final answer.
    • 3.For system design, study Google's research papers: MapReduce, GFS, Bigtable, Spanner, and Borg. These reveal how Google thinks at scale.
    • 4.Many candidates succeed on their 2nd or 3rd attempt. There's a 6-month cooldown, so use rejection as learning and try again.

    Prepare More

    Google Careers

    Salary, teams, and benefits

    Mock Interviews

    Practice with AI feedback

    Interview Guide

    Complete preparation tips