Repo supporting data science team interview exams.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore ENV: Add .gitignore, keepin’ noise down Sep 27, 2016 DOC: Update README and fix for improper rendering of HTML in exam not… Apr 24, 2017

Bombora Data Science: Interview Exam


From all of us at Bombora Data Science, we're excited to get to know you! To do so, we'd like to begin by engaging in a few exercises exploring concepts we're interested in (and hope you are as well).

NOTE: We'll be leveraging open tools and public repositories. Ethics and professional aspirations should drive you to work creatively, enthusiastically, and independently. Clearly, you should leverage all resources you can, but please, do not share this exam or your solutions with any other entity, man or machine. :)

Thank you so much! Now, get comfortable and let's go!



We're going to leverage typical analysis and development workflows used by our team to conduct an interview exam. In short, you'll:

  • clone this repo and setup a working directory
  • open the exam Jupyter notebook in an POSIX environment of your choice (web or local), using a language (kernel) of your choice (you can choose between Scala, R, Haskell, Ruby, Python 2/3, Julia or even Bash)
  • answer two questions of your choice
  • add, commit, and push your solution + resume (and other docs, if you wish) to your remote repo
  • send us completed exam submittal via a pull request PR


0. Configure exam params:

Define a few parameters used throughout the exam:

  • your-gh-username: your GitHub username.
  • ds-position: the title of the position you're applying to, specified in the email you recieved (e.g., data-engineer-2017-q2, data-scientist-intern-2017-q3)
  • mylastname-myfirstname: your name, backwards of course!

If you're a POSIX shell user (e.g., linux or osx), you can set these params via environment variables so future commands won't have to be manually modified!

export GH_USERNAME='carlsagan'
export DS_POSITION='data-science-director'
export DS_EXAM_NAME='sagan-carl'

1. Make your own copy of repo

Fork repo to your GitHub account

It's the button above that looks like the one below (you can click either):


Local Clone

On your local machine, with git installed:

git clone$GH_USERNAME/datascience-exam.git
cd datascience-exam

Checkout $DS_POSITION branch

Develop against a branch titled for the position you're applying to:

git checkout $DS_POSITION

2. Setup your exam working directory

  1. Create your exam directory:

    mkdir ./submittals/$DS_POSITION/$DS_EXAM_NAME
  2. Copy exam notebook (ds-interview-exam.ipynb) to your exam directory:

    cp ds-interview-exam.ipynb ./submittals/$DS_POSITION/$DS_EXAM_NAME/

3. Setup Jupyter Notebook Environment

3.1 Launch Jupyter

You have two options:

  1. Upload the included ds-interview-exam notebook to (easy and recommended):

    • open,
    • Upload this notebook to Jupyter session
      • click upload in upper right corner
      • select the local notebook file (e.g., your copy of data-science-exam.ipynb)
    • click on notebook to open.
  2. or, create a local conda env, if you prefer (much) more control of packages, (difficult):

    • install conda / miniconda.
    • create bombora-datascience-exam conda environment, via (from repo root): conda env create -f bombora-datascience-exam.yml
    • activate conda environment, via: source activate bombora-datascience-exam
    • launch Jupyter, via: jupyter notebook
    • open your copy of ds-interview-exam.ipynb notebook

3.2 Setup Jupyter

Note: for those not familiar with Jupyter notebook, please view the Welcome to ... intro notebooks included in file listing. Also, you can review the Notebook Basics tutorial.

After opening your notebook, you'll need to select a language kernel of your choice, (you can choose between Scala, R, Haskell, Python 2 or 3, Julia or even Bash).

  • from menubar of the opened notebook, select * Kernel > Change Kernel > *

4. Solve TWO problems, one from each section.

  1. Take note that there are two sections, they are:

    • 1. Algo + Data Structures
    • 2. Prob + Stats
  2. Take 10 minutes to review questions across each section.

  3. Select and answer ONE question from EACH section, or to be totally explicit:

    • select and answer a question from section 1 (e.g., either Q1.1 or Q1.2).
    • select and answer a question from section 2 (e.g., either Q2.1, Q2.2, Q2.3, Q2.4, or Q2.5).

This is you, shining . Think, Hack, Solve, Repeat. Do enjoy this part. 😄

5. Commit results and push to your remote repo.

  • copy your resume (and additional docs) to your exam directory:
    cp path/to/my-resume.pdf ./submittals/$DS_POSITION/$DS_EXAM_NAME/
    # (optional)
    cp path/to/my-other-docs.pdf  ./submittals/$DS_POSITION/$DS_EXAM_NAME/
  • add your exam directory and commit
    git add ./submittals/$DS_POSITION/$DS_EXAM_NAME
    git commit -m "Exam submittal for $DS_POSITION"
  • push to remote repo
    git push origin $DS_POSITION

6. Open Pull Request to submit exam

To submit, please open a PR to the $DS_POSITION-submittals branch (note: this is a different branch name) of the repo.


Open an issue in the GH repo, we provide a button right here, for your convenience.


Finished, what's next?

Go enjoy your day—you deserve it!

<script async defer src=""></script>