Okta Staff Software Engineer Interview Experience | May 2026
Summary
I interviewed for a Staff Software Engineer role at Okta, cleared all three rounds (DSA, LLD, System Design) and was offered an SSE position, which I declined in favor of another offer.
Full Experience
Timeline - May 2026 YOE : 8.5+ Years Current (Most Recent Company) : SMTS(IC3) at Oracle (Laid off in September 2025) College - IITK
Applied through referral and also to multiple jobs directly at portal, Recruiter reached out to me and here's the interview experience -
R1(Java & DSA) :-
- Most critically challanging project discussion and some system design kind of trade offs discussion in my project which I made.
- https://leetcode.com/problems/reverse-substrings-between-each-pair-of-parentheses/description/
Was able to answer/solve both the question. Got a minor hint for the DSA question and was able to code the optimal working solution with all test cases passing. HIRE!
R2(Java & DSA/LLD) :- Don't accurately remember the whole lengthy question but from what i can recollect, it was something like this :-
You are given a list of entries. Each entry is of the form: [shop, cd, price]. For example: [1, 2, 5], means CD 2 is available at shop 1 for price 5.
A user can:
- Search for shops where a given CD is currently available.
- Rent a CD from a shop.
- Return a CD to the same shop from where it was rented.
A CD copy can be rented only if it is currently available at that shop. A CD copy can be returned only if it was previously rented from that same shop.
Implement the following methods:
- List search(int cd)
- void rent(int shop, int cd)
- void unrent(int shop, int cd)
search(cd) should return shop ids where the CD is available, sorted by:
- Lowest price first
- If price is same, smaller shop id first
I wasn't able to solve this question and the interview went really bad. Let alone coding, I couldn't even reach to an agreement on the approach with the interviewer and time was done.
- I thought my loop was done right there but they still scheduled the next round. It wasn't elimination round it seemed but rather they wanted to make a decision based on consilidated feedback from all 3 rounds.
R3(System Design/HLD) :- Design a backup and recovery system
- I followed the HelloInterview framework and was able to explain and discuss all the Functional and NonFunctional requirements along with all the problems identified on the way and also the ones pointed out/asked by the interviewer. The interviewer was an Ex-Apple guy and it showed, was also very interactive in the discussion unlike a mute spectator which many interviewers are. Really liked the experience.
Final Verdict :- Recruiter came back to me that as per the feedback they can't offer me Staff position (Which i already knew because of 2nd round) but they see me as a Strong Fit for an SSE role and asked me If i would like to proceed ahead and have a discussion with the Hiring Manager.
Since I already have a Staff Offer from some other company and will be joining them in a week, I haven't asked them to proceed ahead. Hope this helps if you're interviewing at Okta.
PS :- I got call from another team in Okta for a Staff Role parallelly and First round was done for them too. It went Okayish but yet to hear anything from them. They asked extension of this https://leetcode.com/problems/simple-bank-system/description/ with concurrency factor added to it. You can search on ChatGPT on how else this question can be tweaked for concurrency implementation and also using CAS operations like map.replace(oldValue, newValue) etc.
Interview Questions (4)
Reverse Substrings Between Each Pair of Parentheses
Given a string s that contains lower case English letters and parentheses, reverse the substrings in each pair of matching parentheses, starting from the innermost pair. The final result should not contain any parentheses.
Example: s = "a(bc(d)e)f" → after processing, the output is "afedcb".
Implement a function that returns the processed string.
CD Rental System Implementation
You are given a list of entries. Each entry is of the form: [shop, cd, price]. For example: [1, 2, 5] means CD 2 is available at shop 1 for price 5.
A user can:
- Search for shops where a given CD is currently available.
- Rent a CD from a shop.
- Return a CD to the same shop from where it was rented.
A CD copy can be rented only if it is currently available at that shop. A CD copy can be returned only if it was previously rented from that same shop.
Implement the following methods:
List<Integer> search(int cd)
void rent(int shop, int cd)
void unrent(int shop, int cd)
search(cd) should return shop ids where the CD is available, sorted by:
- Lowest price first
- If price is the same, smaller shop id first.
Design a Backup and Recovery System
Design a backup and recovery system. Discuss functional requirements (e.g., data backup, restore points, scheduling) and non‑functional requirements (e.g., scalability, durability, consistency, security). Identify potential failure scenarios and propose mitigation strategies.
Simple Bank System with Concurrency
Extend the classic simple bank system problem by adding concurrency handling. Implement thread‑safe operations for deposit, withdraw, and transfer using atomic primitives such as compare‑and‑set (CAS) operations (e.g., map.replace(oldValue, newValue)). Ensure correctness under concurrent access.