Software development final exam: Part 3This is part 3 of my software development final exam. If you haven't read that introductory blog post, please go read it now.
- You have a spam filter which marks 99% of spam messages as spam, and 99% of non-spam messages as non-spam (and gets the other 1% wrong). 95% of the email arriving at your server is spam. What fraction of messages in your inbox are spam? What fraction of messages in your spam folder are not spam?
- What is the difference between a hash function [EDIT: make that a cryptographic hash function] and a message authentication code?
Show work — a formal proof is not required, but I'd like to see more than just the answer. (2-3 sentences is probably about right.)
- You are testing two different versions of a website (A and B) to determine which one yields a higher sign-up rate. You know that if version B is 10% more effective than version A, then once N visitors have reached your site there is a 90% chance that version B will have produced more signups than version A. Approximately how many visitors would you need in order to have that same 90% chance, if version B is instead only 5% more effective than version A?
- Why should a message be "padded" (and not just with zeroes) before being encrypted or signed using RSA?
If you would like me to grade your answers, please send an email to firstname.lastname@example.org with your answers to the above questions along with the following two:
- Do you have a degree in a computing-related field? (If yes, from which institution?)
- Are you employed as a software developer?
Please note that the questions are intended to be answered under "exam conditions", i.e., without discussion with anyone else, and without consulting Google, Wikipedia, or other sources. I'm running this as an experiment to see how much basic computer science software developers know, and in what areas, so please don't "cheat".
Part 4 of the exam — networking and systems — is now available.
blog comments powered by Disqus