2. Design a Vending Machine which can accept different coins, deliver different products?
This is an open design question which you can use as exercise, try producing design document, code and Junit test
rather just solving the problem and check how much time it take you to
come to solution and produce require artifacts, Ideally this question
should be solve in 3 hours, at least a working version.
3. You have a Smartphone class and will have derived classes like IPhone, AndroidPhone,WindowsMobilePhone
can be even phone names with brand, how would you design this system of Classes.
This
is another design pattern exercise where you need to apply your object
oriented design skill to come with a design which is flexible enough to
support future products and stable enough to support changes in existing
model.
4. When do you overload a method in Java and when do you override it ?
Rather
a simple question for experienced designer in Java. if you see
different implementation of a class has different way of doing certain
thing than overriding is the way to go while overloading is doing same
thing but with different input. method signature varies in case of
overloading but not in case of overriding in java.
5. Design ATM Machine ?
We all use ATM (Automated Teller Machine)
, Just think how will you design an ATM ? for designing financial
system one must requirement is that they should work as expected in all
situation. so no matter whether its power outage ATM should maintain correct state (transactions), think about locking, transaction, error condition, boundary condition
etc. even if you not able to come up exact design but if you be able to
point out non functional requirement, raise some question , think about
boundary condition will be good progress.
6. You are writing classes to provide Market Data and you know that you can switch to different vendors overtime like Reuters, wombat and may be even to direct exchange feed , how do you design your Market Data system.
This is very interesting design interview question and actually asked in one of big investment bank and rather common scenario if you have been writing code in Java. Key point is you will have a MarketData interface which will have methods required by client e.g. getBid(), getPrice(), getLevel() etc and MarketData should be composed with a MarketDataProvider by using dependency injection. So when you change your MarketData provider Client won't get affected because they access method form MarketData interface or class.
7. Why is access to non-static variables not allowed from static methods in Java
You
can not access non-static data from static context in Java simply
because non-static variables are associated with a particular instance
of object while Static is not associated with any instance.
8. Design a Concurrent Rule pipeline in Java?
Concurrent programming or concurrent design is very hot now days to leverage power of ever increasing cores in
advanced
processor and Java being a multi-threaded language has benefit over
others. Do design a concurrent system key point to note is thread-safety, immutability, local variables and avoid using static or instance variables.
you just to think that one class can be executed by multiple thread a
same time, So best approach is that every thread work on its own data,
doesn't interfere on other data and have minimal synchronization
preferred at start of pipeline. This question can lead from initial
discussion to full coding of classes and interface but if you remember
key points and issues around concurrency e.g. race condition, deadlock, memory interference, atomicity, ThreadLocal variables etc you can get around it.
No comments:
Post a Comment