I’m always looking for additional challenges that I can ask people who interview at Hibernating Rhinos, and I run into an interesting challenge just now.
Implement a Decompress(Stream input, Stream output, byte dictionary) routine for the following protocol:
Prefix byte – composed of the highest bit + 7 bits len
If the highest bit is not set, this is a uncompressed data, copy the next len from the input to the output.
If the highest bit is set, this is compressed data, the next byte will be the index in the dictionary, copy len bytes from that dictionary entry to the output.
After writing the code, the next question is going to be, what are the implication of this protocol? What is it going to be good for? What is it going to be bad for?