https://www.udemy.com/course/data-structures-and-algorithms-deep-dive-usingjava/?ranMID=39197&ranEAID=JVFxdTr9V80&ranSiteID=JVFxdTr9V80jBbIwA79bvOfcopmeb7Bzw&LSNPUBID=JVFxdTr9V80&utm_source=affcampaign&utm_medium=udemyads interface is the best choice for defining contract between multiple parties. If multiple programmers are working in the different modules of the project they still use each other's API by defining the interface and not waiting for actual implementation to be ready. 1) Interface offers protection with change in requirement or future enhancement. 2) By using interface you can leverage more powerful implementation 3) Code written using interface looks clean and extensible. 4) Interface can speed up development process and facilitate communication between two different module even if they are not complete. Inheritance is good for code reuse, but it can cost flexibility, if not used correctly. It's very important for an Object Oriented designer to understand inheritance in Java quite well. Following are some of the strong and week points of Inheritance, I have learned in hard way, might help your readers : 1)Inheritance is great if all sub classes have same behavior, but it's burden if some functionality defined in super-class is applicable to all but and some functionality to only few. 2) Inheritance is inflexible, you can not provide new functionality at runtime. Your object functionality is defined at compile time by methods defined in that class, there is no way to configure object at runtime, that's where composition outscore Inheritance. 3) Inheritance is great for defining types, that too, you should use interface for declaring type. By implementing interface, an object becomes part of a family and can stand for them. 4) Always prefer Composition over Inheritance Read more: https://javarevisited.blogspot.com/2012/04/10-points-on-interface-in-javawith.html#ixzz7O64dOFV4 Read more: https://javarevisited.blogspot.com/2012/04/10-points-on-interface-in-javawith.html#ixzz7O61M0v7E Abstraction hides complexity by giving you a more abstract picture, a sort of 10,000 feet view, while Encapsulation hides internal working so that you can change it later. In other words, Abstraction hides details at the design level, while Encapsulation hides details at the implementation level. Read more: https://javarevisited.blogspot.com/2017/04/difference-between-abstractionand-encapsulation-in-java-oop.html#ixzz7O5yhfhpM What do you like or dislike most about your current or last position It is safe to say: 1. You like challenges. 2. Opportunity to grow into design, architecture, performance tuning etc 3. Opportunity to learn and/or mentor junior developers 4. You dislike frustrating situations like identifying a memory leak problem or a complex transactional or a concurrency issue. You want to get on top of it as soon as possible How do you handle pressure 1. First, I understand why there is a need to complete the given task at hand with in so less time and react to situations, rather than to stress. That way, the situation is handled and doesn't become stressful. 2. I actually work better under pressure and I've found that I enjoy working in a challenging environment. 3. Prioritizing my responsibilities so I have a clear idea of what needs to be done when, has helped me effectively manage pressure on the job. 4. If the people I am managing are contributing to my stress level, I discuss options for better handling difficult situations with them. Why do you want to make career in this company My technical skills is a perfect match for the offered job. I strongly believe, with my skills I can have the job well done and contribute to the organisation success and at the same time achieve my personal goals as well. Infact, I have been waiting for an opportunity like this from a long time. If given a chance, I will prove myslef to be a valuable resource to the organisation. To work for company XYZ is my dream.