IT & security Flashcards

1
Q

What is Azure cloud?

A

Microsoft Azure is a cloud computing platform and infrastructure created by Microsoft for building, deploying, and managing applications and services through a global network of Microsoft-managed data centers/Servers.

Azure offers many benefits to organizations and individuals, including:

Scalability:
Azure allows you to scale your applications up or down as needed, so you only pay for the resources you use.

Flexibility:
Azure supports a wide range of programming languages, tools, and frameworks, so you can build applications using the technologies you prefer.

Security:
Azure is designed with security in mind, with features such as identity and access management, data encryption, and threat protection.

Global presence:
Azure has data centers located around the world, so you can deploy applications and store data closer to your users.

Hybrid capabilities:
Azure allows you to build hybrid applications that span on-premises and cloud environments.

Overall, Azure provides a powerful and flexible platform for building, deploying, and managing a wide range of applications and services in the cloud.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What is Infrastructure as a service (Iaas)?

A

Infrastructure as a Service (IaaS) is a cloud computing model in which a service provider offers infrastructure resources, such as virtual machines, storage, and networking, to customers on a pay-as-you-go basis. In an IaaS model, the service provider is responsible for maintaining the underlying infrastructure, while the customer is responsible for installing, configuring, and managing the operating system, middleware, and applications that run on top of it.

IaaS provides several benefits to organizations and individuals, including:

Cost savings:
With IaaS, you only pay for the resources you use, rather than having to invest in and maintain your own physical infrastructure. This can help reduce costs.

Scalability:
IaaS allows you to easily scale your infrastructure up or down as needed, so you can adjust to changing workloads and demand.

Flexibility:
IaaS gives you the flexibility to choose the operating system, middleware, and applications that best fit your needs, and to configure them as you see fit.

Efficiency:
IaaS allows you to quickly and easily provision new infrastructure resources as needed, which can help improve the efficiency of your operations.

Examples are virtual machines and storage the various cloud computing services (like AWS and Azure) offer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What is platform as a service (PaaS)?

A

Platform as a Service (PaaS) is a cloud computing model in which a service provider offers a platform for building, deploying, and managing applications and services. The service provider is responsible for maintaining the underlying infrastructure, as well as the platform itself, including the operating system, middleware, and development tools.

In a PaaS model, customers can build and deploy their own applications and services on top of the platform, without having to worry about the underlying infrastructure. This makes it easier for developers to focus on building and deploying their applications, rather than having to worry about managing the underlying infrastructure.

PaaS provides several benefits to organizations and individuals, including:

Efficiency:
PaaS allows developers to focus on building and deploying their applications, rather than having to worry about managing the underlying infrastructure. This can help improve the efficiency of development and deployment.

Scalability:
PaaS allows you to easily scale your applications up or down as needed, so you can adjust to changing workloads and demand.

Flexibility:
PaaS gives you the flexibility to choose the development tools and frameworks that best fit your needs, and to configure them as you see fit.

Cost savings:
With PaaS, you only pay for the resources you use, rather than having to invest in and maintain your own infrastructure and development tools. This can help reduce costs.

Examples are database management, access to different web applications/microservices and running your own code in response to events.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What is platform as a service (PaaS)?

A

Platform as a Service (PaaS) is a cloud computing model in which a service provider offers a platform for building, deploying, and managing applications and services. The service provider is responsible for maintaining the underlying infrastructure, as well as the platform itself, including the operating system, middleware, and development tools.

In a PaaS model, customers can build and deploy their own applications and services on top of the platform, without having to worry about the underlying infrastructure. This makes it easier for developers to focus on building and deploying their applications, rather than having to worry about managing the underlying infrastructure.

PaaS provides several benefits to organizations and individuals, including:

Efficiency:
PaaS allows developers to focus on building and deploying their applications, rather than having to worry about managing the underlying infrastructure. This can help improve the efficiency of development and deployment.

Scalability:
PaaS allows you to easily scale your applications up or down as needed, so you can adjust to changing workloads and demand.

Flexibility:
PaaS gives you the flexibility to choose the development tools and frameworks that best fit your needs, and to configure them as you see fit.

Cost savings:
With PaaS, you only pay for the resources you use, rather than having to invest in and maintain your own infrastructure and development tools. This can help reduce costs.

Examples are database management, access to different web applications/microservices and running your own code in response to events. It’s usually cloud computing services like AWS and Azure that offers this.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What is software as a service (SaaS)?

A

Software as a Service (SaaS) is a cloud computing model in which a service provider offers software applications over the internet on a subscription basis. Customers can access and use the software over the internet, rather than having to install it on their own computers or servers.

In a SaaS model, the service provider is responsible for maintaining and updating the software, as well as the underlying infrastructure. This means that customers don’t have to worry about installing or maintaining the software themselves. They can simply use it as needed and pay for the subscription on a monthly or annual basis.

SaaS provides several benefits to organizations and individuals, including:

Ease of use:
SaaS allows users to access and use software applications over the internet, rather than having to install and maintain them on their own computers or servers.

Scalability:
SaaS allows users to easily scale their use of the software up or down as needed, so they can adjust to changing workloads and demand.

Cost savings:
With SaaS, users only pay for the software they use, rather than having to invest in and maintain their own software licenses and infrastructure. This can help reduce costs.

Updates and maintenance:
SaaS providers are responsible for maintaining and updating the software, which means users don’t have to worry about installing patches or keeping their software up to date.

Examples are: Salesforce, Dropbox, Zoom, Netflix etc.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What is Docker?

A

Docker is a tool designed to make it easier to create, deploy, and run applications by using containers. Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What is a microservice?

A

A microservice is a software architecture style in which a large application is built as a suite of small, modular services, each of which performs a specific task and communicates with other services through well-defined interfaces.

There are several advantages to using a microservice architecture:

Scalability:
Because each microservice is a self-contained unit, it can be scaled independently of the other services, allowing for more granular control over resource allocation.

Resilience:
If one microservice fails, the other services can continue to function, resulting in a more robust and resilient overall system.

Modularity:
Microservices are modular, meaning that they can be developed, tested, and deployed independently, allowing for more flexible and agile development processes.

Reusability:
Microservices can be shared and reused across different applications, making it easier to build and maintain complex systems.

Language independence:
Microservices can be implemented in different programming languages, making it easier to use the best tool for the job and allowing for a more diverse team of developers.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What is an API?

A

An API, or application programming interface, is a set of rules and protocols that defines how two systems can communicate with each other. APIs are often used to allow one piece of software to access or manipulate the data or functionality of another piece of software.

APIs typically consist of a set of functions or methods that can be called by a program, along with a specification of the input and output parameters for each function. The program calling the API is known as the client, and the program providing the API is known as the server.

APIs are used in many different contexts, such as allowing a web application to access data from a database, or allowing one mobile app to interact with another. They are an important part of modern software development, as they allow different systems and applications to work together and share data and functionality.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What is a docker file?

A

A Dockerfile is a text file that contains a series of instructions for building a Docker image. Each instruction in the Dockerfile creates a new layer in the image. A layer is an individual unit of change that can be rolled back or committed to the image.

The first line of a Dockerfile must specify the base image to use for the build. For example, you might specify FROM ubuntu:18.04 to use the latest version of Ubuntu as the base image.

After the base image has been specified, you can use a variety of different commands to build and configure the image. Some common commands include:

RUN:
Run a command in the shell. For example, RUN apt-get update will update the package manager’s list of available packages.

COPY:
Copy files from the host machine into the image. For example, COPY . /app will copy all files in the current directory to the /app directory in the image.’

WORKDIR:
Set the working directory for subsequent instructions. For example, WORKDIR /app will set the working directory to /app.

ENV: Set environment variables in the image. For example, ENV PORT 8080 will set the environment variable PORT to 8080.

After you have to “build” the image with a command, which can be used to control 1 or more docker containers.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What is a virtual environment?

A

A virtual environment is a tool used to isolate specific Python environments on a single machine, allowing you to work with multiple versions of Python libraries and packages without conflicts.

Virtual environments are especially useful when you need to work on multiple projects that have different requirements, or when you want to test out new libraries or packages without affecting your global Python environment.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What is Git?

A

Git is a version control system that is used to track changes to files and coordinate the work of multiple people on the same project. It is a distributed version control system, which means that each person working on a project has a copy of the entire project history on their own computer, rather than relying on a central server to store the project history.

Git allows you to create a repository, which is a directory that contains all the files for a project, as well as a record of all the changes made to those files over time. You can use Git to create a new repository, or you can clone an existing repository from a remote server.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What is GitHub?

A

GitHub is a web-based platform that provides hosting for software development version control using Git. It is a subsidiary of Microsoft and is the largest host of source code in the world.

GitHub allows developers to store and manage their code repositories, as well as track and control changes to their code. It also provides a range of collaboration features, such as the ability to assign tasks, track issues, and review code changes.

GitHub is widely used by individuals and organizations to host and share code, as well as to collaborate on software development projects. It is also a popular platform for open-source projects, as it provides a convenient way for developers around the world to contribute to and collaborate on projects.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What is a NoSQL database?

A

NoSQL databases are a class of databases that are designed to handle large amounts of data that is distributed across a large number of servers, and to support a wide variety of data models (and unstructured data). They are often referred to as “non-relational” databases, as they do not use the traditional relational database model based on tables and SQL (Structured Query Language).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What are the main differences between a relational database and a NoSQL database?

A

Relational databases use a tabular data model, where data is organized into tables with rows and columns

NoSQL databases, on the other hand, can use a variety of data models, including key-value stores, document stores, graph databases, and column-family stores.

Relational databases are generally designed to scale vertically, by adding more resources (such as CPU, memory, and storage) to a single machine.

NoSQL databases, on the other hand, are generally designed to scale horizontally, by adding more machines to the database cluster

Relational databases use transactions and ACID (Atomicity, Consistency, Isolation, Durability) guarantees to ensure that data is consistent and reliable

NoSQL databases generally offer weaker consistency guarantees, as they prioritize availability and partition tolerance over consistency in certain situations.

Advantages of relational databases:

  • Strong data consistency guarantees
  • Support for transactions and ACID guarantees
  • Widely understood and used query language (SQL)
  • Well-established and mature technology

Disadvantages of relational databases

  • Limited scalability
  • Rigid data model
  • Poor performance for certain types of workloads
    Advantages of NoSQL databases
  • Flexible data model
  • Good scalability
  • High availability and partition tolerance
  • Generally good performance for certain types of workloads

Disadvantages of NoSQL databases

  • Weak consistency guarantees
  • Lack of support for transactions
  • Lack of a widely understood and used query language
  • Limited mature technology compared to relational databases
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What the different ways NoSQL databases store data?

A

Key-value stores:

  • Data is stored in key/value pairs. It is designed in such a way to handle lots of data and heavy load.
  • Key-value pair storage databases store data as a hash table where each key is unique, and the value can be a JSON

Column-based:

A column-based NoSQL database, data is organized into column families, which are groups of related columns. Each column family can contain one or more rows, and each row can contain one or more columns.

Document-oriented:

Document-Oriented NoSQL DB stores and retrieves data as a key value pair but the value part is stored as a document. The document is stored in JSON or XML formats. The value is understood by the DB and can be queried

Graph-based:

A graph-based NoSQL database, data is stored as nodes, which represent entities or objects, and edges, which represent relationships between nodes. Each node can have one or more properties, which are key-value pairs that describe the node. Each edge can also have one or more properties, which describe the relationship between the two nodes it connects

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What is a cluster?

A

A cluster refers to a group of servers that work together to store and manage data. Clustering is a way of scaling a database to handle larger amounts of data and higher levels of concurrency by distributing the data and workload across multiple servers

16
Q

What is a distributed system?

A

A distributed system is a network of computers that work together to perform tasks or solve problems. In a distributed system, each computer, or node, has its own processor, memory, and other resources, and is capable of running its own programs and processing its own data. However, the nodes are connected to each other and can communicate with each other in order to share resources, exchange data, and coordinate their actions.

Some examples of distributed systems include:

Client-server systems: In a client-server system, one or more computers (the clients) make requests to a central server, which processes the requests and sends back the results.

Peer-to-peer systems: In a peer-to-peer system, each computer (or peer) is able to act as both a client and a server, and can communicate directly with other peers without the need for a central server.

Cloud computing systems: In a cloud computing system, resources such as computing power, storage, and software applications are provided over the internet on a pay-as-you-go basis.

File sharing systems: File sharing systems, such as Dropbox or Google Drive, allow users to store and share files over the internet. In this type of system, each user’s computer acts as a node, and the files are stored and replicated on multiple nodes in order to ensure their availability and reliability.

Social media networks: Social media networks, such as Facebook or Twitter, are distributed systems that allow users to create profiles, share content, and interact with each other online. In this type of system, each user’s computer is a node, and the servers that host the social media platform are also nodes.

17
Q

What are main advantages and disadvantages of using distributed systems?

A

Advantages:

Increased reliability: Distributed systems can be more reliable than traditional systems because they are typically designed to be fault-tolerant. If one node in the system fails, the other nodes can continue to operate and provide services, which can help to minimize downtime and ensure that the system remains available.

Scalability: Distributed systems can be more scalable than traditional systems because they can use additional resources as needed to meet increasing demand. This can be especially useful for applications that experience sudden spikes in traffic or usage.

Flexibility: Distributed systems can be more flexible than traditional systems because they can be easily modified or expanded to meet changing needs. For example, new nodes can be added to the system to increase capacity, or existing nodes can be removed to reduce costs.

Efficiency: Distributed systems can be more efficient than traditional systems because the workload can be divided among multiple nodes, and resources can be used more efficiently. This can help to reduce costs and improve performance.

Disadvantages:

Complexity: Distributed systems can be more complex than traditional systems because they require the use of complex communication and coordination protocols in order to ensure that data is consistent and accurate across the system. This can make them more difficult to design, implement, and maintain.

Dependency on network connectivity: Distributed systems are typically reliant on a network connection in order to function properly. If the network fails or becomes unavailable, the system may not be able to operate.

Security risks: Distributed systems can be more vulnerable to security risks because they typically involve the exchange of data over a network, which can be subject to interception or tampering.

Increased maintenance costs: Distributed systems can be more expensive to maintain than traditional systems because they typically require more resources and expertise to manage.

18
Q

What is distributed computing?

A

A method of computer processing in which different parts of a computer program arerun on two or more computers that are communicating with each other over a network.Allows for better performance due to its simple scalability and builtin concurrency.It also allows for flexible and resilient application that doesn’t have a single point offailure.

19
Q

What is Asynchronous communication?

A

Asynchronous communication is a way of exchanging information or data between two or more devices or systems in which the parties do not need to be in direct contact with each other at the same time in order for the communication to take place. In asynchronous communication, messages or data are transmitted and received at different times, rather than in real-time as in synchronous communication.

It is more complicated to implement, but more efficient

Loose coupling of processes

Lower error dependency

Receiver does not need to be available to receive

20
Q

What is synchronous communication?

A

Synchronous communication is a way of exchanging information or data between two or more devices or systems in which the parties need to be in direct contact with each other at the same time in order for the communication to take place. In synchronous communication, messages or data are transmitted and received in real-time, allowing the sender and recipient to interact in a timely manner.

Tight coupling between the transmitter and receiver with all its advantages and disadvantages

High dependence especially in case of failure

21
Q

What is a design pattern?

A

In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern isn’t a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations.

Design patterns can speed up the development process by providing tested, proven development paradigms. Reusing design patterns helps to prevent subtle issues that can cause major problems and improves code readability for coders and architects who are familiar with the patterns.

Design patterns can be considered as a set of best practices that have proven themselves over time.

22
Q

What are the 3 types of design patterns?

A
  1. Creational design pattern:

Creational design patterns deal with object creation mechanisms, trying to create objects in a manner suitable to the situation.

  • Singleton: Ensures that a class has only one instance and provides a global access point to it.
  1. Structural design pattern:

Structural design patterns deal with object composition, creating relationships between objects to form larger structures. These patterns focus on the way that objects are composed to form larger structures, rather than on the individual objects themselves.

  • Adapter: Allows classes with incompatible interfaces to work together by wrapping its own interface around that of an already existing class.
  1. Behavioral design pattern:

Behavioral design patterns focus on communication between objects, what goes on between objects and how they operate together. These patterns focus on the way that objects interact with each other and the way that they operate as part of a larger system.

  • Chain of Responsibility: Passes a request sequentially along a dynamic chain of potential receivers until one of them handles it.
23
Q

What is Model-view-controller (MVC)?

A

Model-View-Controller (MVC) is a software design pattern that divides an application into three interconnected parts: the model, the view, and the controller.

The model represents the data and the business logic of the application. It contains the methods and variables that hold and manipulate the data.

The view represents the user interface of the application. It is responsible for displaying the data to the user and providing a way for the user to interact with the application.

The controller acts as a mediator between the model and the view. It receives input from the user and sends it to the model for processing, and it also updates the view when the model changes.

The MVC pattern helps to separate the business logic and the user interface of an application, making it easier to maintain and extend the codebase. It also allows multiple views to be used with the same model, making it possible to create applications that work on different platforms or devices.

24
Q

What are the steps in a MVC request process?

A

MVC request process is as follows:

  • A user requests to view a page by entering a URL
  • The application matches the URL to a predefined route
  • The controller action associated with the route is called
  • The controller action uses the models to retrieve all of the necessary data from adatabase, places the data in an array, and loads a view, passing along the datastructure
  • The view accesses the structure of data and uses it to render the requested page,which is then presented to the user in their browser
25
Q

What is a firewall and how does it work?

A

A firewall is a security system that monitors and controls incoming and outgoing network traffic based on predetermined security rules.

Firewalls work by examining the data packets that are transmitted between networks and applying a set of rules to determine whether to allow or block the packet. These rules can be based on various criteria such as the source and destination of the packet, the port number being used, and the type of packet.

A firewall can be configured to block traffic from certain IP addresses or ranges of addresses. For example, if an organization wants to block all traffic from a particular country, the firewall can be set up to block all packets with a source address from that country

Filtering traffic based on port numbers: Packets transmitted over the internet use port numbers to identify the type of service being accessed. A firewall can be configured to block or allow traffic based on the port number being used. For example, the firewall could be set up to allow all traffic using port 80 (used for HTTP) but block all traffic using port 25 (used for email).

26
Q

What are the 3 most common types of cyber threats?

A
  • Malware

Malware, short for malicious software, is a blanket term that refers to a wide variety of
software programs designed to do damage or do other unwanted actions to a
computer, server or computer network. Malware can slow down or crash your device or delete files. Criminals often use malware to send spam, obtain personal and financial information and even steal your identity.

  • Spyware

Spyware is a type of malware that attaches itself and hides on a computer’s operating
system without your permission to make unwanted changes to your user experience.
It can be used to spy on your online activity and may generate unwanted
advertisements or make your browser display certain website sites or search results.

  • Phishing

Phishing attacks use email or fraudulent websites to try to trick you into providing
personal or financial information to compromise an account or steal money by posing
as a trustworthy entity. They may claim there’s a problem with payment information or that they’ve noticed activity on an account and ask you to click on a link or attachment and provide personal information.

27
Q

What is a antivirus program and how does it work?

A

Antivirus software begins operating by checking your computer programs and files against a database of known types of malware. Since new viruses are constantly created and distributed by hackers, it will also scan computers for the possibility of new or
unknown type of malware threats.

Types of detection_

Specific detection - Identifies known malware

Generic detection - Looks for known parts or types of malware or patterns that are
related by a common codebase

Heuristic detection - Scans for unknown viruses by identifying known suspicious
file structures.

When the antivirus program finds a file that contains a virus, it will usually quarantine it
and/or mark it for deletion, making it inaccessible and removing the risk to your device.

28
Q

What’s the difference between HTTP and HTTPS?

A

HTTP (Hypertext Transfer Protocol) is a protocol used for transmitting data over the internet. It is the foundation of data communication on the World Wide Web.

When you enter a website’s URL into your web browser, your browser sends an HTTP request to the web server to retrieve the website’s content. The web server then responds by sending the content back to your browser, which displays the website.

HTTPS (HTTP Secure) is a secure version of HTTP. It uses a secure SSL/TLS connection to encrypt the data being transmitted between the web server and the client (typically a web browser). This helps to protect against man-in-the-middle attacks, where an attacker intercepts and potentially modifies the data being transmitted between the server and the client.

29
Q

What is an VPN and how does it protect you?

A

A Virtual Private Network (VPN) connects to the internet privately
by hiding your real IP address and routing your internet traffic and
data through a private and securely encrypted tunnel over public
networks.

VPN gives you a way to browse the internet without giving away
your identity, location, or data.

When data is encrypted inside the VPN tunnel, ISPs, search engines,
marketers, hackers, and others can’t see or track your activities on
the web.

  • VPNs protect you in three main ways:

Disguises your real IP address and location. After connecting to a VPN service, you
go to the internet from a new gateway server. This spoofs your IP address and
makes it appear as if you’re in a different city or country than the one you’re in.

Encapsulates your internet traffic through a private VPN tunnel. With a VPN, all
your data packets are encapsulated inside additional data packets. This
encapsulation creates a private tunnel inside public networks.

Scrambles your private data with encryption. When using a VPN service, your
internet traffic and personal information inside the tunnel are scrambled using
encryption. This makes a VPN connection virtually impossible for outside forces to
hack.

30
Q

What is two factor authentication?

A

Two-factor authentication—and the similar two-step
authentication, which is sometimes treated as a different
mechanism and sometimes not—means you need another bit of
information besides your password and email address. Most
commonly in most consumer apps, it’s either an SMS code sent to
your phone, or a code generated by a dedicated authenticator app.

31
Q

What is a microservice?

A

A microservice is a software architecture design pattern in which a large application is built as a collection of small, independent services. Each service is designed to perform a specific task and communicates with other services through well-defined interfaces, typically using APIs

The main advantage of microservices is that they allow for more flexibility and scalability compared to a monolithic architecture, where the entire application is built as a single, cohesive unit. With microservices, it is easier to develop, test, and deploy individual services independently, which can speed up the overall development process.

In addition, microservices are designed to be modular, meaning that they can be easily replaced or updated without affecting the rest of the application. This allows for easier maintenance and the ability to quickly iterate on specific features without having to redeploy the entire application.

In DDD a microservice is an aggregat and all repositories and domain services that is associated with that aggregat.

32
Q

What is a message broker?

A

A message broker is a software component that acts as an intermediary for the transmission of messages between systems. Its main function is to receive messages from one system and route them to the appropriate destination system, based on predefined rules.

Message brokers are used to decouple systems from one another, allowing them to communicate asynchronously and improving the overall reliability and scalability of the system. They can also be used to integrate different systems that use different protocols or data formats, by translating messages from one format to another as needed.