Skip to main content

Persitence

 1)Inheritence:

Prototype inheritance is a core concept in JavaScript that allows objects to inherit properties and methods from other objects. Every JavaScript object has a prototype property, which refers to another object. When a property or method is accessed on an object, if it doesn't exist on that object, JavaScript looks up the prototype chain to find it.

function Student(name, grade) {

    Person.call(this, name);

    this.grade = grade;

}


Student.prototype = Object.create(Person.prototype);

Student.prototype.constructor = Student;


Student.prototype.displayGrade = function() {

    return this.name + " is in grade " + this.grade;

};


let student1 = new Student("Bob", 10);

console.log(student1.greet()); // Output: "Hello, my name is Bob"

console.log(student1.displayGrade()); // Output: "Bob is in grade 10"






2)thread pool:

  1. Thread Pool: The thread pool in Node.js consists of a pool of worker threads (implemented using libuv). These worker threads handle asynchronous operations that are computationally intensive or involve blocking I/O operations.


3)cors how to handle in server?
const allowCrossDomain = (req, res, next) => { res.header('Access-Control-Allow-Origin', '*'); // Allow requests from any origin res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); // Allow specified HTTP methods res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization'); // Allow specified headers next(); // Call the next middleware function };


CORS (Cross-Origin Resource Sharing) is a security feature implemented by web browsers to restrict cross-origin HTTP requests initiated from scripts running in the browser. When you make a request from a different domain, protocol, or port, the browser typically blocks the request by default for security reasons.


To allow CORS in an Express.js application, you can use the cors middleware. The cors middleware enables cross-origin resource sharing by setting the necessary CORS headers in the HTTP response.


Here's how you can allow CORS in an Express.js application using the cors middleware:


First, install the cors package from npm:

bash

Copy code

npm install cors

Then, in your Express.js application, import the cors middleware and use it in your application:

javascript

Copy code

const express = require('express');

const cors = require('cors');


const app = express();


// Allow all origins

app.use(cors());


// Or, specify specific origins

// app.use(cors({

//   origin: 'http://example.com' // Allow requests from example.com

// }));


// Or, use a function to dynamically determine allowed origins

// app.use(cors({

//   origin: function (origin, callback) {

//     // Check if the origin is allowed

//     callback(null, true);

//   }

// }));


// Routes

app.get('/', (req, res) => {

  res.send('Hello World!');

});


app.listen(3000, () => {

  console.log('Server is running on port 3000');

});

In the above example:


We import the cors middleware and use it by calling app.use(cors()).

By default, cors() allows all origins, methods, and headers. You can specify specific origins, methods, or headers using options.

You can also use a function to dynamically determine allowed origins based on the request.

Place the cors() middleware before your route handlers to apply CORS headers to all routes. Alternatively, you can apply it to specific routes if needed.

With this setup, your Express.js application will include the necessary CORS headers in the HTTP responses, allowing cross-origin requests from browsers.

4)How to read file in request like data and create file .form  we get data

5)arrow function:

const a = {

    name: 'abc',

    getName: () => {

        console.log(this.name)

    }

}

a.getName(); // Outputs: undefined


const a = {
    name: 'abc',
    getName: function () {
        console.log(this.name)
    }
}
a.getName(); // Outputs: 'abc'

6)Shallow vs deep copy:

For objects, the spread operator creates a new object and copies all enumerable own properties from the source object to the new object. If the properties are objects themselves, they are not deeply cloned; rather, references to those objects are copied. This means that changes to nested objects in the copied object will affect the original object and vice versa.

const original = { a: 1, b: { c: 2 } };

const copy = { ...original };


console.log(copy); // { a: 1, b: { c: 2 } }

console.log(copy === original); // false

console.log(copy.b === original.b); // true (reference to the same nested object)


7)Middle wear and custom middlewear:

In Express.js, middleware functions are functions that have access to the request object (req), the response object (res), and the next middleware function in the application's request-response cycle. Middleware functions can perform tasks such as modifying request and response objects, terminating the request-response cycle, calling the next middleware function in the stack, or handling errors.

const express = require('express');

const app = express();


// Custom middleware function

const myMiddleware = (req, res, next) => {

  console.log('Middleware executed');

  next(); // Call the next middleware function

};


app.use(myMiddleware); // Mount the middleware function to be used for all routes


// Route handler

app.get('/', (req, res) => {

  res.send('Hello World!');

});


app.listen(3000, () => {

  console.log('Server is running on port 3000');

});

const authenticate = (req, res, next) => {
  // Check if the user is authenticated
  if (req.isAuthenticated()) {
    // If authenticated, call the next middleware function
    return next();
  }
  // If not authenticated, send an error response
  res.status(401).send('Unauthorized');
};

app.use(authenticate); // Mount the authentication middleware to be used for all routes

// Route handler that requires authentication
app.get('/profile', (req, res) => {
  res.send('Welcome to your profile!');
});



8)update mongodb to get updated params?

        const opts = { new: true, upsert: true };



9)Connection pool in mongodb?

A connection pool in MongoDB is a mechanism used to manage and reuse database connections efficiently. It allows your application to establish a pool of database connections at startup and reuse these connections for subsequent database operations instead of creating new connections every time. Here's why you should use a connection pool in MongoDB:


Performance: Creating and tearing down database connections can be resource-intensive. By using a connection pool, you can reduce the overhead associated with connection establishment and teardown, resulting in better performance for your application.


Scalability: Connection pools allow you to handle multiple concurrent database operations more efficiently. Instead of having each operation create its own connection, they can share connections from the pool, which helps your application scale better, especially under heavy loads.


Resource Management: Connection pools help in managing system resources effectively. You can configure the maximum number of connections in the pool to avoid exhausting system resources, such as memory and file descriptors, due to excessive connection creation.


Optimized Connection Usage: With a connection pool, idle connections are kept alive and reused for subsequent requests, minimizing the overhead of establishing new connections. This ensures that database connections are utilized optimally and reduces the risk of connection timeouts or other network-related issues.


Connection Reuse: Reusing connections from a pool reduces the overhead of authentication and authorization, as well as the overhead of establishing secure connections (e.g., TLS/SSL handshake) since these tasks are performed only once per connection rather than for each request.


Connection Lifecycle Management: Connection pools often provide features for managing the lifecycle of connections, such as connection validation, connection timeout handling, and automatic reconnection in case of connection failures. These features help ensure the stability and reliability of your application's database connections.


Overall, using a connection pool in MongoDB helps improve the performance, scalability, and resource utilization of your application by efficiently managing and reusing database connections. It is considered a best practice for MongoDB applications deployed in production environments.


Enumerable:



  • Enumerable properties are those properties of an object that can be iterated over using a for...in loop or accessed using Object.keys(), Object.values(), or Object.entries().
  • Enumerable properties are those properties of an object that can be iterated over using a for...in loop or accessed using Object.keys(), Object.values(), or Object.entries().



Object.keys(), Object.values(), and Object.entries() are three methods provided by JavaScript's Object global object. They are used to retrieve various information about the properties of an object:


Object.keys():


Purpose: Returns an array containing the names of all enumerable own properties of an object.

Syntax:

javascript

Copy code

Object.keys(obj)

Example:

javascript

Copy code

const obj = { a: 1, b: 2, c: 3 };

const keys = Object.keys(obj); // ['a', 'b', 'c']

Object.values():


Purpose: Returns an array containing the values of all enumerable own properties of an object.

Syntax:

javascript

Copy code

Object.values(obj)

Example:

javascript

Copy code

const obj = { a: 1, b: 2, c: 3 };

const values = Object.values(obj); // [1, 2, 3]

Object.entries():


Purpose: Returns an array containing arrays of key-value pairs for each enumerable own property of an object.

Syntax:

javascript

Copy code

Object.entries(obj)

Example:

javascript

Copy code

const obj = { a: 1, b: 2, c: 3 };

const entries = Object.entries(obj); // [['a', 1], ['b', 2], ['c', 3]]

These methods are often used for iterating over object properties or extracting specific information from objects. They provide convenient ways to work with object properties without needing to use loops or other iteration mechanisms.




Object.defineProperty:

Object.defineProperty() is a method in JavaScript used to define new properties or modify existing properties on an object. It allows you to precisely control the behavior of the property, such as whether it's writable, enumerable, and configurable.

const obj = {}; Object.defineProperty(obj, 'x', { value: 42, writable: false, // Make the property read-only enumerable: true, // Property will appear in Object.keys() configurable: false // Prevents changes to property attributes });


10)Webpack:

Webpack is a popular module bundler for JavaScript applications. It's primarily used to bundle JavaScript files for usage in a browser, but it's also capable of bundling other types of assets such as HTML, CSS, and images. Here's a breakdown of what Webpack is and what it can do:


Module Bundler:


Webpack treats all the files and assets in your project as modules and generates a dependency graph, which includes every module your project needs, then packages all of these modules into one or more bundles.

JavaScript Bundling:


Webpack's primary use case is bundling JavaScript files. It can process JavaScript code using loaders and plugins, handle ES6 modules (import/export), and bundle them into a single or multiple output files.

Asset Management:


Webpack can handle various types of assets, including CSS, images, fonts, and more. You can use loaders to instruct Webpack on how to process these assets. For example, you can use css-loader to process CSS files and file-loader to handle image files.

Code Splitting:


Webpack allows you to split your code into multiple bundles, which can be loaded on-demand. This can improve the initial loading time of your application by only loading the necessary code when it's needed.

Development Server:


Webpack provides a built-in development server that allows you to run your application locally during development. It supports hot module replacement (HMR), which means changes in your code can be reflected instantly in the browser without requiring a full page refresh.

Integration with Frontend Frameworks:


Webpack is commonly used with frontend frameworks like React, Angular, and Vue.js. These frameworks often have starter templates or configuration presets tailored for use with Webpack.

Regarding your question about bundling HTML, CSS, JS, and TS:


While Webpack primarily focuses on JavaScript, it can indeed bundle HTML, CSS, and TS files as well. For HTML files, you can use html-webpack-plugin to generate HTML files dynamically and inject script tags for your bundles. For CSS files, you can use loaders like css-loader and style-loader. For TypeScript files, you can use ts-loader to transpile TypeScript to JavaScript before bundling.

Overall, Webpack is a versatile tool that can handle various aspects of modern web development, from bundling JavaScript modules to managing assets and optimizing performance.


function getValueByPath(obj, path) {

    // Split the path into an array of keys

    const keys = path.split('.');


    // Initialize a variable to store the current value

    let value = obj;


    // Iterate through each key in the path

    for (const key of keys) {

        // Check if the current value is an object and contains the key

        if (typeof value === 'object' && value !== null && key in value) {

            // Update the current value to the value of the key

            value = value[key];

        } else {

            // If the key is not found or the current value is not an object, return undefined

            return undefined;

        }

    }


    // Return the final value

    return value;

}


// Example usage:

const obj = {

    a: {

        b: {

            c: 123

        }

    }

};


console.log(getValueByPath(obj, 'a.b.c')); // Output: 123

console.log(getValueByPath(obj, 'a.b.d')); // Output: undefined

console.log(getValueByPath(obj, 'x.y.z')); // Output: undefined




















Comments

Popular posts from this blog

Globant part 1

 1)call,apply,bind example? Ans: a. call Method: The call method is used to call a function with a given this value and arguments provided individually. Javascript code: function greet(name) {   console.log(`Hello, ${name}! I am ${this.role}.`); } const person = {   role: 'developer' }; greet.call(person, 'Alice'); // Output: Hello, Alice! I am developer. In this example, call invokes the greet function with person as the this value and passes 'Alice' as an argument. b. apply Method: The apply method is similar to call, but it accepts arguments as an array. Javascript code: function introduce(language1, language2) {   console.log(`I can code in ${language1} and ${language2}. I am ${this.name}.`); } const coder = {   name: 'Bob' }; introduce.apply(coder, ['JavaScript', 'Python']); // Output: I can code in JavaScript and Python. I am Bob. Here, apply is used to invoke introduce with coder as this and an array ['JavaScript', 'Pyt...

Node.js: Extract text from image using Tesseract.

In this article, we will see how to extract text from images using Tesseract . So let's start with this use-case, Suppose you have 300 screenshot images in your mobile which has an email attribute that you need for some reason like growing your network or for email marketing. To get an email from all these images manually into CSV or excel will take a lot of time. So now we will check how to automate this thing. First, you need to install Tesseract OCR( An optical character recognition engine ) pre-built binary package for a particular OS. I have tested it for Windows 10. For Windows 10, you can install  it from here. For other OS you make check  this link. So once you install Tesseract from windows setup, you also need to set path variable probably, 'C:\Program Files\Tesseract-OCR' to access it from any location. Then you need to install textract library from npm. To read the path of these 300 images we can select all images and can rename it to som...

CSS INTERVIEW QUESTIONS SET 2

  You make also like this CSS interview question set 1. Let's begin with set 2, 5)What is the difference between opacity 0 vs display none vs visibility hidden? Property           | occupies space | consumes clicks | +--------------------+----------------+-----------------+ | opacity: 0         |        yes      |        yes       | +--------------------+----------------+-----------------+ | visibility: hidden |        yes       |        no        | +--------------------+----------------+-----------------+ | display: none      |        no       |        no        | When we say it consumes click, that means it also consumes other pointer-events like onmousedown,onmousemove, etc. In e...