Successfully reported this slideshow.

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

0

Share

1 of 63
1 of 63

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

0

Share

Download to read offline

Жизнь так устроена, что иногда нам приходится искать работу. Или сотрудника. И в такой ситуации очень сложно обойтись без собеседования. Юрий Федоренко делится собственным опытом прохождения и проведения собеседований, порефлексирует на тему того, как можно обойтись без него. Ну и позадаёт вам в меру каверзные задачки и вопросы из его коллекции.

Жизнь так устроена, что иногда нам приходится искать работу. Или сотрудника. И в такой ситуации очень сложно обойтись без собеседования. Юрий Федоренко делится собственным опытом прохождения и проведения собеседований, порефлексирует на тему того, как можно обойтись без него. Ну и позадаёт вам в меру каверзные задачки и вопросы из его коллекции.

More Related Content

More from OdessaFrontend

Related Books

Free with a 30 day trial from Scribd

See all

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

  1. 1. Как пройти собеседование по js? И зачем? Юра Федоренко
  2. 2. Кто здесь?
  3. 3. А какие варианты?
  4. 4. А какие варианты? ● Тестовое задание ● Рекомендация ● Собеседование
  5. 5. Кого ищем?
  6. 6. Что ищем?
  7. 7. Корпоративная культура
  8. 8. Корпоративная культура
  9. 9. Корпоративная культура
  10. 10. Никто не обязан вас учить
  11. 11. Что делать на собеседовании?
  12. 12. Что делать на собеседовании? ● Не врать
  13. 13. Что делать на собеседовании? ● Не врать ● Не воровать
  14. 14. Что делать на собеседовании? ● Не врать ● Не воровать ● Не быть мудаком
  15. 15. Что делать тем, кто собеседует?
  16. 16. Что делать тем, кто собеседует? ● Не врать ● Не воровать ● Не быть мудаком
  17. 17. Быть нормальным
  18. 18. Задачи
  19. 19. Типы данных
  20. 20. var arr = [1,2]; var brr = arr; brr = [42, 43]; arr[0]; ???
  21. 21. var arr = [1,2]; var brr = arr; brr[0] = 42; arr; ???
  22. 22. Что вернет функция? (function(){ return [2,2,2,2].map(parseInt); })()
  23. 23. Что вернет метод? [2,2,2,2].map(parseInt);
  24. 24. Конечно же... [2,2,2,2].map(parseInt);
  25. 25. Конечно же... [2,2,2,2].map(parseInt); [2,NaN,NaN,2]
  26. 26. O_o ??!!1 [2,2,2,2].map(parseInt); [2,NaN,NaN,2]
  27. 27. А почему так? [2,2,2,2].map(() => { parseInt() });
  28. 28. А почему так? [2,2,2,2].map((item, index)=> { parseInt(item, index); });
  29. 29. this
  30. 30. call, apply это понятно
  31. 31. А bind сможешь?
  32. 32. function fn(a, b) { console.log(a, b, this) } var magicFn = bind(fn, {}); magicFn(2, 3);
  33. 33. Нужно думать как bind!
  34. 34. function bind(cb, context) { }
  35. 35. function bind(cb, context) { return function() { } }
  36. 36. function bind(cb, context) { return function() { cb.apply(context) } }
  37. 37. function bind(cb, context) { return function() { cb.apply(context, arguments) } }
  38. 38. function bind(cb, context) { return function() { return cb.apply(context, arguments) } }
  39. 39. function fn(a, b) { console.log(a, b, this) } var magicFn = bind(fn, {}); magicFn(2, 3);
  40. 40. Классика for (var i = 0; i < 10; i++) { setTimeout(function(){ console.log(i); }, i*1000); }
  41. 41. Легкое решение for (let i = 0; i < 10; i++) { setTimeout(function(){ console.log(i); }, i*1000); }
  42. 42. Просто решение for (var i = 0; i < 10; i++) { setTimeout((function(i) { return function (){ console.log(i); } })(i), i*1000); }
  43. 43. Еще одно, просто решение for (var i = 0; i < 10; i++) { (function(i) { setTimeout(function (){ console.log(i); }, i*1000); })(i) }
  44. 44. Умное решение for (var i = 0; i < 10; i++) { setTimeout((function (i){ console.log(i); }).bind(null, i), i*1000); }
  45. 45. А как же new?
  46. 46. Что произойдет? function() { this.name = 'yura'; }
  47. 47. У меня для вас три истории...
  48. 48. Метод var o = { fn: function() { this.name = 'yura'; } } o.fn();
  49. 49. Просто функция function fn() { this.name = 'yura'; } fn();
  50. 50. Конструктор function fn() { this.name = 'yura'; } new fn();
  51. 51. Конструктор function fn() { this.name = 'yura'; } new fn;
  52. 52. У меня для вас три истории...
  53. 53. Что происходит когда вызываем с new ● Создается новый объект, он становится this’ом ● Неявно возвращается ● Устанавливается прототип
  54. 54. Что происходит когда вызываем с new ● Создается новый объект, он становится this’ом ● Неявно возвращается ● Устанавливается прототип O_o
  55. 55. __proto__ vs prototype
  56. 56. Не одно и тоже!
  57. 57. Прототипное наследование
  58. 58. Конструктор function fn() { this.name = 'yura'; } new fn;
  59. 59. var obj = { a: 5, b: { c: 10 } }; obj.__proto__ = { a: 10, b: { c: 20 } };
  60. 60. 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);
  61. 61. 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);
  62. 62. t.me/callforward
  63. 63. t.me/djamah ?

×