Perplexity

Perplexity Software Engineer Phone Screen Questions

6+ questions from real Perplexity Software Engineer Phone Screen rounds, reported by candidates who interviewed there.

6
Questions
6
Topic Areas
10+
Sources

What does the Perplexity Phone Screen round test?

The Perplexity phone screen typically lasts 45-60 minutes and evaluates core Software Engineer fundamentals. Candidates should expect 1-2 algorithmic problems, basic system design discussion at senior levels, and questions about relevant experience. The goal is to confirm technical competence before bringing candidates onsite.

Top Topics in This Round

Perplexity Software Engineer Phone Screen Questions

It's not easy for older programmers to find jobs again; they're waiting for the results. Please send blessings and add rice (a Chinese internet slang term for virtual currency) Position: Staff SWE Rou

Given a string and a list of stop words, return the string up to the first stop word. What if the input string is a stream? The entire string cannot be loaded into memory.

The topic is Embedding Model Server. The following content requires a score higher than 189. You can already view it. Provide an Embedding Model class. You need to implement a service to use this mode

## Problem You have `n` servers and a list of request assignments `(server_id, request_weight)`. A distribution is considered "balanced" if the maximum total weight on any server minus the minimum total weight is at most `threshold`. Write a function that checks whether a given assignment is balanced and, if not, returns the servers causing the imbalance. ```python def check_distribution( n: int, assignments: list[tuple[int, float]], threshold: float ) -> tuple[bool, list[int]]: """Return (is_balanced, list_of_imbalanced_server_ids).""" pass ``` ``` Input: n=3, threshold=5.0 assignments = [(0,10),(1,8),(2,20),(0,5),(1,7)] # Server totals: 0->15, 1->15, 2->20 # max-min = 20-15 = 5 <= 5 -> balanced Output: (True, []) assignments = [(0,10),(1,3),(2,20)] # Totals: 0->10, 1->3, 2->20. max-min=17 > 5 Output: (False, [1, 2]) ``` ## Follow-ups 1. Define "imbalanced server" clearly — is it servers above average, below average, or at both extremes? 2. How would you rebalance by moving the minimum number of requests? 3. Extend to a real-time streaming version where `check_distribution` is called after each new assignment. 4. How would you write a SQL query to find imbalanced servers if assignments are stored in a table?

## Problem Validate a dependency graph for cycles or ordering conflicts, using topological sort. ## Likely LeetCode equivalent Similar to LC 207 Course Schedule. ## Tags coding, graph, topological_sort, phone

## Problem Given a list of text documents and a stopword list, remove all stopword occurrences from each document. Matching is case-insensitive. Preserve original word casing for non-stopwords. Return the filtered documents. ```python def remove_stopwords( documents: list[str], stopwords: list[str] ) -> list[str]: pass ``` ``` Input: documents = ["The quick brown fox", "A dog and a cat"] stopwords = ["the", "a", "and"] Output: ["quick brown fox", "dog cat"] # Extra spaces collapsed, original case preserved for kept words. Input: documents = ["IS THIS WORKING"] stopwords = ["is", "this"] Output: ["WORKING"] ``` ## Follow-ups 1. What data structure do you use for stopword lookup, and why? 2. How do you handle punctuation attached to words (e.g., `"fox,"` where `"fox"` is a stopword)? 3. For a corpus of 10 million documents, how would you parallelize this pipeline? 4. Extend to support language-specific stopword lists that are selected based on detected document language.

See All 6 Questions from This Round

Full question text, answer context, and frequency data for subscribers.

Get Access