Interviews and your portfolio
Show your work, and solve interview problems the way professionals do.
Create a free account Try part of it here
Why it matters
Skills only change your life if someone can see them. Hiring managers see hundreds of applicants who finished the same tutorials. What stands out is evidence that you can do the job: projects built like a professional would build them, and interviews where you think clearly out loud. Both can be learned, and you already have the raw material in the capstones you've built.
What you'll be able to do
- Build a portfolio that shows professional work: a few deep projects with tests, evals and write-ups
- Know the usual interview loop for AI and software engineering roles
- Solve coding problems with a method: clarify, give examples, start simple, improve, test
- Tell work stories with the STAR structure and real numbers
What it covers
- A portfolio that gets interviews
- A method for coding problems
- Test the awkward inputs
- Behavioral questions: STAR
- From a duty to a result
- Keep growing
- Brute force, then a hash map
- What gets people hired
A portfolio that gets interviews
An artist gets hired on a few finished paintings, not a hundred sketches. Three deep projects beat ten shallow ones. For each, show what a professional would:
- a README with what it does, why, a quick start, and a screenshot or short demo;
- tests, and for AI projects an eval set with results ("answers 87% of 200 test questions correctly; 1.2 s median latency; $0.004 per query");
- a short write-up of decisions and trade-offs: what you tried, what failed, what you'd do next;
- clean commits and a working deploy, if it's a web app.
Your capstones are a strong start: a RAG app, an MCP server, a coding agent, a production AI service. Extend one into something you care about, such as a tool for your old job, your hobby or a local business, and it stops looking like coursework.
Also valuable: contributions to open source, even small fixes and docs; blog posts explaining what you built; and talks at local meetups.
In plain words: show that you can finish something real, measure it and explain your choices.
The interview loop
An interview process is a series of separate tests, each looking for something different. Most loops for AI engineers and software engineers include:
| stage | what they check |
|---|---|
| recruiter call | fit, interest, logistics |
| technical screen | a coding problem, 45 to 60 minutes |
| coding rounds | problem solving, clean code, testing |
| system design | designing a service, often with AI parts (Phase 11) |
| AI or ML depth | how models, RAG, evals, agents work (Phases 1 to 6, 9, 10) |
| behavioral | how you work with people, handle conflict, learn from failure |
Some companies use a take-home project instead of coding rounds. Treat it like a portfolio piece: tests, a README, and notes on trade-offs.
Show the answer
A deployed support-ticket triage tool with tests, an eval set, results and a write-up of trade-offs
It shows the whole job: building, measuring, deciding and explaining.
A method for coding problems
A good doctor asks questions before writing a prescription. Interviewers want to see how you think, not only the answer.
- Clarify. Restate the problem. Ask about input size, empty input, duplicates, negative numbers, ties, whether the input is sorted, what to return when there's no answer.
- Examples. Work one or two small examples by hand, including an edge case.
- Start simple. Say the brute-force idea and its cost, such as "check every pair, O(n²)".
- Improve. Look for the data structure that removes the repeated work: a hash map, sorting, two pointers, a heap. Say the new cost.
- Code clearly. Good names, small helpers. Talk as you write.
- Test. Run your examples through the code by hand, then edge cases. Fix bugs calmly; finding your own bug is a good sign, not a bad one.
It's the same habit as professional work: understand the problem, check with examples, and test.
Test the awkward inputs
Most candidates test the example they were given. Say the awkward cases out loud too, because that's what interviewers listen for.
def best_gain(prices): """The most you could make buying once, then selling once later.""" if len(prices) < 2: return 0 lowest, best = prices[0], 0 for price in prices[1:]: best = max(best, price - lowest) lowest = min(lowest, price) return best cases = {"the example": [7, 1, 5, 3, 6, 4], "only falling": [9, 7, 5], "one price": [5], "empty": [], "all equal": [3, 3, 3]} for name, prices in cases.items(): print(f"{name:<12} {best_gain(prices)}")
One pass makes this O(n), and each awkward case has a sensible answer: if the price only falls, you don't buy. Running these before you say "done" shows the habit interviewers hope to see.
Behavioral questions: STAR
Tell it like a short story: set the scene quickly, say what you did, and end with how it turned out. Answer "tell me about a time when..." with Situation, Task, Action, Result. Keep the situation short, spend most of the time on your actions, and end with a concrete result: "cut response time from 4 s to 600 ms", "the team adopted it". Prepare five or six stories: a hard bug, a conflict, a failure and what you learned, a project you led, a time you changed your mind.
From a duty to a result
Résumé bullets and interview stories both get stronger with a measured result. This quick check flags lines that only describe a duty.
import re def has_result(line): return bool(re.search(r"\d", line)) and bool(re.search(r"\b(cut|raised|reduced|saved|grew|from|to)\b", line.lower())) for line in ["Responsible for the checkout service", "Worked on improving API performance", "Cut p95 checkout latency from 2.1 s to 300 ms by adding a cache", "Reduced support tickets 30% with an agent that answers order questions"]: print("strong " if has_result(line) else "vague ", line)
The first two could describe anyone. The last two say what changed and by how much, and they give an interviewer something to ask about. Don't overstate your numbers, though, since you'll be asked how you measured them.
Keep growing
This field changes monthly. Doctors keep reading journals long after medical school, and you'll need the same habit. Read release notes and docs from the tools you use, read a paper a month, rebuild something to understand it, and teach what you learn. The habits from this academy, building, measuring and explaining, are what keep you professional as the tools change.
Show the answer
Clarify: does order matter, what types, how big, what about an empty list?
The answer depends on these. Keeping order rules out a plain set, for example.
Brute force, then a hash map
Find two numbers that add up to a target. Same answer, very different cost.
def pair_slow(nums, target): for i in range(len(nums)): for j in range(i + 1, len(nums)): if nums[i] + nums[j] == target: return (i, j) return None def pair_fast(nums, target): seen = {} for j, n in enumerate(nums): if target - n in seen: return (seen[target - n], j) seen.setdefault(n, j) return None nums = [8, 3, 11, 5, 7] print(pair_slow(nums, 12), pair_fast(nums, 12))
The slow version checks every pair, O(n²). The fast one remembers what it has seen, O(n). Saying both, and why, is what interviewers listen for.
For each number, the loop asks whether its partner was already seen. At 7 it finds 5, stored at index 3, in one pass.
setdefault keeps the first index of each number. What does this print?seen = {}
for i, n in enumerate([4, 7, 1, 7]):
seen.setdefault(n, i)
print(seen)Show the answer
{4: 0, 7: 1, 1: 2}
The second 7 doesn't replace the first, because the key already exists, so the result is {4: 0, 7: 1, 1: 2}. Dicts keep one value per key.
What gets people hired
Depth beats number of projects. One project that's deployed, tested and written up teaches an interviewer far more than ten tutorials. Be ready to explain why you made each decision, and what you'd change now.
Clarify before you code. Jumping straight in looks keen, and it often means solving the wrong problem. Two minutes of questions shows the judgment interviewers are looking for.
Think out loud. A math teacher wants to see your working, not only your answer. An interviewer can't give you credit for what they can't see. If you go silent for ten minutes and present an answer, they've learned little about how you work. If you say "I'm stuck on the empty case", they can help, and that conversation is part of what they're assessing.
Finish your stories with a result. "We improved the API" could mean anything. "Latency fell from 2 s to 300 ms" is a story they'll remember.
Practice what you just read
- 3 code examples you can edit and run
- a practice exercise that checks your code
- a 5-question quiz
- 4 review cards for spaced repetition
Try a quiz question
What should you do first in a coding interview?