SlideShare une entreprise Scribd logo
1  sur  63
Télécharger pour lire hors ligne
Как пройти собеседование по js?
И зачем?
Юра Федоренко
Кто здесь?
А какие варианты?
А какие варианты?
● Тестовое задание
● Рекомендация
● Собеседование
Кого ищем?
Что ищем?
Корпоративная культура
Корпоративная культура
Корпоративная культура
Никто не обязан вас учить
Что делать на собеседовании?
Что делать на собеседовании?
● Не врать
Что делать на собеседовании?
● Не врать
● Не воровать
Что делать на собеседовании?
● Не врать
● Не воровать
● Не быть мудаком
Что делать тем, кто собеседует?
Что делать тем, кто собеседует?
● Не врать
● Не воровать
● Не быть мудаком
Быть нормальным
Задачи
Типы данных
var arr = [1,2];
var brr = arr;
brr = [42, 43];
arr[0]; ???
var arr = [1,2];
var brr = arr;
brr[0] = 42;
arr; ???
Что вернет функция?
(function(){
return [2,2,2,2].map(parseInt);
})()
Что вернет метод?
[2,2,2,2].map(parseInt);
Конечно же...
[2,2,2,2].map(parseInt);
Конечно же...
[2,2,2,2].map(parseInt);
[2,NaN,NaN,2]
O_o ??!!1
[2,2,2,2].map(parseInt);
[2,NaN,NaN,2]
А почему так?
[2,2,2,2].map(() => {
parseInt()
});
А почему так?
[2,2,2,2].map((item, index)=> {
parseInt(item, index);
});
this
call, apply это понятно
А bind сможешь?
function fn(a, b) {
console.log(a, b, this)
}
var magicFn = bind(fn, {});
magicFn(2, 3);
Нужно думать как bind!
function bind(cb, context) {
}
function bind(cb, context) {
return function() {
}
}
function bind(cb, context) {
return function() {
cb.apply(context)
}
}
function bind(cb, context) {
return function() {
cb.apply(context, arguments)
}
}
function bind(cb, context) {
return function() {
return cb.apply(context, arguments)
}
}
function fn(a, b) {
console.log(a, b, this)
}
var magicFn = bind(fn, {});
magicFn(2, 3);
Классика
for (var i = 0; i < 10; i++) {
setTimeout(function(){
console.log(i);
}, i*1000);
}
Легкое решение
for (let i = 0; i < 10; i++) {
setTimeout(function(){
console.log(i);
}, i*1000);
}
Просто решение
for (var i = 0; i < 10; i++) {
setTimeout((function(i) {
return function (){
console.log(i);
}
})(i), i*1000);
}
Еще одно, просто решение
for (var i = 0; i < 10; i++) {
(function(i) {
setTimeout(function (){
console.log(i);
}, i*1000);
})(i)
}
Умное решение
for (var i = 0; i < 10; i++) {
setTimeout((function (i){
console.log(i);
}).bind(null, i), i*1000);
}
А как же new?
Что произойдет?
function() {
this.name = 'yura';
}
У меня для вас три
истории...
Метод
var o = {
fn: function() {
this.name = 'yura';
}
}
o.fn();
Просто функция
function fn() {
this.name = 'yura';
}
fn();
Конструктор
function fn() {
this.name = 'yura';
}
new fn();
Конструктор
function fn() {
this.name = 'yura';
}
new fn;
У меня для вас три
истории...
Что происходит когда вызываем с new
● Создается новый объект, он становится
this’ом
● Неявно возвращается
● Устанавливается прототип
Что происходит когда вызываем с new
● Создается новый объект, он становится
this’ом
● Неявно возвращается
● Устанавливается прототип O_o
__proto__ vs prototype
Не одно и тоже!
Прототипное наследование
Конструктор
function fn() {
this.name = 'yura';
}
new fn;
var obj = {
a: 5,
b: {
c: 10
}
};
obj.__proto__ = {
a: 10,
b: {
c: 20
}
};
var obj = {
a: 5,
b: {
c: 10
}
};
obj.__proto__ = {
a: 10,
b: {
c: 20
}
};
delete obj.a;
console.log(obj.a);
delete obj.a;
console.log(obj.a);
delete obj.b;
console.log(obj.b.c);
delete obj.b.c;
console.log(obj.b.c);
var obj = {
a: 5,
b: {
c: 10
}
};
obj.__proto__ = {
a: 10,
b: {
c: 20
}
};
delete obj.b;
console.log(obj.b.c);
var b = obj.b;
delete b.c;
console.log(obj.b.c);
t.me/callforward
t.me/djamah
?

Contenu connexe

Similaire à Как пройти собеседование по js? И зачем? | Odessa Frontend Meetup #4

FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»Yandex
 
20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliaminComputer Science Club
 
практические советы по улучшению качества кода
практические советы по улучшению качества кодапрактические советы по улучшению качества кода
практические советы по улучшению качества кодаYuri Afanasiev
 
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMДмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMSergey Platonov
 
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийAndrey Akinshin
 
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийMikhail Shcherbakov
 
4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#Olga Maksimenkova
 
Сложности микробенчмаркинга
Сложности микробенчмаркингаСложности микробенчмаркинга
Сложности микробенчмаркингаAndrey Akinshin
 
QA Fest 2017. Иван Цыганов. Не смешите мой coverage
QA Fest 2017. Иван Цыганов. Не смешите мой coverageQA Fest 2017. Иван Цыганов. Не смешите мой coverage
QA Fest 2017. Иван Цыганов. Не смешите мой coverageQAFest
 
C++ refelection and cats
C++ refelection and catsC++ refelection and cats
C++ refelection and catscorehard_by
 
Стажировка-2014, занятие 2 (часть 1). Абстракции, именование, документирование.
Стажировка-2014, занятие 2 (часть 1). Абстракции, именование, документирование.Стажировка-2014, занятие 2 (часть 1). Абстракции, именование, документирование.
Стажировка-2014, занятие 2 (часть 1). Абстракции, именование, документирование.7bits
 

Similaire à Как пройти собеседование по js? И зачем? | Odessa Frontend Meetup #4 (11)

FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
 
20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliamin
 
практические советы по улучшению качества кода
практические советы по улучшению качества кодапрактические советы по улучшению качества кода
практические советы по улучшению качества кода
 
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMДмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
 
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложений
 
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложений
 
4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#
 
Сложности микробенчмаркинга
Сложности микробенчмаркингаСложности микробенчмаркинга
Сложности микробенчмаркинга
 
QA Fest 2017. Иван Цыганов. Не смешите мой coverage
QA Fest 2017. Иван Цыганов. Не смешите мой coverageQA Fest 2017. Иван Цыганов. Не смешите мой coverage
QA Fest 2017. Иван Цыганов. Не смешите мой coverage
 
C++ refelection and cats
C++ refelection and catsC++ refelection and cats
C++ refelection and cats
 
Стажировка-2014, занятие 2 (часть 1). Абстракции, именование, документирование.
Стажировка-2014, занятие 2 (часть 1). Абстракции, именование, документирование.Стажировка-2014, занятие 2 (часть 1). Абстракции, именование, документирование.
Стажировка-2014, занятие 2 (часть 1). Абстракции, именование, документирование.
 

Plus de OdessaFrontend

Викторина | Odessa Frontend Meetup #19
Викторина | Odessa Frontend Meetup #19Викторина | Odessa Frontend Meetup #19
Викторина | Odessa Frontend Meetup #19OdessaFrontend
 
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...OdessaFrontend
 
Великолепный Gatsby.js | Odessa Frontend Meetup #19
Великолепный Gatsby.js | Odessa Frontend Meetup #19Великолепный Gatsby.js | Odessa Frontend Meetup #19
Великолепный Gatsby.js | Odessa Frontend Meetup #19OdessaFrontend
 
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...OdessaFrontend
 
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18OdessaFrontend
 
Викторина | Odessa Frontend Meetup #17
Викторина | Odessa Frontend Meetup #17Викторина | Odessa Frontend Meetup #17
Викторина | Odessa Frontend Meetup #17OdessaFrontend
 
Антихрупкий TypeScript | Odessa Frontend Meetup #17
Антихрупкий TypeScript | Odessa Frontend Meetup #17Антихрупкий TypeScript | Odessa Frontend Meetup #17
Антихрупкий TypeScript | Odessa Frontend Meetup #17OdessaFrontend
 
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17OdessaFrontend
 
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17OdessaFrontend
 
Объекты в ECMAScript | Odessa Frontend Meetup #16
Объекты в ECMAScript | Odessa Frontend Meetup #16Объекты в ECMAScript | Odessa Frontend Meetup #16
Объекты в ECMAScript | Odessa Frontend Meetup #16OdessaFrontend
 
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16Фриланс как профессиональная деградация | Odessa Frontend Meetup #16
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16OdessaFrontend
 
Cлайдер на CSS | Odessa Frontend Meetup #16
Cлайдер на CSS | Odessa Frontend Meetup #16Cлайдер на CSS | Odessa Frontend Meetup #16
Cлайдер на CSS | Odessa Frontend Meetup #16OdessaFrontend
 
Современный станок верстальщика
Современный станок верстальщикаСовременный станок верстальщика
Современный станок верстальщикаOdessaFrontend
 
Викторина | Odessa Frontend Meetup #15
Викторина | Odessa Frontend Meetup #15Викторина | Odessa Frontend Meetup #15
Викторина | Odessa Frontend Meetup #15OdessaFrontend
 
DRY’им Vuex | Odessa Frontend Meetup #15
DRY’им Vuex | Odessa Frontend Meetup #15DRY’им Vuex | Odessa Frontend Meetup #15
DRY’им Vuex | Odessa Frontend Meetup #15OdessaFrontend
 
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15OdessaFrontend
 
Пощупать 3д в браузере | Odessa Frontend Meetup #15
Пощупать 3д в браузере | Odessa Frontend Meetup #15Пощупать 3д в браузере | Odessa Frontend Meetup #15
Пощупать 3д в браузере | Odessa Frontend Meetup #15OdessaFrontend
 
Викторина | Odessa Frontend Meetup #14
Викторина | Odessa Frontend Meetup #14Викторина | Odessa Frontend Meetup #14
Викторина | Odessa Frontend Meetup #14OdessaFrontend
 
Викторина | Odessa Frontend Meetup #13
Викторина | Odessa Frontend Meetup #13Викторина | Odessa Frontend Meetup #13
Викторина | Odessa Frontend Meetup #13OdessaFrontend
 
Структуры данных в JavaScript | Odessa Frontend Meetup #13
Структуры данных в JavaScript | Odessa Frontend Meetup #13Структуры данных в JavaScript | Odessa Frontend Meetup #13
Структуры данных в JavaScript | Odessa Frontend Meetup #13OdessaFrontend
 

Plus de OdessaFrontend (20)

Викторина | Odessa Frontend Meetup #19
Викторина | Odessa Frontend Meetup #19Викторина | Odessa Frontend Meetup #19
Викторина | Odessa Frontend Meetup #19
 
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
 
Великолепный Gatsby.js | Odessa Frontend Meetup #19
Великолепный Gatsby.js | Odessa Frontend Meetup #19Великолепный Gatsby.js | Odessa Frontend Meetup #19
Великолепный Gatsby.js | Odessa Frontend Meetup #19
 
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
 
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
 
Викторина | Odessa Frontend Meetup #17
Викторина | Odessa Frontend Meetup #17Викторина | Odessa Frontend Meetup #17
Викторина | Odessa Frontend Meetup #17
 
Антихрупкий TypeScript | Odessa Frontend Meetup #17
Антихрупкий TypeScript | Odessa Frontend Meetup #17Антихрупкий TypeScript | Odessa Frontend Meetup #17
Антихрупкий TypeScript | Odessa Frontend Meetup #17
 
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
 
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17
 
Объекты в ECMAScript | Odessa Frontend Meetup #16
Объекты в ECMAScript | Odessa Frontend Meetup #16Объекты в ECMAScript | Odessa Frontend Meetup #16
Объекты в ECMAScript | Odessa Frontend Meetup #16
 
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16Фриланс как профессиональная деградация | Odessa Frontend Meetup #16
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16
 
Cлайдер на CSS | Odessa Frontend Meetup #16
Cлайдер на CSS | Odessa Frontend Meetup #16Cлайдер на CSS | Odessa Frontend Meetup #16
Cлайдер на CSS | Odessa Frontend Meetup #16
 
Современный станок верстальщика
Современный станок верстальщикаСовременный станок верстальщика
Современный станок верстальщика
 
Викторина | Odessa Frontend Meetup #15
Викторина | Odessa Frontend Meetup #15Викторина | Odessa Frontend Meetup #15
Викторина | Odessa Frontend Meetup #15
 
DRY’им Vuex | Odessa Frontend Meetup #15
DRY’им Vuex | Odessa Frontend Meetup #15DRY’им Vuex | Odessa Frontend Meetup #15
DRY’им Vuex | Odessa Frontend Meetup #15
 
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15
 
Пощупать 3д в браузере | Odessa Frontend Meetup #15
Пощупать 3д в браузере | Odessa Frontend Meetup #15Пощупать 3д в браузере | Odessa Frontend Meetup #15
Пощупать 3д в браузере | Odessa Frontend Meetup #15
 
Викторина | Odessa Frontend Meetup #14
Викторина | Odessa Frontend Meetup #14Викторина | Odessa Frontend Meetup #14
Викторина | Odessa Frontend Meetup #14
 
Викторина | Odessa Frontend Meetup #13
Викторина | Odessa Frontend Meetup #13Викторина | Odessa Frontend Meetup #13
Викторина | Odessa Frontend Meetup #13
 
Структуры данных в JavaScript | Odessa Frontend Meetup #13
Структуры данных в JavaScript | Odessa Frontend Meetup #13Структуры данных в JavaScript | Odessa Frontend Meetup #13
Структуры данных в JavaScript | Odessa Frontend Meetup #13
 

Как пройти собеседование по js? И зачем? | Odessa Frontend Meetup #4