Reviewed by Aditya Kumar Β· Last reviewed 2026-03-24
**Approach:** Maintain window (deque). Compute rolling mean, std. Flag if value beyond k*std (e.g., 3-sigma). For streaming: update incrementally (Welford's algo for running mean/var). **Robustness:** Mean/std sensitive to outliers. Use median + MAD for robust. Or EWMA for...
Approach: Maintain window (deque). Compute rolling mean, std. Flag if value beyond k*std (e.g., 3-sigma). For streaming: update incrementally (Welford's algo for running mean/var).
Robustness: Mean/std sensitive to outliers. Use median + MAD for robust. Or EWMA for trend. Alert on anomaly rate, not single spike.
def detect_anomalies(values, window=10, k=3):
for i in range(window, len(values)):
w = values[i-window:i]
if np.std(w) > 0 and abs(values[i] - np.mean(w)) > k * np.std(w):
yield i, values[i]
Red Flag: 3-sigma on heavy-tailed data. Pro-Move: 'We use MAD + median; alert when anomaly rate > 5% over 1 min.'
According to DataEngPrep.tech, this is one of the most frequently asked Python/Coding interview questions, reported at 1 company. DataEngPrep.tech maintains an editor-reviewed database of 1,863 data engineering interview questions across 7 categories.