TrueFoundry - SSE - Selected Feb 2026
Summary
I was selected for the Senior Software Engineer position at TrueFoundry in February 2026 after completing coding, system‑design, and behavioral interviews.
Full Experience
R1:
- Given a series of words written using a scrambled alphabet, return whether the list of strings is lexicographically sorted in ascending order. A list of n words is given, the alphabet order is provided as a sorted array of characters. Input: carry of strings, so cat, bat, tab. Alphabets, array of characters, C, B, A, T. The output should be true or false.
- Design a VersionedArray as below: VersionedArray gets in length initializes the array of provided length with the default value set to zero. Int saveVersion saves the current state of the array and returns a version number starting from one. Void update int index int value updates the element at the given index with the specified value. Int getValue int index int versionNumber retrieves the value at the specified index from the saved version. Sample inputs would be like VersionedArray of 3, update 0 comma 5, saveVersion, so it is 1, update 0 comma 6, getValue of 0 comma 1, which is 5.
R2: Attached below
R3: Onsite - Design Uber - with co-founder
R4: Onsite - Behavioural with a chief: Saas product that I liked the most, what improvements that I would make, if I'm a senior product manager, how will I behave, conflict management, what energy do you bring at work that everyone think of you, weakness, why truefoundry, etc.
R2 question: Define the database schema and write the code for the three APIs: Database Schema: Tables:
- Interviewers - InterviewerID (Primary Key) - Name - Email - TimeZone
- Availability - AvailabilityID (Primary Key) - InterviewerID (Foreign Key to Interviewers) - StartTime - EndTime
- Interviews - InterviewID (Primary Key) - CandidateName - InterviewerID (Foreign Key to Interviewers) - InterviewTime
API 1: MarkSlots Description: This API allows interviewers to mark their free hours when they can conduct interviews. Request: json { "interviewer_id": "123", "slots": [ {"start_time": "2023-10-01T11:00:00", "end_time": "2023-10-01T14:00:00"}, {"start_time": "2023-10-02T17:00:00", "end_time": "2023-10-02T20:00:00"} ] } Response: json { "success": true, "message": "Slots marked successfully." }
API 2: GetAvailableSlots Description: This API provides candidates with a list of all available time slots for interviews within the next 14 days. Request: json { "candidate_name": "John Doe" } Response: json { "available_slots": [ {"interviewer_id": "123", "interviewer_name": "Alice", "start_time": "2023-10-01T11:00:00", "end_time": "2023-10-01T12:00:00"}, {"interviewer_id": "456", "interviewer_name": "Bob", "start_time": "2023-10-01T11:00:00", "end_time": "2023-10-01T12:00:00"} ] }
API 3: BookInterview Description: This API allows candidates to book an interview by selecting a time slot. The system will automatically assign an available interviewer. Request: json { "candidate_name": "John Doe", "selected_slot": {"start_time": "2023-10-01T11:00:00", "end_time": "2023-10-01T12:00:00"} } Response: json { "success": true, "message": "Interview booked successfully.", "interviewer_id": "123", "interviewer_name": "Alice" }
Interview Questions (3)
Lexicographically Sorted Strings with Scrambled Alphabet
Given a series of words written using a scrambled alphabet, determine whether the list of strings is lexicographically sorted in ascending order. The alphabet order is provided as a sorted array of characters. Example input: words = ["cat", "bat", "tab"], alphabet = ['C','B','A','T']. Output should be true or false.
VersionedArray Design
Design a VersionedArray class. It is initialized with a length, filling the array with zeros. Methods: int saveVersion() saves the current state and returns a version number starting from 1. void update(int index, int value) updates the element at the given index. int getValue(int index, int versionNumber) retrieves the value at the specified index from the saved version. Example: VersionedArray of size 3, update(0,5), saveVersion() -> 1, update(0,6), getValue(0,1) returns 5.
Interview Scheduling API Design
Define a database schema with three tables: Interviewers (InterviewerID, Name, Email, TimeZone), Availability (AvailabilityID, InterviewerID, StartTime, EndTime), and Interviews (InterviewID, CandidateName, InterviewerID, InterviewTime). Implement three APIs: 1) MarkSlots – allows interviewers to mark free slots. 2) GetAvailableSlots – returns available slots for candidates within the next 14 days. 3) BookInterview – lets a candidate book a slot, automatically assigning an interviewer. Detailed request and response JSON structures are provided.