SaFi Bank Space : SaFi Initial Interview Guidelines

Goal

The goal of the initial interview for developers is to verify if the applicants have the basic technical skills required for the role.

What we are looking for:

  • knowledge basic programming concepts (data structures, inheritance, concurrency, REST apis, messaging systems, databases)

  • knowledge of good programming practices (SOLID, TDD, composition over inheritance, etc)

  • good communication skills

  • can think quickly and make intelligent assumptions based on clues or previous experience

Basic Interview Flow:

  1. Introduce the company:

    1. Advance Intelligence Group

      • Started 2016

      • Headquartered in Singpore

      • unicorn company (>1B valuation)

      • Presence in multiple countries, Apac/mexico

      • 3 Main Business Units

        • Advance AI

          • KYC platform (KYC = know your customer)

        • Ginee

          • Ecommerce merchant services

          • used by online retailers for their online stores

          • retailers that use them (in the Philippines): Lazada, shopee

        • Atome

          • Buy now, pay later brand

          • Consumer facing

    2. Digital Bank

      • Startup, started late last year

        • still in the process of building out all the teams

        • Dev currently outsourced to partners in Europe, Indonesia

        • will take on more of the dev once teams are built

      • Targeting the Philippine market

      • License: Thrift Bank (basically a normal bank), not just digital bank

        • But in terms of the customer experience, it’s fully digital

      • Tech Stack:

        • Backend: Kotlin + Micronaut, Kubernetes, GCP, REST, Kafka

        • Frontend: Flutter

  2. Interviewer Introduction (basic background, position, etc)

  3. Applicant Introduction (basic background, current work/responsibilities)

  4. Technical Questions (feel free to modify/change/drop any question here):

    • What class do all classes inherit from? And what methods does it have? (Equals, hashcode)

      • Why would you need to override hashcode

    • Java Collections / data structures (list, map, array)

      • describe each data structure

      • basic uses cases for each

      • implementations of each, and differences

    • abstract class vs interface

      • describe each

      • difference between the two

      • when would they use one over the other

    • Generics - what are they and what

    • Concurrency (not necessarily just threads, could also be something like multiple services running in parallel):

      • Advantages

      • What possible problems would you encounter when using concurrency?

        • Race conditions, shared resources (deadlock, starvation)

      • How to mitigate issues?

        • blocking

        • immutability

        • pure functions / stateless services

    • REST APIs

      • how to define a RESTful API

        • when to use each specific HTTP verb

        • how to name the path

      • might be a good idea to give them a concrete example, for example:

        • Describe the path for the handling transactions:

          • Create a transaction

          • Query transaction details

          • Update a transaction

          • Delete a transaction

    • Databases

      • relational vs nosql

      • when to use one over the other?

      • Relation dbs - ACID transactions

    • Programming Practices

      • SOLID principles

      • TDD

      • design patterns

      • DDD

    • Messaging:

      • Queue vs topic

      • when to use one or the other

    • System design questions (mostly for leads)

      • e.g. design a transactions system that integrates with multiple external providers that have different apis, etc

  5. Questions from applicant

  6. Explain next steps for application:

    1. we will notify the applicant and the recruiter

    2. If the applicant passes, next interview will be a pair programming interview

      1. will be 2-3 hours long

      2. will be conducted by an external company (not us)

    3. if the applicant passes the pair programming interview, then it’s already the offer stage

    4. we wil try to contact the applicant asap regarding their application

Please update the Jira ticket for the applicant with your notes and decision ASAP

Additional Notes

  • make sure to make the applicant comfortable. Interviews are a nerve-wracking experience and they might not perform up to par due to nervousness

  • feel free to give them hints and to walk them through stuff if it seems they’re struggling

    • if they initially don’t know but was able to make solid inferences based on clues/past experience, that is still good

  • try to relate the questions to their experience, and ask them to give examples

  • feel free to stop the interview at any time if you have already made a decision

  • if there are any technical issues especially at the start, ask the applicant if they want to reschedule

  • please make sure to emphasize that the role requires being somewhat fluent in English

  • for applicant in the Philippines, please ask them if they are comfortable working in a hybrid environment (need to be in the office a few times a week)