A pattern-based approach for learning technical interview questions