Created
July 18, 2018 08:16
-
-
Save YozhEzhi/94f942c6b6a107fd1731613c7828f021 to your computer and use it in GitHub Desktop.
Типичные задачки на собеседованиях.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // ВОПРОС. | |
| // Что выведется в консоль? Как добиться правильного вывода в консоль, | |
| // не убирая setTimeout? | |
| // ОТВЕТ: https://jsbin.com/fuwuyitige/edit?html,js,console | |
| for (var i = 0; i < 10; i++) { | |
| setTimeout(function () { | |
| console.log(i); // ? | |
| }, 0); | |
| } | |
| // ВОПРОС. | |
| // Что выведется в консоль? | |
| // ОТВЕТ: 3, 2 | |
| var a = b = { | |
| value: 1, | |
| }; | |
| var b = { | |
| value: 2, | |
| }; | |
| a.value = 3; | |
| console.log(a.value); // ? | |
| console.log(b.value); // ? | |
| // ВОПРОС. | |
| // Что выведется в консоль? | |
| // ОТВЕТ: 1 (связывание контекста можно выполнить только один раз) | |
| var a = { | |
| v: 1, | |
| }; | |
| var b = { | |
| v: 2, | |
| }; | |
| function logValue() { | |
| console.log(this.v); | |
| } | |
| logValue.bind(a).bind(b)(); // ? | |
| // ВОПРОС. | |
| // Напишите полифил функции bind. | |
| // ОТВЕТ: https://gist.github.com/YozhEzhi/2f8feaa60b40bba672c4de973f524dcc | |
| // ВОПРОС. | |
| // Дан массив целых чисел, найдите наибольшее из них. | |
| const arr = [1, 23, 23, 56, 2]; | |
| // ОТВЕТ: | |
| // Not good for big arrays: | |
| console.log(Math.max(...arr)); | |
| // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max | |
| // However, both spread (...) and apply will either fail | |
| // or return the wrong result if the array has too many elements, | |
| // because they try to pass the array elements as function parameters. | |
| // See Using apply and built-in functions for more details. | |
| // The reduce solution does not have this problem. | |
| // Deals easy with big arrays: | |
| const biggest = arr.reduce((prev, next) => (prev > next ? prev : next)); | |
| console.log(biggest); | |
| // ВОПРОС. | |
| // Даны два массива целых чисел, найдите общие элементы. | |
| // ОТВЕТ: https://jsbin.com/siqujihigi/edit?html,js,console | |
| // ВОПРОС. | |
| // Напишите функцию, принимающую на вход строку и проверяющую, является ли эта строка палиндромом. Приведите несколько вариантов решения. | |
| // ОТВЕТ: https://jsbin.com/tepanitisi/1/edit?html,js,console | |
| // ВОПРОС. | |
| // Напишите функцию, принимающую массив произвольных слов и на выходе | |
| // дающую двумерный массив анаграмм: | |
| // ['стол', 'барокко', 'слот', 'кот', 'кошка', 'ток', 'коробка'] -> | |
| // [ | |
| // ['стол', 'слот'], | |
| // ['кот', 'ток'], | |
| // ['барокко', 'коробка'], | |
| // ] | |
| // ОТВЕТ: https://jsbin.com/rayebokayu/2/edit?html,js,console | |
| // НЕ ВЫПОЛНЕНО. НУЖНО ПОСМОТРЕТЬ И ДРУГИЕ ВАРИАНТЫ + ES6 ВАРИАНТ. | |
| // ВОПРОС. | |
| // Есть два класса: принтер с методом print() и сканер с методом scan(). | |
| // Нужно получить класс МФУ, имеющий оба этих метода. | |
| // ОТВЕТ: https://jsbin.com/hicesemage/1/edit?html,js,console | |
| // НЕ ВЫПОЛНЕНО. | |
| // ВОПРОС. | |
| // Напишите функцию, принимающую на вход время (в любом формате) и | |
| // возвращающую угол между стрелками аналоговых часов. | |
| // НЕ ВЫПОЛНЕНО. | |
| // ВОПРОС. | |
| // Дано поле морского боя с размеченными на нём кораблями. | |
| // Спроектируйте решение для подсчёта количества кораблей на этом поле. | |
| // НЕ ВЫПОЛНЕНО. | |
| // ВОПРОС. | |
| // Напишите функцию для сложения чисел, поддерживающую неограниченное | |
| // количество вызовов: | |
| // sum(2)(3)(); // -> 5 | |
| // sum(1)(2)(3)(4)(); // -> 10 | |
| // НЕ ВЫПОЛНЕНО. | |
| // ВОПРОС. | |
| // Напишите функцию, которая принимает массив с неограниченной | |
| // вложенностью и делает из него плоский массив: | |
| // [1, [2, [3, 4], 5], 6, [7]] -> [1, 2, 3, 4, 5, 6, 7] | |
| // НЕ ВЫПОЛНЕНО. | |
| // ВОПРОС. | |
| // Дан односвязный список. Напишите функцию, которая вернёт значение n-ого | |
| // с конца списка элемента. | |
| { | |
| value: 0, | |
| next: { | |
| value: 5, | |
| next: { | |
| value: 2, | |
| next: null, | |
| }, | |
| }, | |
| }; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment