Blink Health interview experience Real time questions & tips from candidates to crack your interview

SDE - 1

Blink Health
upvote
share-icon
3 rounds | 4 Coding problems

Interview preparation journey

expand-icon
Journey
I applied for the SDE 1 role at Blink Health through their careers portal. After submitting my application, I was contacted by their recruitment team, and we scheduled the first round of interviews. The process consisted of three rounds. The first two rounds focused on data structures and algorithms (DSA), where I was asked to solve a variety of problems relevant to the role. After successfully clearing the first two rounds, I was invited to the final round, which was a Bar Raiser interview. This round focused more on behavioural aspects, problem-solving skills, and assessing whether I would be a good cultural fit for the company. It was a rigorous process, but I was well-prepared, and after the final round, I received an offer for the role.
Application story
I applied for the SDE 1 role at Blink Health through their careers portal. After submitting my application, I was contacted by the recruitment team, and we scheduled the first round of interviews. The process consisted of three rounds. The first and second rounds focused on data structures and algorithms (DSA), where I was asked to solve a variety of problems related to the role. After successfully clearing the first two rounds, I was invited to the final round, which was a Bar Raiser interview. This round focused more on behavioural aspects, problem-solving skills, and assessing whether I would be a good cultural fit for the company. It was a rigorous process, but I was well-prepared, and after the final round, I received an offer for the role.
Why selected/rejected for the role?
I believe I was selected for the SDE 1 role at Blink Health due to a combination of thorough preparation, strong problem-solving skills, and a solid understanding of core computer science concepts. In the first two rounds, which focused on data structures and algorithms, I approached problems logically and efficiently. My ability to clearly explain my thought process and optimize solutions helped me perform well in these rounds. In the Bar Raiser round, I was evaluated not only on my technical skills but also on soft skills such as communication, adaptability, and teamwork. I demonstrated my ability to navigate challenges and contribute effectively to a team. I also emphasized my passion for continuous learning, which aligned well with Blink Health's values. The key takeaway for me was that consistent practice, combined with a focus on both technical and soft skills, is crucial for interview success. This experience taught me the importance of balancing problem-solving with interpersonal skills.
Preparation
Duration: 1 month
Topics: Data Structures, Algorithms, OOPS, System Design, DBMS
Tip
Tip

Tip 1: Practice daily on coding platforms.

Tip 2: Prepare core computer science subjects.

Application process
Where: Referral
Eligibility: N/A
Resume Tip
Resume tip

Tip 1: Don’t include false information on your resume.

Tip 2: Be confident about everything you’ve mentioned on your resume.

Interview rounds

01
Round
Hard
Video Call
Duration45 minutes
Interview date3 Aug 2024
Coding problem1

1. Regular Expression Matching

Hard
25m average time
80% success
0/120
Asked in companies
FacebookGrowwSAP Labs

Given an input string 'S' and a pattern 'P', implement a regular expression matching with the support of two special characters ‘.’ (dot) and ‘*’(asterisk) where

1. ‘.’ matches to any single character.
2. ‘*’ matches to zero or more of the preceding element.

If the input string 'S' matches the pattern 'P', then return true else, return false.

Note:
1. You have to match the entire string with the pattern given.

2. Both the strings, 'S' and 'P' contain only lower-case alphabets.

3. Only the pattern will contain additional characters ‘*’ and ‘.’ along with alphabets.
Problem approach

Understanding the Problem:

The input string s and pattern p need to be matched according to specific rules:
. matches any single character.
* matches zero or more of the preceding element.
The goal is to determine if the pattern p matches the entire string s.
Initial Approach:

I started by considering a recursive solution, where I would compare characters one by one. The base case would be when both the string s and the pattern p are fully traversed.
Recursive Solution:

If the pattern’s current character is *, I considered two cases:
The * matches zero characters: Move to the next character in the pattern.
The * matches one or more characters: Move to the next character in the string while keeping the pattern unchanged.
If the current character in the pattern is ., I simply moved to the next characters in both s and p.
For other characters, I checked for an exact match and proceeded accordingly.
Optimization with Dynamic Programming:

The recursive approach led to overlapping subproblems, so I optimized the solution using dynamic programming.
I created a 2D DP table where dp[i][j] indicates whether the substring s[0...i] matches the pattern p[0...j].
I iteratively filled the table based on the conditions for . and *.
This approach ensured that I avoided redundant computations and handled all edge cases.
Final Solution:

The optimized DP solution provided an efficient and scalable approach to solving the problem.
I discussed edge cases, such as patterns ending in * and the importance of ensuring that the entire string is matched.

Try solving now
02
Round
Hard
Video Call
Duration60 minutes
Interview date3 Aug 2024
Coding problem2

1. Scramble String

Hard
15m average time
85% success
0/120
Asked in companies
PostmanAmazonInfo Edge India (Naukri.com)

You are given an integer ‘N’ and two strings ‘S’ and 'R' each having size = ‘N’. You can scramble the string ‘S’ to obtain string 'R' using the following operations:

1. If the length of the string is greater than 1:

  • Select any random index and split the string into two non-empty substrings. For e.g: if the string is ‘S’, then divide it into two non-empty substrings ‘A’ and ‘B’ such that ‘S’ = ‘A’ + ‘B’.
  • You can choose to swap the two substrings or keep them in the same order, i.e., after this operation string ‘S’ may become either ‘S’ = ‘A’ + ‘B’ or ‘S’ = ‘B’ + ‘A’.
  • Apply the first step recursively on each of the two strings ‘A’ and ‘B’.
  • 2. If the length of the string is equal to 1 then stop.

    Your task is to return true if 'R' is a scrambled string of ‘S’ else return false.

    Note:

    1. Both the strings are non-empty and are of the same length.
    
    2. You can apply the above operations any number of times on ‘S’.
    
    3. The operations can only be applied on the string ‘S’.
    
    4. ‘S’ and 'R' consist of lowercase letters only.
    
    Problem approach

    Understanding the Problem:

    You are given two strings, s1 and s2, of the same length.
    The task is to determine if s2 can be obtained by scrambling s1 using the given recursive algorithm.
    Recursive Approach:

    I began by considering a recursive approach:
    If s1 is equal to s2, return true.
    If the sorted versions of s1 and s2 are not equal, return false (as they don't have the same characters).
    Otherwise, I recursively checked every possible split of s1 into two substrings to see if swapping or not swapping them could produce s2.
    Splitting and Recursion:

    For each split of s1 into x and y, I considered two cases:
    Without swapping: Check if s1[0...i] matches s2[0...i] and s1[i+1...n] matches s2[i+1...n].
    With swapping: Check if s1[0...i] matches s2[n-i...n] and s1[i+1...n] matches s2[0...n-i].
    If either case is true, then s2 is a scrambled string of s1.
    Optimization with Memoization:

    The recursive solution led to a lot of overlapping subproblems. To optimize this, I used memoization to store the results of already computed subproblems.
    I used a 3D dictionary (or hash map) to store results of whether the substring s1[i...j] can be scrambled to form s2[i...j].
    Final Implementation:

    By combining recursion with memoization, I was able to reduce the time complexity and make the solution more efficient.
    The solution correctly handles all possible ways of scrambling and returns true if any valid scramble can form s2.

    Try solving now

    2. Palindrome Partitioning ll

    Hard
    40m average time
    60% success
    0/120
    Asked in companies
    AmazonAdobePayPal

    You are given a string 'str' of length 'n'.


    Find the minimum number of partitions in the string so that no partition is empty and every partitioned substring is a palindrome.


    Example :
    Input: 'str' = "aaccb"
    
    Output: 2
    
    Explanation: We can make a valid partition like aa | cc | b. 
    
    Problem approach

    Understanding the Problem:

    Given a string s, the goal is to determine the minimum number of cuts required to partition s into substrings where each substring is a palindrome.
    A palindrome is a string that reads the same forward and backward.
    Initial Approach:

    The most straightforward approach would be to check all possible partitions of the string and count the number of cuts needed to ensure all substrings are palindromes. However, this would involve generating all partitions and is computationally expensive.
    Dynamic Programming (DP) Approach:

    To optimize, I considered using dynamic programming:
    Step 1: Palindrome Checking:
    Create a 2D DP table isPalindrome[i][j] where isPalindrome[i][j] is true if the substring s[i...j] is a palindrome.
    This can be filled by checking if s[i] == s[j] and isPalindrome[i+1][j-1] is true.
    Step 2: Minimum Cuts Calculation:
    Create a DP array minCuts[i] where minCuts[i] stores the minimum cuts required for the substring s[0...i].
    Initialize minCuts[i] as i (the worst case where every character is its own palindrome).
    For each i, if s[0...i] is a palindrome, then minCuts[i] = 0 (no cut needed).
    Otherwise, update minCuts[i] by checking all possible cuts at j (from 0 to i-1)
    Final Solution:

    The final solution involves iterating over the string and filling both isPalindrome and minCuts tables.
    The result is minCuts[n-1], where n is the length of the string s.

    Try solving now
    03
    Round
    Hard
    Video Call
    Duration60 minutes
    Interview date7 Aug 2024
    Coding problem1

    1. Word Break II

    Hard
    15m average time
    85% success
    0/120
    Asked in companies
    SalesforceHikeDunzo

    You are given a non-empty string S containing no spaces’ and a dictionary of non-empty strings (say the list of words). You are supposed to construct and return all possible sentences after adding spaces in the originally given string ‘S’, such that each word in a sentence exists in the given dictionary.

    Note :

    The same word in the dictionary can be used multiple times to make sentences.
    Assume that the dictionary does not contain duplicate words.
    
    Problem approach

    Understanding the Problem:

    You are given a string s and a dictionary wordDict.
    The goal is to insert spaces in s to form all possible sentences where each word in the sentence exists in wordDict.
    The same word from wordDict can be reused multiple times.
    Initial Approach:

    A naive approach would involve trying every possible way to partition the string and checking if each partition is a valid word from wordDict. This, however, would be computationally expensive due to the number of possible partitions.
    Recursive Backtracking with Memoization:

    To optimize the solution, I considered using recursive backtracking:
    Start from the beginning of the string s and try to match every prefix of s with words in wordDict.
    For every valid prefix found, recursively solve the problem for the remaining substring.
    Combine the results of valid prefixes to form complete sentences.
    Optimization with Memoization:

    Since the same substrings might be processed multiple times in different recursive calls, I used memoization to store the results of already computed substrings.
    The memoization table stores all possible sentences that can be formed starting from a given index.
    Implementation Steps:

    Step 1: Base Case:
    If the start index reaches the end of the string s, return an empty list (indicating no more words to process).
    Step 2: Recursive Case:
    For every index i from the current start index to the end of the string:
    Check if the substring s[start:i+1] is a valid word in wordDict.
    If valid, recursively call the function for the remainder of the string (s[i+1:]).
    Combine the current word with the results of the recursive call to form complete sentences.
    Store the result in the memoization table to avoid reprocessing.
    Step 3: Return Result:
    Once the function processes the entire string, return the list of valid sentences.

    Try solving now

    Here's your problem of the day

    Solving this problem will increase your chance to get selected in this company

    Skill covered: Programming

    What is recursion?

    Choose another skill to practice
    Similar interview experiences
    company logo
    SDE - 1
    4 rounds | 8 problems
    Interviewed by Amazon
    8518 views
    0 comments
    0 upvotes
    Analytics Consultant
    3 rounds | 10 problems
    Interviewed by ZS
    907 views
    0 comments
    0 upvotes
    company logo
    SDE - Intern
    1 rounds | 3 problems
    Interviewed by Amazon
    3320 views
    0 comments
    0 upvotes
    company logo
    SDE - 2
    4 rounds | 6 problems
    Interviewed by Expedia Group
    2581 views
    0 comments
    0 upvotes
    Companies with similar interview experiences
    company logo
    SDE - 1
    5 rounds | 12 problems
    Interviewed by Amazon
    114579 views
    24 comments
    0 upvotes
    company logo
    SDE - 1
    4 rounds | 5 problems
    Interviewed by Microsoft
    57825 views
    5 comments
    0 upvotes
    company logo
    SDE - 1
    3 rounds | 7 problems
    Interviewed by Amazon
    34961 views
    7 comments
    0 upvotes