← Akuna Capital Interview Insights

Akuna Capital·Software Engineer·Take-home Assignment·Intermediate

IntermediatePrefer not to say
Jul 2026

Summary

Akuna Capital gave me a React coding exercise for a hotel reservation UI, which sounds straightforward until you realize how many edge cases they actually want you to handle. It was a take-home style problem with a lot of moving parts crammed into one component.

Questions Asked (1)

Q1

You're given an existing React hotel reservation form. Add two controlled dropdown menus for Check-in and Check-out month, enforce that Check-out can't be earlier than Check-in, disable past months relative to today, wire everything into the provided state management, validate on change and submit with inline errors, handle keyboard accessibility with ARIA labels, and write unit tests for all of it.

Technical Trade-offsAPI & IntegrationsSystem Design
Author's notes

This is basically seven requirements in a trenchcoat.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the requirements and constraints, then outline a component design that separates presentational and state logic. Explain how you would implement controlled dropdowns with validation, accessibility, and tests, emphasizing trade-offs and integration with existing state management.

Pro tip: Mention that you would extract the date validation logic into a pure function to make it easily testable and reusable, and use React Testing Library to test user interactions rather than implementation details.

1. Clarify Requirements and Constraints

Ask clarifying questions about the existing state management (e.g., Redux, Context, local state), the expected date range, and whether the form is part of a larger system. Confirm the need for inline errors and accessibility specifics.

2. Design Component and State Integration

Propose a controlled component structure: two <select> elements bound to state, with onChange handlers updating the state. Explain how to integrate with the provided state management, ensuring single source of truth and avoiding prop drilling if possible.

3. Implement Validation and Accessibility

Describe validation logic: check-out month must be >= check-in month, and both must be >= current month. On change, validate and set error messages. Add ARIA labels (e.g., aria-label, aria-describedby for errors) and ensure keyboard navigability.

4. Write Unit Tests

Outline tests using Jest and React Testing Library: test rendering, state updates, validation errors, disabled past months, and accessibility attributes. Include edge cases like same month check-in/check-out and year boundaries.

5. Discuss Trade-offs and Edge Cases

Talk about trade-offs: client-side vs server-side validation, performance of re-renders, and handling time zones. Mention edge cases: leap years, month lengths, and how to handle year changes if the form spans multiple years.

Key Points to Mention

  • Controlled components: value prop and onChange handler to keep React state as the single source of truth.
  • Validation logic: pure function to compare months and check against current date, with clear error messages.
  • Accessibility: use <label> elements, aria-invalid, aria-describedby for errors, and ensure focus management.
  • State management integration: lift state up or use context/redux, avoid duplicating state, and handle side effects.
  • Testing: unit tests for validation function, component tests for user interactions and error display, and accessibility tests.
  • Edge cases: year rollover, same month selection, and disabling past months dynamically based on current date.

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