Skip to content

Instantly share code, notes, and snippets.

@YozhEzhi
Created July 18, 2018 08:16
Show Gist options
  • Select an option

  • Save YozhEzhi/94f942c6b6a107fd1731613c7828f021 to your computer and use it in GitHub Desktop.

Select an option

Save YozhEzhi/94f942c6b6a107fd1731613c7828f021 to your computer and use it in GitHub Desktop.
Типичные задачки на собеседованиях.
// ВОПРОС.
// Что выведется в консоль? Как добиться правильного вывода в консоль,
// не убирая 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