This company isn't that hard — it's basically all repeat questions from previous write-ups on this forum. If you go through the compiled experiences here, you'll run into the exact same problems.
Phone screen.
Onsite 1 had three technical rounds. Each one also asked some behavioral questions and asked about the projects on my resume.
Coding round: a stock question from this forum, exactly the same as one that had already been posted.
Code review round: a "city roads" problem. Defining the graph used a bunch of classes and it looked pretty confusing — be careful doing it with BFS so you don't get yourself tangled up. From memory, here's roughly what the graph-related classes looked like:
class Location {
String name;
public Location(String name) {
this.name = name;
}
}
class Road {
Location from;
Location to;
int distance;
public Road(Location from, Location to, int distance) {
this.from = from;
this.to = to;
this.distance = distance;
// weight=1 now
}
}
class RoadConnection {
Location destination;
int distance;
public RoadConnection(Location destination, int distance) {
this.destination = destination;
this.distance = distance;
}
}
The first bug is the one mentioned in earlier write-ups — roads are bidirectional but the code treats them as one-directional.
The second question asks for the shortest distance between two cities when weight is 1 — that's just plain BFS.
The third question is the shortest distance when weight isn't 1 — use Dijkstra.
System design round: none of the traditional system design stuff about designing components — they didn't even give a whiteboard. The question was to design a system monitor that needs to collect metrics from 1000 other servers every ten minutes. They focused a lot on how to design the worker that executes the collect-metrics operation, and had me write the multithreaded code for that part.
Discussion
Loading comments…