Safe Security - Software Engineer 3 | 19 June 2026 | Interview Experience

safe security logo
safe security
· Software Engineer 3
July 5, 2026 · 0 reads

Summary

I interviewed for a Software Engineer 3 role at Safe Security, went through two rounds covering behavioral, system design, and a coding question (Maximum Subarray Sum), but was ultimately rejected.

Full Experience

Safe Security - Software Engineer 3 | 19 June 2026 | Rejected


Interview Process and Format

Round 1: Technical + Managerial Discussion (1 Hour)

Behavioral Questions:

  • Introduced myself and explained my professional journey.
  • Explained my experience at my current organization.
  • Rated myself on a scale of 0-10 for hard work and justified my answer.
  • Asked whether I would be comfortable working on weekends or putting in extra effort during critical situations.
  • Asked how I would rate myself within my team.

Technical Questions

1. HTTP vs HTTPS

Discussion Points:

  • Difference between HTTP and HTTPS.
  • How HTTPS ensures secure communication.

Approach:

  • Explained that HTTPS is HTTP over SSL/TLS.
  • Discussed encryption, authentication using digital certificates, and data integrity.
  • Mentioned the TLS handshake and symmetric encryption after key exchange.

2. Thread vs Process

Discussion Points:

  • What is a Process?
  • What is a Thread?
  • Difference between Thread and Process.

Approach:

  • Explained that a process has its own memory space, while threads share the same process memory.
  • Discussed communication overhead, context switching, and resource sharing.

3. Multithreading in Java

Discussion Points:

  • What is multithreading?
  • How is multithreading implemented in Java?

Approach:

  • Explained concurrent execution of multiple threads.
  • Discussed:
    • Extending the Thread class.
    • Implementing the Runnable interface.
    • Using ExecutorService for thread pool management.
  • Also discussed synchronization and common use cases.

4. High TPS Project

Discussion Points:

  • Explained a backend project handling high request throughput.

Approach:

  • Discussed system architecture.
  • Explained scaling techniques, asynchronous processing, caching, and performance optimizations.
  • Shared how bottlenecks were identified and resolved.

5. AI Project

Discussion Points:

  • Explained an AI-based project.
  • Follow-up questions on how AI was integrated into the application.

Approach:

  • Explained the business problem.
  • Discussed where AI was used in the workflow.
  • Explained how the AI component interacted with backend services and improved user experience.

6. Challenging Project

Discussion Points:

  • Explain a technically challenging project.

Approach:

  • Described the challenge.
  • Explained debugging strategy.
  • Discussed implementation and final outcome.

Round 2: Technical Interview (1 Hour)

Database Questions

1. Database Indexes

Discussion Points:

  • What are indexes?
  • How are indexes stored internally?
  • What are the disadvantages of indexes?

Approach:

  • Explained B-Tree indexes.
  • Discussed faster reads versus slower inserts, updates, and additional storage overhead.

2. ACID Properties

Discussion Points:

  • Explain ACID properties.

Approach:

  • Atomicity
  • Consistency
  • Isolation
  • Durability
  • Explained each property with practical examples.

Networking Questions

Topics Covered

  • REST APIs
  • HTTP vs HTTPS
  • TCP
  • UDP
  • TCP vs UDP
  • OSI Model
  • Transport Layer

Approach:

  • Explained stateless REST APIs.
  • Compared TCP and UDP with practical examples.
  • Explained all seven OSI layers and identified the Transport Layer as the layer containing TCP and UDP.

Coding Question

1. Maximum Subarray Sum

Given an integer array, find the contiguous subarray having the largest sum.

Example Input

nums = {-2, 1, -3, 4, -1, 2, 1, -5, 4}

Expected Output

6

Approach

  • Used Kadane's Algorithm.
  • Maintain:
    • Current maximum subarray ending at the current index.
    • Overall maximum answer.
  • At every element:
    • Either extend the previous subarray.
    • Or start a new subarray from the current element.

Java Solution

public class Solution {

    public int maxSubArray(int[] nums) {
        int currentSum = nums[0];
        int maxSum = nums[0];

        for (int i = 1; i < nums.length; i++) {
            currentSum = Math.max(nums[i], currentSum + nums[i]);
            maxSum = Math.max(maxSum, currentSum);
        }

        return maxSum;
    }
}

Complexity Analysis

  • Time Complexity: O(n)
  • Space Complexity: O(1)

Performance & Feedback

  • Both rounds focused heavily on backend fundamentals.
  • Interviewers expected strong knowledge of Java, networking, operating systems, and databases.
  • One DSA question was asked in the second round.
  • Most discussions were based on projects and deep technical concepts rather than solving multiple coding problems.

Result

  • Rejected (Received rejection email on 25 June 2026).

My Thoughts

The interview was backend-oriented and covered a wide range of fundamentals including Java multithreading, networking, databases, operating systems, and project discussions. The coding round was relatively straightforward (Kadane's Algorithm), but the interviewers spent considerable time evaluating conceptual understanding and practical experience. If you're preparing for a Software Engineer 3 backend role, make sure you're comfortable explaining your projects in depth along with core CS fundamentals. Common Question : How hard working you are on a scale of 0-10! Interview went right, I was able to answer 90% of the questions correctly, but got rejected!

Interview Questions (1)

1.

Maximum Subarray Sum

Data Structures & Algorithms·Easy

Given an integer array, find the contiguous subarray having the largest sum.

Example Input

nums = {-2, 1, -3, 4, -1, 2, 1, -5, 4}

Expected Output

6

Approach

  • Use Kadane's Algorithm.
  • Maintain the current maximum subarray ending at each index and the overall maximum.
  • At each element, decide whether to extend the previous subarray or start a new subarray from the current element.

Java Solution

public class Solution {

    public int maxSubArray(int[] nums) {
        int currentSum = nums[0];
        int maxSum = nums[0];

        for (int i = 1; i < nums.length; i++) {
            currentSum = Math.max(nums[i], currentSum + nums[i]);
            maxSum = Math.max(maxSum, currentSum);
        }

        return maxSum;
    }
}

Complexity Analysis

  • Time Complexity: O(n)
  • Space Complexity: O(1)

📣 Found this helpful? Please share it with friends who are preparing for interviews!

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!