Code Monkey home page Code Monkey logo

interview-accountapi's Introduction

Author

Dong Wang (New to Golang)

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.
  • 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.

interview-accountapi's People

Contributors

amcr-f3 avatar andykuszyk-form3 avatar dongw1023 avatar elliot-smith-form3 avatar enriquerecarte avatar ewilde avatar ewilde-form3 avatar hallabro avatar jeeves-form3 avatar jeeves-form3-oss avatar kevholditch avatar leo-form3 avatar liamg avatar markhowardform3 avatar martinreus-form3 avatar nvloff-f3 avatar rh-f3 avatar stevecookform3 avatar

Watchers

 avatar

Forkers

alistairyves

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.