Skip to content

Commit

Permalink
ENH: (DS-702) Update DS applicant exam instruction + workflows to acc…
Browse files Browse the repository at this point in the history
…ommodate applications for multiple roles!
  • Loading branch information
nehalecky committed Apr 11, 2017
1 parent 308818e commit d3742cd
Show file tree
Hide file tree
Showing 3 changed files with 174 additions and 71 deletions.
111 changes: 71 additions & 40 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,9 @@

# Welcome!

From all of us and Bombora Data Science, we're eager to get to know you! To do so, we'd thought we'd first engage you with a few exercises to demonstrate concepts we're interested and hope you are as well.
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 anyone else. :)
**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!

Expand All @@ -23,75 +22,97 @@ Thank you so much! Now, get comfortable and let's go!
## Overview
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,
- open the exam Jupyter notebook in an environment of your choice (web or local),
- select a language (kernel) of your choice (you can choose between Scala, R, Haskell, Python 2 or 3, Julia or even Bash),
- answer two questions of your choice,
- add and commit your solution
- add and commit your resume (and other docs, if you wish)
- push your solution to your remote repo,
- send us a PR with your completed exam submittal.
- clone this repo and setup a working directory
- open the exam Jupyter notebook in an [POSIX environment](https://en.wikipedia.org/wiki/POSIX) 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](https://help.github.com/articles/about-pull-requests/)

## Details

### 1. Fork / clone this repo to your GitHub account.
### 0. Configure exam params:
Define a few parameters used throughout the exam:
- `your-gh-username`: your [GitHub username](https://help.github.com/articles/remembering-your-github-username-or-email/).
- `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!

```bash
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

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

<!-- Place this tag where you want the button to render. -->
<a class="github-button" href="https://github.com/bomboradata/datascience-exam/fork" data-icon="octicon-repo-forked" data-style="mega" data-count-href="/bomboradata/datascience-exam/network" data-count-api="/repos/bomboradata/datascience-exam#forks_count" data-count-aria-label="# forks on GitHub" aria-label="Fork bomboradata/datascience-exam on GitHub">Fork</a>
<a class="github-button" href="https://github.com/bomboradata/datascience-exam/fork" data-style="mega" aria-label="Fork bomboradata/datascience-exam on GitHub">Fork</a>

#### Local Clone

On your local machine, with git installed:
On your local machine, with `git` installed:
```bash
git clone git@github.com:$GH_USERNAME/datascience-exam.git
cd datascience-exam
```

git clone git@github.com:<your-gh-username>/datascience-exam.git
#### Checkout `$DS_POSITION` branch

#### Checkout `datascience-engineer-intern` branch
Develop against a branch titled for the position you're applying to:

Best if you develop against this branch:

git checkout datascience-engineer-intern
```bash
git checkout $DS_POSITION
```


### 2. Create your copy of `ds-interview-exam` nb
### 2. Setup your exam working directory

Create copy of `ds-interview-exam.ipynb` including your name, with the following command:
1. Create your *exam directory*:

cp ds-interview-exam.ipynb submittals/data-engineer-intern/<mylastname-myfirstname>__ds-interview-exam.ipynb
```bash
mkdir ./submittals/$DS_POSITION/$DS_EXAM_NAME
```

2. Copy exam notebook (`ds-interview-exam.ipynb`) to your *exam directory*:

```bash
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 [try.jupyter.com](try.jupyter.com)** (easy and recommended):
- open [try.jupyter.com](try.jupyter.com),
- Upload this notebook to
1. **Upload the included `ds-interview-exam` notebook to [try.jupyter.org](https://try.jupyter.org/)** (easy and recommended):
- open [try.jupyter.org](https://try.jupyter.org/),
- Upload this notebook to Jupyter session
- click `upload` in upper right corner
- select the local notebook file (`data-science-exam.ipynb`)
- 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 finer control of packages, (difficult):
2. or, **create a local conda env**, if you prefer (much) more control of packages, (difficult):
- [install conda / miniconda](http://conda.pydata.org/).
- 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 `ds-interview-exam.ipynb` 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 noteboooks included in file listing. Also, you can review the [Notebook Basics tutorial](http://nbviewer.jupyter.org/github/jupyter/notebook/blob/master/docs/source/examples/Notebook/Notebook%20Basics.ipynb).
**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](http://nbviewer.jupyter.org/github/jupyter/notebook/blob/master/docs/source/examples/Notebook/Notebook%20Basics.ipynb).

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 > <your language>*

### 4. Solve TWO problems, one from each section.
Expand All @@ -100,24 +121,36 @@ After opening your notebook, you'll need to select a language kernel of your cho
- *1. Algo + Data Structures*
- *2. Prob + Stats*
2. Take 10-15 minutes to review questions across each section.
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, Repeat. Enjoy this part. :)
This is you, _shining_. Think, Hack, Solve, Repeat. Enjoy this part. :)
### 5. Commit results and push to your remote repo.

- add and commit solution notebook.
- add and commit your resume with filename `mylastname-myfirstname__resume.myformat`
- copy your resume (and additional docs) to your exam directory:
```bash
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
```bash
git add ./submittals/$DS_POSITION/$DS_EXAM_NAME
git commit -m "Exam submittal for $DS_POSITION"
```
- push to remote repo
```bash
git push origin $DS_POSITION
```
### 6. Open Pull Request to submit exam
To submit, [please open a PR](https://help.github.com/articles/creating-a-pull-request/) to the `datascience-engineer-intern` branch of the repo.
To submit, [please open a PR](https://help.github.com/articles/creating-a-pull-request/) to the `$DS_POSITION` branch of the repo.
## Questions?
Expand All @@ -130,9 +163,7 @@ Open an issue in the GH repo, we provide a button right here, for your convenien
## Finished, what's next?

Thank you for all of your hard work and your interest! You'll hear back from us, soon. :)

Go enjoy your day, you deserve it!
Go enjoy your day—you deserve it!


<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
4 changes: 2 additions & 2 deletions bombora-datascience-exam.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# A conda env supporting Bombora Data Science team interviews.
# A conda env supporting Bombora Data Science application exams!
name: bombora-datascience-exam
# channels:
# - pandas
dependencies:
# core dependencies (must be installed)
- python>=3.5
- python==3.5.3
- pip
- psutil
- pyyaml
Expand Down
Loading

0 comments on commit d3742cd

Please sign in to comment.