Meta (formerly Facebook) remains one of the most competitive employers in the tech industry, with thousands of candidates worldwide applying for The first technical hurdle in this process is Meta OA – a timed, high-pressure coding challenge that screens candidates before interviews. Here’s a complete breakdown of what to expect and how to prepare Meta OA effectively.

What Is the Meta OA?
Meta’s Online Assessment is typically administered through HackerRank or Codility, and consists of two coding questions. It is commonly used for New Grad, Internship, and Entry-Level Software Engineer (SWE) roles. It is commonly used for New Grad, Internship, and Entry-Level Software Engineer (SWE) roles.
Duration. 70-90 minutes
Language options. Python, Java, C++, JavaScript, etc.
Difficulty. Medium to hard
Environment. No internet help, limited test cases shown, must handle edge cases well.
Meta OA Structure
Meta’s OA typically consists of 2-3 coding challenges and 1 system design question, administered via platforms like HackerRank or Meta’s internal tooling.
Coding Challenges.
Focus on algorithms, data structures, and optimization.
Expect medium to hard difficulty questions aligned with LeetCode standards.
Languages supported: Python, Java, C++, JavaScript, etc.
System Design :
Design scalable systems .
Evaluate trade-offs between latency, scalability, and reliability.
Behavioral Component :
Short responses to scenarios testing alignment with Meta’s values .
Common Question Types & Examples
Question 1
You are analyzing network traffic logs to identify potential security threats. A specific type of threat is indicated by a sequence of packet sizes that form a geometric progression with a given common ratio.
Given an array of integers packetSizes
representing the sizes of packets captured in a network session and an integer r
, count the number of contiguous subarrays where the elements form a geometric progression with common ratio r
.
Note: You are not expected to provide the most optimal solution, but a solution with time complexity not worse than O(packetSizes.length^2)
will fit within the execution time limit.
Example
1. For packetSizes = [2, 6, 18, 54, 108]
and r = 3
, the output should be solution(packetSizes, r) = 7
.
Explanation: The valid subarrays are [2]
, [6]
, [18]
, [54]
, [108]
, [2, 6]
, [6, 18]
, [18, 54]
, [54, 108]
, [2, 6, 18]
, [6, 18, 54]
, [18, 54, 108]
, [2, 6, 18, 54]
, [6, 18, 54, 108]
, [2, 6, 18, 54, 108]
. There are 7
such subarrays.
2. For packetSizes = [5, 5, 5, 5]
and r = 1
, the output should be solution(packetSizes, r) = 10
.
Explanation: Every subarray is a valid geometric progression with common ratio 1
. There are 10
such subarrays.
Input/Output
- [execution time limit] 3 seconds (java)
- [memory limit] 1 GB
- [input] array.integer packetSizes
An array of integers representing the sizes of packets captured in a network session.
Question 2
Given an array of integers stockPrices
and an array trendPattern
representing a price movement pattern, find how many subarrays of stockPrices
match the given pattern. trendPattern
can only contain the following integers.
trendPattern[i] = 1
represents that the price corresponding to this element of the pattern is higher than the previous one.
trendPattern[i] = 0
represents that the price corresponding to this element of the pattern is equal to the previous one.
trendPattern[i] = -1
represents that the price corresponding to this element of the pattern is lower than the previous one.
It is guaranteed that the stockPrices.length > trendPattern.length
.
Note: You are not expected to provide the most optimal solution, but a solution with time complexity not worse than O(stockPrices.length × trendPattern.length)
will fit within the execution time limit.
Example
1. For stockPrices = [100, 105, 103, 104, 102, 101, 100]
and trendPattern = [1, -1, 1]
, the output should be solution(stockPrices, trendPattern) = 1
.
Explanation: Let’s check all possible subarrays of length 3
, Subarray [105, 103, 104]
matches the pattern because 105 > 103
(trendPattern[0] = 1), 103 < 104
(trendPattern[1] = -1), and 104 > 103
(trendPattern[2] = 1). There is 1
such subarray.
2. For stockPrices = [5, 5, 5, 5, 5, 5]
and trendPattern = [0, 0]
, the output should be solution(stockPrices, trendPattern) = 3
.
Explanation: The valid subarrays are [5, 5, 5]
, [5, 5, 5]
, and [5, 5, 5]
. There are 3
such subarrays.
Question 3
You are managing a shared workspace with multiple meeting rooms. Given an array bookings
representing existing bookings for all meeting rooms over the course of a day, and an integer duration
representing the length of a new meeting in hours, find the earliest possible time when a meeting of the given duration can be scheduled in any available meeting room. meeting room.
Each element in bookings
is an array, such that bookings[i][j]
represents the j
th booking for the i
th meeting room. Each booking is represented by a pair of integers. [startTime, endTime]
, where each integer represents the number of hours since the start of the day. startTime
and endTime
do not exceed 24
.
Your task is to find the earliest possible time when a meeting of length duration
can be scheduled in any meeting room. If there is no time block which suits the requirement, return -1
.
Note: The new meeting should also fit within the same day, so the end time for this meeting should not exceed 24
.
Note: You are not expected to provide the most optimal solution, but a solution with time complexity not worse than O(bookings.length^2 - max(bookings[i].length)^2)
will fit within the execution time limit.
Example
bookings = [
[[1, 3], [6, 9]], [[0, 2], [12, 14]], [[1, 2], [12, 14]]
[[0, 2], [12, 14]]
]
and duration = 2
, the output should be solution(bookings, duration) = 5
.
Explanation:: The earliest available time block of duration 2
hours is from 5
to 7
in the first meeting room.
Hundreds of Success Stories-You’re Next!
Programhelp has helped hundreds of clients land roles at top global companies with our hands-on proxy interviewsContact us today to join the success club.