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

OdessaFrontend
OdessaFrontendOdessaFrontend
Как пройти собеседование по 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
?
1 of 63

Recommended

Игорь Ходырев — Введение в Ruby, gem’ы и другие бриллианты. by
Игорь Ходырев — Введение в Ruby, gem’ы и другие бриллианты.Игорь Ходырев — Введение в Ruby, gem’ы и другие бриллианты.
Игорь Ходырев — Введение в Ruby, gem’ы и другие бриллианты.DataArt
272 views27 slides
урок2 by
урок2урок2
урок2ssuserea1bb3
81 views18 slides
Разработка на стероидах или как я перестал бояться и полюбил свою IDE by
Разработка на стероидах или как я перестал бояться и полюбил свою IDEРазработка на стероидах или как я перестал бояться и полюбил свою IDE
Разработка на стероидах или как я перестал бояться и полюбил свою IDEMagento Dev
656 views12 slides
Петрикин "Разработка программных средств лоя идентификации диктора по голосу" by
Петрикин "Разработка программных средств лоя идентификации диктора по голосу"Петрикин "Разработка программных средств лоя идентификации диктора по голосу"
Петрикин "Разработка программных средств лоя идентификации диктора по голосу"RF-Lab
159 views19 slides
WordPress Cron API by
WordPress Cron APIWordPress Cron API
WordPress Cron APIversusbassz
4.1K views22 slides
тема 2.операторы.линейный алгоритм by
тема 2.операторы.линейный алгоритмтема 2.операторы.линейный алгоритм
тема 2.операторы.линейный алгоритмdasha2012
1.2K views13 slides

More Related Content

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

FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим» by
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»Yandex
1.2K views62 slides
20100927 28 reqformalization-kuliamin by
20100927 28 reqformalization-kuliamin20100927 28 reqformalization-kuliamin
20100927 28 reqformalization-kuliaminComputer Science Club
525 views72 slides
практические советы по улучшению качества кода by
практические советы по улучшению качества кодапрактические советы по улучшению качества кода
практические советы по улучшению качества кодаYuri Afanasiev
1.2K views54 slides
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM by
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMДмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMSergey Platonov
2.8K views100 slides
Распространённые ошибки оценки производительности .NET-приложений by
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийAndrey Akinshin
1K views64 slides
Распространённые ошибки оценки производительности .NET-приложений by
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийMikhail Shcherbakov
518 views64 slides

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

FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим» by Yandex
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
FrontTalks: Алексей Андросов (Яндекс), «Ошибки, которые мы любим»
Yandex1.2K views
практические советы по улучшению качества кода by Yuri Afanasiev
практические советы по улучшению качества кодапрактические советы по улучшению качества кода
практические советы по улучшению качества кода
Yuri Afanasiev1.2K views
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM by Sergey Platonov
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMДмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Sergey Platonov2.8K views
Распространённые ошибки оценки производительности .NET-приложений by Andrey Akinshin
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложений
Andrey Akinshin1K views
Распространённые ошибки оценки производительности .NET-приложений by Mikhail Shcherbakov
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложений
4. Многомерные массивы и массивы массивов в C# by Olga Maksimenkova
4. Многомерные массивы и массивы массивов в C#4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#
Olga Maksimenkova1.6K views
Сложности микробенчмаркинга by Andrey Akinshin
Сложности микробенчмаркингаСложности микробенчмаркинга
Сложности микробенчмаркинга
Andrey Akinshin521 views
QA Fest 2017. Иван Цыганов. Не смешите мой coverage by QAFest
QA Fest 2017. Иван Цыганов. Не смешите мой coverageQA Fest 2017. Иван Цыганов. Не смешите мой coverage
QA Fest 2017. Иван Цыганов. Не смешите мой coverage
QAFest424 views
C++ refelection and cats by corehard_by
C++ refelection and catsC++ refelection and cats
C++ refelection and cats
corehard_by676 views
Стажировка-2014, занятие 2 (часть 1). Абстракции, именование, документирование. by 7bits
Стажировка-2014, занятие 2 (часть 1). Абстракции, именование, документирование.Стажировка-2014, занятие 2 (часть 1). Абстракции, именование, документирование.
Стажировка-2014, занятие 2 (часть 1). Абстракции, именование, документирование.
7bits276 views

More from OdessaFrontend

Викторина | Odessa Frontend Meetup #19 by
Викторина | Odessa Frontend Meetup #19Викторина | Odessa Frontend Meetup #19
Викторина | Odessa Frontend Meetup #19OdessaFrontend
139 views20 slides
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee... by
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...OdessaFrontend
151 views34 slides
Великолепный Gatsby.js | Odessa Frontend Meetup #19 by
Великолепный Gatsby.js | Odessa Frontend Meetup #19Великолепный Gatsby.js | Odessa Frontend Meetup #19
Великолепный Gatsby.js | Odessa Frontend Meetup #19OdessaFrontend
122 views50 slides
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr... by
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...OdessaFrontend
214 views73 slides
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18 by
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18OdessaFrontend
82 views19 slides
Викторина | Odessa Frontend Meetup #17 by
Викторина | Odessa Frontend Meetup #17Викторина | Odessa Frontend Meetup #17
Викторина | Odessa Frontend Meetup #17OdessaFrontend
150 views23 slides

More from OdessaFrontend(20)

Викторина | Odessa Frontend Meetup #19 by OdessaFrontend
Викторина | Odessa Frontend Meetup #19Викторина | Odessa Frontend Meetup #19
Викторина | Odessa Frontend Meetup #19
OdessaFrontend139 views
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee... by OdessaFrontend
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
Использование Recoil в React и React Native приложениях | Odessa Frontend Mee...
OdessaFrontend151 views
Великолепный Gatsby.js | Odessa Frontend Meetup #19 by OdessaFrontend
Великолепный Gatsby.js | Odessa Frontend Meetup #19Великолепный Gatsby.js | Odessa Frontend Meetup #19
Великолепный Gatsby.js | Odessa Frontend Meetup #19
OdessaFrontend122 views
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr... by OdessaFrontend
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
OdessaFrontend214 views
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18 by OdessaFrontend
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
OdessaFrontend82 views
Викторина | Odessa Frontend Meetup #17 by OdessaFrontend
Викторина | Odessa Frontend Meetup #17Викторина | Odessa Frontend Meetup #17
Викторина | Odessa Frontend Meetup #17
OdessaFrontend150 views
Антихрупкий TypeScript | Odessa Frontend Meetup #17 by OdessaFrontend
Антихрупкий TypeScript | Odessa Frontend Meetup #17Антихрупкий TypeScript | Odessa Frontend Meetup #17
Антихрупкий TypeScript | Odessa Frontend Meetup #17
OdessaFrontend107 views
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17 by OdessaFrontend
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
OdessaFrontend84 views
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17 by OdessaFrontend
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17
OdessaFrontend253 views
Объекты в ECMAScript | Odessa Frontend Meetup #16 by OdessaFrontend
Объекты в ECMAScript | Odessa Frontend Meetup #16Объекты в ECMAScript | Odessa Frontend Meetup #16
Объекты в ECMAScript | Odessa Frontend Meetup #16
OdessaFrontend169 views
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16 by OdessaFrontend
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16Фриланс как профессиональная деградация | Odessa Frontend Meetup #16
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16
OdessaFrontend159 views
Cлайдер на CSS | Odessa Frontend Meetup #16 by OdessaFrontend
Cлайдер на CSS | Odessa Frontend Meetup #16Cлайдер на CSS | Odessa Frontend Meetup #16
Cлайдер на CSS | Odessa Frontend Meetup #16
OdessaFrontend148 views
Современный станок верстальщика by OdessaFrontend
Современный станок верстальщикаСовременный станок верстальщика
Современный станок верстальщика
OdessaFrontend188 views
Викторина | Odessa Frontend Meetup #15 by OdessaFrontend
Викторина | Odessa Frontend Meetup #15Викторина | Odessa Frontend Meetup #15
Викторина | Odessa Frontend Meetup #15
OdessaFrontend87 views
DRY’им Vuex | Odessa Frontend Meetup #15 by OdessaFrontend
DRY’им Vuex | Odessa Frontend Meetup #15DRY’им Vuex | Odessa Frontend Meetup #15
DRY’им Vuex | Odessa Frontend Meetup #15
OdessaFrontend64 views
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15 by OdessaFrontend
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15
OdessaFrontend109 views
Пощупать 3д в браузере | Odessa Frontend Meetup #15 by OdessaFrontend
Пощупать 3д в браузере | Odessa Frontend Meetup #15Пощупать 3д в браузере | Odessa Frontend Meetup #15
Пощупать 3д в браузере | Odessa Frontend Meetup #15
OdessaFrontend126 views
Викторина | Odessa Frontend Meetup #14 by OdessaFrontend
Викторина | Odessa Frontend Meetup #14Викторина | Odessa Frontend Meetup #14
Викторина | Odessa Frontend Meetup #14
OdessaFrontend83 views
Викторина | Odessa Frontend Meetup #13 by OdessaFrontend
Викторина | Odessa Frontend Meetup #13Викторина | Odessa Frontend Meetup #13
Викторина | Odessa Frontend Meetup #13
OdessaFrontend147 views
Структуры данных в JavaScript | Odessa Frontend Meetup #13 by OdessaFrontend
Структуры данных в JavaScript | Odessa Frontend Meetup #13Структуры данных в JavaScript | Odessa Frontend Meetup #13
Структуры данных в JavaScript | Odessa Frontend Meetup #13
OdessaFrontend1.6K views

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