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
Наибольшее и наименьшее

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

Примеры:
highAndLow("1 2 3 4 5"); // return "5 1"
highAndLow("1 2 -3 4 5"); // return "5 -3"
highAndLow("1 9 3 4 -5"); // return "9 -5"


👉 @frontendInterview
Какой цвет текста в элементе div?
Anonymous Quiz
19%
blue
9%
black
71%
green
Как передавать параметры в обработчик событий или функцию обратного вызова в React?

Для того, чтобы передать параметр в обработчик событий, можно обернуть его в стрелочную функцию:
 onClick={() => this.handleClick(id)} />

Это является эквивалентом вызова bind():
 onClick={this.handleClick.bind(this, id)} />
Пример
const A = 65 // ASCII-код символа

class Alphabet extends React.Component {
constructor(props) {
super(props)
this.handleClick = this.handleClick.bind(this)
this.state = {
justClicked: null,
letters: Array.from({length: 26}, (_, i) => String.fromCharCode(A + i))
}
}
handleClick(letter) {
this.setState({ justClicked: letter })
}
render() {
return (
<div>
Только что была нажата клавиша {this.state.justClicked}
<ul>
{this.state.letters.map(letter =>
<li key={letter} onClick={() => this.handleClick(letter)}>
{letter}
</li>
)}
</ul>
</div>
)
}
}


👉 @frontendInterview
Какое значение примет result?
Anonymous Quiz
9%
0
55%
1
3%
2
33%
-1
Что такое геттеры и сеттеры в TypeScript?

TypeScript поддерживает геттеры и сеттеры, которые позволяют управлять доступом к членам объектов. Они дают разработчику средства контроля над чтением и записью свойств объектов.

class foo {
private _bar:boolean = false;

get bar():boolean {
return this._bar;
}
set bar(theBar:boolean) {
this._bar = theBar;
}
}

var myBar = myFoo.bar; // здесь вызывается геттер
myFoo.bar = true; // здесь вызывается сеттер


👉 @frontendInterview
Заводы - рабочим, либы - фронтендерам!

Хороший фронтендер может закодить что угодно

Senior знает как сделать это быстрее, используя готовые решения

Читай Frontender Libs по 5 мин в день и ты станешь гуру в фронтенд либах
Какое из перечисленных свойств не анимируемо?
Anonymous Quiz
12%
left
55%
display
23%
word-spacing
6%
color
5%
opacity
Как предотвратить слишком ранний вызов функции?

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