Backend work at a company that sells cloud software for managing customers means serving many businesses from shared systems, while each business adds its own fields, rules and code. Prepare to talk about limits that keep one customer from slowing the rest, rules for who can see which record, loading large files of records, and bugs that appear only in one customer's unusual setup. What to show here: shared systems that stay fair and safe for every customer. Each question below has what the interviewer is checking, an answer frame and a sample spoken answer to adapt.
“In my last role, one internal team called our search service in a tight loop during their nightly job, and search slowed down for everyone. I proposed a limit on requests per client per minute. That team objected, because their job would take longer. I showed them the latency charts and offered a batch endpoint that could answer many lookups in one call. I set the limit from the usage of normal clients, with room above it, and returned a clear error that said when to retry. Their job ended up faster with the batch call. The result was your result.”
Weak answers impose a limit with no explanation and no other path, or drop it as soon as someone complains.
“A customer reported that saving an order sometimes took very long, and nobody else had the problem. I could not reproduce it on a standard setup. With their permission, I copied their configuration to a test environment and compared it with a default one. They had added a large number of optional fields, and one of our queries loaded every field for each line of the order. With a normal setup this was cheap, but with theirs it was slow. I changed the query to load only what the save needed, and added a test with a heavy configuration. The result was your result.”
Weak answers close the ticket as not reproducible, or tell the customer their setup is wrong.
“Checking each deal against the manager chain while reading would be slow for a list with many rows. I would compute access ahead of time in a share table, where each row says that this user or group can see this record, and why. Managers are handled through groups: each manager has a group that contains everyone below them, so a deal shared with the owner is visible to the groups above. A list query then joins deals to the share table for the current user's groups. The cost is on change. When someone moves to a new manager, a background job updates group membership.”
Weak answers filter in application code after loading all the rows, or forget what happens when the reporting chain changes.
“I would give every run a budget. The runtime counts processor time, memory, the number of database queries and the rows touched. When the code goes over any of them, the run is stopped, the whole transaction is rolled back, and the customer gets an error that names the limit they hit. The limits are published, so developers can design for them. The most common mistake is a query inside a loop over records, so I would hand the code all the records of a save in one list and document how to query once for the whole list.”
Weak answers trust customers to write good code, or stop the code without a clear error and a rollback.
“I would not process the file inside one request. The API accepts the file and returns a job id, and the customer asks for the status later. In the background I split the file into batches and process each in its own transaction. Inside a batch, a row that fails validation is written to an error file with its row number and the reason, and the good rows are still saved. At the end the customer can download the successes and the failures. To make a retry safe, each row can carry an outside id, and I update the record if that id already exists.”
Weak answers use one huge transaction, or report only that the load failed without saying which rows.
“I would keep two layers. The metadata layer says, for each customer, which record types exist, which fields each has, and their data types. The data layer is a shared table where each row has the customer id, the record type and a set of general value columns or one document column. The metadata maps a field name to its place. Every query is translated through that map. The hard part is speed, because a general column cannot have one index per customer field. So for fields that a customer filters on, I would copy the values into a separate index table with typed columns.”
Weak answers create tables for each customer without thinking about schema changes across a great many customers.
“First I would stop the damage by asking the customer to pause the sync, or by blocking the creating call for a short time. Then I would look at the request logs from the night the duplicates started. A common cause is that the sync timed out, retried, and our side created the record twice because nothing identified the repeat. I would count the duplicates and check which copy has deals or cases attached, because a merge must keep those links. After the cleanup, I would make the create call accept an outside id or a request key. I would write the customer a clear summary.”
Weak answers delete the newer copies without checking linked records, or fix the data and leave the cause in place.
“What interests me is that the backend here is not one application. It is a platform where each business adds its own fields, rules and code, and all of them run on shared systems. That means I cannot assume what the data looks like, and I have to design limits that are fair to everyone. I enjoyed a smaller version of this in my current job, where I built configurable rules for our customers. I also like that the users are sales and service teams doing real daily work. I want to learn how to keep such a flexible system fast.”
Weak answers give reasons that fit any large software company and do not mention shared systems or customisation.
No figures on this page: pay depends on the level, the city and the offer in front of you. When the offer comes, the free salary negotiation script helps with that part.
ClapAssist is an AI interview assistant for Mac and Windows. It listens to the interview on your computer and shows you what to say, in short lines you can read while you talk. Your live interview audio and screen are never stored. Your resume and notes are saved to your account so the app fills them in on any computer. It is hidden from screen share on every plan, including Free; only you can see it.