Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Hornswoggles/1d12a4782ac0ffc25610d742d6b6fc79 to your computer and use it in GitHub Desktop.
Save Hornswoggles/1d12a4782ac0ffc25610d742d6b6fc79 to your computer and use it in GitHub Desktop.
Instructions
During the interview you will open your favorite editor and share your screen. Start by creating a git repository where the initial commit is blank. Commit your work as you go and include a message in each commit. You may search the internet for documentation and use small code snippets off the internet to perform discrete tasks but the implementation as a whole should be your own. You are not expected to complete the application in 30 minutes. This challenge is meant to spark conversation, so you should come prepared to answer questions about how you would approach each task.
Problem Statement
As a part of a contrived data pipeline we ingest contact information from a third party in CSV format as a file or datastream. We'd like to ingest this data into a basic SQL datastore. Construct the application as if we were going to expand upon its functionality in the future. Think of it as an application and not just a one off script.
Input
See gist (CSV of contacts)
Must
Ingest the input into a SQLite database.
Structure your code to support multiple data streams (filename, stdin, http)
You are only expected to implement ingestion from a file
Structure your code to support multiple backends (sql or key/value store)
You are only expected to implement the sqlite backend
Should
Consider all input as untrusted
Add at least one unit test
Add inline comments and docstrings
Consider how the code is organized in the repository
Nice To Haves
Configure a logger
Provide a simple command line interface with at least one command line configuration parameter
A Dockerfile to run the code within an container
A readme to explain how to run the code
Bonus
One integration test
Run as an http server
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment