Absolutely No Machete Juggling » Avoiding The Big Design Interview Question



Absolutely No Machete Juggling » Avoiding The Big Design Interview Question

If you're sup­posed to design the Car class, ask if there are other types of ve­hi­cles in the system. If not, don't make a Vehicle parent class, and explain that you see no need unless the system re­quired ad­di­tional ve­hi­cles. Before you draw a box named Tire, ask if the car needs to be able to support snow tires or some other kind of in­ter­change­able tire. If not, why would you make a class or in­ter­face for them? Start as simply as you can and only draw a new box when you've ex­tracted enough in­for­ma­tion from the in­ter­viewer to deem it war­ranted. If you jump up to the white­board and draw two or three boxes before asking any ques­tions, you're placing your in­ter­view at risk because the in­ter­viewer may be pic­tur­ing a com­pletely dif­fer­ent usage of this system than you are.

Of course, it's always pos­si­ble that the in­ter­viewer will keep asking for the same in­for­ma­tion, arguing that you should show your OO skills off without re­quire­ments that drive that design out. If you want the job, your best bet there is to take a random stab at the ap­pro­pri­ate level of com­plex­ity and hope that you strike some­where near what the in­ter­viewer wants. In that sit­u­a­tion, however, I'd imagine your in­ter­viewer doesn't know much about de­sign­ing good soft­ware, and their code­base might be an over-en­gi­neered mess, so you may not want that job.


Read full article from Absolutely No Machete Juggling » Avoiding The Big Design Interview Question


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts