Lyft interview questions
Big tech · 4 questions reported
- junior 1
- mid 2
- senior 1
These are 4 technical questions candidates reported being asked in Lyft interviews for AI engineer, ML engineer and applied AI engineer roles, each with a model answer you can say out loud in a minute or two. They cover success criteria, rag, fine-tuning & alignment and training: 1 junior, 2 mid-level and 1 senior questions. Every question comes from a public interview write-up that names Lyft.Updated
Lyft success criteria and rubrics questions
Model answer
It adds the same constant to every logit, a monotonic shift, so the order is unchanged and ranking metrics like AUC stay identical. At a fixed threshold the boundary moves: a positive shift labels more examples positive, so recall rises or holds and precision usually falls. Calibration breaks, since predicted probabilities no longer match observed rates. It's equivalent to moving the threshold, which is how prior correction after resampling works.
Lyft retrieval-augmented generation questions
Model answer
Permissions first: store each chunk with its source's access-control list and filter by the user's identity inside the retrieval call, so the model never sees what the user can't open. Sync ACL changes fast; stale permissions are a leak.
The agent plans searches, reformulates and opens documents, but every answer must cite passages, and a checker verifies claims against them. With no relevant evidence, or conflicting evidence, it abstains and suggests owners. Evaluate recall, citation accuracy, correct abstention, and permission tests with users of different access.
Lyft fine-tuning and alignment questions
Model answer
A transformer is an architecture. An embedding model is usually a transformer encoder trained to turn a text into one vector, so similar texts sit close; a generative one predicts the next token. Pretraining learns general language from unlabeled text; fine-tuning adapts those weights to a task with a smaller, targeted dataset.
Lyft training and optimisation questions
Model answer
def kmeans(points, init, max_iter=100, tol=1e-9):
cents = [list(c) for c in init]
for _ in range(max_iter):
groups = [[] for _ in cents]
for p in points:
d = [sum((a - b) ** 2 for a, b in zip(p, c))
for c in cents]
groups[d.index(min(d))].append(p)
new = []
for c, g in zip(cents, groups):
if not g:
new.append(c)
continue
n = len(g)
new.append([sum(x) / n for x in zip(*g)])
shift = max(sum((a - b) ** 2
for a, b in zip(c, m))
for c, m in zip(cents, new))
cents = new
if shift <= tol:
break
return cents, groups
State each rule before coding. Given initial centroids make runs deterministic. A tie goes to the lowest-index centroid, which taking the first minimum does. An empty cluster keeps its previous centroid; reseeding at the farthest point is the alternative. Stop when no centroid moves more than a tolerance, or at the iteration cap. Interviewers weigh these edge cases more than the loop.
Each question comes from a public interview write-up or video that names Lyft; the answers are ours. Not affiliated with Lyft.