Interview Questions

Website Customer Visit Count

Question: A leading shopping website generates logs everyday of customers visiting their website along with the page number that they visited. Each entry contains the customer unique id and the page id, which the customer visited. Given the logs of 3 days, and the customer id, check whether the customer visited exactly on 2 out of 3 days and also check whether he visited more than 3 different pages?

#include <iostream>
#include <hash_map>
#include <list>
#include <set>
#include <bitset>
#include <string>

using namespace std;

The Intelligent Smoker

A person smokes cigarettes and leaves the lower portion (around 1/5) of it unburnt. He then combines the 5 residues of those cigarettes to create a new one for smoking.

If the person had initially 93 cigarettes, how many cigarettes did he actually smoked?

He will smoke 116 cigarettes.

Programming Puzzle: Search Engine

The urban legend goes that if you go to the Google homepage and search for "Google", the universe will implode. We have a secret to share... It is true! Please don't try it, or tell anyone. All right, maybe not. We are just kidding. The same is not true for a universe far far away. In that universe, if you search on any search engine for that search engine's name, the universe does implode! To combat this, people came up with an interesting solution. All queries are pooled together. They are passed to a central system that decides which query goes to which search engine.

Programming Puzzle: Train Timetable

A train line has two stations on it, A and B. Trains can take trips from A to B or from B to A multiple times during a day. When a train arrives at B from A (or arrives at A from B), it needs a certain amount of time before it is ready to take the return journey - this is the turnaround time. For example, if a train arrives at
12:00 and the turnaround time is 0 minutes, it can leave immediately, at 12:00.

How to reverse the order of the words in a sentence?

For example for a given string: "This is just a test", convert it to "test a just is This".
std::string reverse_words(const std::string &strInput)
{
    using namespace std;
    string result;
    string::const_reverse_iterator iterWordStart, iterWordEnd;
    bool bBufferMode = true;
    iterWordStart = iterWordEnd = strInput.rbegin();
    for(; iterWordStart != strInput.rend(); ++iterWordStart) {
        if(!(isalpha(*iterWordStart) && bBufferMode)) {
            reverse_copy(iterWordEnd, iterWordStart, inserter(result, result.end()));