Interview Day Guide¶
Practical, printable reference for ASI interview day.
What to Print & Bring¶
Printed Materials (in this order on your desk):
07-interview-day-guide.md(this sheet) -- top of stack for quick pattern lookup01-python-stdlib.md-- collections, heapq, itertools, bisect03-algorithm-templates.md-- sliding window, binary search, BFS/DFS, DP, backtracking05-common-patterns.md-- pattern recognition triggers04-big-o-complexity.md-- complexity verification06-system-design.md-- for system design round (L7+)- RESEARCH.md first page (company overview, products, tech stack)
Physical Items: - Notepad + pen (for sketching graphs, trees, state transitions) - Water bottle - Charger plugged in
Pre-Interview Warmup (30 min before)¶
- Solve 1 easy problem (10 min) --
src/algo/arrays/two_sum.pyorsrc/algo/stacks_queues/valid_parentheses.py. Gets your brain in coding mode. - Quick review (10 min) -- skim reference sheet 01 (Python stdlib) + 03 (algorithm templates). Focus on function signatures, not reading every line.
- Body prep (10 min) -- stretch, hydrate, 3 deep breaths. Use the bathroom. Close Slack/email. Set phone to DND.
Browser Tabs to Open¶
Open these before the interview starts:
| Tab | URL | Purpose |
|---|---|---|
| 1 | https://docs.python.org/3/library/collections.html | Counter, defaultdict, deque |
| 2 | https://docs.python.org/3/library/heapq.html | heappush, heappop, nlargest, nsmallest |
| 3 | https://docs.python.org/3/library/itertools.html | combinations, permutations, accumulate |
| 4 | https://docs.python.org/3/library/bisect.html | bisect_left, bisect_right, insort |
| 5 | https://www.bigocheatsheet.com/ | Data structure & sorting complexities |
| 6 | https://visualgo.net/ | Algorithm visualization (graphs, sorting, trees) |
| 7 | https://docs.python.org/3/library/typing.html | Type hints reference |
| 8 | https://www.airspace-intelligence.com/platform | ASI PRESCIENCE platform (CEO chat prep) |
Interview Flow & Prep by Round¶
Stage 1: Pre-screen¶
Headhunter chats with CTO and hiring manager based on FOSS contributions, PR experience, etc. No prep needed -- this is about your existing body of work.
Stage 2: Hiring manager interview¶
Role fit, experience, expectations. Be ready to discuss your background, why ASI, and what you bring.
Stage 3: Engineering lead interview¶
Technical depth, architecture thinking, team dynamics. Print sheet on desk: 06 (system design) for reference.
Stage 4: Backend algo deep dive (1-3 hrs)¶
Tabs: 1-5 for quick stdlib lookups and complexity verification. Print sheets on desk: 01, 03, 04, 05.
Approach for each problem: 1. Read the problem fully -- twice. Underline constraints. 2. State your approach out loud before coding. 3. Write clean code with type hints. 4. Test with the given examples + one edge case. 5. State time and space complexity.
Think out loud the entire time. Silence = lost signal.
Stage 5: Frontend / cross-team engineering deep dive (1-3 hrs)¶
Tabs: None needed (they show you code). Print sheet on desk: 01 for stdlib reference, 05 for common patterns.
5-step framework for code review: 1. Read slowly -- skim signatures and docstrings first, then trace one path. 2. Identify the "smell" -- nested loops, missing error handling, N+1 queries, unbounded cache. 3. Trace with concrete input -- pick a small input and walk through the code line by line. 4. Name the pattern/antipattern -- "This is an N+1 query pattern" or "This cache has no eviction policy." 5. Propose fix with complexity analysis -- "Replace the nested loop with a hash map lookup, O(n^2) -> O(n)."
Problem decomposition framework: 1. Restate the problem in your own words. Confirm understanding. 2. Identify sub-problems. Draw a diagram (use your notepad). 3. Map each sub-problem to a known algorithm or data structure. 4. Define interfaces between components. 5. Discuss tradeoffs: time vs space, accuracy vs speed, complexity vs maintainability.
Stage 6: On-site intensive (6-8 hrs)¶
All-day in-person. Multiple rounds covering algorithms, system design, code reading, and collaboration.
System design framework (30 min per round): - 5 min: Requirements -- functional + non-functional. Ask clarifying questions. Estimate scale (QPS, data volume, latency target). - 5 min: High-level design -- draw boxes and arrows. Identify core components. - 15 min: Deep-dive components -- pick 2-3 to detail. Schema, APIs, data flow, failure modes. - 5 min: Tradeoffs -- consistency vs availability, cost vs performance. Name alternatives you considered.
Stage 7: CEO interview¶
Tab: 8 (ASI website / PRESCIENCE platform page).
Prepare 3-4 questions showing genuine interest: - "How is PRESCIENCE evolving beyond aviation into other verticals like maritime and rail?" - "What's the biggest technical challenge the engineering team is tackling right now?" - "How does the team balance defense vs commercial product priorities?" - "What does the path from Series B to the next stage look like for ASI?"
Culture, vision, team fit. Be authentic, curious, and concise.
Stage 8: Offer & negotiation¶
No prep in this guide -- but know your numbers and priorities going in.
Quick-Access Patterns Checklist¶
When you see a trigger word in the problem statement, reach for the corresponding pattern:
| Trigger | Pattern | Template Location |
|---|---|---|
| "subarray", "substring", "contiguous" | Sliding window | ref 03 SS3 |
| "sorted array", "search", "minimize maximum" | Binary search | ref 03 SS1 |
| "shortest path", "level by level", "minimum steps" | BFS | ref 03 SS2 |
| "connected components", "group", "union" | DFS / Union-Find | ref 03 SS2, SS6 |
| "k-th largest/smallest", "top k", "closest k" | Heap | ref 02 SS(heap) |
| "pairs that sum to", "two values" | Two pointers / hash map | ref 05 SS2 |
| "overlapping intervals", "merge ranges" | Merge intervals / sort by start | ref 05 SS(intervals) |
| "all combinations", "all subsets", "generate" | Backtracking | ref 03 SS5 |
| "maximum/minimum cost", "number of ways" | Dynamic programming | ref 03 SS4 |
| "dependency order", "prerequisites", "schedule" | Topological sort | ref 03 SS(topo) |
| "prefix", "autocomplete", "word search" | Trie | ref 02 SS(trie) |
| "next greater", "previous smaller", "monotonic" | Monotonic stack | ref 05 SS(stack) |
| "sliding window maximum/minimum" | Monotonic deque | ref 05 SS(deque) |
| "cycle detection", "linked list middle" | Fast & slow pointers | ref 05 SS(pointers) |
| "palindrome", "parentheses matching" | Stack | ref 02 SS(stack) |
Emergency Debug Checklist¶
When you're stuck during a coding round:
| Symptom | Check |
|---|---|
| Off-by-one error | Check loop bounds: < n vs <= n. Check index ranges: 0-indexed vs 1-indexed. |
| Wrong answer | Trace with the simplest possible input (n=1 or n=2). |
| Time limit exceeded (TLE) | Look for O(n^2) that can become O(n log n) or O(n). Common fix: replace inner loop with hash map or binary search. |
| Can't think of approach | Ask: "What data structure gives me O(1) lookup?" (hash map). "Can I sort first?" "Can I use a seen set?" |
| Still stuck | Simplify: solve for a smaller version first. Build from brute force, then optimize. |
| Recursive solution has bugs | Check base cases first. Draw the recursion tree for n=3. |
| Memory limit exceeded | Are you storing all results? Can you stream / use constant space? Iterative DP instead of memoization? |
Golden rule: If stuck for more than 3 minutes, talk to your interviewer. Say: "I'm considering X and Y approaches. X has this tradeoff, Y has that. I'm leaning toward X because..." They want to help.