DraftKings OA

网上海投的职位,话说他家效率挺高,第二天就收到了HR的电话邀请上礼拜和HR聊完简历后就收到了OA,还是地里那道 organizational structure,而且他家的OA没有hidden test case lol
做完后第二天早上又火速收到约下一步店面的邀请,这hr的效率给个好评

GHC联系的,大概两周前完成了OA,昨天刚刚电面,今天收到了GHC onsite的回复

OA跟电面都不是很难,都在HackerRank上,只能用 C#, Java, JavaScript, Objective-C, or Swift,题目都是以他们的游戏为背景,主要就是考察class implementation的感觉。

OA是让你完成一个员工名单,可以加入和删除员工,修改对应的上司和下属。

电面有用zoom视频,是个印度小姐姐,第一次碰见这么nice的面试官-0-,讲话很清楚,而且只要我一沉默就会问我思路然后给反馈并表示make sense,体验极佳,最后跟我说希望在GHC上见到我感觉自己大概电面就稳了。

题目跟地里搜到的一样,给6个rules然后事先定好的contest, player, team的class,给你一个Lineup, lineup里有一些player,判断这个lineup符不符合要求。

rules大概是:

  1. contest 要求的位置和对应人数要符合

  2. 队里的player至少能参加两次game

  3. 最多三个player在同一team

  4. 人数不能超过contest人数要求

  5. player薪水和不能超过上限

  6. 一个player只能用一次

就各种class 操作加上一些h ashmap搞定,难度不大主要是理解rule

Draftkings是个比较有钱的小公司,之前了解了背景是体育游戏博彩类的,融资了很多钱。约了hr电话,聊了不到20分钟?本来以为会问问经历,也没怎么问,基本是在问面试者对他们公司的印象,以及后续面试的流程之类的。挂了电话就发了OA过来,前一阵做了一下。题不是难题,只是非常麻烦。

大概内容就是让写个上司与下属的增删改查数据结构,新加入的员工不可以与之前的id重复,如果删掉员工,那么下属也会升级,最后打印注意下是两个space不是一个space。之前看漏了这句话debug好久没找到问题……

只需要补充完下面的class就可以,remove这个考虑情况要多一些,注意一下……考虑漏了上司下属这种关系就容易出错。

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
 
public class Solution {
    public static void main(String[] args) {
        ConsoleProcessor processor = new ConsoleProcessor();
        processor.processAllLines();
    }
}
 
class ConsoleProcessor {
 
    public OrgChart orgChart = new OrgChart();
 
    public void processAllLines() {
        Scanner in = new Scanner(System.in);
        String line = in.nextLine();
 
        Integer numLines = 0;
 
        try {
           numLines = Integer.valueOf(line.trim());
        } catch (NumberFormatException ex) {
            ex.printStackTrace();
        }
 
        for (int i = 0; i < numLines; i++) {
            processLine(in.nextLine());
        }
 
        in.close();
    }
 
    protected void processLine(String line) {
        String[] parsedCommand = line.split(",");
 
        // ignore empty lines
        if (parsedCommand.length == 0) {
            return;
        }
 
        switch (parsedCommand[0]) {
            case "add":
                orgChart.add(parsedCommand[1], parsedCommand[2], parsedCommand[3]);
                break;
            case "print":
                orgChart.print();
                break;
            case "remove":
                orgChart.remove(parsedCommand[1]);
                break;
            case "move":
                orgChart.move(parsedCommand[1], parsedCommand[2]);
                break;
            case "count":
                System.out.println(orgChart.count(parsedCommand[1]));
                break;
        }
    }
}
 
class OrgChart {
    public void add(String id, String name, String managerId)
    {
        throw new UnsupportedOperationException();
    }
 
    public void print()
    {
        throw new UnsupportedOperationException();
    }
 
    public void remove(String employeeId)
    {
        throw new UnsupportedOperationException();
    }
 
    public void move(String employeeId, String newManagerId)
    {
        throw new UnsupportedOperationException();
    }
 
    public int count(String employeeId)
    {
        throw new UnsupportedOperationException();
    }
}