Skip to content

Декілька питань для інтерв'ю

Опубліковано: at 19:00

few-questions-for-coding-interview-preview

Мотивація

За останні роки я провів багато інтерв’ю для розробників на різні позиції. Хочу поділитися з вами декількома питаннями, які можуть бути корисні для підготовки до інтерв’ю на позицію фронтенд розробника. Ці питання підійдуть для різних рівнів досвіду, від початківців до досвідчених розробників. Існує пряма залежніть від рівня та досвіду кандидата до швидкості та точності відповідей на ці питання. Сеніор розробник повинен відповісти на ці питання швидко та точно, в той час як початківець може потребувати додаткового часу для розв’язання цих завдань.

Питання

1. Завдання на роботу з об’єктами та прототипами

Опис завдання:

Створіть функцію конструктор Person, що приймає ім’я та вік. Додайте метод describe до прототипу Person, який повертає рядок з ім’ям та віком особи.

Приклад коду:

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.describe = function () {
  return `${this.name}, ${this.age} years old`;
};

const person = new Person("John", 30);
console.log(person.describe()); // John, 30 years old

2. Завдання на замикання та область видимості

Опис завдання: Напишіть функцію createCounter, яка створює та повертає об’єкт замикання, що дозволяє інкрементувати та отримувати значення лічильника.

Приклад коду:

function createCounter() {
  let counter = 0;
  return {
    increment: function () {
      counter++;
    },
    getCounter: function () {
      return counter;
    },
  };
}

const counter = createCounter();
counter.increment();
counter.increment();
console.log(counter.getCounter()); // 2

3. Асинхронне програмування

Опис завдання:

Використовуючи Promise, напишіть функцію, яка симулює асинхронне завантаження даних та повертає результат через вказаний час.

Приклад коду:

function simulateAsyncDataLoad(data, delay) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(data);
    }, delay);
  });
}

simulateAsyncDataLoad("Дані завантажено", 2000).then(result =>
  console.log(result)
); // Виведе "Дані завантажено" через 2 сек

4. Робота з масивами

Дано масив arr та розмір частини size. Поверніть “чанкований” масив. “Чанкований” масив містить оригінальні елементи з arr, але складається з підмасивів, кожен з яких має довжину size. Довжина останнього підмасиву може бути меншою за size, якщо arr.length не ділиться націло на size.

Можна припустити, що масив є результатом виконання JSON.parse. Іншими словами, він є валідним JSON.

Будь ласка, вирішіть це завдання без використання функції _.chunk з бібліотеки lodash.

Приклад коду:

function chunkArray(arr, size) {
  const chunkedArr = [];
  for (let i = 0; i < arr.length; i += size) {
    chunkedArr.push(arr.slice(i, i + size));
  }
  return chunkedArr;
}

// Приклад використання:
const result = chunkArray([1, 2, 3, 4, 5], 2);
console.log(result); // Вивід: [[1, 2], [3, 4], [5]]

Висновок

Ці питання можуть бути корисні для підготовки до інтерв’ю на позицію фронтенд розробника. Якщо ви знаєте відповіді на ці питання, ви вже на крок попереду. Сподіваюсь дана інформація була корисною для вас. Дякую за увагу!