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

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

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

Канал в реестре РКН:
https://rknn.link/su
Download Telegram
Как предотвратить слишком ранний вызов функции?

Throttle
Данная техника предотвращает вызов функции более одного раза за определенный промежуток времени. В примере ниже обработчик события нажатия кнопки срабатывает не чаще одного раза в секунду.

 import { throttle } from 'lodash'

class LoadMoreButton extends React.Component {
constructor(props) {
super(props)
this.handleClick = this.handleClick.bind(this)
this.handleClickThrottled = throttle(this.handleClick, 1000)
}

componentWillUnmount() {
this.handleClickThrottled.cancel()
}

render() {
return <button onClick={this.handleClickThrottled}>Загрузить еще</button>
}

handleClick() {
this.props.loadMore()
}
}

Debounce
Данная техника позволяет обеспечить вызов функции только по истечении определенного времени с момента ее последнего вызова. Это может быть полезным, когда необходимо выполнять "дорогие" вычисления в ответ на событие, которое возникает очень часто (например, событие прокрутки или нажатия клавиши).

В примере ниже ввод текста задерживается на 250 мс:
import { debounce } from 'lodash'

class Searchbox extends React.Component {
constructor(props) {
super(props)
this.handleChange = this.handleChange.bind(this)
this.emitChangeDebounced = debounce(this.emitChange, 250)
}

componentWillUnmount() {
this.emitChangeDebounced.cancel()
}

render() {
return (
<input
type="text"
onChange={this.handleChange}
placeholder="Поиск..."
defaultValue={this.props.value}
/>
)
}

handleChange(e) {
this.emitChangeDebounced(e.target.value)
}

emitChange(value) {
this.props.onChange(value)
}
}


👉 @frontendInterview
Какое значение примет result?
Anonymous Quiz
10%
function
53%
262
37%
2009
HTML5. Недостающее руководство

Доступно и в занимательной форме рассказано, как HTML превратился в HTML5.
Рассмотрены семантические элементы и новые стандарты языка.
Описано, как создавать современные веб-страницы, в том числе улучшенные веб-формы, поддерживать аудио и видео, рисовать на холсте, совершенствовать оформление веб-страниц с помощью CSS3. Даны практические рекомендации по созданию интеллектуальных веб-приложений, хранению данных, разработке автономных приложений. Показано, как реализовать взаимодействие с веб-сервером, геолокацию, фоновые вычисления , управление историей просмотров и браузерную совместимость с элементами HTML5.

👉 @frontendInterview
Среднее значение

Напишите функцию, которая вернет среднее значение чисел из данного массива, округлённое вниз. При этом, вам запрещено использовать любые циклы.

Пример:
[90,98,89,100,100,86,94] => 94

👉 @frontendInterview
Интерфейс. Основы проектирования взаимодействия

Алан Купер начал работу над первым изданием этой книги 20 лет назад. Он убеждал программистов в том, что пришла пора шагнуть навстречу пользователям и начать писать программы, которые будут им нравиться. В наши дни сложилась совершенно иная ситуация — оцифровка всех видов информации заставила пользователей с головой окунуться в новые технологии. Четвертое издание книги учитывает все изменения в отрасли, произошедшие за последние семь лет, с сохранением всех идей из предыдущих изданий, не потерявших актуальности.
Проектирование взаимодействия — это ориентированный на человека подход проектирования интерактивных цифровых продуктов, сред, систем и сервисов. Много внимания уделено проектированию поведения — аспекту, которым традиционные дисциплины проектирования нередко пренебрегают.

👉 @frontendInterview
Есть ли в предоставленном вам TypeScript-коде ошибки? Объясните свой ответ.

Ошибок в этом коде нет. Объявление класса создаёт две сущности: это тип данных, используемый для создания экземпляров класса, и функция-конструктор. Так как классы создают типы данных, использовать их можно там же, где можно использовать интерфейсы.

👉 @frontendInterview
Что такое синтетические события (synthetic events) в React?

В React обработчики событий оборачиваются в объект SyntheticEvent. Данные объекты являются общими, т.е. объекты, получаемые обработчиками, повторно используются другими обработчиками для повышения производительности. Это также означает, что получить доступ к свойствам такого объекта не получится, поскольку они сбрасываются перед повторным использованием.

В следующем примере в консоль будет выведено null, поскольку свойства события были сброшены в SyntheticEvent:
 function handleClick(event) {
setTimeout(function () {
console.log(event.target.name)
}, 1000)
}
Эту проблему можно решить посредством сохранения свойства события:
function handleClick(event) {
const name = event.target.name
setTimeout(function () {
console.log(name)
}, 1000)
}


👉 @frontendInterview
Убрать минимум

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

Примеры:
removeSmallest([1,2,3,4,5]) = [2,3,4,5]
removeSmallest([5,3,2,1,4]) = [5,3,2,4]
removeSmallest([2,2,1,2,1]) = [2,2,2,1]


👉 @frontendInterview
Чему равен левый верхний border-radius элемента section?
Anonymous Quiz
23%
48px
39%
72px
23%
60px
8%
64px
6%
90px
Расскажите об использовании декораторов свойств в TypeScript.

Декораторы можно использовать для изменения поведения классов, при этом ещё больше пользы от них можно получить при их использовании с каким-либо фреймворком. Например, если в вашем фреймворке есть методы, доступ к которым ограничен (скажем, они предназначены только для администратора), несложно будет написать декоратор метода @admin, который будет запрещать доступ к соответствующим методам пользователям, не являющимся администраторами. Можно создать декоратор @owner, который позволяет модифицировать объект только его владельцу. Вот как может выглядеть использование декораторов:

class CRUD {
get() { }
post() { }

@admin
delete() { }

@owner
put() { }
}


👉 @frontendInterview
Какое значение примет result?
Anonymous Quiz
8%
null
48%
2009
44%
undefined
👍1
Что такое объединение событий (event polling) в React?

SyntheticEvent объединяются. Это означает, что объект события будет повторно использован, а все его свойства будут сброшены после вызова коллбека обработчика. Это связано с повышением производительности. Поэтому асинхронный доступ к событию невозможен.

Пример
 function onClick(event) {
console.log(event) // => null
console.log(event.type) // => "click"
const eventType = event.type // => "click"

setTimeout(function() {
console.log(event.type) // => null
console.log(eventType) // => "click"
}, 0)

// не работает: `this.state.clickEvent` содержит нулевое значение
this.setState({ clickEvent: event })

// однако, мы по-прежнему можем экспортировать свойства события
this.setState({ eventType: event.type })
}
Если нам требуется асинхронный доступ к свойствам события, мы можем вызвать event.persist() на событии, что удалит синтетическую событие из "пула" и позволит ссылкам на событие сохраняться в пользовательском коде.
Какого цвета border у элемента div?
Anonymous Quiz
29%
blue
6%
black
42%
green
22%
red