Went through the Citadel SWE interview loop twice. First time, rejected after onsite. Second time, got an offer. The delta was almost entirely prep quality and specificity.
Here's what I'd do differently from day one.
Coding prep. Don't just grind LeetCode mediums and hards. Practice writing code you'd actually commit. Use named variables. Write clean helper functions. Add brief inline comments where logic is non-obvious. Time yourself not just on getting to a solution but on presenting it as if a teammate was reading it cold. Citadel interviewers read code the way they'd read a PR. Graph problems, heap problems, and anything touching sorted data structures showed up in both my loops.
System design prep. You need a financial domain lens. Practice designing: a real-time market data ingestion pipeline that can't drop events, a portfolio reconciliation system with strict consistency requirements, a rate-limiting layer for a trading API. The generic 'design a social feed' prep is necessary but not sufficient. Read about eventual consistency vs strong consistency tradeoffs in financial contexts specifically.
Behavioral prep. Citadel asks about collaboration under pressure, navigating disagreement with technically strong peers, and moments where you had to make a call with incomplete information. STAR format works but your stories need real teeth. Vague "we worked together and it went well" answers land badly. Specificity and a bit of tension in the story helps.
Domain knowledge. You don't need to be a finance person. But you should know what a market maker does, broadly why latency matters in trading, and what 'front office vs back office' tech means. Takes maybe four hours of reading to get to conversational fluency. Worth it.
Timeline. I prepped for about six weeks the second time. The first time I prepped for two weeks and showed up confident and undercooked. Don't make that mistake.