Form3 Take Home Exercise

Form3 Take Home Exercise

Engineers at Form3 build highly available distributed systems in a microservices environment. Our take home test is designed to evaluate real world activities that are involved with this role. We recognise that this may not be as mentally challenging and may take longer to implement than some algorithmic tests that are often seen in interview exercises. Our approach however helps ensure that you will be working with a team of engineers with the necessary practical skills for the role (as well as a diverse range of technical wizardry).

Instructions

The goal of this exercise is to write a client library in Go to access our fake account API, which is provided as a Docker container in the file docker-compose.yaml of this repository. Please refer to the Form3 documentation for information on how to interact with the API. Please note that the fake account API does not require any authorisation or authentication.

A mapping of account attributes can be found in models.go. Can be used as a starting point, usage of the file is not required.

If you encounter any problems running the fake account API we would encourage you to do some debugging first, before reaching out for help.

Submission Guidance

Shoulds

The finished solution should:

  • Be written in Go.
  • Use the docker-compose.yaml of this repository.
  • Be a client library suitable for use in another software project.
  • Implement the Create, Fetch, and Delete operations on the accounts resource.
  • Be well tested to the level you would expect in a commercial environment. Note that tests are expected to run against the provided fake account API.
  • Be simple and concise.
  • Have tests that run from docker-compose up - our reviewers will run docker-compose up to assess if your tests pass.

Should Nots

The finished solution should not:

  • Use a code generator to write the client library.
  • Use (copy or otherwise) code from any third party without attribution to complete the exercise, as this will result in the test being rejected.
  • Use a library for your client (e.g: go-resty). Libraries to support testing or types like UUID are fine.
  • Implement client-side validation.
  • Implement an authentication scheme.
  • Implement support for the fields data.attributes.private_identification, data.attributes.organisation_identification and data.relationships, as they are omitted in the provided fake account API implementation.
  • Have advanced features, however discussion of anything extra you'd expect a production client to contain would be useful in the documentation.
  • Be a command line client or other type of program - the requirement is to write a client library.
  • Implement the List operation.

We give no credit for including any of the above in a submitted test, so please only focus on the "Shoulds" above.

How to submit your exercise

  • Include your name in the README. If you are new to Go, please also mention this in the README so that we can consider this when reviewing your exercise
  • Create a private GitHub repository, by copying all files you deem necessary for your submission
  • Invite @form3tech-interviewer-1 to your private repo
  • Let us know you've completed the exercise using the link provided at the bottom of the email from our recruitment team

License

Copyright 2019-2021 Form3 Financial Cloud

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Similar Resources

Exercise #8: Phone Number Normalizer

Exercise #8: Phone Number Normalizer

Exercise #8: Phone Number Normalizer Exercise details This exercise is fairly st

Jan 9, 2022

My solution for a Go exercises series called gophercises - exercise #1

My solution for a Go exercises series called gophercises - exercise #1

Jan 11, 2022

Mock-the-fck - Mock exercise for human

Mock the fck Originally, Mockery-example Example case for mockery issue #128 fil

Jan 21, 2022

This is my solution the React exercise on Exercism's Go track.

Solution to React Exercise on Exercism This is my solution the React exercise on Exercism's Go track. The original readme is below. React Welcome to R

Feb 8, 2022

take bytes out of things easily โœจ๐Ÿช

take bytes out of things easily โœจ๐Ÿช

crunch a library for easily manipulating bits and bytes in golang features | installation | benchmarks | examples features feature-rich: supports read

Nov 20, 2022

Take control of your data, connect with anything, and expose it anywhere through protocols such as HTTP, GraphQL, and gRPC.

Take control of your data, connect with anything, and expose it anywhere through protocols such as HTTP, GraphQL, and gRPC.

Semaphore Chat: Discord Documentation: Github pages Go package documentation: GoDev Take control of your data, connect with anything, and expose it an

Sep 26, 2022

Demonstrating how you can take an action to your intrusions detected by Falco using OpenFaaS functions

Demonstrating how you can take an action to your intrusions detected by Falco using OpenFaaS functions

Kubernetes Response Engine powered by OpenFaaS Although Falco can be used to detect any intrusion attempts and sends alerts to channels according to t

Aug 22, 2022

Take screenshots of websites and create PDF from HTML pages using chromium and docker

gochro is a small docker image with chromium installed and a golang based webserver to interact wit it. It can be used to take screenshots of w

Nov 23, 2022

Take a list of domains and scan for endpoints, secrets, api keys, file extensions, tokens and more...

Take a list of domains and scan for endpoints, secrets, api keys, file extensions, tokens and more...

Take a list of domains and scan for endpoints, secrets, api keys, file extensions, tokens and more... Coded with ๐Ÿ’™ by edoardottt. Share on Twitter! P

Dec 25, 2022

Take control over your live stream video by running it yourself. Streaming + chat out of the box.

Take control over your live stream video by running it yourself.  Streaming + chat out of the box.

Take control over your content and stream it yourself. Explore the docs ยป View Demo ยท Use Our Server for Testing ยท FAQ ยท Report Bug Table of Contents

Jan 1, 2023

Take an IP address and quickly get the reverse PTR

FlipIP Just a little quick app to take an IP (or set of IPs), and convert them to reverse IP pointers Example: $ flipip 1.2.3.4 4.3.2.1.in-addr.arpa.

Feb 27, 2022

Cook amazing genetic parts using our cookbook. Recipes and synthetic biology tools to take your breath away.

friendzymes-cookbook Friendly tools for a friendly community. A collection of tutorials and genetic tools for synthetic biology. This cookbook is a su

Aug 19, 2022

A simple CLI app to take notes daily on markdown file

A simple CLI app to take notes daily on markdown file

A simple CLI app to take notes daily on markdown file

Jul 29, 2022

๐Ÿ“ Take notes quickly and expeditiously from terminal

๐Ÿ“ Take notes quickly and expeditiously from terminal

Installation See the last release, where you can find binary files for your ecosystem Curl: curl -sfL https://raw.githubusercontent.com/anonistas/noty

Dec 29, 2022

This repository intends to have a set of tools to take advantage of features on the Burp Enterprise

This repository intends to have a set of tools to take advantage of features on the Burp Enterprise

Jan 22, 2022

Is-this-good - A starter guide to buying parts for mechanical keyboards that take Cherry MX-style switches

Is this good? Consider joining the MechKeys Discord! A starter guide to buying p

Dec 15, 2022

Operator Permissions Advisor is a CLI tool that will take a catalog image and statically parse it to determine what permissions an Operator will request of OLM during an install

Operator Permissions Advisor is a CLI tool that will take a catalog image and statically parse it to determine what permissions an Operator will request of OLM during an install. The permissions are aggregated from the following sources:

Apr 22, 2022

oDrop, a fast efficient cross-platform file transfer software for server and home environments

oDrop is a cross-platform LAN file transfer software to efficiently transfer files between computers, oDrop is useful in environments where GUI is not available.

Jun 4, 2022
A simple web-based time in/time out intended for home-based workers.

Web-based Time in/Time out About A simple web-based time in/time out intended for home-based workers. Pre-requisite To run the pre-built binary: An in

Dec 16, 2021
customer.io full stack engineer take home project
customer.io full stack engineer take home project

customer.io full stack engineer take home project

Jan 21, 2022
Owldetect - Take home challenge for Haraj Solutions Engineer candidates

OwlDetect Welcome to Haraj take home challenge! In this challenge you will be as

Feb 17, 2022
DevOps With Kubernetes exercise

todo-project [https://github.com/pasiol/todo-project/tree/1.05] Exercise 1.06 pasiol@lab:~$ k3d cluster delete INFO[0000] Deleting cluster 'k3s-defaul

Dec 8, 2021
Helps exercise your memory by giving you random tokens and poems to memorize.

memory-enhancer Helps exercise your memory by giving you random tokens and poems to memorize. Using Every day when you first open your terminal you wi

Nov 9, 2021
Moving Averages Exercise For Golang

Moving Averages Exercise For Golang

Dec 10, 2021
Onboarding exercise to create todo list using golang and postgres

Todo List API Description A RESTful API that allows a user to create, update, view, filter, and delete todos API Documentation Copy the contents of th

Dec 1, 2021
Exercise for solve problem data processing, performance and something wrong in passing data

Citcall Exercise Exercise for solve problem data processing, performance and something wrong in passing data Pengolahan data data processing - Readme

Nov 25, 2021
Exercise project written in Go that I did on my own during the course "gRPC [Golang] Master Class: Build Modern API & Microservices" taught by Stephane Maarek on Udemy

calculator Exercise project written in Go that I did on my own during the course "gRPC [Golang] Master Class: Build Modern API & Microservices" taught

Nov 9, 2022
RundQuiz-Game - This is a Go exercise that implements and builds a quiz game from a list of math questions in a CSV file.

Go RundQuiz Game Exercise details This exercise is broken into two parts to help simplify the process of explaining it as well as to make it easier to

Jan 5, 2022