Câu Hỏi Phỏng Vấn Data Analyst 2026: Hướng Dẫn Toàn Diện SQL, Python và Analytics
Hướng dẫn toàn diện về câu hỏi phỏng vấn data analyst 2026 bao gồm SQL window functions, Python pandas, khái niệm thống kê và case study kinh doanh với ví dụ code thực tế.

Câu hỏi phỏng vấn data analyst năm 2026 kiểm tra ba lĩnh vực cốt lõi: thành thạo SQL, thao tác dữ liệu Python và giải quyết vấn đề kinh doanh. Các công ty như Google, Meta và Amazon đã chuẩn hóa vòng technical screen của họ xung quanh các kỹ năng này, với SQL window functions và các thao tác pandas xuất hiện trong hơn 80% các buổi phỏng vấn theo báo cáo xu hướng tuyển dụng của Glassdoor 2026.
Các ứng viên xuất sắc nhất thể hiện không chỉ kiến thức về cú pháp mà còn khả năng giải thích phương pháp phân tích của họ. Người phỏng vấn đánh giá liệu ứng viên có thể chuyển đổi câu hỏi kinh doanh thành truy vấn kỹ thuật và truyền đạt kết quả cho các bên liên quan không chuyên kỹ thuật hay không.
SQL Window Functions: Chủ Đề Phỏng Vấn Phổ Biến Nhất
Window functions xuất hiện trong hầu hết mọi vòng technical screen của data analyst. Khác với aggregate functions thu gọn các hàng, window functions thực hiện tính toán trên một tập hợp các hàng liên quan đến hàng hiện tại trong khi vẫn giữ nguyên dữ liệu của từng hàng.
Câu hỏi: Tính lương của mỗi nhân viên dưới dạng phần trăm của tổng lương bộ phận.
-- employee_salary_percentage.sql
SELECT
employee_id,
department,
salary,
-- SUM as window function preserves each row
ROUND(
salary * 100.0 / SUM(salary) OVER (PARTITION BY department),
2
) AS pct_of_dept_salary
FROM employees
ORDER BY department, pct_of_dept_salary DESC;Mệnh đề PARTITION BY tạo các window riêng biệt cho mỗi bộ phận. Lương của mỗi nhân viên được chia cho tổng của bộ phận họ, không phải tổng công ty. Sự khác biệt này thường bẫy các ứng viên sử dụng subquery hoặc join thay thế.
Câu hỏi: Tìm running total của doanh số theo ngày, reset mỗi tháng.
-- monthly_running_total.sql
SELECT
sale_date,
amount,
SUM(amount) OVER (
PARTITION BY DATE_TRUNC('month', sale_date)
ORDER BY sale_date
-- Default frame: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
) AS monthly_running_total
FROM sales
ORDER BY sale_date;Người phỏng vấn mong đợi ứng viên biết hành vi mặc định của window frame. Nếu không có mệnh đề ROWS hoặc RANGE rõ ràng, frame mở rộng từ đầu partition đến hàng hiện tại, tạo ra running total. Luyện tập các pattern này với module SQL window functions.
CTEs và Subqueries: Tổ Chức Query Phức Tạp
Common Table Expressions làm cho query dễ đọc và bảo trì. Người phỏng vấn đánh giá liệu ứng viên có cấu trúc query một cách logic thay vì viết các câu lệnh đơn khối hay không.
Câu hỏi: Tìm khách hàng đã mua hàng trong các tháng liên tiếp.
-- consecutive_month_purchasers.sql
WITH monthly_purchases AS (
-- Step 1: Get distinct customer-month combinations
SELECT DISTINCT
customer_id,
DATE_TRUNC('month', purchase_date) AS purchase_month
FROM orders
),
with_prev_month AS (
-- Step 2: Add previous purchase month for each customer
SELECT
customer_id,
purchase_month,
LAG(purchase_month) OVER (
PARTITION BY customer_id
ORDER BY purchase_month
) AS prev_purchase_month
FROM monthly_purchases
)
-- Step 3: Filter to consecutive months only
SELECT DISTINCT customer_id
FROM with_prev_month
WHERE purchase_month = prev_purchase_month + INTERVAL '1 month';Pattern này kết hợp CTEs với window function LAG. Chia query thành các bước có tên thể hiện quá trình tư duy, điều mà người phỏng vấn đánh giá cao như câu trả lời đúng.
Python Pandas: Kiến Thức Cơ Bản Về Thao Tác Dữ Liệu
Câu hỏi Pandas kiểm tra kỹ năng làm sạch dữ liệu, tổng hợp và chuyển đổi. Người phỏng vấn đưa ra các dataset lộn xộn và yêu cầu ứng viên trích xuất insight.
Câu hỏi: Cho một DataFrame về phiên người dùng, tính thời lượng phiên trung bình theo phân khúc người dùng, loại trừ các phiên ngắn hơn 10 giây.
# session_analysis.py
import pandas as pd
def analyze_sessions(df: pd.DataFrame) -> pd.DataFrame:
"""Calculate average session duration by user segment.
Args:
df: DataFrame with columns [user_id, segment, session_start, session_end]
Returns:
DataFrame with average duration per segment
"""
# Calculate duration in seconds
df['duration_seconds'] = (
df['session_end'] - df['session_start']
).dt.total_seconds()
# Filter short sessions and aggregate
return (
df[df['duration_seconds'] >= 10]
.groupby('segment')
.agg(
avg_duration=('duration_seconds', 'mean'),
session_count=('user_id', 'count')
)
.round(2)
.reset_index()
)Câu trả lời thể hiện method chaining, xử lý datetime và hàm agg với output được đặt tên. Người phỏng vấn kiểm tra rằng ứng viên lọc trước khi tổng hợp chứ không phải sau, điều này sẽ làm lệch các giá trị trung bình.
Câu hỏi: Merge hai DataFrame và xử lý giá trị thiếu một cách phù hợp.
# merge_and_clean.py
import pandas as pd
import numpy as np
def merge_user_data(
users: pd.DataFrame,
transactions: pd.DataFrame
) -> pd.DataFrame:
"""Merge user demographics with transaction history.
Users without transactions get total_spent = 0.
Transactions without user data are excluded.
"""
merged = pd.merge(
users,
transactions.groupby('user_id')['amount'].sum().reset_index(),
on='user_id',
how='left' # Keep all users, even without transactions
)
# Fill NaN for users with no transactions
merged['amount'] = merged['amount'].fillna(0)
merged.rename(columns={'amount': 'total_spent'}, inplace=True)
return mergedTham số how='left' và xử lý fillna rõ ràng cho thấy sự chú ý đến các edge cases. Ứng viên sử dụng how='inner' sẽ mất người dùng không có giao dịch, thay đổi tổng thể phân tích.
Sẵn sàng chinh phục phỏng vấn Data Analytics?
Luyện tập với mô phỏng tương tác, flashcards và bài kiểm tra kỹ thuật.
Khái Niệm Thống Kê: Những Gì Analyst Phải Giải Thích Rõ Ràng
Câu hỏi thống kê đánh giá liệu ứng viên có thể áp dụng các khái niệm vào vấn đề kinh doanh thực tế và truyền đạt kết quả cho các bên liên quan hay không.
Câu hỏi: Một product manager tuyên bố luồng checkout mới tăng chuyển đổi 5%. Thử nghiệm chạy một tuần với 10.000 người dùng mỗi biến thể. Kết quả này có ý nghĩa thống kê không?
Câu trả lời đầy đủ đề cập đến kích thước mẫu, statistical power và practical significance:
-
Tính standard error: Đối với tỷ lệ chuyển đổi, SE = sqrt(p(1-p)/n). Với tỷ lệ chuyển đổi cơ bản 10% và n=10.000, SE khoảng 0,003.
-
Tính z-score: Mức tăng tương đối 5% có nghĩa là tỷ lệ chuyển đổi mới là 10,5%. Chênh lệch 0,5 điểm phần trăm chia cho pooled SE xác định ý nghĩa.
-
Xem xét practical significance: Ngay cả khi p < 0,05, mức tăng 0,5 điểm phần trăm có thể không biện minh cho chi phí kỹ thuật của luồng mới.
-
Kiểm tra confounds: Một tuần nắm bắt được pattern cuối tuần so với ngày trong tuần nhưng có thể bỏ lỡ chu kỳ hàng tháng hoặc hiệu ứng theo mùa.
Người phỏng vấn đánh giá cao ứng viên đặt câu hỏi về các giả định thay vì tính toán p-value một cách máy móc. Module nguyên tắc trực quan hóa dữ liệu bao gồm cách trình bày các kết quả này.
Câu hỏi: Giải thích sự khác biệt giữa tương quan và quan hệ nhân quả với một ví dụ kinh doanh.
Doanh số kem và số ca chết đuối có tương quan dương. Cả hai đều tăng vào mùa hè do biến số confounding là nhiệt độ. Khuyến nghị giảm sản xuất kem để ngăn chặn đuối nước là nhầm lẫn tương quan với quan hệ nhân quả.
Trong phân tích kinh doanh: chi tiêu quảng cáo và doanh thu thường có tương quan, nhưng mối quan hệ có thể phản ánh rằng các công ty tăng chi tiêu quảng cáo khi dự báo doanh thu đã mạnh, chứ không phải quảng cáo thúc đẩy doanh thu. Thiết lập quan hệ nhân quả đòi hỏi các thí nghiệm có kiểm soát hoặc kỹ thuật suy luận nhân quả như difference-in-differences.
Câu Hỏi Case Study Kinh Doanh: Chuyển Đổi Vấn Đề Thành Query
Câu hỏi case study kiểm tra khả năng phân tích các vấn đề kinh doanh mơ hồ thành các bước phân tích cụ thể.
Câu hỏi: Tỷ lệ giữ chân người dùng giảm 15% tháng trước. Làm thế nào để điều tra?
Phương pháp có cấu trúc:
-
Xác thực số liệu: Xác nhận định nghĩa retention khớp với tính toán lịch sử. Kiểm tra vấn đề pipeline dữ liệu hoặc thay đổi tracking.
-
Phân khúc sự sụt giảm: Chia retention theo cohort người dùng, kênh acquisition, loại thiết bị và địa lý. Sự sụt giảm 15% tổng thể có thể là sự sụt giảm 50% ở một phân khúc che khuất sự ổn định ở nơi khác.
-
Xác định thời điểm: Retention giảm dần hay đột ngột? Sự sụt giảm đột ngột gợi ý thay đổi sản phẩm hoặc bug. Sự suy giảm dần chỉ ra các yếu tố thị trường hoặc cạnh tranh.
-
Tương quan với sự kiện: Căn chỉnh timeline với các bản phát hành sản phẩm, chiến dịch marketing, ra mắt của đối thủ và sự kiện bên ngoài.
-
Hình thành giả thuyết: Dựa trên các pattern phân khúc, đề xuất các giải thích có thể kiểm tra và dữ liệu cần thiết để xác nhận hoặc bác bỏ từng giả thuyết.
-- retention_by_cohort.sql
WITH user_cohorts AS (
SELECT
user_id,
DATE_TRUNC('week', created_at) AS cohort_week
FROM users
),
weekly_activity AS (
SELECT
user_id,
DATE_TRUNC('week', activity_date) AS activity_week
FROM user_events
)
SELECT
c.cohort_week,
a.activity_week,
COUNT(DISTINCT a.user_id) AS active_users,
COUNT(DISTINCT c.user_id) AS cohort_size,
ROUND(
COUNT(DISTINCT a.user_id) * 100.0 / COUNT(DISTINCT c.user_id),
1
) AS retention_pct
FROM user_cohorts c
LEFT JOIN weekly_activity a
ON c.user_id = a.user_id
AND a.activity_week >= c.cohort_week
GROUP BY c.cohort_week, a.activity_week
ORDER BY c.cohort_week, a.activity_week;Query phân tích cohort này tạo ra dữ liệu cần thiết cho bước 2. Module retention cohort bao gồm các biến thể của pattern này.
Take-Home Assignments: Tiêu Chí Đánh Giá
Nhiều công ty bao gồm take-home assignments kéo dài 2 đến 4 giờ. Người đánh giá chấm điểm bài nộp dựa trên chất lượng code, tính nghiêm ngặt phân tích và khả năng truyền đạt.
Assignment phổ biến: Cho dataset giao dịch e-commerce, xác định các yếu tố dự đoán churn khách hàng.
Các bài nộp xuất sắc có những đặc điểm sau:
- Phân tích khám phá trước: Thống kê tóm tắt, biểu đồ phân phối và đánh giá giá trị thiếu trước khi modeling
- Feature engineering: Tạo các feature liên quan như recency, frequency, monetary value (RFM) và chỉ số xu hướng
- Lý do chọn model: Giải thích tại sao logistic regression hoặc random forest phù hợp với vấn đề, không chỉ chạy mặc định
- Phương pháp validation: Sử dụng time-based splits thay vì random splits để tránh data leakage
- Truyền đạt rõ ràng: Tóm tắt điều hành ở đầu, chi tiết kỹ thuật trong phụ lục, trực quan hóa hỗ trợ kết luận
# churn_analysis_structure.py
import pandas as pd
from sklearn.model_selection import TimeSeriesSplit
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import precision_recall_curve, auc
def create_rfm_features(df: pd.DataFrame, analysis_date: str) -> pd.DataFrame:
"""Create Recency, Frequency, Monetary features per customer."""
analysis_dt = pd.to_datetime(analysis_date)
rfm = df.groupby('customer_id').agg(
recency=('order_date', lambda x: (analysis_dt - x.max()).days),
frequency=('order_id', 'nunique'),
monetary=('order_total', 'sum')
).reset_index()
return rfm
def evaluate_with_time_split(
X: pd.DataFrame,
y: pd.Series,
n_splits: int = 5
) -> list:
"""Evaluate model using time-based cross-validation."""
tscv = TimeSeriesSplit(n_splits=n_splits)
scores = []
for train_idx, val_idx in tscv.split(X):
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X.iloc[train_idx], y.iloc[train_idx])
y_pred_proba = model.predict_proba(X.iloc[val_idx])[:, 1]
precision, recall, _ = precision_recall_curve(y.iloc[val_idx], y_pred_proba)
scores.append(auc(recall, precision))
return scoresCode thể hiện feature engineering liên quan đến domain và phương pháp validation phù hợp cho dữ liệu time-series.
Điểm Chính Cho Phỏng Vấn Data Analyst Năm 2026
-
SQL window functions với
PARTITION BYvàORDER BYxuất hiện trong hầu hết các vòng technical screens. Luyện tập tính running totals, phần trăm và xếp hạng. -
Câu hỏi Python pandas nhấn mạnh method chaining, groupby aggregations và merge operations với xử lý giá trị thiếu phù hợp.
-
Câu hỏi thống kê yêu cầu giải thích các khái niệm bằng ngôn ngữ kinh doanh. Người phỏng vấn đánh giá khả năng truyền đạt, không chỉ kiến thức kỹ thuật.
-
Câu hỏi case study kinh doanh kiểm tra phân tích vấn đề có cấu trúc. Bắt đầu bằng cách xác thực số liệu, sau đó phân khúc để cô lập vấn đề.
-
Take-home assignments được chấm điểm dựa trên chất lượng code và khả năng truyền đạt cũng nhiều như độ chính xác phân tích. Bao gồm tóm tắt điều hành và giải thích các lựa chọn của bạn.
-
Module BigQuery nâng cao và module cơ bản Python pandas cung cấp các câu hỏi luyện tập bổ sung phù hợp với các pattern phỏng vấn hiện tại.
Bắt đầu luyện tập!
Kiểm tra kiến thức với mô phỏng phỏng vấn và bài kiểm tra kỹ thuật.
Bạn có tìm ra lỗi trong Data Analytics không?
Một đoạn mã thật, một lỗi ẩn, mỗi ngày một lượt. Không cần tài khoản để thử.

Viết bởi
Anthony Fillion-MailletNgười sáng lập SharpSkill
Lập trình viên fullstack hơn 10 năm. Anh điều hành SharpSkill và chịu trách nhiệm về mọi nội dung đăng tại đây.
Cập nhật ngày 8 tháng 9, 2026
Thẻ
Chia sẻ
Bài viết liên quan

Câu Hỏi Phỏng Vấn Data Analyst Italia 2026: SQL, Python và Analytics
30 câu hỏi phỏng vấn data analyst cho Italia 2026. Query SQL, Python pandas, và business analytics với câu trả lời mong đợi.

Top 25 Câu Hỏi Phỏng Vấn Data Analytics Năm 2026
Hướng dẫn chi tiết 25 câu hỏi phỏng vấn Data Analyst thường gặp năm 2026, bao gồm SQL, Python, thống kê, visualization và behavioral questions kèm code examples.

Pandas 3.0 trong 2026: API Mới, Breaking Changes và Câu Hỏi Phỏng Vấn
Hướng dẫn chi tiết về Pandas 3.0 bao gồm Copy-on-Write, PyArrow string backend, biểu thức pd.col(), breaking changes và câu hỏi phỏng vấn data analytics.