You are on page 1of 4

Software Engineer Interview at

Vacuumlabs
At Vacuumlabs we are looking for smart engineers with a passion to learn and
explore new skills and technologies. The knowledge of any particular language
or technology is not required, only the will to learn is.

What to Expect

The interview consists of one remote, and 2 on-site rounds, each approximately
2 hours long. These rounds are designed to test your thinking, coding, and
communication abilities.

Thinking
The problems you’ll face will require you to think hard. You’ll be expected to
reason about your code’s correctness and efficiency even without running it. To
stress the focus on thinking, the on-site interviews are conducted on a
whiteboard.

Coding
You’ll be writing a real, executable program at every round of the interview. You
are free to choose a language to use, as we are not testing knowledge of any
particular technology. All you need to know is how to read and write text files,
and to be familiar with basic data structures and algorithms.

Communication
Even though it might look like you’re doing a purely coding challenge,
interviewers are interested in more than that. They’re observing:

• the clarity with which you explain your thoughts.

• your ability to reflect on hints and ideas you’re provided with.

• your ability to build up a logical argument.

The problems are designed to be hard and there is no shame in asking for help when
Tip
you’re stuck.
First Round

The first round is done via our online testing application. Timelimit for this
round is 2 hours.

You’ll be presented with a coding challenge. You’ll download a large input text
file for which your program has to produce a correct output file. You have
unlimited submissions and the system will give you immediate feedback
whether your solution is correct or not.

Don’t overengineer it—the only criteria is to produce a correct output file. Your
program’s efficiency won’t be judged this time.

Make sure you know how to read and write text files in your favorite programming
Tip
language. Do some practice beforehand.

Second Round

At this round, you’ll meet with your interviewer at one of our offices, or via
video call if the former is not possible. This round should take 2 hours, but
allocate one extra hour for the rare case it gets longer.

Coding challenges are the main focus of this round. Compared to the first
round, they are harder, however, the interviewer will hint you when you get
stuck. The coding happens on the whiteboard. We’re not obsessed with 100%
correct syntax, so don’t be scared if you don’t remember the whole SDK of your
favorite ecosystem.

Finally, you can use this interview to learn more about the company. Feel free
to ask us anything!

Third Round

Similarly to the previous round, you’ll solve the coding challenge on a


whiteboard and you should allocate 2 hours for that.

If you’re aspiring for a senior role, you may also be challenged by a design
problem. You’ll be asked to design an application and explain the reasons
behind your choice of tools, models, processes, and data representation.

Finally, feel free to ask us anything about the company.


Algorithmic Requirements

The problems you encounter in the interview may require you to:

• well know about dynamic (growing) arrays

• know hash maps and sets (also known as dicts in Python, and objects in
JavaScript)

• be familiar with precomputing and memoization techniques

• have at least basic intuition about the complexity. You should either
understand the basics about the big O notation or be able to do some
back-of-the-envelope complexity calculations.

Training Resources

If you want to get a taste of the interview problems and validate your skill, try
to solve some problems on:

You should be able to solve the majority of problems you find on the
Codility portal.

Levels 1 and 2 in division 2 and level 1 in division 1.


TopCoder

Google Code Round 1.


Jam

Why Code on Whiteboard

There is quite some controversy about how a good interview should look like.
There are people who consider coding on whiteboard almost insulting.

For many (otherwise skilled and talented) engineers, typing the code to the
computer unleashes the worst coding habits they have. Only a few engineers
spend enough time thinking. A typical engineer jumps directly into the coding
even if not sure, what exactly are they going to implement. During coding they
are focused mainly on whether it compiles, putting correctness and good
designing to the second track. When a flaw is discovered, they tend to patch it
—sadly, usually by semi-random modification to the code which fixes one issue
but creates another one.
Whiteboard, on the other hand, influences you in the exact opposite way. All
the quick-code-producing tools were taken away from you, so the only thing
you can do quickly is—think. Since coding is hard (and refactoring even
harder), this motivates you to stay reasonably high-level and come up with the
plan, what you’re going to implement. You start with some high-level drawings
and sketches and only then you transfer them to pseudo-code and finally to the
code.

Finally, this does not apply only to junior engineers: Some of the best coders I
know do a lot of whiteboarding before they actually start coding. The difference
is not that these gurus don’t need designing, the difference is they already
know they need it.

So that’s why we ask you to code on the whiteboard: It’s not because we want
to torture you. It’s because we want to see the best of you.

You might also like