A recruiter has sent me a fairly long quiz from an employer, and I think it's a bit excessive for what is supposedly a Senior Java developer role. The questions (to me) seem unfocused, and go into areas such as architecture, operations, capacity planning. One of the questions is this:
"Internet-scale applications must be designed to process high volumes of transactions. In 400 words or less, describe a design for a system that must process on average 30,000 HTTP requests per second. For each request, the system must perform a lookup into a dictionary of 50 million words, using a key word passed in via the URL query string. Each response will consist of a string containing the definition of the word (100 bytes or less). Describe the major components of the system, and note which components should be custom-built and which components could leverage third-party applications. Include hardware estimates for each component. Please note that we are interested in maximum performance at minimum hardware / software-licensing costs. Please document your rationale in coming up with your estimates. Optional: For extra credit, describe how the design would change if the definitions are 10 kilobytes each. "
Now given that even a site like Twitter is really handling just 11K requests per second (maybe more, I haven't checked lately), it makes me think, "What pr0n are these dudes planning to serve up?" =)
Of course you can come up with a general answer - "memcache the hell out of it", "cluster and load balance" - but hardware estimates and licensing costs? Do you think this is a reasonable question?