Frontend Interview - собеседования по Javanoscript / Html / Css – Telegram
Frontend Interview - собеседования по Javanoscript / Html / Css
11.4K subscribers
2.1K photos
118 videos
319 files
530 links
Канал для подготовки к собеседованиям по фронтенду

Админ, сотрудничество, реклама: @seniorFrontPromo, @maria_seniorfront

Купить рекламу: https://telega.in/c/frontendinterview

Канал в реестре РКН:
https://rknn.link/su
Download Telegram
Алгоритмы — это основа программирования, определяющая, каким образом программное обеспечение будет использовать структуры данных.

Вы познакомитесь с базовыми аспектами построения алгоритмов, основными понятиями и определениями, структурами данных, затем перейдете к основным методам построения алгоритмов, неразрешимости и методам решения неразрешимых задач, и, наконец, изучите рандомизацию при проектировании алгоритмов.

👉 @frontendInterview
Разница между максимальными длинами

Вам даны два массива строк. Вам нужно найти разницу между длинами самой длинной строки первого массива и самой длинной строки второго массива.

Пример:
a1 = ["hoqq", "bbllkw", "oox", "ejjuyyy", "plmiis", "xxxzgpsssa", "xxwwkktt", "znnnnfqknaz", "qqquuhii", "dvvvwz"]
a2 = ["cccooommaaqqoxii", "gggqaffhhh", "tttoowwwmmww"]
mxdiflg(a1, a2) --> 13
Vue.js в действии

Vue.js – это популярная библиотека для создания пользовательских интерфейсов. В ней значительно переосмыслены реактивные идеи, впервые появившиеся в React.js.

Книга «Vue.js в действии» рассказывает о создании быстрых и эластичных пользовательских интерфейсов для Интернета. Освоив ее, вы напишете полноценное приложение для интернет-магазина, где будут присутствовать списки товаров, админка, а также организован полноценный процесс онлайнового заказа.

👉 @frontendInterview
Объясните особенности проверки равенства значений в JavaScript

В JavaScript есть два оператора для проверки равенства величин. Первый — это так называемый оператор строгого равенства. Второй — оператор нестрогого равенства, при использовании которого может производиться преобразование типов проверяемых величин.

1. Оператор строгого равенства (===) проверяет значения на равенство, не выполняя при этом преобразования типов.
2. Оператор нестрогого равенства (==) проверяет значения на равенство, выполняя их приведение к общему типу.

 var a = "42";
var b = 42;

a == b; // true
a === b; // false

Вот некоторые правила, касающиеся использования различных операторов проверки равенства в JavaScript:

1. Если любое из сравниваемых значений может быть значением true или false — постарайтесь избегать оператора ==. Используйте оператор ===.
2. Используйте оператор === в том случае, если работаете со следующими значениями: 0, «» или [] (пустой массив).
Приведите примеры приведения к логическому типу значений, не относящихся к этому типу

Суть этого вопроса в том, чтобы выяснить, какие значения, в случае преобразования их к логическому типу, превращаются в false, а какие — в true.

Вот список значений, которые можно назвать «ложными» (falsy). Они, при преобразовании к логическому типу, превращаются в значение false:

1. «» (пустая строка).
2. 0, -0, NaN (не-число).
3. null, undefined.

«Ложным» является и логическое значение false.

Любое значение, которое не входит в этот список, при его преобразовании к логическому типу, превращается в true (такие значения называют «истинными» — truthy). Например:

1. «hello».
2. 42.
3. [ ], [ 1, «2», 3 ] (массивы).
4. { }, { a: 42 } (объекты).
5. function foo() { .. } (функции).

«Истинным» является и логическое значение true.

👉 @frontendInterview
This media is not supported in your browser
VIEW IN TELEGRAM
Современный фронтенд на нашем втором канале

17к фронтендеров уже читают его, подпишись и ты

👉 @seniorFront
Убрать первый и последний символ

Задача проста. Вам нужно написать функцию, которая принимает строку и убирает в ней первый и последний символ.

👉 @frontendInterview
Как задать стили к двум последним элементам li?
Anonymous Quiz
13%
li + li + li
55%
li:nth-child(n+2)
32%
li:nth-last-child(n+3)
Что такое IIFE?

IIFE (Immediately Invoked Function Expression) — это немедленно вызываемое функциональное выражение. Такое выражение выполняется немедленно после создания.

 (function IIFE(){
console.log( "Hello!" );
})();
// "Hello!"

Этот паттерн часто используется для того чтобы не допустить загрязнения глобального пространства имён. Дело в том, что переменные, объявленные в IIFE (как и в любой другой обычной функции), невидимы за пределами этой функции.

👉 @frontendInterview
Какое значение примет result?
Anonymous Quiz
43%
false
57%
true
Когда следует использовать стрелочные функции, которые появились в ES6?

Вот простые правила по использованию различных способов объявления функций, которыми я руководствуюсь, разрабатывая код для сред, поддерживающих стандарт ES6 и более новые стандарты:

1. Используйте ключевое слово function в глобальной области видимости и для свойств Object.prototype.
2. Используйте ключевое слово function для конструкторов объектов.
В остальных случаях используйте стрелочные функции.

Как видите, стрелочные функции рекомендуется использовать практически везде. У такого положения дел есть несколько причин:

1. Удобная работа с контекстом. Стрелочные функции используют значение this окружающего контекста, не имея собственного this. Если такие функции применяются последовательно, без использования обычных функций в сложных конструкциях, это обеспечивает безопасную работу с контекстом.
2. Компактность. Код стрелочных функций легче вводить и легче читать. Возможно, это преимущество стрелочных функций перед обычными покажется вам спорным и зависящим от точки зрения каждого конкретного разработчика.
3. Ясность кода. Если практически весь код представлен стрелочными функциями, любая обычная функция выделяется в таком коде тем, что создаёт собственный контекст. Применяя стрелочные функции, программист создаёт более понятный код, в котором легче, чем в коде без стрелочных функций, работать с this.

👉 @frontendInterview
В чём разница между ES6-классами и конструкторами функций?

Сначала рассмотрим примеры.

Функция-конструктор:
 function Person(name) {
this.name = name;
}

ES6-класс:
 class Person {
constructor(name) {
this.name = name;
}
}

Если речь идёт о создании простых объектов, то конструкторы и классы, используемые для этой цели, выглядят очень похоже.

Основная разница между конструкторами и классами проявляется при использовании наследования. Если нам нужно создать класс Student, являющийся подклассом класса Person, и добавить к этому новому классу поле studentId, то вот как будет выглядеть код, в котором используются конструкторы, и код, в котором применяются классы.

Функция-конструктор:
 function Student(name, studentId) {
// Вызываем конструктор суперкласса для инициализации полей, унаследованных от него.
Person.call(this, name);

// Инициализация собственных полей объекта.
this.studentId = studentId;
}

Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;

ES6-класс:
class Student extends Person {
constructor(name, studentId) {
super(name);
this.studentId = studentId;
}
}


👉 @frontendInterview