Практичні завдання на співбесіду: CORE JS part 2
Практичні завдання на співбесіду: CORE JS part 2

Практичні завдання на співбесіду: CORE JS part 2

Front-end 21.06.2022

1. Що виведеться в консоль?

let a, b, c = [1, 2, 3, 4, 5]
console.log(a, c);
  • Відповідь
    undefined, [1, 2, 3, 4, 5]

2. Чому дорівнює foo.x?

var foo = {n: 1};
var bar = foo;
foo.x = foo = {n: 2};
  • Відповідь
    undefined

3. Що повернуть дані порівняння?

NaN === NaN;
Number.NaN === NaN;
isNaN(NaN);
isNaN(Number.NaN);
  • Відповідь
    1. false
    2. false
    3. true
    4. true

    Оператори порівняння (== і ===) не можуть бути використані для перевірки значення з NaN, натомість слід використовувати функції Number.isNaN() або isNaN().

3. Що поверне функція?

(function f(){
  function f(){ return 1; }
  return f();
  function f(){ return 2; }
})();
  • Відповідь
    2

4. Напишіть свою реалізацію методу масиву map

  • Відповідь
    Array.prototype.mapCustom = function(callback, context) {
        const newArr = [];
        const _this = context || this;
    
        for (let i = 0; i < _this.length; i++) {
            newArr.push(callback.call(this, _this[i]));
        }
    
        return newArr;
    }
    
    let arr1 = [1, 2, 3];
    console.log(arr1.mapCustom((el) => el*3));
    console.log(arr1.map((el) => el*2));

5. Напишіть функцію, яка перевіряє чи слово являється паліндромом

Паліндром — слово або словосполучення, що однаково читається в обох напрямках (зліва направо та справа наліво). Наприклад: дід, зараз, ротатор і т.д.

  • Відповідь
    const isPalindrom = (str) => {
        str = str.replace(/\s/g, '').toLowerCase();
        return str === str.split('').reverse().join('');
    }
    
    console.log(isPalindrom('abcd'));
    console.log(isPalindrom('dad'))
    console.log(isPalindrom('Never odd or even'));

6. Напишіть функцію, яка перевіряє чи слова являються анаграмою

Анаграма — переставлення літер у слові, завдяки чому утворюється нове значення, прочитуване у зворотному напрямку (тік — кіт, мука — кума, літо — тіло).

  • Відповідь
    const isAnagram = (str1, str2) => {
        if (!str1 || !str2 || str1.length !== str2.length) {
            return false;
        }
    
        const arr1 = str1.toLowerCase().split();
        const arr2 = str2.toLowerCase().split();
    
        return arr1.some(el => !arr2.includes(el));
    }
    
    console.log(isAnagram('abcd', 'sdfdsf'));
    console.log(isAnagram('lito', 'tilo'));

7. Напишіть функцію, яка знайде всіх користувачів онлайн у штаті Michigan

const users = [
    {id: 'id1a', name: 'Livvi Doe', location: 'Michigan'},
    {id: 'id2b', name: 'Jane Doe', location: 'Alabama'},
    {id: 'id3c', name: 'Sean Doe', location: 'Michigan'},
    {id: 'id4d', name: 'Kate Doe', location: 'California'},
];
const online = [
    {id: 'id1a', isOnline: true},
    {id: 'id3c', isOnline: true},
    {id: 'id5e', isOnline: false},
    {id: 'id4d', isOnline: true}
];
  • Відповідь
    function getUsers(users, online, location) {
        const onlineOnly = [];
        online.forEach((user) => user.isOnline && onlineOnly.push(user.id));
    
        return users.filter((user) => {
            return user.location === location && onlineOnly.includes(user.id);
        });
    }
    
    console.log(getUsers(users, online, 'Michigan'));

8. Напишіть функцію, що створить шахову дошку в консолі

В результаті ми маємо отримати решітку 8х8, в якій символи # будуть чергуватися з пробілами так, щоб утворити шахову дошку:

#_#_#_#_
_#_#_#_#
#_#_#_#_
_#_#_#_#

  • Відповідь
    const slash = '#';
    const space = ' ';
    
    function createBoard(x, y) {
        let result = '';
        let row = true;
    
        for (var i = 0; i < y; i++) {
          for (var j = 0; j < x; j++) {
            result += (j+row) % 2 == 0 ? space : slash;
          }
    
          console.log(result);
          result='';
          row = !row;
        }
    }
    
    createBoard(8,8);

9. Напишіть функцію, яка виведе n-ний член ряду Фібоначчі

  • Відповідь
    function fibonacci(n) {
      if (n === 0 || n === 1)
        return n;
      else
        return fibonacci(n - 1) + fibonacci(n - 2);
    }

    Для покращення функції можна використовуючи мемоізацію, про що детальніше описано в статті Реалізація мемоізації в JavaScript.

Пишіть ваші варіанти відповідей в коментарях, а також підтримайте ЗСУ, щоб наблизити нашу перемогу. Якщо ви ще не ознайомились зі статтею Практичні завдання на співбесіду: CORE JS (part 1), то поспішіть, там ще багато цікавих задач.

Поширити
guest
0 коментарів
Міжтекстові Відгуки
Переглянути всі коментарі