Tower Research LLC | SDE 1 (Backend Post Trade) | Interview Experience (Rejected)
Summary
I recently interviewed for the SDE 1 (Backend Post Trade) role at Tower Research LLC, undergoing an Online Assessment and two subsequent technical rounds, ultimately receiving a rejection.
Full Experience
My Interview Experience at Tower Research LLC for SDE 1 (Backend Post Trade)
My journey at Tower Research LLC began with an Online Assessment, followed by two technical interview rounds. Unfortunately, I was not selected to move forward after the second round.
Online Assessment (135 minutes)
The Online Assessment was conducted on the HackerRank platform and comprised six questions: two coding problems and four theoretical questions covering various Computer Science fundamentals.
Coding Questions
- Java-specific OOP: This question focused on Object-Oriented Programming concepts, specifically inheritance. I had to implement inheritance in Java using a provided template to satisfy given test cases. It was quite straightforward for someone familiar with OOP.
- DSA Question: A medium-level Data Structures and Algorithms question.
Theoretical Questions
The theoretical part covered a broad range of topics, including:
- Python memory management
- Python debugging (concepts of
readlineandreadlinesmethods) - Banker's algorithm for deadlock detection
- Python decorators
- SQL injection prevention
- Java context
finalkeyword in Java functionssynchronizedmethod access in multithreading- Java class execution
- Constructor overloading and polymorphism
- TCP congestion control
Round 1 (1 hour)
After successfully clearing the Online Assessment, I was invited for Round 1. The HR team did not specify the total number of rounds or the interview structure beforehand. This round was primarily focused on Data Structures and Algorithms.
- The interviewer initially presented a graph question similar to the "Max Area of Island" problem on LeetCode. I discussed my approach to solving it.
- Following our discussion, the interviewer provided a modified version of the question, which I managed to solve. The round concluded after I successfully solved the modified problem.
Round 2 (45 minutes)
Round 2 was scheduled 3-4 days after Round 1. This round was a mix of Java-specific questions, data structure-related inquiries, and rapid-fire questions covering a wide array of topics, such as:
- Connection pooling
- Difference between
==andequalsin Java - Deep and shallow copy
HashMapandMapimplementation details- Database connection process
- String immutability in Java
- Relationship between Java's
equals()andhashCode()methods - String immutability in Python
- Spring Boot and its related connection classes
- Memory allocation for primitive types
- Heap and stack memory differences
- How strings are stored in memory
- What precisely happens when we execute:
int a = 10;
Unfortunately, I did not receive an offer and was not selected to proceed to further rounds after Round 2.
Interview Questions (16)
Java OOP Inheritance Implementation
I was given a Java-specific coding question that tested Object-Oriented Programming concepts, particularly inheritance. The task was to implement inheritance using a provided template to satisfy a set of test cases.
Max Area of Island (Graph Problem)
The interviewer asked a graph question similar to the 'Max Area of Island' problem found on LeetCode. This typically involves finding the largest connected component of 1s in a 2D binary grid.
Modified Graph Problem
After discussing my approach to the initial graph problem, the interviewer presented a modified version of the question, which I then proceeded to solve.
Connection Pooling
I was asked to explain connection pooling, including its benefits and how it generally works in application development.
Difference between == and equals in Java
The interviewer inquired about the fundamental differences between the '==' operator and the '.equals()' method in Java, and when each should be appropriately used.
Deep and Shallow Copy
I was asked to describe the concepts of deep copy and shallow copy, including their implications and use cases in programming.
HashMap and Map Implementation
Questions were posed regarding the internal implementation and usage of 'HashMap' and 'Map' interfaces in Java, likely covering their underlying data structures and performance characteristics.
Database Connection Process
I was asked to explain the typical steps and mechanisms involved in establishing a connection to a database from an application.
String Immutability in Java
The interviewer asked about the immutability of String objects in Java, why they are immutable, and the consequences of this design choice.
Java equals() and hashCode() Relationship
I was questioned about the critical relationship between the 'equals()' and 'hashCode()' methods in Java, and the contract that must be maintained when overriding them.
String Immutability in Python
The discussion extended to string immutability in Python, potentially asking for comparisons or contrasts with Java's approach.
Spring Boot and Related Connection Classes
I received questions concerning Spring Boot and its associated classes used for managing connections, likely in the context of database access or inter-service communication.
Memory Allocation for Primitive Types
I was asked about how memory is allocated for primitive data types in a programming language environment.
Heap and Stack Memory
The interviewer inquired about the differences between heap and stack memory, their respective uses, and how they function in program execution.
String Storage in Memory
A question was posed about the mechanisms and locations involved in storing string data within memory.
What happens when: int a = 10?
I was asked to detail the sequence of events and memory operations that occur at a low level when a simple statement like 'int a = 10;' is executed.