Congratulations! You have been selected from a large group of applicants to
move to the next step of our screening process for our student position at
Sony Computer Entertainment Europe.
Prior to our interview I'd like you to complete one of the following
homework assignments and answer all of the test questions. Submissions must
be returned back to me before March 12th. All candidates that complete this
task will be offered an interview however those that impress us will have a
strong advantage.
Homework Section:
Option 1
Part 1) Please tell me the differences between WebM and mp4 file formats.
What are the advantages and disadvantages of WebM?
Part 2) Follow this up with the source code to a C++ command line
application that accepts a webm file as the parameter and outputs the
stream details via TTY in as much details as possible. This C++ code must
compile and run in windows and optionally Linux and include appropriate
project/make files.
Option 2
Part 1) Write a cross platform OS abstraction library(in C or C++) that
works on both Windows, Linux and optionally any other OS you choose and
handles the following:
- memory (allocation/free, clear, copy, compare)
- file io
- HTTP download (connect, get, etc)
- mutex
- threads
Part 2) Write test cases that verify the functionality of the above library
on all supported platforms.
Test Section:
Question 1
In the following class declaration:
class Vec2f
{
float x, y;
public:
const Vec2f DotProduct( const Vec2f& OtherVector ) const;
virtual void Init()=0;
};
a) ...the keyword 'const' is used three times. Discuss (briefly) the
meaning
of the three uses, and why they are there.
// ANSWER(S):
Question 2
Write a function that creates a random permutation of the characters of a
null terminated string. Example: "PlayStation" should be transformed into
"noitatSyalP" or any other random permutation of the original string. The
original string shall be modified in place; no memory should be allocated.
If the function is called 32 times, the 32 results should be different each
time. Make sure to deal with all degenerate cases.
// ANSWER(S):
Question 3
What is your currently preferred video game? Why?
Of this game, take one technical aspect you consider impressive.
Explain your choice by describing the way you think this aspect was
engineered by comparing it to other video games.
// ANSWER(S):
Upon completion. Send me the results via e-mail in a single archive with
source code that contains no executable otherwise my mail server will
reject it. For the answers to the test questions simply inline them inside
of the e-mail.