cswork / libraryOpen practice workspace

Interview questions · Bloomberg

Implement a simplified grep with extensible flags

This question evaluates competency in designing maintainable, extensible text-processing code, covering flag parsing, separation of concerns, and correct substring matching behavior.

Problem

Implement a simplified version of grep that searches a text file and returns the lines that match a given query string.

You should focus on clean, readable, extensible design (e.g., parsing flags/options in a way that makes it easy to add new flags later), not on advanced algorithms.

Requirements

  • Input:
    • pattern: a non-empty string to search for.
    • lines: an array/list of strings representing the file content, one element per line.
    • flags/options: a set of optional flags (you may choose the interface, e.g., CLI args, a struct/object, or a map).
  • Output:
    • The matching lines, in original order.

Supported flags (minimum)

Define at least a few flags and implement them, such as:

  • Case-insensitive match (e.g., -i)
  • Print line numbers along with matched lines (e.g., -n)
  • Invert match (return non-matching lines) (e.g., -v)

Notes

  • Assume a simple substring match (not full regex).
  • Be explicit about edge cases (empty file, empty lines, pattern casing, etc.).
  • The interviewer will evaluate:
    • Code organization (separation of concerns: parsing, matching, formatting)
    • Extensibility (how easy it is to add a new flag)
    • Correctness and testability

Example

Given:

  • pattern = "error"
  • lines = ["ok", "Error: disk full", "no issue", "error again"]
  • flags: case-insensitive

Output:

  • "Error: disk full"
  • "error again"

Community answers

Nothing here yet.

Join in on CSWork →