JP Morgan Interview Tips: VO Questions and OA Interviews

To become a Software Engineer at JP Morgan, your journey will start with a hard enough resume - the hiring system and team will focus on those who have a solid foundation and real-world experience in core programming languages such as Java, Python, and C++, and in the fundamentals of computer science such as data structures, algorithms, operating systems, and networking. Candidates, especially those with experience in low-latency systems, distributed architectures, or fintech projects. After your resume is approved, you will most likely face a round of online programming challenges (OA) or junior technical phone interviews, which are preliminary "feelers": OA usually tests your basic algorithmic and programming skills (LeetCode medium level of difficulty), while phone interviews are conducted by engineers in person, who will talk about the projects you've worked on, your understanding of system design, and your experience in the field. projects you've worked on, your understanding of system design, and how you use code to solve real engineering problems. The key to this step is to prove that you have not only "written" code, but really understand the logic of industrial software development, testing and maintenance.

If you make it to the next stage, it's really multiple rounds of "hard" interviews, often intense live or virtual meetings, where you are thoroughly evaluated on multiple dimensions:

  • There will definitely be a round that focuses in depth on algorithms and data structures (including complexity analysis, application of specific data structures, etc.) and requires you to solve problems quickly and accurately on a whiteboard or editor;

  • Another round will put you in the role of a system architect, with in-depth discussions on the design of large distributed systems, high concurrency, scalability, database selection, and performance and fault tolerance requirements in financial scenarios.

  • Of course, there's also the behavioral interview, where the interviewer will look at your experience handling stress, managing risk, and working collaboratively to determine if you fit the culture of integrity, professionalism, and teamwork that JP Morgan emphasizes.

The entire process is notoriously difficult, and the goal is clear: to find top engineers who have both an excellent foundation in computer science and engineering, as well as the design skills and good professionalism to solve complex fintech problems.

Table Of Content

Examples of OA interview questions

title: Given an array representing the traffic flow in a city over a continuous period of time $T$which $T[i]$ is the first $i$ traffic flow for a time period (a non-negative integer). You need to convert the entire time period $T$ Split into two consecutive sub-time periods: morning peak and evening peak.

You can make adjustments to the total flow for each sub time period. Adjustment cost is defined as the minimum number of operations that need to be performed in order to equalize the total flow in the morning peak sub-hour period with the total flow in the evening peak sub-hour period. Each operation can increase or decrease the traffic flow in either time period by 1 unit.

Input: An array of integers $T$, which represents the traffic flow for each time period.

Output: An integer that represents the minimum adjustment cost.

Understanding Adjustment Costs

Suppose the array $T$ indexing $i$ The place is divided into two parts:

  • Part 1 (morning rush): $T[0]$ until (a time) $T[i]$

  • Part 2 (Evening Rush): $T[i+1]$ until (a time) $T[n-1]$

Let the sum of the first part be $S_1$, the sum of the second part is $S_2$The

in order to $S_1$ respond in singing $S_2$ Equivalent, you need to move from the side with the larger value to the smaller one, or bring the two to the median value by increasing or decreasing the operation.

in the event that $S_1 > S_2$You'll need to put the $S_1$ minimize $(S_1 - S_2) / 2$ will $S_2$ rise $(S_1 - S_2) / 2$The total number of operations is $S_1 - S_2$The

in the event that $S_2 > S_1$You'll need to put the $S_2$ minimize $(S_2 - S_1) / 2$ will $S_1$ rise $(S_2 - S_1) / 2$The total number of operations is $S_2 - S_1$The

The minimum number of operations (adjustment costs) to make the sum of the two parts equal is the absolute difference between their sums:

$$\text{Cost} = |S_1 - S_2|$$

Compute the prefix sum

To quickly compute $S_1$ and $S_2$ corresponding to an arbitrary split point $i$, we first compute the prefix and the array $P$.

$$P[k] = \sum_{j=0}^{k-1} T[j]$$

where $P[0] = 0$.

For a length of $n$ arrays $T$::

  • aggregate $S_{\text{total}}$: $P[n]$

  • cut-off point $i$ (will $T[0..i]$ as Part I).

    • $S_1 = \sum_{j=0}^{i} T[j] = P[i+1]$

    • $S_2 = S_{\text{total}} - S_1 = P[n] - P[i+1]$

Iterate over the split points and find the minimum cost

Possible division points $i$ The range is from $0$ until (a time) $n-2$(i.e. the first part contains at least one element and the second part also contains at least one element).

We iterate over all possible splits $i$::

  1. Initialization: $\text{MinCost} = \infty$

  2. Cycle: $i$ from $0$ to $n-2$

    a. Calculate $S_1$: $S_1 = P[i+1]$

    b. Calculate $S_2$: $S_2 = P[n] - S_1$

    c. Calculate current cost: $\text{CurrentCost} = |S_1 - S_2|$

    d. Update Minimum Cost: $\text{MinCost} = \min(\text{MinCost}, \text{CurrentCost})$

VO Interview Details and Topics

JP Morgan's video interview (VO) session, which lasts about 45 minutes and is conducted online in real-time through its proprietary video platform, is a comprehensive assessment process. The interview is divided into three main sections: first, the Coding Challenge, which is moderately difficult and focuses on mastery of arrays, string processing, and basic algorithms; second, the Technical Q&A and System Design, which delves into data structures, algorithmic optimization methods, and basic ideas for building small systems; and finally, the Behavioral Competency Examination, which examines soft skills such as Leadership, Teamwork, and Problem-solving. Lastly, the behavioral ability examination, through the leadership, teamwork and problem-solving soft skills questions, to comprehensively assess the overall quality and potential of the candidates.

title::

Consolidate employee availability

Develop a feature for merging available time slots for employees. You will get a list of all the unavailable time slots for a particular employee in a day. Each time slot is represented as a time slot containing a start time and an end time. $[start, end]$ The interval in which the $start \le end$. You are invited to write a function that combines all overlapping or neighboring unavailable time slots into a smaller, more concise list of unavailable time slots.

Input. A list containing unavailable time periods, e.g. unavailable_times = [[1, 3], [8, 10], [2, 6], [15, 18], [10, 12]]

Output. Combined list of non-overlapping unavailable time periods, e.g.: [[1, 6], [8, 12], [15, 18]]

Ideas for solving the problem

This question is similar to the classic Merge Intervals Similar principle, just replace the concept of "interval" with "unavailable time period", used to test your ability to apply data structures and algorithms in real-world scenarios. The core idea is sorting and single traversal.

  1. Sorting is a critical first step:

    First, you need to sort the entire list according to the start time of each unavailable interval. The purpose of sorting is to ensure that all potentially overlapping or neighboring intervals are consecutive in the list. Only then can we merge them efficiently.

  2. Single traversal and merge:

    Create a result list to hold the merged time periods. Start with the first time period in the ordered list as the "merged time period" currently being constructed. Then, check the next time period in the list in order.

  3. Determine overlap or adjacency:

    For the "merged time period" $[S_{merged}, E_{merged}]$ that is currently being constructed and the next time period $[S_{next}, E_{next}]$ to be examined, determine if they are overlapping or adjacent. If $S_{next} \le E_{merged}$, then they overlap or are adjacent (because $S_{next}$ starts just before or just as $E_{merged}$ ends).

  4. Performs a merge or adds a new interval:

    • If overlapping/adjacent: Update the end time of the "merge time period" currently under construction $E_{merged}$ because of $E_{merged}$ respond in singing $E_{next}$ hit the nail on the headgreater value. This means that we have combined the two into one larger unavailable time period.

    • If not overlapping/adjacent: The current build of the completed $[S_{merged}, E_{merged}]$ Add to the list of results with the next time period $[S_{next}, E_{next}]$ Begin construction as a new "merged time period".

  5. Deal with the last interval:

    At the end of the loop, make sure you don't forget to add the last "merged time period" being built to the final results list.

The time complexity of this method depends mainly on the sorting step as $O(N \log N)$which $N$ It's the number of time periods that have good efficiency.

system design

title: Designing a real-time trade monitoring system

Solution Idea:The central challenge in designing this system, theTwo words in a nutshell:tempoTheThere are tons of transactions that happen every day.The system must determine that a transaction is normal in milliseconds,Or is it potential fraud or money laundering.Therefore.The system architecture must be centered aroundHigh throughput and low latencyto build.On the front end.We'll utilize a high-performance message queue like Kafka to collect all real-time transaction data.Ensure that once the data is generated, theIt will be immediate,Reliably captured by the system.Next.Using a stream processing engine like Flink, thewhich computes and processes these data streams in real time.Instead of waiting a day for it to be processed like traditional batch processing.

The key to real-time processing is rapid access to "context" and judgment.In order to recognize the anomaly, theThe system can't just look at the current transaction.It needs to know how often the user has traded in the last five minutes,Average transaction value,Commonly used information such as geographic location.So.We'll use aLow-latency feature storage (Feature Store)(math.) genuslike Redis or Cassandra.to update and store key behavioral characteristics of these users in real time.The stream processing engine, upon receiving a new transactionwill immediately go to this store and query for relevant features.Judgment logic, on the other hand, consists of two parts: a set ofHard-coded rules engine(math.) genusused to capture explicit fraud patterns; another set ofmachine learning model(math.) genusUsed to identify more covertly,More complex abnormal behavior.

If a transaction is determined to be suspicious.The system immediately generates aHigh-priority alerts(math.) genusThis alert is pushed to the risk analyst's work queue, theWaiting for manual intervention. All transaction data, triggered rules, and final manual decisions are recorded in full, and we usually choose NoSQL databases like MongoDB to store these massive historical data for future auditing and model training. The goal of the entire system is to build a closed loop: fast ingestion, real-time analysis, instant warning, and continuous learning to ensure financial security without affecting the normal trading experience.

 

Interview Prep

JP Morgan's interview style for the FinTech position (FinTech / Quant / Data / SDE) is unique, combining technical depth with business logic, and is different from a purely algorithmic or behavioral interview. The focus of the preparation is to improve the ability of thinking transitions and logical modeling. Interview questions are usually short but highly logical, requiring candidates to be able to quickly read and understand scenarios, abstract mathematical models, and efficiently translate them into clear and executable code. For example, common test points include prefix sums, difference analysis, dynamic programming (DP), etc. These questions often examine the candidate's logical reasoning ability, computational thinking, and control of code readability. When preparing, don't just focus on the algorithm itself, but treat it as a small logic modeling test, train yourself to quickly find the key point of "get it right", and avoid getting stuck on seemingly simple questions.