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
Recommendation Algorithm Implementation
00:00
5 left

Recommendation Algorithm Implementation

MediumPython

Problem

In a Blend360 personalization workflow, recommend items to a user based on the behavior of other users. Implement user-based collaborative filtering: compare the target user with every other user using Jaccard similarity, then rank unseen items by the total similarity of users who interacted with them.

Formal Specification

Implement recommend_items(interactions, target_user, k).

  • interactions is a dictionary mapping user IDs to lists of item IDs.
  • target_user is a user ID present in interactions.
  • k is the maximum number of recommendations to return.
  • Return a list of at most k item IDs.

For users A and B, define Jaccard similarity as:

similarity(A, B) = |items(A) ∩ items(B)| / |items(A) ∪ items(B)|

An item’s score is the sum of similarities from all users who interacted with that item. Exclude items already interacted with by the target user. Sort by descending score, then ascending item ID to break ties. Ignore users with zero similarity.

Constraints

  • 1 <= number of users <= 10^4
  • 1 <= number of interactions per user <= 10^3
  • Item IDs are non-empty strings
  • 1 <= k <= 10^3
  • The target user exists in interactions

Function Signature

def recommend_items(interactions, target_user, k):
Interviewer

Your question is Recommendation Algorithm Implementation. Start with the requirements in the Question tab.

Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.

You need to log in / sign up to run or submit.
CodePython 3
Sign up free to run your codeLog inLn 2
Run your code to see test output here.