A Software Engineer at Times Internet plays a pivotal role in driving India's largest digital products ecosystem. Times Internet operates a massive portfolio of digital-first brands across news, finance, sports, and entertainment—including platforms like Times of India, Economic Times, and ET Money. As an engineer here, you are responsible for building, optimizing, and scaling applications that serve millions of active users daily, making high availability, low latency, and robust system architecture your primary focus areas. In this role, you will work on complex, high-throughput systems where even minor optimizations can significantly improve the user experience for millions of readers and consumers. Whether you are working on the frontend to deliver highly interactive, responsive user interfaces or designing fault-tolerant microservices on the backend, your work directly impacts how digital media and financial services are consumed across the country. To succeed, you must possess a strong foundation in computer science fundamentals, a passion for solving real-world engineering challenges at scale, and the adaptability to work across diverse product verticals. The engineering team at values practical problem-solving, clean code, and a deep understanding of core technologies over mere theoretical knowledge. Times Internet
Initial Screening
reportedTelephonic discussion with a recruiter or hiring manager to evaluate initial fit.
What to demonstrate
- Telephonic discussion with a recruiter or hiring manager to evaluate initial fit
- Depth in React.js
How to prepare
- Be able to walk your CV end to end in two minutes, and say why this company specifically.
- Have your salary expectations, notice period and location constraints ready, and ask for the rest of the loop in writing.
Online Coding Assessment
reportedWritten test covering aptitude, logical reasoning, and basic coding challenges.
What to demonstrate
- Written test covering aptitude, logical reasoning, and basic coding challenges
- Depth in React.js
How to prepare
- Answer aloud and timed: Implement Depth-First Search (DFS) on a graph and explain how you would detect cycles.
- Answer aloud and timed: Explain and implement a custom heap data structure, focusing on the heapify operation.
Technical Interviews
reportedMultiple rounds focusing on live coding, system design, and technical stack deep dives.
What to demonstrate
- Multiple rounds focusing on live coding, system design, and technical stack deep dives
- Depth in React.js
How to prepare
- Answer aloud and timed: Solve classic logical and mathematical puzzles, such as the river crossing puzzle or the minimum weighings puzzle, to demonstrate your structured thinking.
- Answer aloud and timed: Explain the contract between
equalsandhashCodein Java and demonstrate what happens when this contract is violated.
Techno-Managerial Round
reportedDiscussion assessing both technical and managerial competencies.
What to demonstrate
- Discussion assessing both technical and managerial competencies
- Depth in React.js
How to prepare
- Answer aloud and timed: Walk through the execution lifecycle of a request in the Spring MVC framework.
- Answer aloud and timed: Design a thread-safe cache mechanism in Java and explain how you would handle synchronization to prevent deadlocks.
HR Discussion
reportedFinal conversation with HR regarding offer and company culture.
What to demonstrate
- Final conversation with HR regarding offer and company culture
- Depth in React.js
How to prepare
- Answer aloud and timed: How do you design and secure microservices, and what caching strategies (e.g., Redis) would you implement to reduce database load?
- Answer aloud and timed: Explain JUnit lifecycle annotations, specifically detailing the difference between setup, teardown, and test execution phases.
PracHub editorial advice for the preparation topics above.
Structure Your Code Clearly
During live coding or machine tests, focus on writing clean, modular code. Use descriptive variable names, write comments where necessary, and ensure your code handles edge cases gracefully.
Practice Your Explanations
Don't code in silence. Talk through your thought process, explain the trade-offs of your chosen approach, and discuss time and space complexities before you start writing code.
Brush Up on Puzzles
Do not skip puzzle preparation. Review classic logical riddles and practice structuring your answers step-by-step, as these are highly common in technical and managerial rounds.
Clarify Requirements Early
If given a design problem or an ambiguous question, ask clarifying questions before proposing a solution. This shows the interviewer that you approach engineering challenges methodically.
Be Prepared for Deep Dives
If you list a technology on your resume, expect to be questioned on its internal working mechanisms. Ensure you can explain not just how to use a framework, but why it works the way it does.
Choose a category, try a prompt, then open its approach, worked solution or follow-up when you need it.
Implement an algorithm to create an array $B$ from a given array $A$ such that $B[i]$ is equal to the product
Implement an algorithm to create an array $B$ from a given array $A$ such that $B[i]$ is equal to the product of all elements of $A$ except $A[i]$, without using the division operator.
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Write a function to generate the mirror image of a binary tree.
Write a function to generate the mirror image of a binary tree.
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Implement Depth-First Search (DFS) on a graph and explain how you would detect cycles.
Implement Depth-First Search (DFS) on a graph and explain how you would detect cycles.
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Explain and implement a custom heap data structure, focusing on the heapify operation.
Explain and implement a custom heap data structure, focusing on the heapify operation.
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Solve classic logical and mathematical puzzles, such as the river crossing puzzle or the minimum weighings puz
Solve classic logical and mathematical puzzles, such as the river crossing puzzle or the minimum weighings puzzle, to demonstrate your structured thinking.
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Explain how Redux manages application state and describe the role of middleware in handling asynchronous actio
Explain how Redux manages application state and describe the role of middleware in handling asynchronous actions.
Approach
- Say what the runtime actually does before reasoning about the code.
- Name what is shared across threads and what owns each piece of state.
- Identify the window where an invariant is briefly untrue.
- Distinguish a value from a reference to it, and say which one you handed out.
Follow-up
- What happens if two callers reach this at the same time?
- Where could this allocate more than you expect?
Explain the lifecycle of an Android Service and how it differs from a thread or an AsyncTask.
Explain the lifecycle of an Android Service and how it differs from a thread or an AsyncTask.
Approach
- Say what the runtime actually does before reasoning about the code.
- Name what is shared across threads and what owns each piece of state.
- Identify the window where an invariant is briefly untrue.
- Distinguish a value from a reference to it, and say which one you handed out.
Follow-up
- What happens if two callers reach this at the same time?
- Where could this allocate more than you expect?
Denormalise tenant onto revisions and backfill it live
resource_revision (revision_id, resource_id, version, actor_user_id, change_kind, patch, request_id, created_at) has 400M rows and no tenant column; tenant_id lives only on resource. Two reads need it: a tenant-scoped audit feed ordered by created_at DESC, and an offboarding purge. Both join back to resource today. Justify adding tenant_id to resource_revision against those two reads, name the anomaly the copy introduces and the constraint that prevents it, then give the ordered migration for a live table taking 1.2k writes/second — the lock each step takes, how the backfill is batched, and where each step stops being reversible. PostgreSQL 16.
Approach
- Justify from the access path rather than from taste. Without the column, the audit feed either scans resource_revision by created_at and discards other tenants' rows, or resolves the tenant's resource_ids first and probes with them — both proportional to the tenant's whole history rather than to one page. With (tenant_id, created_at DESC, revision_id DESC) it is a seek that stops at 50 rows, and the purge becomes a ranged delete instead of a join.
- Name the cost exactly: a second copy of a fact can disagree with the first. Make the disagreement unwritable rather than documented — add UNIQUE (resource_id, tenant_id) on resource so it can serve as a foreign-key target, then FOREIGN KEY (resource_id, tenant_id) REFERENCES resource (resource_id, tenant_id) on the revision table. A revision can then only ever carry its parent's tenant.
- Step one, expand: ALTER TABLE resource_revision ADD COLUMN tenant_id BIGINT NULL, with no default, so it is a catalogue change and no rewrite. It still needs ACCESS EXCLUSIVE for an instant, and that instant queues behind the longest open transaction on the table while every later query queues behind it — set lock_timeout to 2s and retry rather than wait.
- Step two, dual-write: deploy the writer that populates tenant_id on every new revision while reads still use the join. Reversible by redeploying the previous build, because nothing reads the column yet.
Follow-up
- The backfill is half finished and a rollback is required. What state is the table in, and what does the previous build do with a half-populated column?
- How do you verify the backfill actually finished, given rows are still being inserted while it runs?
Explain why the owner filter ignores the listing index
The only index on resource is (tenant_id, status, updated_at DESC, resource_id DESC). A new endpoint returns one user's resources across all statuses, newest created first: WHERE tenant_id = $1 AND owner_user_id = $2 ORDER BY created_at DESC LIMIT 20. On a tenant with 2M rows it takes 900 ms and EXPLAIN shows a sort above a large scan. Explain precisely why the existing index cannot serve it, give the index that can, and state which of these the new index still will not help: owner_user_id alone across tenants; the same query ordered by updated_at. PostgreSQL 16.
Approach
- Separate the two jobs an index does. For filtering, a composite btree is seekable only on a left prefix, so with no predicate on status the scan can at best range over tenant_id and test owner_user_id per row; PostgreSQL 16 has no btree skip scan to jump the unconstrained column.
- For ordering, the index is sorted by (status, updated_at) within a tenant and not by created_at, so the LIMIT cannot stop early: every matching row is read and then sorted. That is the 'Sort Method: top-N heapsort' line, and it is why the plan reads 2M rows to answer with 20.
- Derive the replacement from the access path — equality, equality, then the ordering column: CREATE INDEX CONCURRENTLY ON resource (tenant_id, owner_user_id, created_at DESC). The scan seeks to the (tenant, owner) range and walks 20 entries in order, so the Sort node disappears along with the row-read.
- Treat INCLUDE (title, status) as conditional, not free. An index-only scan still visits the heap for any row whose page is not marked all-visible, so on a table taking 1.2k writes/second the win depends on autovacuum keeping the visibility map current, and the wider index costs more on every insert.
Follow-up
- 90% of rows are status='active'. Would a partial index WHERE status = 'active' change your answer, and for which of the three queries?
- A dashboard runs this for 40 owners in one page load. What changes about the design?
Explain the contract between `equals` and `hashCode` in Java and demonstrate what happens when this contract i
Explain the contract between equals and hashCode in Java and demonstrate what happens when this contract is violated.
Approach
- Clarify what is being asked and what a complete answer contains.
- State your assumptions explicitly before working the problem.
- Say what you would check first and why it is the highest-information step.
- Work from the requirement backwards to the design.
Follow-up
- What assumption would you test first?
- How would you know your answer was wrong?
Walk through the execution lifecycle of a request in the Spring MVC framework.
Walk through the execution lifecycle of a request in the Spring MVC framework.
Approach
- Clarify what is being asked and what a complete answer contains.
- State your assumptions explicitly before working the problem.
- Say what you would check first and why it is the highest-information step.
- Work from the requirement backwards to the design.
Follow-up
- What assumption would you test first?
- How would you know your answer was wrong?
How do you design and secure microservices, and what caching strategies (e.g., Redis) would you implement to r
How do you design and secure microservices, and what caching strategies (e.g., Redis) would you implement to reduce database load?
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- State the consistency you need, and where you are willing to be stale.
Follow-up
- What breaks first when traffic grows ten times?
- How does this behave when that dependency is down for an hour?
Explain JUnit lifecycle annotations, specifically detailing the difference between setup, teardown, and test e
Explain JUnit lifecycle annotations, specifically detailing the difference between setup, teardown, and test execution phases.
Approach
- Clarify what is being asked and what a complete answer contains.
- State your assumptions explicitly before working the problem.
- Say what you would check first and why it is the highest-information step.
- Work from the requirement backwards to the design.
Follow-up
- What assumption would you test first?
- How would you know your answer was wrong?
Explain the difference between virtual DOM reconciliation in React.js and direct DOM manipulation in legacy li
Explain the difference between virtual DOM reconciliation in React.js and direct DOM manipulation in legacy libraries like jQuery.
Approach
- Clarify what is being asked and what a complete answer contains.
- State your assumptions explicitly before working the problem.
- Say what you would check first and why it is the highest-information step.
- Work from the requirement backwards to the design.
Follow-up
- What assumption would you test first?
- How would you know your answer was wrong?
How do you implement code splitting and lazy loading in a large-scale React.js application to improve initial
How do you implement code splitting and lazy loading in a large-scale React.js application to improve initial page load times?
Approach
- Clarify what is being asked and what a complete answer contains.
- State your assumptions explicitly before working the problem.
- Say what you would check first and why it is the highest-information step.
- Work from the requirement backwards to the design.
Follow-up
- What assumption would you test first?
- How would you know your answer was wrong?
What are the best practices for structuring HTML and CSS to ensure cross-browser compatibility and rapid rende
What are the best practices for structuring HTML and CSS to ensure cross-browser compatibility and rapid rendering performance?
Approach
- Clarify what is being asked and what a complete answer contains.
- State your assumptions explicitly before working the problem.
- Say what you would check first and why it is the highest-information step.
- Work from the requirement backwards to the design.
Follow-up
- What assumption would you test first?
- How would you know your answer was wrong?
How do you optimize UI rendering performance in mobile applications when dealing with deeply nested layouts?
How do you optimize UI rendering performance in mobile applications when dealing with deeply nested layouts?
Approach
- Clarify what is being asked and what a complete answer contains.
- State your assumptions explicitly before working the problem.
- Say what you would check first and why it is the highest-information step.
- Work from the requirement backwards to the design.
Follow-up
- What assumption would you test first?
- How would you know your answer was wrong?
Describe the architectural differences between MVC, MVP, and MVVM patterns in mobile application development.
Describe the architectural differences between MVC, MVP, and MVVM patterns in mobile application development.
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- State the consistency you need, and where you are willing to be stale.
Follow-up
- What breaks first when traffic grows ten times?
- How does this behave when that dependency is down for an hour?
Design a thread-safe cache mechanism in Java and explain how you would handle synchronization to prevent deadl
Design a thread-safe cache mechanism in Java and explain how you would handle synchronization to prevent deadlocks.
Approach
- Establish what changed and when, before forming any theory.
- Pick a bisection that eliminates candidates whichever way it turns out.
- Check the instrumentation before believing the symptom.
- Separate the trigger from the cause; the deploy is rarely the bug.
Follow-up
- What would you look at first, and what would it rule out?
- How would you tell a cause from a coincidence here?
How do you manage component lifecycle methods or hooks to prevent memory leaks in highly dynamic web applicati
How do you manage component lifecycle methods or hooks to prevent memory leaks in highly dynamic web applications?
Approach
- Establish what changed and when, before forming any theory.
- Pick a bisection that eliminates candidates whichever way it turns out.
- Check the instrumentation before believing the symptom.
- Separate the trigger from the cause; the deploy is rarely the bug.
Follow-up
- What would you look at first, and what would it rule out?
- How would you tell a cause from a coincidence here?
Built from the rounds and topics Times Internet candidates report.
Prepare, practise & reflect
One practical outcome each day. Spend longer where you need it.
0 / 7 done01Map the Times Internet loop
- Write out the reported sequence: Initial Screening, Online Coding Assessment, Technical Interviews, Techno-Managerial Round, HR Discussion.
- For each round, write one sentence on what it is judging, from the description above, and mark the one you are least ready for.
Deliverable: A one-page map of the 5 reported rounds, with the weakest marked.
02Work React.js
- Spend the session on React.js, which Times Internet candidates report being tested on.
- Write one worked example in React.js and time yourself on it.
Deliverable: One timed worked example in React.js.
03Work Java
- Spend the session on Java, which Times Internet candidates report being tested on.
- Write one worked example in Java and time yourself on it.
Deliverable: One timed worked example in Java.
04Work Algorithms
- Spend the session on Algorithms, which Times Internet candidates report being tested on.
- Write one worked example in Algorithms and time yourself on it.
Deliverable: One timed worked example in Algorithms.
05Answer out loud: Data Structures & Algorithms
- Answer aloud, timed: Implement an algorithm to create an array $B$ from a given array $A$ such that $B[i]$ is equal to the product of all elements of $A$ except $A[i]$, without using the division operator.
- Answer aloud, timed: Write a function to generate the mirror image of a binary tree.
Deliverable: Spoken answers to 2 reported Data Structures & Algorithms question(s), under time.
06Answer out loud: Backend Development & Core Java
- Answer aloud, timed: Explain the contract between `equals` and `hashCode` in Java and demonstrate what happens when this contract is violated.
- Answer aloud, timed: Walk through the execution lifecycle of a request in the Spring MVC framework.
Deliverable: Spoken answers to 2 reported Backend Development & Core Java question(s), under time.
07Answer out loud: Frontend & UI Engineering
- Answer aloud, timed: Explain the difference between virtual DOM reconciliation in React.js and direct DOM manipulation in legacy libraries like jQuery.
- Answer aloud, timed: How do you implement code splitting and lazy loading in a large-scale React.js application to improve initial page load times?
Deliverable: Spoken answers to 2 reported Frontend & UI Engineering question(s), under time.
Expand any day for tasks and deliverables. Your progress is saved on this device.
Behavioural rounds judge the decision you made and what it cost.
How do you handle local data persistence and synchronization with remote servers in an offline-first mobile ap
How do you handle local data persistence and synchronization with remote servers in an offline-first mobile app?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
Reverse your own decision and price the reversal
Describe a technical decision you made and later reversed. Pick one that cost something: a service you split and merged back, a cache you added and removed, an index you created that pushed the planner onto a worse plan, a projection you rebuilt from scratch. State what you believed when you decided, the measurement that changed your mind, how long the wrong version ran in production, and what the reversal cost in migrations, dual writes, and a deprecation window for callers you did not own.
Approach
- State the original rationale without irony, in the version you would still defend given what was known then. If it is not defensible, the story is about carelessness rather than judgement, and a different example serves you better.
- Give the measurement that moved with a before and after: the p99 that did not improve, the cache hit rate that sat at 40%, the plan that flipped to a sequential scan once the table passed a size you can name.
- Cost the reversal in steps, not adjectives: expand-and-contract deploys, the dual-write window, the callers who had to be notified, the rows already written in the wrong shape that had to be backfilled or abandoned.
- Distinguish reversal from rewrite by naming what you kept. Most good reversals preserve the schema or the interface and undo one decision inside it, which is also why they were affordable.
Follow-up
- What in that decision was irreversible, and did you know it was irreversible when you made it?
- How did you tell the people who had already built on top of the original decision?
Argue against a design, lose, and commit anyway
Describe a design you argued against and lost. State the failure you predicted as a named mechanism, not a feeling about complexity: two services that would need one transaction, a projection with no rebuild path, a write path with no idempotency key. Say what evidence you brought, what the decision maker weighed instead, and what you did after the decision was made: what you instrumented, what you wrote down, and whether the prediction came true. Five minutes.
Approach
- State the prediction in falsifiable form up front: the mechanism, the condition that triggers it, and the observable outcome. A prediction that cannot be checked also cannot be credited to you later.
- Show the evidence you had at the time and label each piece honestly as measured, analogous, or intuition. Keeping the intuition is fine; disguising it as data is the thing that erodes your standing in the next argument.
- Represent the opposing case at full strength, including the constraint you did not control: a fixed date, a team boundary, or the fact that the decision was cheap to reverse and yours was not.
- Make disagree-and-commit concrete. Name the artefact you left behind so the prediction could be settled without you: the alert and its threshold, the counter on the dashboard, the decision note that recorded the trade-off and the condition that would revisit it.
Follow-up
- What threshold on that alert would have proved you right, and did anyone ever look at it?
- If the same proposal arrived tomorrow with the same deadline, would you argue it the same way?
- 01
How do you handle local data persistence and synchronization with remote servers in an offline-first mobile app?
- 02
Describe a technical decision you made and later reversed. Pick one that cost something: a service you split and merged back, a cache you added and removed, an index you created that pushed the planner onto a worse plan, a projection you rebuilt from scratch. State what you believed when you decided, the measurement that changed your mind, how long the wrong version ran in production, and what the reversal cost in migrations, dual writes, and a deprecation window for callers you did not own.
- 03
Describe a design you argued against and lost. State the failure you predicted as a named mechanism, not a feeling about complexity: two services that would need one transaction, a projection with no rebuild path, a write path with no idempotency key. Say what evidence you brought, what the decision maker weighed instead, and what you did after the decision was made: what you instrumented, what you wrote down, and whether the prediction came true. Five minutes.
How difficult is the Software Engineer interview at Times Internet?
The interview difficulty is generally rated as average to difficult. While the coding rounds and technical concepts are straightforward, the process requires a strong grasp of computer science fundamentals, practical implementation details, and analytical puzzles.
Times Internet Software Engineer candidate reports ↗What is the typical preparation time required for this role?
Candidates typically spend 3 to 6 weeks preparing. Focus your preparation on practicing medium-difficulty DSA problems, reviewing core language/framework concepts, practicing logical puzzles, and studying system design principles.
Times Internet Software Engineer candidate reports ↗Are the interview rounds conducted online or in-person?
Depending on the hiring drive and location, interviews may be conducted entirely online via video conferencing or through face-to-face weekend drives at the Times Internet offices in Noida, Gurgaon, or Bangalore.
Times Internet Software Engineer candidate reports ↗Does Times Internet offer remote work options for Software Engineers?
Times Internet primarily operates on a hybrid or in-office model, with major engineering hubs located in Noida and Gurgaon. Be sure to clarify the specific location and hybrid policy with your recruiter early in the process. ##### Tip Times Internet is highly product-centric. Demonstrating a clear understanding of their digital properties—such as the user flow of ET Money or the content delivery speed of Times of India—can set you apart in managerial and HR discussions.
Times Internet Software Engineer candidate reports ↗What topics does Times Internet test in interviews?
Times Internet interviews most often cover Problem Solving, React.js, Algorithms, JavaScript, and Java. The exact emphasis depends on the specific role you apply for.
Times Internet Software Engineer candidate reports ↗Sources & methodology 3 sources ↗
Official role evidence, timestamped platform data and clearly labeled preparation advice.
- 01Times Internet Software Engineer candidate reports ↗
Company-reported rounds, questions and FAQ.
candidate · Accessed 2026-09-22 - 02PracHub Software Engineer practice ↗
PracHub practice material, not company-reported.
platform · Accessed 2026-09-22 - 03PracHub preparation framework ↗
PracHub preparation guidance.
platform · Accessed 2026-09-22