Tuesday, April 16, 2019

Design Pattern Interview Summary



Design Pattern 设计 - 请看应该选择那种模式
讨论如下设计题Task
  • Implement a type "Robot" with the following requirements
    • Robot must support pluggable chips that allow him to do different operations on numeric arrays
    • Only one chip can be plugged at a time and robot can't function without a chip
    • Chips can be swapped at runtime, since you have only one robot instance (robots are expensive)
  • Robot should have only two functions/methods
    • A function that executes current chip's logic and returns result, it should accept an array and return whatever current chip is returning
    • A function that installs a chip into a robot, it should accept a chip and should not return anything
  • Implement two chips
    • "Chip of Sorts" — sorts an array in the order and can have an option to specify ascending or descending type of sorting. (Sorting algorythm is not important, use standard one from any library you want.)
    • "Total Chip" — finds a total sum of all elements of an array
  • Add a property to your robot that represents total number of different chips installed through robot's lifetime. It should only count unique chips being installed.
  • Write one simple test function that tests logic from 4, you don't have to use any Unit Testing framework, just a simple function would be fine
  • It's up to you how do design your robot and types. Pay attention to make design simple and intuitive.
Bonus
There is no right or wrong solution as long as code works, but we give bonus points for a plain-text explanation on why particular design decisions were made and what are the tradeoffs. Put it right into the code in a form of a comment at the beginning of the main file.

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts