← Verkada Inc. Interview Insights

Verkada Inc.·Software Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
Apr 2026

Summary

System design round at Verkada for a software engineering role. The whole thing centered on one problem but went pretty deep, covering data modeling, storage choices, and scaling concerns. Left feeling okay about it but not certain.

Questions Asked (1)

Q1

Design an access control system that supports looking up all doors a person can open, looking up all people who can open a given door, and granting a person access to a door via an admin operation.

System DesignData ModelingTechnical Trade-offs
Author's notes

The core of the problem is just a many-to-many relationship, which I spotted pretty fast.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and scale, then propose a data model with a many-to-many mapping between people and doors, and discuss efficient indexing for bidirectional lookups. Finally, cover the admin grant operation, consistency, and trade-offs between normalized and denormalized approaches.

Pro tip: Emphasize that access control is security-critical, so you should discuss audit logging, idempotency, and how to handle revocation and propagation delays. Also, mention that Verkada's system likely involves real-time updates and edge devices, so consider caching and eventual consistency.

1. Clarify Requirements and Scale

Ask about the number of people, doors, and expected query rates. Determine if access decisions need to be real-time, and whether there are hierarchical groups or roles.

2. Design Core Data Model

Propose a many-to-many relationship between Person and Door, likely via an AccessGrant table. Discuss using a relational database with proper indexing, or a NoSQL approach for scale.

3. Optimize for Bidirectional Lookups

Explain how to efficiently query all doors for a person and all people for a door. Suggest indexing on both person_id and door_id, and consider denormalization or caching for performance.

4. Implement Admin Grant Operation

Describe the API for granting access, ensuring idempotency and atomicity. Discuss how to handle concurrent grants and the need for audit logs.

5. Address Consistency and Trade-offs

Discuss consistency models (strong vs eventual), caching strategies, and how to handle revocation. Compare SQL vs NoSQL, and mention sharding or partitioning if needed.

Key Points to Mention

  • Many-to-many mapping with an AccessGrant table (person_id, door_id, metadata)
  • Indexing on both person_id and door_id for efficient bidirectional queries
  • Idempotent and atomic grant operation with audit logging
  • Caching and eventual consistency for real-time access decisions
  • Handling revocation and propagation delays
  • Scalability considerations: sharding, read replicas, or using a graph database

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.