First few questions were easy enough, finding bugs in a small piece of code.
The big question, as everyone else mentioned:
"Design a system that draws notes on the screen, while supporting unlimited UNDOs" (design a memory-efficient solution, and a time-efficient solution):
answer:
-time efficient: push the current screen state to a stack, then push to stack the new state when a new note is drawn, or pop from stack when UNDO.
-memory efficient: keep the current screen state in a stack, then push to stack only the details about the drawn note whenever a note is drawn (size, location, color ...), and for each UNDO iterate the stack from the beginning (the initial screen state) and draw everything from scratch.