Get Interview Questions
curl --request GET \
--url https://api.example.com/api/v1/interview-questionsimport requests
url = "https://api.example.com/api/v1/interview-questions"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/v1/interview-questions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/v1/interview-questions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/interview-questions"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/interview-questions")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/interview-questions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"questions": [
{
"id": "<string>",
"role": {},
"level": {},
"category": {},
"question": "<string>",
"difficulty": {},
"skills": [
"<string>"
],
"estimatedTime": "<string>",
"guidance": {
"keyPoints": [
"<string>"
],
"commonMistakes": [
"<string>"
],
"answerStructure": [
"<string>"
]
}
}
],
"total": 123,
"page": 123,
"limit": 123,
"totalPages": 123
}Interview Questions
Get Interview Questions
Retrieve a paginated list of interview questions filterable by role, level, and category
GET
/
api
/
v1
/
interview-questions
Get Interview Questions
curl --request GET \
--url https://api.example.com/api/v1/interview-questionsimport requests
url = "https://api.example.com/api/v1/interview-questions"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/api/v1/interview-questions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/api/v1/interview-questions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/interview-questions"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/interview-questions")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/interview-questions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"questions": [
{
"id": "<string>",
"role": {},
"level": {},
"category": {},
"question": "<string>",
"difficulty": {},
"skills": [
"<string>"
],
"estimatedTime": "<string>",
"guidance": {
"keyPoints": [
"<string>"
],
"commonMistakes": [
"<string>"
],
"answerStructure": [
"<string>"
]
}
}
],
"total": 123,
"page": 123,
"limit": 123,
"totalPages": 123
}Endpoint
GET /api/v1/interview-questions
http://localhost:3000/api/v1
This endpoint requires Job Seeker authentication.
Headers
| Header | Value |
|---|---|
| Authorization | Bearer |
Query Parameters
enum
Filter by role. -
FRONTEND - BACKEND - DEVOPS - DATA_ENGINEER - SYSTEMS_ENGINEERenum
Filter by experience level. -
JUNIOR - MID - SENIORenum
Filter by question category. -
TECHNICAL - PROBLEM_SOLVING - BEHAVIORALnumber
Page number (default: 1).
number
Items per page (default: 20).
Request Examples
All questions (paginated)
GET /api/v1/interview-questions?page=1&limit=10
Filter by role only
# Get all Frontend questions across all levels and categories
GET /api/v1/interview-questions?role=FRONTEND
Filter by role + level
# Senior Backend questions (all categories)
GET /api/v1/interview-questions?role=BACKEND&level=SENIOR
Filter by role + level + category
# Technical questions for Junior Frontend developers
GET /api/v1/interview-questions?role=FRONTEND&level=JUNIOR&category=TECHNICAL
# Problem-solving questions for Senior DevOps engineers
GET /api/v1/interview-questions?role=DEVOPS&level=SENIOR&category=PROBLEM_SOLVING
# Behavioral questions for Mid Data Engineers
GET /api/v1/interview-questions?role=DATA_ENGINEER&level=MID&category=BEHAVIORAL
Role-specific examples
# All Backend questions
GET /api/v1/interview-questions?role=BACKEND
# Junior Backend technical questions
GET /api/v1/interview-questions?role=BACKEND&level=JUNIOR&category=TECHNICAL
# Senior Systems Engineer problem-solving
GET /api/v1/interview-questions?role=SYSTEMS_ENGINEER&level=SENIOR&category=PROBLEM_SOLVING
Response
Success Response (200 OK)
{
"success": true,
"data": {
"questions": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"role": "BACKEND",
"level": "SENIOR",
"category": "TECHNICAL",
"question": "Explain PostgreSQL's MVCC implementation in detail. What happens internally when two concurrent transactions try to UPDATE the same row? How does vacuum reclaim dead tuples, and what factors determine when autovacuum runs?",
"difficulty": "HARD",
"skills": ["PostgreSQL", "MVCC", "Concurrency", "Database Internals"],
"estimatedTime": "5-7 min",
"guidance": {
"keyPoints": [
"Each UPDATE creates a new tuple version; old version is marked as dead",
"Transaction IDs (XID) determine tuple visibility via the visibility map",
"Snapshot isolation: each transaction sees a consistent snapshot at start time",
"Row-level locking prevents lost updates but can cause deadlocks"
],
"commonMistakes": [
"Thinking UPDATE modifies data in-place — it creates a new tuple",
"Confusing MVCC with pessimistic locking"
],
"answerStructure": [
"Explain tuple structure: xmin, xmax, ctid pointers",
"Describe how SELECT uses snapshot isolation for visibility",
"Walk through a concurrent UPDATE scenario step by step"
]
},
"createdAt": "2026-06-11T14:12:59.962Z"
}
],
"total": 24,
"page": 1,
"limit": 10,
"totalPages": 3
},
"message": "Interview questions retrieved successfully",
"meta": {
"timestamp": "2026-06-11T14:00:00.000Z",
"path": "/api/v1/interview-questions",
"method": "GET"
}
}
Response Fields
array
Array of interview questions.
Show Question Object
Show Question Object
string
Unique identifier (UUID).
enum
Role this question targets. -
FRONTEND - BACKEND - DEVOPS - DATA_ENGINEER -
SYSTEMS_ENGINEERenum
Target experience level. -
JUNIOR - MID - SENIORenum
Question category. -
TECHNICAL - PROBLEM_SOLVING - BEHAVIORALstring
The interview question text. Deep technical questions focus on internals and
architecture.
enum
Difficulty level. -
EASY - MEDIUM - HARDstring[]
Related skills and technologies this question covers.
string
Estimated time to answer, e.g.
"5-7 min".number
Total number of questions matching the filters.
number
default:"1"
Current page number.
number
default:"20"
Items per page.
number
Total number of pages.
Category Overview
TECHNICAL
Deep technical questions covering internals, architecture, and implementation details.| Level | Example Topics |
|---|---|
| JUNIOR | HTTP, DOM APIs, database indexing, event loop, process management |
| MID | MVCC isolation, Spark execution, connection pooling, Kubernetes scheduling |
| SENIOR | Raft consensus, CFS scheduler, Catalyst optimizer, eBPF internals |
PROBLEM_SOLVING
System design and problem-solving scenarios that test architectural thinking.| Level | Example Topics |
|---|---|
| JUNIOR | Design a URL shortener, build a rate limiter, implement a cache |
| MID | Design real-time collaboration, build a monitoring system, distributed rate limiting |
| SENIOR | Design global CDN, event sourcing system, multi-region disaster recovery |
BEHAVIORAL
Situational and experience-based questions to assess soft skills and leadership.| Level | Example Topics |
|---|---|
| JUNIOR | Team collaboration, handling feedback, learning new technologies |
| MID | Leading technical decisions, mentoring juniors, handling production incidents |
| SENIOR | Architecture decisions, cross-team communication, incident leadership |
Available Roles & Question Count
| Role | Junior | Mid | Senior | Total |
|---|---|---|---|---|
| FRONTEND | 24 | 24 | 24 | 72 |
| BACKEND | 24 | 24 | 24 | 72 |
| DEVOPS | 24 | 24 | 24 | 72 |
| DATA_ENGINEER | 24 | 24 | 24 | 72 |
| SYSTEMS_ENGINEER | 24 | 24 | 24 | 72 |
| Total | 120 | 120 | 120 | 360 |
Error Responses
400 Bad Request - Validation Error
{
"success": false,
"error": {
"message": ["role must be a valid enum value"],
"statusCode": 400,
"timestamp": "2026-06-11T14:00:00.000Z",
"path": "/api/v1/interview-questions",
"method": "GET",
"details": "Bad Request"
}
}
401 Unauthorized
{
"success": false,
"error": {
"message": "Unauthorized",
"statusCode": 401,
"timestamp": "2026-06-11T14:00:00.000Z",
"path": "/api/v1/interview-questions",
"method": "GET",
"details": "Unauthorized"
}
}
