You're developing a web application where users need to upload images. How would you validate the file type and size using JavaScript?

  • Use File API to check file size
  • Use FileReader API to read file metadata
  • Use accept attribute in tag
  • Use typeof operator to check file type
Using the accept attribute in the tag allows specifying the allowed file types (MIME types) that users can upload. This provides client-side validation to ensure that only files of specified types are accepted. The File API, on the other hand, allows accessing file metadata, including size. Using typeof is not suitable for file type validation. The FileReader API is used to read file content, not metadata.

Docker uses ________ files to define the configuration of a containerized application.

  • .yaml
  • .json
  • .cfg
  • .dockerfile
The correct option is ".dockerfile." Docker uses Dockerfiles, which are plain text configuration files with a specific syntax, to define the steps needed to create a container image. These files specify the base image, environment variables, dependencies, and commands to run when the container starts. Dockerfiles are essential for building reproducible and version-controlled containerized applications, making it easier to manage and scale container deployments.

When is it preferable to use merge sort over quicksort?

  • Input size
  • Memory usage
  • Stability of sorting
  • Time complexity
Merge sort is preferable over quicksort when dealing with large input sizes due to its guaranteed O(n log n) time complexity, which is advantageous over quicksort's worst-case O(n^2) time complexity.

Which type of linked list is best suited for implementing a stack?

  • Array-based list
  • Circular linked list
  • Doubly linked list
  • Singly linked list
A singly linked list is best suited for implementing a stack because it only requires a pointer to the top element, allowing for efficient insertion and removal operations at the top of the stack.

In a relational database, a ___________ allows efficient retrieval of records based on specific criteria.

  • Primary Key
  • Index
  • Foreign Key
  • Unique Key
An index in a relational database is a data structure that allows for efficient retrieval of records based on specific criteria. It acts as a pointer to the data in the table and can significantly speed up queries by providing quick access to rows that meet certain conditions. A primary key is a specific type of index that uniquely identifies each record in a table. A foreign key is used to establish relationships between tables. A unique key ensures that no two records have the same values in specified columns. While all these options are related to data retrieval and optimization, an index is specifically designed for efficient search operations, making it the most suitable choice.

What is the role of HATEOAS in RESTful APIs?

  • Define the structure of data responses
  • Enable self-discovery of resources and actions
  • Secure API endpoints
  • Standardize error handling
HATEOAS (Hypertext As The Engine Of Application State) allows RESTful APIs to provide links within responses for clients to discover related resources and available actions, promoting self-discovery and reducing coupling.

You're developing a real-time chat application using Node.js. How would you implement WebSocket communication for instant messaging?

  • Implement WebSocket protocol directly using native Node.js APIs.
  • Use the 'express-ws' library for WebSocket functionality with Express.js.
  • Use the 'ws' library and create a WebSocket server.
  • Utilize Socket.IO library for WebSocket communication.
WebSocket communication is crucial for real-time chat apps. Socket.IO provides a robust framework for WebSocket communication, including features like automatic reconnection, event handling, and room management, making it suitable for instant messaging applications in Node.js.

You're tasked with designing a cache management system using a linked list to store recently accessed data. How would you implement this system to optimize cache performance?

  • Implement a FIFO eviction policy where the least recently accessed data is removed when the cache is full.
  • Implement an LRU (Least Recently Used) policy by moving recently accessed data to the front of the linked list, ensuring quick access and eviction of least used data.
  • Use a hybrid cache structure with a combination of linked lists and hash tables to achieve fast lookup and efficient eviction based on access frequency.
  • Implement a randomized eviction policy where data is evicted randomly to avoid patterns in access behavior that could lead to cache inefficiencies.
Option 2 suggests implementing an LRU (Least Recently Used) policy by moving recently accessed data to the front of the linked list. This approach optimizes cache performance by ensuring that frequently accessed data remains at the forefront, reducing access times and enabling efficient eviction of least used data when the cache is full. This strategy aligns with common cache management principles for improving access speed and overall system performance.

In Git, a ___________ is a snapshot of the project's files at a specific point in time.

  • commit
  • stage
  • merge
  • push
The correct option is "commit." A commit in Git represents a snapshot of the project's files at a specific moment in time. When you make changes to files and then commit those changes, Git records the changes and creates a new commit object. Commits are essential for tracking project history and collaborating with others in a version-controlled manner.

Git _________ is a technique used to combine multiple commits into one.

  • branching
  • cherry-picking
  • merging
  • squashing
Git squashing is a technique used to combine multiple commits into a single commit. It's useful for creating cleaner commit histories and for preparing changes before merging them into a main branch or repository.