Interview Query

QiO Machine Learning Engineer | December 2019

Company: QiO

Position: Machine Learning Engineer

Location: NA

Level: nan

Outcome: Accepted Offer

How was the interview process? What was it like?

Tips:
1. Be ready to work through problems not prepared for. Having an attitude willing to try is valuable
2. Speak out thoughts loud so it offers interviewers a chance to offer hints. What they think may be inconsequential hints may just sprout new ideas 
3. Scope down the question clearly if it has too many variables. It shows that you begin with the end in mind and has seen/can plan the end to end solution, even if in abstracted terms
4. Prepare to talk through anything written on CV, it is expected that you would be most familiar with your work 
5. For each project, prepare to describe it from multiple angles, eg. technical, collaboration/conflict, project management, prioritisation/sacrifice, how to redo better in a parallel universe with different variables.
Surprises:
1. Interviewer was willing to help a lot at regularisation question when I really had no idea how to proceed.
2. My preparations on imbalanced data gave a comprehensive answer
3. My prepared questions about the company were answered with elaboration, making the technical part of interview seem less important/ less time left for.
Reflections:
1. Feel like interviewers appreciated my preparing questions about the company.
2. I discussed what I experienced in previous companies and what I am looking for in the next company, and specifically what my impression of their company is from the website and interview process. Such a discussion revealed points which were misaligned with my expectations which would have been hidden if I purely followed the interview process, so I find this reverse interviewing section invaluable to prepare for.

What technical questions were asked?

SQL / Pandas, Modeling and ML knowledge, Data Structures and Algorithms

What was one of your solutions?

1. 
from itertools import permutations
def brute_force(n):
    string_n = str(n)
    perms = permutations(string_n)
    smallest_larger_num = None
    for perm in perms:
        cur_num = int(''.join(perm))
        if cur_num > n:
            if smallest_larger_num is None:
                smallest_larger_num = cur_num
            elif cur_num < smallest_larger_num:
                smallest_larger_num = cur_num
                
    return smallest_larger_num
2. KMeans is broken into 2 steps, the assignment of points to current centres, and the recalculation of cluster centres. The 1st step requires K calculations for every of N points. The 2nd step requires N points split into K calculations. Total is K*N* number of updates of the 2 steps.
Hierarchical clustering is calculating a square/triangular distance matrix each update so is N^2
3. PCA for linear, AutoEncoder for non-linear, L1 regularization and decision tree for features selection embedded in models, correlation coefficient with target variable
4. L1 requires normalizing. L2 has square in penalty term. The minimum point (weight value) on error curve of L2 is the same no matter how the features are scaled.
5. Up/Down sampling, bagging with the majority class split and minority class repeated, adjusting class weights in loss function
6. Collection of decision trees, with predictions being majority vote in classification and average in regression. Each tree built using bootstrap selection of rows and each split in tree selected from feature with most information gain. The feature at each split is limited to a random (across different splits) subset of all available features.

0 Comments

Sort By: Default

Edit Post

Tag your post (e.g. "Amazon", "Data Scientist" ...)

Preview