Just finished Persona’s OA — and it’s truly different from traditional LeetCode-style algorithm rounds.
The entire assessment is 90 minutes with 4 questions, following a level-unlocking system (you must finish one level to unlock the next).
It heavily focuses on Object-Oriented Design (OOD) + practical system design implementation.
A lot of code, but very passable once you structure your thinking clearly.
This guide fully breaks down real question patterns, key concepts, and step-by-step solving strategies you can use as your exact prep template.
I. Persona OA Core Information
- Platform: Codesignal
- Duration: 90 minutes
- Format: 4 questions, divided across 4 sequentially unlocked levels
- Style: Scenario-based OOD + simplified system design (not pure algorithms)
- Similar To: Meta, Circle, Coinbase OOD-style OAs
-
Key Assessments:
- Requirement clarification
- API design
- Data structure organization
- Edge-case handling
- Incremental system extension abilities
II. The 4 Levels — Real Question Patterns + Key Ideas + Critical Points
Level 1 — Basic File Operations
Core Requirements
Implement an in-memory cloud storage system with 3 basic interfaces:
-
add_file(name: str, size: int) -> bool -
copy_file(name_from: str, name_to: str) -> bool get_file_size(name: str) -> Optional[int]
How to Solve
- Use a dict as the core file store.
- Store file attributes as values—this allows extension in later levels.
- Handle duplicates, missing files, and retrieval gracefully.
Key Points
- Clean, consistent API design
- Hash table (dict) fundamentals
- Must cover duplicate and non-existent file scenarios
Level 2 — File Search by Prefix and Suffix
Core Requirements
Add two search functions:
-
find_by_prefix(prefix: str) -> List[str] find_by_suffix(suffix: str) -> List[str]
How to Solve
- Iterate over all file names.
- Use
startswithandendswith. - Handle empty prefix/suffix and return all files if needed.
Key Points
- Straightforward string matching
- No need for optimization (trie, indexing, etc.)
- Maintain compatibility with Level 1
Level 3 — User Management + Quotas (Hardest Section!)
Core Requirements
Introduce user accounts + quota limits:
-
add_user(user_id: str, capacity: int) -> bool -
add_file_by(user_id: str, name: str, size: int) -> Optional[int] update_capacity(user_id: str, capacity: int) -> Optional[int]
How to Solve
Two new structures:
- User dictionary: stores quota, used capacity, and owned files
- Extended file dictionary: store size + owner
Critical Logic
- Validate all failure scenarios for uploads
- Enforce quotas
- Implement a deterministic deletion policy:
- Delete largest files first
- If same size → delete lexicographically larger names first
Key Points
- Linked data structures (file ↔ user)
- Complex business logic
- Must maintain consistency across all dictionaries
- Most time-consuming level → plan accordingly
Level 4 — Compression & Decompression
Core Requirements
Extend files to support:
-
compress_file(name: str) -> bool decompress_file(name: str) -> bool
How to Solve
Extend file metadata further:
- Add
is_compressed - Add
original_size
Compression: halve size, mark as compressed
Decompression: restore original size
Also:
- Update user’s used storage whenever size changes
- Validate missing files or repeated compression
Key Points
- Status flag management
- Data synchronization across file + user structures
- Incremental system extension
III. Critical Tips to Succeed (Battle-Tested)
1. Decompose requirements before coding
List:
- What data structures are needed
- Success conditions
- Failure conditions
- Edge cases
2. Design data structures for extensibility
Store file data as objects/dicts early — saves massive refactoring later.
3. Don’t over-optimize
- Prefix/suffix search using simple iteration is enough.
- Time should be reserved for Level 3.
4. Cover every edge case
Especially Level 3 failure scenarios:
- User not found
- Duplicate file name
- Not enough quota
5. Practice OOD-style OA beforehand
Meta, Circle, Coinbase OAs are very similar.
IV. Preparation Resources & Pitfalls
Recommended Prep
- Codesignal familiarity
- Practice OOD/OA patterns
- Rehearse dictionary-based data modeling
Common Pitfalls
- Wrong deletion sort order in Level 3
- Forgetting to update user storage when compressing/decompressing
- Not tracking original file size
Persona’s OA tests your ability to iteratively build a system, not solve algorithm puzzles.
If you understand each level’s real intent and keep your structures clean, you can absolutely pass.
Need Extra Help?
Still struggling with OOD-based online assessments from top companies like Persona, Meta, Circle, Coinbase?
Programhelp is here to help:
- Remote, seamless OA support (ensuring all test cases pass)
- Real-time voice guidance during coding
- Step-by-step reasoning assistance
- Targeted edge-case reminders
- Complete OA → Interview prep coverage
We help you break down complex OOD/system design questions, avoid hidden pitfalls, and breeze through your OA — bringing you one step closer to your offer.
Good luck!

Top comments (0)