← Kotak Interview Insights

Kotak·Software Engineer·Technical Phone Screen·Junior

Junior
Jun 2026

Summary

Did a React Native SDE 1 interview at Kotak. Three parts: architecture concepts, a live UI coding task, and a JS problem. No heavy DSA, which was a nice change from the usual grind.

Questions Asked (3)

Q1

How does React Native work under the hood? Walk through both the old and new architecture.

Technical Trade-offsSystem Design
Author's notes

This is the kind of question that sounds easy until you're actually mid-explanation and realize you're not sure where to stop.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by explaining the core problem React Native solves—running JavaScript logic while rendering native UI—then contrast the old and new architectures in terms of threading, bridge, and rendering. Emphasize how the new architecture (Fabric, TurboModules, JSI) addresses performance bottlenecks and enables synchronous, more direct communication.

Pro tip: Mention that the new architecture is already the default in recent React Native versions (0.76+), and that Kotak’s mobile apps likely benefit from faster startup and smoother interactions—showing you understand real-world impact.

1. Explain the core concept

Describe React Native as a framework that uses JavaScript to control native UI components, with a bridge historically connecting JS and native threads.

2. Describe the old architecture

Cover the three threads (JS, Native/UI, Shadow), the asynchronous bridge, and the JSON serialization bottleneck that caused performance issues.

3. Introduce the new architecture

Explain JSI (JavaScript Interface) as a replacement for the bridge, enabling direct C++ communication and synchronous calls.

4. Detail Fabric and TurboModules

Fabric is the new rendering system that uses C++ and allows synchronous layout; TurboModules enable lazy loading and direct native module access via JSI.

5. Summarize benefits and trade-offs

Highlight improved performance, startup time, and concurrency, but note migration complexity and the need for native code updates.

Key Points to Mention

  • The bridge in the old architecture was asynchronous and serialized data as JSON, causing bottlenecks.
  • JSI (JavaScript Interface) allows JavaScript to hold direct references to C++ objects, enabling synchronous execution.
  • Fabric replaces the old UIManager and Shadow Tree with a C++-based renderer for synchronous layout and better concurrency.
  • TurboModules allow native modules to be loaded lazily and communicate directly via JSI, reducing startup time.
  • The new architecture improves performance for high-priority updates like gestures and animations.
  • Migration to the new architecture may require updating native modules and can introduce compatibility issues.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q2

Build an item listing page in a live editor: search bar at the top, a list of items below it, and filtering logic that updates the list as you type.

Technical Trade-offsSystem Design
Author's notes

They opened a shared online editor and just...

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints, then outline a component-based architecture with a controlled search input and a filtered list. Discuss state management, performance optimizations like debouncing and memoization, and trade-offs between client-side and server-side filtering. Finally, walk through the implementation in the live editor, explaining your choices as you code.

Pro tip: Mention that you would debounce the search input to avoid excessive re-renders or API calls, and use a case-insensitive filter with a clear empty state. This shows you think about both performance and user experience.

1. Clarify Requirements and Constraints

Ask about data size, whether filtering should be client-side or server-side, and any UI/UX expectations. This ensures you build the right solution and demonstrates thoroughness.

2. Design Component Structure and State

Outline a parent component holding the search term and item list state, with a controlled input and a child list component. Explain how state flows and updates.

3. Implement Filtering Logic

Write a filter function that matches items against the search term (case-insensitive, possibly using includes or startsWith). Discuss whether to filter on every keystroke or debounce.

4. Optimize for Performance

Apply debouncing to the search input, memoize the filtered list, and consider virtualization for long lists. Explain the trade-offs of each optimization.

5. Test and Handle Edge Cases

Mention testing with empty search, no results, special characters, and large datasets. Ensure the UI provides feedback for loading and empty states.

Key Points to Mention

  • Debouncing or throttling the search input to reduce unnecessary filtering or API calls
  • Case-insensitive matching and handling of special characters or whitespace
  • Client-side vs server-side filtering trade-offs (latency, scalability, data size)
  • Memoization of filtered results to avoid re-computation on unrelated re-renders
  • Virtualization or pagination for rendering large lists efficiently
  • Accessibility considerations: labeling the search input, announcing result counts, and keyboard navigation

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q3

You're given an invalid URL. Write a function to validate it, append query parameters if it's valid, and handle the invalid case gracefully.

Algorithms & Data StructuresAPI & Integrations
Author's notes

Straightforward JS problem.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements: what constitutes a valid URL, how to handle query parameters, and what graceful handling means (e.g., return error, log, or throw exception). Then outline a solution using a URL parsing library (like Python's urllib.parse or JavaScript's URL API) to validate and manipulate the URL, with try-catch for invalid cases. Finally, discuss edge cases and testing strategy.

Pro tip: Mention that you would use a well-tested library rather than writing a regex from scratch, as regex for URL validation is error-prone and hard to maintain. Also, emphasize the importance of not leaking sensitive information in error messages when handling invalid URLs.

1. Clarify requirements and constraints

Ask questions to understand what defines a valid URL (e.g., must have scheme and host, allow relative URLs?), what query parameters to append, and what 'gracefully' means (return null, throw custom exception, log error?).

2. Choose validation and parsing approach

Decide whether to use built-in URL parsers (e.g., Python's urllib.parse, JavaScript's URL) or a library. Explain why this is more reliable than regex.

3. Implement validation and parameter appending

Write a function that attempts to parse the URL; if successful, append query parameters using the parser's API; if parsing fails, handle the error gracefully (e.g., return a default value or log).

4. Handle edge cases and error scenarios

Consider cases like missing scheme, malformed query strings, duplicate parameters, and ensure the function doesn't crash. Discuss how to handle them.

5. Test and validate the solution

Outline test cases: valid URL with/without existing query, invalid URL, empty string, etc. Mention unit testing and possibly property-based testing.

Key Points to Mention

  • Use of standard URL parsing libraries (e.g., urllib.parse, URL API) over regex for reliability and security.
  • Definition of a valid URL: scheme, netloc (host), and optionally path/query/fragment.
  • Graceful error handling: try-catch, returning a sentinel value, or throwing a custom exception with clear message.
  • Appending query parameters: correctly merging with existing query string, handling encoding, and avoiding duplicates.
  • Security considerations: avoiding injection, not exposing internal errors, and validating input to prevent SSRF if used server-side.
  • Testing strategy: unit tests for valid/invalid cases, edge cases like empty string, and ensuring idempotency.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.