Java Interview: Difference between revisions

From Chorke Wiki
Jump to navigation Jump to search
Line 61: Line 61:
## '''Presentation Layer''' (Data)
## '''Presentation Layer''' (Data)
## '''Application Layer:''' (DNS, Data)
## '''Application Layer:''' (DNS, Data)
| valign="top" |
; TCP vs. UDP
# TCP is a connection oriented protocol
# UDP is a connection less protocol
# TCP provides error checking support
# TCP Guarantees delivery of data
|}
|}



Revision as of 07:21, 25 October 2020

  1. MVC
    1. Model
    2. View
    3. Controller
  2. SOLID Design Principles
    1. Single Responsibility Principle
    2. Open-Closed Principle
    3. Liskov Substitution Principle
    4. Interface Segregation Principle
    5. Dependency Inversion Principle
  1. Design Pattern
    1. Creational Design Patterns
      1. Factory Pattern
      2. Prototype Pattern
      3. Builder Pattern
      4. Singletons
    2. Structural Design Patterns
      1. Adapter Pattern
      2. Composite Pattern
      3. Decorator Pattern
    3. Behavioral Design Patterns
      1. Strategy Pattern
      2. State Pattern
  1. STUPID Practices in Programming
    1. S for Singleton
    2. T for Tight Coupling
    3. U for Untestability
    4. P for Premature Optimization
    5. I for Indescriptive Naming
    6. D for Duplication

Terminology

OOP Features
  1. Encapsulation
  2. Inheritance
  3. Polymorphism
Composition vs Aggregation
Both are Association
  1. Composition: A "owns" B
  2. Aggregation: A "uses" B
Network OSI Model
  1. Media Layer
    1. Physical Layer: Ethernet, 802.11 (Bit, Symbol)
    2. Data Link Layer: MAC, ARP, PPP (Frame)
    3. Network Layer: IPv4, IPv6 (Packet)
  2. Host Layer
    1. Transport Layer (Segment, Datagram)
    2. Session Layer (Data)
    3. Presentation Layer (Data)
    4. Application Layer: (DNS, Data)
TCP vs. UDP
  1. TCP is a connection oriented protocol
  2. UDP is a connection less protocol
  3. TCP provides error checking support
  4. TCP Guarantees delivery of data
Statefulness
RESTful Web services are completely stateless. Managing the state of conversation is the complete responsibility of the client itself. The server does not help you with this. Normally, a SOAP Web services are stateless – but you can easily make SOAP API stateful by changing the code on the server.

SDLC

Most popular software development models
  1. Waterfall
  2. Scrum
  3. Lean
  4. Kanban
  5. Feature driven development
Waterfall
This is the oldest, most trusted and most straightforward of the software development methodologies. It resembles the waterfall, as each stage can be completed only after the previous one is finished. The stages include product requirement gathering, design and development of the software, testing, release and maintenance.
Agile
Agile is a structured and iterative approach to project management and product development. It recognizes the volatility of product development, and provides a methodology for self-organizing teams to respond to change without going off the rails. Today, agile is hardly a competitive advantage. No one has the luxury to develop a product for years or even months in a black box. This means it’s more important than ever to get it right.
Kanban
Kanban is all about visualizing your work, limiting work in progress, and maximizing efficiency(or flow). Kanban teams focus on reducing the time it takes to take a project(or user story) from start to finish. They do this by using a kanban board and continuously improving their flow of work.
Scrum
Scrum teams commit to ship working software through set intervals called sprints. Their goal is to create learning loops to quickly gather and integrate customer feedback. Scrum teams adopt specific roles, create special artifacts, and hold regular ceremonies to keep things moving forward.
Lean
Lean software development model has its roots in Toyota approach to doing things: when you need to change something, do only the changes that bring the most VALUE, require the least EFFORT (budget) to be accomplished and take only 30% of the TIME planned. Such approach helped Toyota build a workflow able to switch their car constructing conveyors to producing another model of Toyota vehicles in mere hours, while the other manufacturers needed weeks to do it.
Feature Driven Development
In feature driven development or FDD model, features are the cornerstones of development. As the features are added, the new sets of requirements are introduced. This works best for larger internal teams of developers, working on the incremental improvement of a large-scale product. This approach is also quite often used as an interim workflow between a Waterfall and Agile software development methodologies.

DevOps

DevOps
The DevOps is a combination of two words, one is software Development, and second is Operations. This allows a single team to handle the entire application lifecycle, from development to testing, deployment, and operations. DevOps helps us to reduce the gap between software developers, quality assurance (QA) engineers, and system administrators.
DevOps tools such as Git, Docker, Jenkins, Chef, Puppet, Ansible, SaltStack, Nagios and Kubernetes.
  1. Automation
  2. Collaboration
  3. Integration
  4. Configuration
Puppet
Puppet is the most powerful configuration management tool in the solar system. It’s the engine that drives your compliance, baseline, drift remediation, and deployment needs. It has always been and always will be open source, with freely downloadable operating system-specific agent packages, a massively scalable server, and data warehousing capabilities via PuppetDB.
Ansible
Ansible is an open-source software provisioning, configuration management, and application-deployment tool enabling infrastructure as code. It runs on many Unix-like systems, and can configure both Unix-like systems as well as Microsoft Windows. It includes its own declarative language to describe system configuration. Ansible was written by Michael DeHaan and acquired by Red Hat in 2015. Ansible is agentless, temporarily connecting remotely via SSH or Windows Remote Management (allowing remote PowerShell execution) to do its tasks.

REST

HTTP ETag
  1. The ETag or entity tag is part of HTTP, the protocol for the World Wide Web. It is one of several mechanisms that HTTP provides for Web cache validation, which allows a client to make conditional requests. This allows caches to be more efficient and saves bandwidth, as a Web server does not need to send a full response if the content has not changed. ETags can also be used for optimistic concurrency control as a way to help prevent simultaneous updates of a resource from overwriting each other.
  2. An ETag is an opaque identifier assigned by a Web server to a specific version of a resource found at a URL. If the resource representation at that URL ever changes, a new and different ETag is assigned. Used in this manner, ETags are similar to fingerprints and can quickly be compared to determine whether two representations of a resource are the same.

Security

JWT
JSON Web Token (JWT) is a means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is digitally signed using JSON Web Signature (JWS) and/or encrypted using JSON Web Encryption (JWE).
OAuth
OAuth is an open standard for access delegation, commonly used as a way for Internet users to grant websites or applications access to their information on other websites but without giving them the passwords. This mechanism is used by companies such as Amazon, Google, Facebook, Microsoft and Twitter to permit the users to share information about their accounts with third party applications or websites.
OAuth 2.0
OAuth 2.0 is the industry-standard protocol for authorization. OAuth 2.0 focuses on client developer simplicity while providing specific authorization flows for web applications, desktop applications, mobile phones, and living room devices.

References