← Atlassian Interview Insights

Atlassian·Software Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
May 2026

Summary

Atlassian system design round for a software engineer role. The whole interview was basically one big question about a password validation service, but it branched into like six different directions fast.

Questions Asked (5)

Q1

Design a password validation service that enforces length, character requirements, dictionary word membership, and passport number exclusion. Walk through the full system including API design, data structures for lookups, and how you'd handle high request volume.

System DesignAPI & IntegrationsAlgorithms & Data Structures
Author's notes

I started with the API shape which felt safe, just a POST endpoint returning valid/invalid plus maybe a reason code.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints (e.g., password length, character classes, dictionary size, passport number format, latency/throughput targets). Then design a stateless API with a clear request/response schema, and propose efficient data structures (e.g., Bloom filters, tries, hash sets) for dictionary and passport lookups. Finally, discuss scaling strategies such as caching, sharding, and load balancing to handle high request volume.

Pro tip: Mention that dictionary and passport checks can be probabilistic (e.g., Bloom filters) to reduce latency, but ensure false positives are acceptable or add a secondary exact check. Also, highlight the importance of not logging or storing plaintext passwords to maintain security.

1. Clarify Requirements and Constraints

Ask about password length limits, required character classes, dictionary size and update frequency, passport number format and source, expected QPS, latency SLA, and security/compliance needs.

2. Design the API

Define a RESTful endpoint (e.g., POST /validate) with a JSON body containing the password and optional context (e.g., user's passport number). Specify response codes and error messages for each validation failure.

3. Choose Data Structures for Lookups

For dictionary words, use a Bloom filter for fast membership checks, backed by a hash set or trie for exact verification. For passport numbers, use a hash set or a Bloom filter if the list is large. Consider memory and update trade-offs.

4. Implement Validation Logic

Check length and character requirements first (cheap operations). Then check dictionary membership and passport exclusion. Order checks to fail fast and minimize expensive lookups.

5. Scale for High Volume

Use caching (e.g., Redis) for frequent dictionary lookups, shard the dictionary/passport data across nodes, and deploy stateless service instances behind a load balancer. Consider asynchronous validation for non-critical checks.

Key Points to Mention

  • Bloom filters for probabilistic membership with low memory footprint
  • Trie or hash set for exact dictionary word matching
  • API design with clear error responses and status codes
  • Caching strategies (e.g., Redis) to reduce latency
  • Sharding and horizontal scaling for high throughput
  • Security considerations: avoid logging passwords, use HTTPS, rate limiting

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

Q2

What are the security implications of telling a user exactly which validation rule their password failed?

Technical Trade-offsSystem Design
Author's notes

Didn't love this part of the conversation.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by acknowledging the trade-off between security and usability, then analyze the risks of revealing specific validation failures. Discuss how this information can be exploited by attackers and propose balanced solutions that maintain security without frustrating users.

Pro tip: Emphasize that the goal is to guide legitimate users while not aiding attackers; suggest using generic error messages with real-time strength meters or client-side validation to improve UX without leaking information.

1. Identify the security risks

Explain how detailed validation errors can help attackers enumerate valid passwords or understand password policies, potentially leading to targeted attacks.

2. Consider the user experience impact

Discuss how vague error messages can frustrate users and increase support burden, but also how overly specific messages can be a security liability.

3. Evaluate the trade-offs

Weigh the benefits of clear feedback for usability against the risks of information disclosure, considering the context of the application and its threat model.

4. Propose balanced solutions

Suggest approaches like generic error messages combined with client-side validation, password strength meters, or progressive disclosure that guide users without revealing specifics to attackers.

5. Align with best practices

Reference industry standards (e.g., NIST guidelines) that recommend not imposing overly complex rules and instead focusing on length and breach checks, which reduces the need for detailed validation feedback.

Key Points to Mention

  • Information disclosure: revealing which rule failed can help attackers narrow down the password space or understand the password policy.
  • User enumeration: if the error message differs based on whether the username exists, it can lead to account discovery.
  • Password policy inference: attackers can deduce the exact requirements (e.g., minimum length, character classes) and craft targeted attacks.
  • Usability vs. security trade-off: clear feedback improves user experience but may weaken security; need to find a balance.
  • Client-side validation: can provide immediate feedback without sending data to the server, reducing the risk of information leakage.
  • NIST SP 800-63B guidelines: recommend against arbitrary complexity rules and suggest checking against breached password lists, which can be done without revealing specific failures.

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

Q3

How would you handle internationalization for this validation service, specifically for users in non-English speaking locales?

System DesignAdaptability & AmbiguityTechnical Trade-offs
Author's notes

Honestly the hardest part of the whole interview for me.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the scope of internationalization for the validation service—whether it's about localizing error messages, handling locale-specific validation rules, or both. Then propose a layered architecture that separates validation logic from message localization, using industry standards like Unicode CLDR and ICU. Finally, discuss trade-offs around performance, maintainability, and testing, and suggest a phased rollout with locale detection and fallback mechanisms.

Pro tip: Mention that you'd involve native speakers or localization experts early to validate assumptions about formats and messages, and emphasize the importance of automated tests with locale-specific data to catch regressions.

1. Clarify Requirements and Scope

Ask questions to understand which locales are targeted, what types of validation are affected (e.g., dates, numbers, addresses), and whether the service needs to return localized error messages or just accept localized input.

2. Design for Separation of Concerns

Propose an architecture where validation rules are locale-agnostic where possible, and locale-specific rules are pluggable. Use resource bundles for messages and externalize locale data.

3. Leverage Standards and Libraries

Recommend using established standards like Unicode CLDR and libraries such as ICU4J for formatting, parsing, and message translation to avoid reinventing the wheel.

4. Address Trade-offs and Performance

Discuss trade-offs between strict and lenient validation, caching locale data, and the impact on latency. Consider fallback strategies for unsupported locales.

5. Plan Testing and Rollout

Outline a testing strategy with locale-specific test cases, pseudo-localization, and collaboration with localization teams. Suggest a phased rollout with monitoring.

Key Points to Mention

  • Use of Unicode CLDR and ICU for locale data and message formatting
  • Separation of validation logic from localized messages via resource bundles
  • Handling locale-specific formats for dates, numbers, addresses, and names
  • Fallback mechanisms and locale detection (e.g., Accept-Language header)
  • Performance considerations: caching, lazy loading of locale data
  • Testing strategies: automated tests with locale data, pseudo-localization, native speaker review

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

Q4

There's an inherent contradiction between requiring passwords to be valid dictionary words and standard security advice around password entropy. How do you think about that tension?

Technical Trade-offsProduct Sense & Ideation
Author's notes

This one was almost philosophical.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Acknowledge the tension as a real trade-off between usability and security, then frame it as a product decision that depends on context and threat model. Discuss how dictionary words can be acceptable if combined with other factors like length, rate limiting, and multi-factor authentication, and propose alternative approaches that balance both needs.

Pro tip: Show that you understand the underlying goal: dictionary words are used for memorability, not security. Suggest that the real solution is to move away from passwords altogether or use password managers, which Atlassian likely supports.

1. Acknowledge the tension

Validate that the question highlights a real conflict between usability (memorable passwords) and security (entropy).

2. Explain the rationale

Discuss why dictionary words are used: they are easier to remember, reducing password resets and support costs. But they have low entropy, making them vulnerable to brute-force and dictionary attacks.

3. Propose mitigations

Suggest ways to increase security without sacrificing usability, such as enforcing longer passphrases, adding rate limiting, account lockouts, and multi-factor authentication.

4. Consider context and trade-offs

Emphasize that the right balance depends on the threat model, user base, and risk tolerance. For low-risk accounts, dictionary words might be acceptable; for high-risk, stronger measures are needed.

5. Recommend a holistic approach

Advocate for moving beyond passwords: encourage password managers, biometrics, or SSO. If passwords must be used, combine length, complexity, and additional factors.

Key Points to Mention

  • Entropy and password strength: dictionary words have low entropy, but length can compensate (e.g., correct horse battery staple).
  • Usability vs. security trade-off: memorable passwords reduce friction but increase risk.
  • Rate limiting and account lockout: mitigate brute-force attacks regardless of password strength.
  • Multi-factor authentication: adds a layer of security that can compensate for weaker passwords.
  • Password managers: allow users to have strong, unique passwords without memorization.
  • Threat model: the appropriate password policy depends on the sensitivity of the data and the likelihood of attacks.

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

Q5

How would you design the dictionary data store to support high QPS validation while also allowing periodic updates to the wordlist?

System DesignTechnical Trade-offs
Author's notes

Talked through a few options: in-memory bloom filter per pod with a background refresh job, a centralized Redis set, or a read-through cache backed by object storage.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements: QPS target, wordlist size, update frequency, and consistency needs. Then propose an in-memory data structure (e.g., trie or hash set) replicated across nodes, with a versioned snapshot mechanism for atomic updates. Discuss trade-offs between read performance, memory usage, and update latency, and how to handle consistency during updates.

Pro tip: Emphasize that updates should be atomic and non-blocking for reads, and mention using a copy-on-write or double-buffering approach to avoid locking. Also, consider using a distributed cache like Redis with pub/sub for invalidation, but be ready to discuss its limitations.

1. Clarify Requirements

Ask about expected QPS, wordlist size, update frequency, consistency requirements, and latency SLAs. This shows you understand the problem context before jumping to solutions.

2. Choose Data Structure

Select an efficient in-memory structure like a trie for prefix matching or a hash set for exact matching. Consider memory footprint and lookup speed.

3. Design for High QPS

Replicate the data store across multiple nodes and use load balancing. Ensure the structure is read-optimized and lock-free for reads.

4. Handle Periodic Updates

Use a versioned snapshot approach: build a new data structure in the background, then atomically swap it in. This avoids downtime and ensures consistency.

5. Discuss Trade-offs

Compare approaches like in-memory vs. distributed cache, push vs. pull updates, and consistency vs. availability. Highlight how your design meets the requirements.

Key Points to Mention

  • In-memory data structures (trie, hash set) for low-latency lookups
  • Replication and load balancing for scalability
  • Atomic updates via copy-on-write or double-buffering
  • Versioning to ensure consistency during updates
  • Trade-offs between memory usage and update frequency
  • Monitoring and metrics to detect performance issues

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