Lingua-e
← Back

Technical interview English

10 Technical Interview Questions Every Developer Should Know How to Answer in English

June 20, 2026

You know the concepts. The challenge is explaining them clearly, using the right vocabulary, and sounding confident while thinking out loud. This guide gives you the example answers and vocabulary you need.

Technical interviews at international companies are conducted entirely in English. The challenge is not just knowing the answer. It is being able to explain it clearly, use the right vocabulary, and sound confident while thinking out loud.

This article gives you 10 of the most common technical questions, with example answers and the vocabulary you need. For each question, you will see what the interviewer is really looking for, not just a definition.

10 Technical Interview Questions With Example Answers

10 preguntas de entrevistas técnicas con respuestas de ejemplo

1 / 10

What is a database index?

What they are really looking for

They want to know you understand the tradeoff, not just the definition. Faster reads come at the cost of slower writes and more storage. Mention that.

Example answer

An index is a data structure that makes queries faster by letting the database jump directly to the relevant rows instead of scanning the whole table. The most common type is a B-tree index. The tradeoff is that indexes take up extra storage and slow down writes, because the index has to be updated every time a row changes. You want to index columns you frequently filter or join on, and avoid indexing every column. For high-cardinality columns used in WHERE clauses, a single-column index works well. When you filter on multiple columns together, a composite index can be more efficient.

Key vocabulary

TermDefinition
indexA data structure that speeds up lookups by avoiding a full table scan.
full table scanWhen the database reads every row to find a match. Slow on large tables.
B-treeThe most common index structure. Keeps data sorted for fast range queries.
composite indexAn index on two or more columns.
overheadExtra cost in storage or performance caused by a feature.
tradeoffA situation where gaining one thing costs something else.
queryA request for data from a database.
lookupFinding a specific record in a dataset.

2 / 10

You are building a new product. Would you choose a monolith or microservices?

What they are really looking for

There is no universally correct answer. They want to see that you can reason about tradeoffs, not just recite buzzwords. Acknowledge context matters.

Example answer

It depends on where you are in the product lifecycle. For a new product with a small team, I would start with a monolith. It is simpler to deploy, easier to debug, and lets you move fast before you fully understand the domain. Premature decomposition into microservices adds operational complexity before you have the scale to justify it. That said, if the team is large and different parts of the system need to scale independently, microservices make sense. The key signals I would look for are: team size, deployment independence requirements, and whether different components have very different scaling needs. I have seen teams go microservices-first and spend most of their time managing infrastructure rather than building product.

Key vocabulary

TermDefinition
monolithA single deployable unit containing all the application logic.
microservicesAn architecture where the system is split into independent services that communicate over a network.
couplingHow dependent components are on each other. High coupling makes changes harder.
distributed systemA system where components run on different machines and communicate over a network.
operational complexityThe work needed to deploy, monitor, and maintain a system.
latencyThe time it takes for a request to travel and get a response.
deploymentThe process of releasing code to a running environment.
overheadExtra cost introduced by a design decision or infrastructure layer.

3 / 10

What can go wrong when caching?

What they are really looking for

They want to hear that you have thought beyond 'caching equals faster.' Real-world caching has failure modes. Name at least three.

Example answer

A few things can go wrong. The most common is stale data: the cache holds an old value after the source has been updated, and users see incorrect information. Deciding when to invalidate the cache is notoriously hard because it depends on how frequently data changes and how much staleness you can tolerate. Another issue is a cache stampede, sometimes called a thundering herd: the cache expires and hundreds of requests hit the database simultaneously before it is repopulated. You can address this with locking or probabilistic early expiration. A third issue is cold start: when the cache is empty, for example after a restart, all requests fall through to the database until the cache warms up, which can spike your database load. Finally, there is consistency: in a distributed system with multiple cache nodes, keeping all of them in sync adds another layer of complexity.

Key vocabulary

TermDefinition
cache invalidationThe process of removing or updating a cached value when the source changes.
stale dataData in the cache that no longer matches the source of truth.
cache stampedeWhen many requests hit the database at the same time because the cache expired. Also called thundering herd.
cold startWhen the cache is empty and all requests must go to the database until it fills up.
TTLTime to live. How long a cached value is kept before it expires.
eviction policyThe rule for deciding which cached items to remove when the cache is full.
cache missWhen a request cannot be served from the cache and must go to the source.
consistencyThe property that all parts of a system see the same data at the same time.

4 / 10

Two users click Buy at the same time. How do you handle it?

What they are really looking for

They want to see you understand race conditions at the database level, not just in application code. Mention transactions and a locking strategy.

Example answer

This is a classic race condition. Both users read the available quantity as 1, both decide they can proceed, and both write a purchase, leaving the quantity at -1. There are two common solutions. The first is optimistic locking: you add a version field to the inventory row. When you update, you check that the version has not changed since you read it. If it has, the transaction fails and you retry. This works well when conflicts are rare. The second is pessimistic locking: you lock the row with SELECT FOR UPDATE when you read it, so no other transaction can read or write it until you commit. This is safer but blocks concurrent users. Both approaches wrap the operation in a database transaction to make it atomic. I would lean toward optimistic locking for most e-commerce use cases because conflicts are infrequent.

Key vocabulary

TermDefinition
race conditionA bug where two operations interfere because they happen at the same time.
concurrencyMultiple operations happening at the same time.
optimistic lockingA strategy that assumes conflicts are rare and checks for them only at commit time.
pessimistic lockingA strategy that prevents conflicts by locking a resource as soon as it is read.
transactionA database operation that is treated as a single unit: all or nothing.
atomic operationAn operation that completes fully or not at all, with no partial state visible.
isolation levelA setting that controls how much transactions are isolated from each other.
idempotencyThe property where performing an operation multiple times gives the same result as doing it once.

5 / 10

A service handles 100 requests per day. Now it needs to handle 1 million. What changes?

What they are really looking for

They want to see you think systematically about scaling. Horizontal vs vertical. Where the bottlenecks are. What you would tackle first.

Example answer

The first thing I would do is identify the bottleneck, because the right answer depends on where the pressure is. For the application tier, the first step is making it stateless so you can run multiple instances behind a load balancer. At 1 million requests per day, horizontal scaling with a few app servers should handle the compute. The bigger risk is usually the database. I would look at adding a caching layer in front of it to absorb read traffic, adding read replicas for read-heavy queries, and reviewing connection pooling settings. If there are long-running operations like email sending or report generation, I would move those to an async queue so they do not block the request-response cycle. At this scale you also want to review your indexes and make sure you are not doing full table scans. Vertical scaling, adding more CPU or RAM to a single server, is often a quick fix but hits a ceiling. Horizontal scaling is the more sustainable path.

Key vocabulary

TermDefinition
horizontal scalingAdding more servers or instances to handle more load.
vertical scalingAdding more resources (CPU, RAM) to a single server.
load balancerA component that distributes incoming requests across multiple servers.
statelessAn application that does not store session data on the server, making it easy to scale horizontally.
bottleneckThe component that limits the overall throughput of the system.
connection poolA set of reusable database connections that avoids the overhead of opening a new connection for every request.
throughputThe number of requests a system can process per unit of time.
queueA component that holds tasks to be processed asynchronously.

6 / 10

What should be unit tested vs integration tested vs end-to-end tested?

What they are really looking for

They want to see you understand the testing pyramid and can make pragmatic decisions, not just recite the names of the three levels.

Example answer

I think of it as a pyramid. Unit tests are at the bottom: fast, isolated, and there should be a lot of them. They test individual functions or classes with all dependencies mocked or stubbed. I use them for business logic that has clear inputs and outputs. Integration tests sit in the middle: they test how components interact, like a service hitting a real database or calling a real external API. They are slower and there are fewer of them, but they catch bugs that unit tests miss because they test real boundaries. End-to-end tests are at the top: they simulate a real user in a real browser, going through a complete flow. They are the most expensive to write and the most likely to be flaky, so I keep them for the critical paths only, like checkout or login. The key principle is to test at the lowest level that gives you confidence.

Key vocabulary

TermDefinition
unit testA test that covers a single function or class in isolation.
integration testA test that covers how two or more components interact.
end-to-end test (e2e)A test that simulates a real user going through a complete flow in the browser.
test pyramidThe principle that you should have many unit tests, fewer integration tests, and even fewer e2e tests.
mockA fake object that replaces a dependency in a test.
stubA simplified version of a dependency that returns a fixed response.
flaky testA test that sometimes passes and sometimes fails without code changes.
regressionA bug that reappears after being fixed, or a new bug introduced by a change.

7 / 10

How would you design a URL shortener?

What they are really looking for

They want to see structured thinking. Ask clarifying questions first. Identify the data model, then the API, then scaling. A perfect answer matters less than a clear process.

Example answer

Before I design anything, I would ask a few clarifying questions. Is this for public use or internal? How many URLs per day? Do we need analytics? For a public service handling millions of URLs, here is how I would approach it. The core data model is simple: a table with the original URL and a short code, with the short code as the primary key. To generate the short code, I can either use a hash of the URL or generate a random ID. For the API: POST a long URL, get back a short URL. GET the short URL, redirect to the original. For scaling: the redirect path is read-heavy, so a cache in front of the database is critical. The database write happens once, but the read can happen millions of times. I would cache the mapping in something like Redis with a long TTL since URLs rarely change. For storage, even a billion URLs would fit in a few hundred gigabytes. The main scaling challenge is handling the redirect traffic at low latency.

Key vocabulary

TermDefinition
data modelThe structure of the data: tables, fields, and relationships.
schemaThe formal definition of a database structure.
read-heavyA system where reads far outnumber writes.
write-heavyA system where writes are the dominant operation.
CDNContent Delivery Network. A network of servers that serves content from locations close to users.
throughputThe number of operations a system can handle per unit of time.
API designThe process of defining the endpoints, request formats, and responses of an API.
requirementsThe specifications that define what a system must do.

8 / 10

Tell me about a difficult bug you solved.

What they are really looking for

They care about your debugging process and how you communicate under pressure. Use the STAR method. Emphasize the investigation, not just the fix.

Example answer

In my previous role, we had an intermittent bug where certain users were seeing duplicate records in their transaction history. It only happened in production and we could not reproduce it in staging. I started by adding more detailed logging around the write path to capture the exact timing of operations. After a few days, I noticed the duplicates always had timestamps within a few milliseconds of each other, which pointed to a race condition. I traced it to a retry mechanism in our payment service that was re-sending a request when it did not receive a response in time, but the original request had actually succeeded. The fix was to make the endpoint idempotent by adding a unique request ID and checking for it before processing. I also added a postmortem doc so the team understood why idempotency matters for payment operations.

Key vocabulary

TermDefinition
reproduceTo make a bug happen again so you can study it.
root causeThe underlying reason a bug occurred, not just the symptom.
stack traceA list of function calls that shows where an error occurred.
logA record of events that happened in a system, used for debugging.
race conditionA bug caused by two operations happening at the same time in an unexpected order.
edge caseAn unusual input or situation that reveals a bug.
hotfixA fix deployed urgently to address a critical bug in production.
postmortemA document written after an incident to analyze what happened and how to prevent it.

9 / 10

How would you approach a bug that is hard to reproduce?

What they are really looking for

They want to see methodical thinking under uncertainty. No interviewer expects you to have a magic solution. They want to see a process.

Example answer

My first step is always to add more observability: logging, metrics, or traces around the area where the bug seems to be happening. If I cannot reproduce it locally, I try to understand when it occurs. Is it time-based? Load-based? Specific to certain users or data? That pattern usually narrows down the cause. I then try to reproduce it in a staging environment with conditions that match production as closely as possible. If the bug started appearing after a recent change, I would look at the git history and narrow down which commit introduced it. For truly intermittent bugs, I look for anything that introduces non-determinism: concurrent operations, network timeouts, environment-specific configuration. The goal is to form a hypothesis and then design an experiment to confirm or rule it out.

Key vocabulary

TermDefinition
intermittentHappening only sometimes, not consistently. Used to describe bugs that are hard to reproduce.
flakyInformally: unreliable. Used for tests or bugs that occur unpredictably.
telemetryData collected from a running system: logs, metrics, traces.
hypothesisA proposed explanation for why a bug is occurring.
isolateTo separate a component or variable to test it independently.
narrow downTo reduce the number of possible causes by eliminating options.
environment-specificA bug or behavior that only appears in a specific environment (e.g. production but not staging).
reproduceTo make a bug happen again under controlled conditions.

10 / 10

Explain the difference between mutable and immutable in Python.

What they are really looking for

They want to see you understand references vs values, and the practical implications. Bonus points for mentioning the mutable default argument gotcha.

Example answer

A mutable object can be changed after it is created. A list is mutable: you can append, remove, or change elements in place. An immutable object cannot be changed. A string or a tuple is immutable: any operation that looks like it modifies a string actually creates a new one. The practical implication is that when you pass a mutable object to a function, the function can change the original, which can cause side effects that are hard to track. The most common gotcha is using a mutable object as a default argument in a function definition. For example, defining a function with a default argument of an empty list: def add_item(item, lst=[]) means that lst is created once when the function is defined and reused across calls. If you call add_item twice, the second call sees the list from the first call. The fix is to use None as the default and create the list inside the function.

Key vocabulary

TermDefinition
mutableCan be changed after creation. Examples: list, dict, set.
immutableCannot be changed after creation. Examples: str, int, tuple.
referenceA pointer to an object in memory. Assigning a mutable object to a variable gives you a reference, not a copy.
in-placeModifying an object directly without creating a new one.
side effectA change to state outside the scope of a function, caused by the function.
default argumentA value assigned to a function parameter if no argument is passed by the caller.
tupleAn immutable ordered sequence in Python. Similar to a list but cannot be changed.
dictionaryA mutable mapping of keys to values in Python.

How to Structure Your Answer When You Are Not Sure

Cómo estructurar tu respuesta cuando no estás seguro

You will not always know the perfect answer. Here is how to sound confident and structured even when you are thinking out loud:

  • 1

    Start by restating what you understand: 'So what you are asking is...'

  • 2

    State what you do know before addressing what you are less sure of.

  • 3

    Think through tradeoffs out loud: 'The advantage of X is... but the downside is...'

  • 4

    If you do not know something, say so directly and offer what you do know: 'I have not worked with X in depth, but based on what I know about Y, I would expect...'

  • 5

    Close your answer clearly: 'Does that answer your question? I am happy to go deeper on any part.'

Related Articles

Ready to practice your English at work?

Lingua-e has interactive exercises built around real developer conversations: standups, code reviews, retrospectives, and more. Practice until it comes naturally.

Try Lingua-e for free
Roxana Lafuente

Written by

Roxana Lafuente

Lingua-e's founder

Roxana Lafuente is a software engineer with 8+ years of experience. At the beginning of her career, even though she had already passed the First Certificate in English, she still froze every time she had to speak up in the daily standup. That was a gap nobody was fixing. After 2,000+ standups, she figured out what actually builds fluency: practice that looks like your real work. She built Lingua-e so other developers wouldn't have to take the long road to feel confident working in an international development environment.