« Cambridge's Maven Raises $12M More For Video Expansion | Main | GM Needed For Intnl Travel Site Vayama »

August 11, 2006

Want Interview W/Stanford PhD Start-up? Crack These Puzzlers

aster data systems logo.jpg
Aster Data Systems is a stealth-mode Palo Alto start-up looking for engineers for a scalable analytics platform that will run on large distributed systems. To get an interview, you need to know how to answer these questions, good luck.

Question 1

Write a header file "keywords.h" such that the program specified by the source files below has the intended behavior. Be sure not to violate the One Definition Rule. Elegant solutions preferred.

--------------------------------------------------------------------------------

// File call-foo.cpp

#include "keywords.h"

void call( KEYWORD(foo) )
{
std::cout << "called with foo keyword" << std::endl;
}

--------------------------------------------------------------------------------

// File call-bar.cpp

#include "keywords.h"

void call( KEYWORD(bar) )
{
std::cout << "called with bar keyword" << std::endl;
}

--------------------------------------------------------------------------------

// File main.cpp

#include "keywords.h"

void call( KEYWORD(foo) );
void call( KEYWORD(bar) );

int main()
{
call( foo ); // directly invokes the function in call-foo.cpp
call( bar ); // directly invokes the function in call-bar.cpp
}

--------------------------------------------------------------------------------

Question 2
When considering Redo, Undo, and Undo-Redo recovery schemes, which of the following are true and why:

[a] Undo requires pinning of disk blocks in memory, redo and undo-redo do not.
[b] Redo requires more memory buffers per transaction than undo-redo logging.

What is the minimum, average and maximum number of times a key can appear in a B+ tree?

Question 3
Assume you want to design a distributed hashtable that can store pairs and supports key lookup: given a it returns the corresponding with (of course) blazingly high performance.

Asserting that complexity is the root of all evils, you decide to use a static function to map keys to IP addresses. Thus, given a , clients of the system could issue the appropriate request to the mapped IP address in order to store a pair or retrieve a based on the supplied .

State what are some fundamental limitations/problems with this design. In which situations you expect it to perform well and in which to perform bad?

Posted by BT at August 11, 2006 09:12 PM

Trackback Pings

TrackBack URL for this entry:
http://www.thealarmclock.com/mt/mt-tb.cgi/1813

Comments

Post a comment




Remember Me?