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
Top K Frequent IPs
00:00
5 left

Top K Frequent IPs

MediumPython

Problem

Noblis mission operations telemetry can contain a very large stream of network transaction records. Write a function that returns the k most frequent IP addresses without sorting every distinct address.

Each input line has the format timestamp ip action status, separated by single spaces. The timestamp and remaining fields are irrelevant. Return IP addresses ordered by decreasing frequency. If two addresses have the same frequency, order them lexicographically ascending.

Your algorithm must process lines in one pass and maintain a heap containing at most k candidates after counting. The input iterable may be a list or a generator.

Formal Specification

Implement top_k_ips(lines, k), where lines is an iterable of valid log-line strings and k is a positive integer. Return a list of at most k strings. The input guarantees that k does not exceed the number of distinct IP addresses.

Constraints

  • 1 <= len(lines) <= 10^7
  • Each line contains at least four whitespace-separated fields
  • Each IP is a valid IPv4 address string
  • 1 <= k <= number of distinct IP addresses
  • The number of distinct IP addresses may be much larger than k

Function Signature

def top_k_ips(lines, k):
Interviewer

Your question is Top K Frequent IPs. 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.