Position: Senior Java Engineer
Company: SPsoft
Experience required: 3y
English level: intermediate

**About the project**

Our client is a leading US digital bank and one of the fastest-growing fintech companies with 2+
million customers. Their custom-built banking technology provides greater stability of
transactions along with faster money transfer and cost-efficiency. Their mission is to bring
premium financial services to everyone to improve their financial journeys.
The client's applications run on Google Cloud Kubernetes, which can scale to handle dozens of
millions of transactions per day. Their services are written with Java tech stack, TypeScript and
Node.js, using MongoDB, PostgreSQL and Neo4j databases.

**Requirements**
• Significant Java development experience
• Commercial experience with a JVM
• Experience with cloud services (AWS or/and GCP)
• Experience in RDBMS and NoSQL databases
• Experience with concurrency and multi-threading
• Production Kubernetes experience
• Production GraphQL experience
• Hands-on experience with creating and maintaining tests within a CI pipeline
• Google Cloud expertise (GKE, Compute Engine, BigQuery, Cloud Build)
• Experience with data transformation technologies such as Dataflow or Spark as a plus
• Node.js and TypeScript experience as a plus

**Responsibilities**
• Design and build microservices that discover and manage gRPC endpoints for automatic
generation of client libraries. Said microservices enable mission-critical functionality,
including customer identity verification, record ledger modifications, and performing
transaction decisions on the fly.
• In-depth cooperation with the customer’s in-house team to deliver new service
templates to support varying service patterns.
• Design and implement scripts and tools to enable multi-threading and scale existing
Google Cloud infrastructure.
• Configure and deploy Datadog monitoring to meet performance SLOs.

**Interviewing process**
1st Stage of Technical interview aka “Smoke Screen”
Our phone screen is a 45-60-minute interview consisting of:
The coding challenge will be administered in java, but it is in no way a test of your knowledge of
the language. You will be given a script that contains test cases and helpers, and if you are not
familiar with an aspect of the language, the interviewer will help you out. The only java
syntax/concepts that will be used are:
• For loops and iteration:
https://www.w3schools.com/java/java_for_loop.asp
• Array manipulation (accessing, allocating, and updating):
https://www.w3schools.com/java/java_arrays.asp
• Instantiation of primitives and strings (int, String, etc):
https://www.w3schools.com/java/java_data_types.asp
2nd Stage of Technical interview part 1: Systems Design
A 60-90-minute interview where you will be asked to interactively architect a real-time system
of some kind. There will be no low-level coding assessment, however, you should be able to
construct a visual representation of the system and clearly communicate all design decisions.
2nd Stage of Technical interview part 2: Pair Programming
A 60-90-minute programming interview where you will lead a pairing session centered around
generic data structure concepts.
The session will be administered in Java, but it is not a test of your knowledge of the language.
This is a collaborative exercise, and we will ensure that you don’t get bogged down in the
patterns and syntax of Java.
You will need to clone a git repository and execute tests locally. You can use whichever IDE you
are most comfortable in, but it should be set up and ready to use prior to the interview.