← CureMD Interview Insights

CureMD·Software Engineer·Onsite - Multi Round·Junior

JuniorPass
Jul 2026

Summary

Two-round process at CureMD for an Associate Software Engineer role: a timed CCAT aptitude test followed by a paper-based coding round and a technical interview. The poster cleared both and wanted to share since basically no one else had documented this process anywhere online.

Questions Asked (8)

Q1

Walk me through your approach to the coding problems you solved on paper.

Algorithms & Data Structures
Author's notes

You walk in with your answer sheet and they just ask you to explain what you wrote.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Structure your answer as a clear, step-by-step narrative of how you tackle coding problems on paper, emphasizing your thought process, communication, and verification. Highlight how you break down the problem, consider edge cases, and test your solution manually. Show that you can think critically and write clean, correct code even without an IDE.

Pro tip: Verbalize your assumptions and trade-offs as you go; interviewers value clear reasoning over silent coding. Also, always manually trace through your code with a sample input to catch off-by-one errors.

1. Understand and Clarify the Problem

Restate the problem in your own words and ask clarifying questions about input/output, constraints, and edge cases. This ensures you and the interviewer are aligned before you start.

2. Plan Your Approach

Outline a high-level strategy, including the algorithm and data structures you'll use. Discuss time and space complexity trade-offs and consider alternative approaches.

3. Write Pseudocode or Code

Translate your plan into clear, structured pseudocode or actual code on paper. Keep it organized, use meaningful variable names, and comment on complex logic.

4. Test with Examples

Manually trace through your code with a sample input, including edge cases. Verify that the logic produces the correct output and fix any bugs.

5. Review and Optimize

Reflect on your solution: can you improve time/space complexity? Are there any redundant steps? Discuss potential optimizations with the interviewer.

Key Points to Mention

  • Clarifying questions to resolve ambiguities and edge cases
  • Choosing appropriate data structures and algorithms based on trade-offs
  • Writing clean, modular code with meaningful names and comments
  • Manual testing and debugging techniques on paper
  • Analyzing time and space complexity
  • Communicating thought process and reasoning throughout

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q2

Given that you can break one noodle into 3 pieces, which total number of pieces is impossible to achieve?

Algorithms & Data Structures
Author's notes

Blanked for a second.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Model the problem as a state transition where each break increases the total number of pieces by 2. Start from 1 piece and determine which totals are reachable by adding 2 repeatedly, then identify the impossible parity.

Pro tip: Clarify the initial state: assume you start with one whole noodle. If the interviewer allows multiple noodles, the answer changes, so state your assumption explicitly.

1. Clarify the rules

Confirm that you start with one noodle and that each break splits one existing piece into exactly 3 pieces, increasing the total piece count by 2.

2. Define the invariant

Note that the total number of pieces always has the same parity as the starting number of pieces (1), so it must be odd.

3. Enumerate reachable totals

List achievable totals: 1, 3, 5, 7, ... by repeatedly adding 2. Any even number is impossible.

4. Generalize and answer

Conclude that any even total number of pieces is impossible to achieve, and if asked for a specific number, provide the smallest even number greater than 1 (i.e., 2) or the even number in question.

Key Points to Mention

  • Each break increases the piece count by exactly 2.
  • Starting from 1 piece, all reachable totals are odd numbers.
  • Even numbers are impossible because parity is invariant.
  • The smallest impossible total is 2 (if starting from 1 piece).
  • If multiple noodles are allowed, the answer depends on the initial number of noodles.
  • The problem is a classic parity/invariant puzzle often asked in interviews.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q3

A stack of 8 glasses is 42 cm tall. A stack of 2 glasses is 18 cm tall. How tall is a stack of 6 glasses?

Algorithms & Data Structures
Author's notes

Classic linear equation setup.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Model the stack height as a linear function: total height = base height + (number of glasses - 1) * increment per additional glass. Use the two given data points (8 glasses = 42 cm, 2 glasses = 18 cm) to solve for the base height and increment, then compute the height for 6 glasses. Verify the result by checking consistency with the given data.

Pro tip: After solving, briefly mention that this is a linear interpolation problem and that you would validate the model with a quick sanity check (e.g., 6 glasses should be between 18 cm and 42 cm). This shows attention to detail and mathematical maturity.

1. Define variables and equation

Let h be the height of the base glass and d be the additional height added by each extra glass. Then the height of a stack of n glasses is H(n) = h + (n-1)d.

2. Set up equations from given data

For 8 glasses: h + 7d = 42. For 2 glasses: h + d = 18. Write these as a system of two linear equations.

3. Solve for parameters

Subtract the second equation from the first to eliminate h: (h+7d) - (h+d) = 42 - 18 => 6d = 24 => d = 4. Then substitute d back to find h: h + 4 = 18 => h = 14.

4. Compute target height

For 6 glasses, use H(6) = h + 5d = 14 + 5*4 = 34 cm.

5. Verify and sanity-check

Check that 34 cm is between 18 cm and 42 cm, and that the increment per glass (4 cm) is consistent with the difference between 8 and 2 glasses (24 cm over 6 extra glasses).

Key Points to Mention

  • Recognize the problem as a linear relationship between number of glasses and stack height.
  • Clearly define variables and set up a system of linear equations.
  • Solve the system using elimination or substitution.
  • Compute the final answer and verify it makes sense.
  • Mention that the base height (14 cm) and increment (4 cm) are derived from the given data.
  • Highlight that this approach generalizes to any number of glasses.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q4

Tell me about yourself.

Adaptability & Ambiguity
Author's notes

Standard opener, nothing to add.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Craft a concise narrative that connects your technical background to Bloomberg's engineering culture, emphasizing adaptability and problem-solving in ambiguous situations. Focus on recent, relevant experiences and how they've prepared you for the challenges of a fast-paced financial technology environment.

Pro tip: Research Bloomberg's engineering principles and recent projects, then subtly align your past experiences with their needs—showing you've done your homework and can hit the ground running.

1. Present

Start with your current role and a high-level summary of your technical expertise, highlighting languages and domains most relevant to Bloomberg.

2. Past

Briefly walk through 1-2 previous roles or projects that demonstrate adaptability, such as navigating unclear requirements or shifting priorities.

3. Proof

Share a specific accomplishment where you solved a complex problem or delivered impact under ambiguity, using metrics if possible.

4. Purpose

Explain why you're interested in Bloomberg and this role, tying your skills to their mission and engineering challenges.

5. Preview

Conclude with what you hope to contribute and learn, showing enthusiasm for the opportunity.

Key Points to Mention

  • Experience with ambiguous or rapidly changing project requirements
  • Proficiency in relevant technologies (e.g., C++, Python, distributed systems)
  • Examples of cross-functional collaboration and communication
  • Interest in financial technology and Bloomberg's data-driven products
  • Ability to learn quickly and adapt to new domains
  • Specific project or achievement that showcases problem-solving under uncertainty

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q5

Given an array of integers, return a new array where each element is the product of all other elements except itself, without using division.

Algorithms & Data Structures
Author's notes

This is the classic prefix-suffix product problem.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Clarify the constraints (e.g., array size, integer overflow, zeros) and then present a solution using prefix and suffix products to achieve O(n) time and O(n) space. If asked for optimization, mention the O(1) space approach that reuses the output array.

Pro tip: Explicitly discuss how to handle zeros and integer overflow, as these are common pitfalls that interviewers look for. Also, mention the trade-off between time and space complexity to demonstrate deeper understanding.

1. Clarify Requirements

Ask about input size, constraints, and expected output format. Confirm that division is not allowed and discuss edge cases like zeros and negative numbers.

2. Brainstorm Approaches

Start with a brute-force O(n^2) solution, then improve to O(n) using prefix and suffix products. Mention that division is disallowed, so you avoid that approach.

3. Design Optimal Solution

Explain the prefix-suffix method: compute prefix products in one pass, suffix products in another, and multiply them. Alternatively, use the output array to store prefix products and then multiply by suffix products in a second pass to achieve O(1) extra space.

4. Analyze Complexity

State that the time complexity is O(n) and space complexity is O(n) for the basic approach, or O(1) extra space if optimized. Discuss trade-offs.

5. Handle Edge Cases

Discuss how the solution handles zeros (e.g., if there are two or more zeros, all outputs are zero; if one zero, only that position gets the product of others) and potential integer overflow (suggest using long or BigInteger if needed).

Key Points to Mention

  • Time complexity: O(n) vs O(n^2) brute force
  • Space complexity: O(n) for prefix/suffix arrays, O(1) extra space with output array reuse
  • Handling zeros: zero count and its effect on products
  • Integer overflow: use of long or BigInteger for large products
  • Edge cases: empty array, single element, negative numbers
  • No division constraint: explicitly avoid division-based solutions

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q6

Given a list of intervals, merge all overlapping intervals and return the result.

Algorithms & Data Structures
Author's notes

Sort by start time, then iterate and merge.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the problem (e.g., whether intervals are inclusive, if input is sorted, and expected output format). Then propose sorting intervals by start time and merging in a single pass, explaining the O(n log n) time and O(n) space complexity. Walk through an example to demonstrate correctness.

Pro tip: Mention edge cases like empty input, single interval, and intervals that are adjacent but not overlapping (e.g., [1,2] and [2,3]) to show thoroughness. Also, discuss how you would handle large inputs or streaming data if relevant.

1. Clarify requirements

Ask about input format, whether intervals are sorted, inclusivity of endpoints, and expected output. Confirm if the result should be sorted.

2. Outline approach

Propose sorting intervals by start time, then iterating and merging overlapping intervals into a result list. Explain why sorting is necessary.

3. Detail algorithm

Describe the merge condition: if the current interval's start <= last merged interval's end, update the end to the max of both ends; otherwise, add the current interval to the result.

4. Analyze complexity

State time complexity O(n log n) due to sorting, and space complexity O(n) for the output (or O(1) extra if sorted in-place and output not counted).

5. Test with examples

Walk through a sample input like [[1,3],[2,6],[8,10],[15,18]] to show the merging process and verify edge cases.

Key Points to Mention

  • Sorting intervals by start time is crucial for efficient merging.
  • Merge condition: overlap if current.start <= lastMerged.end.
  • When merging, update end to max(lastMerged.end, current.end).
  • Time complexity: O(n log n) due to sorting; space complexity: O(n) for output.
  • Handle edge cases: empty list, single interval, non-overlapping intervals, and adjacent intervals.
  • If input is already sorted, time complexity reduces to O(n).

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q7

Given a list of strings, group the anagrams together.

Algorithms & Data Structures
Author's notes

Sort each string to use as a hashmap key.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Use a hash map where the key is a canonical representation of each anagram (e.g., sorted string or character count), and the value is a list of strings that share that key. Iterate through the input list, compute the key for each string, and append the string to the corresponding list. Finally, return all the lists from the hash map.

Pro tip: Discuss the trade-offs between sorting each string (O(n * k log k)) and using character counts (O(n * k)), and mention that character counts can be more efficient for long strings or large alphabets. Also, clarify assumptions about input (e.g., lowercase letters only) and handle edge cases like empty strings.

1. Clarify requirements and constraints

Ask about input size, character set, case sensitivity, and whether the output order matters. This shows attention to detail and helps choose the optimal approach.

2. Choose a canonical key

Decide on a representation that uniquely identifies anagrams, such as the sorted string or a character frequency tuple. Explain why it works and its complexity.

3. Design the hash map

Use a hash map to group strings by their canonical key. Each key maps to a list of anagrams.

4. Iterate and group

Loop through the input list, compute the key for each string, and append the string to the corresponding list in the hash map.

5. Return the result

Collect all the lists from the hash map and return them as the grouped anagrams. Optionally, discuss output format.

Key Points to Mention

  • Time and space complexity analysis for both sorting and counting approaches
  • Choice of canonical key: sorted string vs. character count array/tuple
  • Handling edge cases: empty strings, single-character strings, duplicates
  • Use of hash map for O(1) average-time key lookup
  • Potential follow-up: how to handle Unicode characters or very large inputs
  • Trade-offs between different key representations in terms of time and space

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q8

Find the length of the longest substring without any repeating characters.

Algorithms & Data Structures
Author's notes

Sliding window with a set.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the problem and edge cases, then propose a sliding window approach using a hash map to track characters and their indices. Walk through the algorithm step-by-step, analyze time and space complexity, and optionally discuss alternative solutions like brute force for comparison.

Pro tip: Mention that the sliding window approach can be optimized to O(n) time by storing the last seen index of each character and moving the left pointer directly to max(left, lastSeen[char] + 1). This shows you understand both the algorithm and its optimization.

1. Clarify the problem

Ask clarifying questions: Is the string ASCII or Unicode? Should we consider case sensitivity? What should be returned if the string is empty? Confirm that we need the length, not the substring itself.

2. Discuss brute force approach

Briefly mention that a brute force solution would check all substrings for uniqueness, resulting in O(n^3) time complexity, which is inefficient. This sets the stage for a better solution.

3. Propose sliding window with hash map

Explain that we can use a sliding window defined by two pointers (left and right) and a hash map to store the last seen index of each character. Expand the window by moving right, and if a duplicate is found, move left to the maximum of its current position and the last seen index of the duplicate plus one.

4. Walk through an example

Trace the algorithm on a sample string like 'abcabcbb' to demonstrate how the window expands and contracts, and how the maximum length is updated.

5. Analyze complexity and edge cases

State that the time complexity is O(n) since each character is visited at most twice, and space complexity is O(min(n, m)) where m is the size of the character set. Discuss edge cases like empty string, all unique characters, and all same characters.

Key Points to Mention

  • Sliding window technique with two pointers
  • Hash map to store last seen index of characters
  • Time complexity O(n) and space complexity O(min(n, m))
  • Handling edge cases: empty string, single character, all unique, all duplicates
  • Optimization: moving left pointer directly to last seen index + 1
  • Comparison with brute force O(n^3) approach

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.