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)
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.
I was asked to explain connection pooling, including its benefits and how it generally works in application development.
The interviewer inquired about the fundamental differences between the '==' operator and the '.equals()' method in Java, and when each should be appropriately used.
I was asked to describe the concepts of deep copy and shallow copy, including their implications and use cases in programming.
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.
I was asked to explain the typical steps and mechanisms involved in establishing a connection to a database from an application.
The interviewer asked about the immutability of String objects in Java, why they are immutable, and the consequences of this design choice.
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.
The discussion extended to string immutability in Python, potentially asking for comparisons or contrasts with Java's approach.
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.
I was asked about how memory is allocated for primitive data types in a programming language environment.
The interviewer inquired about the differences between heap and stack memory, their respective uses, and how they function in program execution.
A question was posed about the mechanisms and locations involved in storing string data within memory.
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.