From cbe3b10442ee4f962bf31f3d5aaad695984e91ec Mon Sep 17 00:00:00 2001 From: SirBlob Date: Sat, 31 Oct 2026 08:55:38 -0400 Subject: [PATCH] Add interview questions Co-Authored-By: Claude Opus 5.5 --- INTERVIEW_QUESTIONS.md | 44 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 INTERVIEW_QUESTIONS.md diff --git a/INTERVIEW_QUESTIONS.md b/INTERVIEW_QUESTIONS.md new file mode 100644 index 0000000..187025c --- /dev/null +++ b/INTERVIEW_QUESTIONS.md @@ -0,0 +1,44 @@ +# Interview Questions + +## Before coding + +1. Walk me through the code. What does each file do, and how does a trade move through the system? +2. Which assumptions would you check with me before you touch anything? +3. CI is green but the ticket says the code is broken. What does that tell you, and where do you look first? +4. How would you reproduce the ticket? Can you do it with a smaller input than `main.py` uses? + +## Logger + +5. The logs show "no errors". How would you prove whether an error really did not happen or it happened and was not logged? +6. The log lines don't match their trades. Why could the context be correct when you log but wrong when the line is written? +7. Why might someone buffer log records? What are the risks? +8. How does Python's standard `logging` module avoid the same problems? Name the specific mechanisms. +9. Would you replace this logger with `logging`? What would that cost, and what would you gain? +10. How would you test a logger whose output contains a timestamp? + +## State and data model + +11. Who owns a `Trade` once it is passed to `Ledger.apply`? How would you enforce that in the code? +12. Name two or more ways to stop callers from changing a `Trade`. What does each one cost? +13. The EOD rebuild swallows `ValueError`. Is that the right policy? What would you change? +14. Why did the existing rebuild test still pass? + +## Positions and P&L + +15. Work this out by hand: buy 100 @ 100, then sell 150 @ 105. What are `qty`, `avg_price`, and `realized`? +16. Which edge cases of `Position.update` would you test? Think about zero, flips, shorts, and adding to a short. +17. Should prices use `float`? What would you use in production, and why? + +## Tests + +18. Which existing tests could never fail? Explain why each one passes. +19. How do you show that a new test really detects a bug? +20. Would property-based testing help here? What property would you check? +21. What would you add to CI so that weak tests like these get caught? + +## Wrap-up + +22. If you could ship only one fix today, which one would you pick, and why? +23. What would you add so Ops can answer this kind of ticket without engineering? +24. How did you check the AI's suggestions? Where was it wrong, or where did it not help? +25. In production, how would you find positions that were already corrupted by these bugs?