Dataford
Interview QuestionsInterview GuidesExperiencesCoaching
New
Pricing
Get started
Dataford
Popular roles
Software EngineerData AnalystData ScientistData EngineerBusiness AnalystAI EngineerMachine Learning EngineerProduct Manager
Browse
Browse All RolesEvery role hub, from analyst to MLBrowse All CompaniesCompany-specific interview loopsAll Interview GuidesThe full guide library
Top questions by role
Software EngineerData AnalystData ScientistData EngineerBusiness AnalystAI EngineerMachine Learning EngineerProduct Manager
Top questions by skill
SQLPythonStatisticsMachine LearningA/B TestingSystem DesignGenerative AIProduct SenseMetricsBehavioral
Browse all questions →Try a mock interview
Experiences
Practice
Mock InterviewsTimed interview simulations with feedbackCoaching1:1 coaching with people at your target companiesSuccess PathYour 6-week structured planModulesCurated lessons by topicWebinarsTalks from ex-Big Tech data leadsPlaygroundA free-form scratch editor
Learn
BlogInterview strategy and career adviceTech Job Market ReportHiring trends across data and AI rolesFor UniversitiesDataford for career centersAbout DatafordWho we are and how we build
Pricing
Build my plan

Fix All Bugs in Code

MediumCoding00:00
Practice interviewer
In session
5 left
00:00

Your question is Fix All Bugs in Code. Take a moment with it on the right.

Talk me through your thinking if you like. When you're confident, submit your answer and I'll grade it like a real screen (7/10 or better passes).

You need to log in / sign up to chat or submit.

Problem

Nextcapital models employer 401(k) matching, where the employer matches a percentage of what an employee contributes, tiered by how much of their salary they're contributing. The tiers describe bands as a percentage of salary — for example, "match 100% of contributions up to 3% of salary, then 50% of contributions on the next 2%." This method is supposed to compute the total dollar match for one employee, but the numbers it's producing don't line up with the plan documents.

def employer_match(salary, contribution_rate, match_tiers)
  employee_contribution = salary * contribution_rate

  match_total = 0
  match_tiers.each do |tier|
    if employee_contribution > tier[:up_to]
      match_total += tier[:up_to] * tier[:rate]
    else
      match_total += employee_contribution * tier[:rate]
    end
  end

  match_total
end

match_tiers looks like [{ up_to: 0.03, rate: 1.0 }, { up_to: 0.05, rate: 0.5 }], where up_to is a fraction of salary and rate is the employer's match rate for that band. Fix all the bugs in this method. Explain each one and how it produces a wrong dollar figure, since this feeds directly into what employees see as their expected match.