Алгоритмы и структуры данных
В классическом учебнике тьюринговского лауреата Н.Вирта аккуратно, на тщательно подобранных примерах прорабатываются основные темы алгоритмики - сортировка и поиск, рекурсия, динамические структуры данных.
Большая часть материала книги составляет необходимый минимум знаний по алгоритмике не только для программистов-профессионалов, но и любых других специалистов, активно использующих программирование в работе.
Книга может быть использована как учебное пособие при обучении будущих программистов, начиная со старшеклассников в профильном обучении, а также подходит для систематического самообразования.
👉 @frontendInterview
В классическом учебнике тьюринговского лауреата Н.Вирта аккуратно, на тщательно подобранных примерах прорабатываются основные темы алгоритмики - сортировка и поиск, рекурсия, динамические структуры данных.
Большая часть материала книги составляет необходимый минимум знаний по алгоритмике не только для программистов-профессионалов, но и любых других специалистов, активно использующих программирование в работе.
Книга может быть использована как учебное пособие при обучении будущих программистов, начиная со старшеклассников в профильном обучении, а также подходит для систематического самообразования.
👉 @frontendInterview
Битва символов
У каждого символа есть свой вес, рассчитывающийся исходя из положения в алфавите:
Примеры:
👉 @frontendInterview
У каждого символа есть свой вес, рассчитывающийся исходя из положения в алфавите:
A = 1, B = 2, ... Y = 25, Z = 26
Сравните два набора символов и определите победителя, исходя из веса.Примеры:
battle("ONE", "TWO"); // => "TWO"`
battle("ONE", "NEO"); // => "Tie!"👉 @frontendInterview
JavaScript. Карманный справочник
В книге представлены самые важные сведения о синтаксисе языка и показаны примеры его практического применения. Несмотря на малый объем карманного издания, в нем содержится все, что необходимо знать для разработки профессиональных веб-приложений.
👉 @frontendInterview
В книге представлены самые важные сведения о синтаксисе языка и показаны примеры его практического применения. Несмотря на малый объем карманного издания, в нем содержится все, что необходимо знать для разработки профессиональных веб-приложений.
👉 @frontendInterview
Объясните same-origin policy в контексте JavaScript
Same-origin policy (принцип одинакового источника) не позволяет JavaScript выполнять запросы за границы домена. Источник определяется как комбинация схемы URI, имени хоста и номера порта. Этот принцип не позволяет вредоносному сценарию на одной странице получить доступ к конфиденциальным данным на другой через объектную модель документа этой страницы.
👉 @frontendInterview
Same-origin policy (принцип одинакового источника) не позволяет JavaScript выполнять запросы за границы домена. Источник определяется как комбинация схемы URI, имени хоста и номера порта. Этот принцип не позволяет вредоносному сценарию на одной странице получить доступ к конфиденциальным данным на другой через объектную модель документа этой страницы.
👉 @frontendInterview
Почему тернарный оператор так называется?
“Тернарный” означает три. Троичное выражение принимает три операнда: условие, выражение “then” и выражение “else”. Тернарные операторы не являются исключительными для JavaScript.
👉 @frontendInterview
“Тернарный” означает три. Троичное выражение принимает три операнда: условие, выражение “then” и выражение “else”. Тернарные операторы не являются исключительными для JavaScript.
👉 @frontendInterview
Разделите строки
Напишите функцию, которая принимает строку и разбивает её на массив, состоящий из строк, содержащих по два символа. Если последнему символу не хватает пары, то к нему необходимо добавить знак "_".
Примеры
👉 @frontendInterview
Напишите функцию, которая принимает строку и разбивает её на массив, состоящий из строк, содержащих по два символа. Если последнему символу не хватает пары, то к нему необходимо добавить знак "_".
Примеры
solution('abc') // should return ['ab', 'c_']
solution('abcdef') // should return ['ab', 'cd', 'ef']👉 @frontendInterview
Что делает строчка “use strict”;? Какие достоинства и недостатки от ее использования?
‘use strict’ это директива, используемая для включения строгого режима во всем скрипте или отдельных функциях.
Преимущества:
1. Не позволяет случайно создавать глобальные переменные.
2. Любое присваивание, которое в обычном режиме завершается неудачей, в строгом режиме выдаст исключение.
3. При попытке удалить неудаляемые свойства, выдаст исключение (в то время как в нестрогом режиме никакого действия бы не произошло).
4. Требует, чтобы имена параметров функции были уникальными.
5. this в глобальной области видимости равно undefined.
6. Перехватывает распространенные ошибки, выдавая исключения.
7. Исключает неочевидные особенности языка.
Недостатки:
1. Нельзя использовать некоторые особенности языка, к которым привыкли некоторые разработчики.
2. Нет доступа к function.caller и function.arguments.
3. Объединение скриптов, написанных в строгом режиме может вызвать проблемы.
‘use strict’ это директива, используемая для включения строгого режима во всем скрипте или отдельных функциях.
Преимущества:
1. Не позволяет случайно создавать глобальные переменные.
2. Любое присваивание, которое в обычном режиме завершается неудачей, в строгом режиме выдаст исключение.
3. При попытке удалить неудаляемые свойства, выдаст исключение (в то время как в нестрогом режиме никакого действия бы не произошло).
4. Требует, чтобы имена параметров функции были уникальными.
5. this в глобальной области видимости равно undefined.
6. Перехватывает распространенные ошибки, выдавая исключения.
7. Исключает неочевидные особенности языка.
Недостатки:
1. Нельзя использовать некоторые особенности языка, к которым привыкли некоторые разработчики.
2. Нет доступа к function.caller и function.arguments.
3. Объединение скриптов, написанных в строгом режиме может вызвать проблемы.
Почему считается хорошим тоном оставить глобальную область видимости (global scope) в нетронутом состоянии?
Каждый скрипт имеет доступ к глобальной области видимости, и если каждый будет использовать глобальное пространство имен для определения своих переменных, то могут возникнуть конфликты. Используйте модульный паттерн (используя IIFE) для инкапсуляции ваших переменных в локальное пространство имен.
👉 @frontendInterview
Каждый скрипт имеет доступ к глобальной области видимости, и если каждый будет использовать глобальное пространство имен для определения своих переменных, то могут возникнуть конфликты. Используйте модульный паттерн (используя IIFE) для инкапсуляции ваших переменных в локальное пространство имен.
👉 @frontendInterview
Какие преимущества и недостатки при использовании промисов вместо колбэков (callbacks)?
Преимущества
1. Помогает избежать “callback hell”, который может быть нечитаемым.
2. Упрощает написание последовательного удобочитаемого асинхронного кода с помощью .then().
3. Упрощает написание параллельного асинхронного кода с помощью Promise.all().
4. С использованием промисов можно избежать следующих проблем, которые возникают при использовании callback-функций:
a) Колбэк-функция была вызвана слишком рано
b) Колбэк-функция была вызвана слишком поздно (или вовсе не была вызвана)
c) Колбэк-функция была вызвана слишком мало или слишком много раз
d) Не удалось передать необходимую среду/параметры
e) Были пропущены ошибки/исключения
Недостатки
1) Чуть более сложный код (спорно).
2) В старых браузерах, где не поддерживается ES2015, вам нужно загрузить полифил, чтобы их использовать.
👉 @frontendInterview
Преимущества
1. Помогает избежать “callback hell”, который может быть нечитаемым.
2. Упрощает написание последовательного удобочитаемого асинхронного кода с помощью .then().
3. Упрощает написание параллельного асинхронного кода с помощью Promise.all().
4. С использованием промисов можно избежать следующих проблем, которые возникают при использовании callback-функций:
a) Колбэк-функция была вызвана слишком рано
b) Колбэк-функция была вызвана слишком поздно (или вовсе не была вызвана)
c) Колбэк-функция была вызвана слишком мало или слишком много раз
d) Не удалось передать необходимую среду/параметры
e) Были пропущены ошибки/исключения
Недостатки
1) Чуть более сложный код (спорно).
2) В старых браузерах, где не поддерживается ES2015, вам нужно загрузить полифил, чтобы их использовать.
👉 @frontendInterview
Пояснение
Ключевое слово yield вызывает остановку функции-генератора и возвращает текущее значение выражения, указанного после ключевого слова yield. Его можно рассматривать как аналог ключевого слова return в функции-генераторе.
Метод next() возвращает объект с двумя свойствами done и value.
В данном примере вызов первого next возвращает значение c первой остановки в генераторе. В консоль выводится значение второго вызова next.
👉 @frontendInterview
Ключевое слово yield вызывает остановку функции-генератора и возвращает текущее значение выражения, указанного после ключевого слова yield. Его можно рассматривать как аналог ключевого слова return в функции-генераторе.
Метод next() возвращает объект с двумя свойствами done и value.
В данном примере вызов первого next возвращает значение c первой остановки в генераторе. В консоль выводится значение второго вызова next.
👉 @frontendInterview