Summary
I recently went through the interview process for the Software Development Engineer I (Data) role at Safe Security. Although I received a strong offer, I ultimately decided to reject it as I felt the company's work-life balance and environment wouldn't align with my preferences.
Full Experience
I applied for the Software Development Engineer I (Data) role at Safe Security through their careers page. After about two weeks, I received an email from the recruiter to schedule interviews, which involved a total of 4 virtual rounds.
Initial Screening (15 Mins)
This was a short Google Meet call where the recruiter asked me about my motivations for looking for a change and the scale of systems I had worked on. Following that, they delved into CS fundamentals with placement-style questions, covering topics like TCP vs UDP, SQL vs NoSQL, and basic OS concepts. These were straightforward to answer. I was also asked to rate my hardworking level on a scale of 0-10.
Technical Round 1 with a Senior Engineer (60 Mins)
The first 35 minutes of this round involved a deep discussion on data engineering fundamentals and related technologies. The senior engineer posed situational questions such as “Which approach would you choose for X latency/throughput constraints?” and explored trade-offs concerning cost, latency, and durability. We had an in-depth conversation around these concepts.
For the remaining 20 minutes, I tackled two problems:
- DSA: I was asked to provide the complete optimized code and complexity analysis for the Longest Common Subsequence problem.
- SQL: I had to write an SQL query to “Return a list of users who have actually spent > 10,000 in total,” which involved using basic joins, GROUP BY, and HAVING clauses.
Technical Round 2 with Manager (60 Mins)
This round began with a question about how I would rate my hardworking level on a scale of 1-10 (their expectation seemed to be 10). We then did a deep dive into my past projects, discussing challenges I faced, trade-offs I made, and what aspects I owned. This was followed by a quick, random question: “What happens when we type google.com?” where I covered networking, DNS, TLS handshake, and CDN caching.
The system design portion focused on designing a parking lot system. I discussed functional and non-functional requirements, database design (including table schemas and indexes), choosing between RDBMS and NoSQL, and table layouts.
Finally, I was given a situational data-pipeline design problem: “Design a pipeline for high throughput (both read & write scaled).” I was expected to discuss partitioning, sharding, message queuing, batching, backpressure, scaling read replicas, cache strategies, and monitoring.
HR alignment + CEO connect
Before my CEO connect, HR validated my behavioral answers and subtly nudged some of my responses during a 15-minute call.
The final 30-minute session with the CEO was very conversational. We discussed my intro, tech experience, achievements, family background, a pride moment, and various behavioral questions.
The Offer
I received a strong compensation offer, and the role itself aligned well with my interests. However, after comparing my interview experiences with public discussions about the company, I realized that the day-to-day environment might not align with my desired work-life balance. While I am extremely dedicated when necessary, I also value boundaries, and I didn't feel Safe Security would accommodate that. Consequently, I decided to reject the offer.
Interview Questions (5)
I needed to write an SQL query to return a list of users who had spent more than 10,000 in total. This involved using basic joins, GROUP BY, and HAVING clauses.
This common networking question asked me to explain the entire process that occurs when you type 'google.com' into a browser and press Enter, covering aspects like networking, DNS resolution, TLS handshake, and CDN caching.
I was tasked with designing a parking lot system. The discussion focused on defining functional and non-functional requirements, designing the database (including table schemas and appropriate indexes), choosing between RDBMS and NoSQL, and structuring the tables.
I was asked to design a data pipeline capable of handling high throughput for both reads and writes. This required discussing various strategies such as partitioning, sharding, using message queues, batching, managing backpressure, scaling read replicas, implementing cache strategies, and monitoring.