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:
Introduce the company:
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
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
Interviewer Introduction (basic background, position, etc)
Applicant Introduction (basic background, current work/responsibilities)
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
Questions from applicant
Explain next steps for application:
we will notify the applicant and the recruiter
If the applicant passes, next interview will be a pair programming interview
will be 2-3 hours long
will be conducted by an external company (not us)
if the applicant passes the pair programming interview, then it’s already the offer stage
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)