Skip to content

Instantly share code, notes, and snippets.

@pavelpower
Forked from DChinin/interview.md
Created September 13, 2016 09:10
Show Gist options
  • Save pavelpower/e5c7a2b6f40e75151cd3be4e2cdd2c74 to your computer and use it in GitHub Desktop.
Save pavelpower/e5c7a2b6f40e75151cd3be4e2cdd2c74 to your computer and use it in GitHub Desktop.
Frontend interview

Workflow:

  • Расскажите о своей среде разработки (ОС, редактор, браузер(ы), прочие инструменты)
  • Какую VCS используете? Как работали в команде? PR, методологии, оценка времени
  • Использовали CI?
  • Как узнаете о новинках в мире JS? Какие конференции/митапы посятили за последние полгода? Какую технологию изучили недавно?

Базовые вопросы

  • Как браузер отрисовывает HTML-страницу на экране? (что происходит после получения ответа от сервера)
  • Что такое FOUC?
  • Как можно оптимизировать загрузку внешних ресурсов на странице?

CSS:

  1. Какие единицы измерения CSS использовали? какие существуют?
  2. Какие инструменты используете для CSS. (препроцессоры, постпроцессоры)
  3. Что такое box-sizing и чем он удобен?

JS:

  1. Что будет выведено в консоль и почему?
  console.log(false == '0')
  console.log(false === '0')
  1. Развернуть каждое слово в предложении Пример: "Welcome to this Javascript Guide!" должно стать "emocleW ot siht tpircsavaJ !ediuG"
  2. Вернуть только уникальные элементы из массива
  var array = [1, 2, 3, 5, 1, 5, 9, 1, 2, 8];
  1. Числа Харшад Числа харшад, или числа Нивена — натуральные числа, делящиеся нацело на сумму своих цифр. Таким числом является, например, 1729, так как 1729 = (1 + 7 + 2 + 9) × 91. Необходимо написать функции:

    • проверка, что число является числом харшад
    • получить заданное количество чисел харшад, начиная с указанного
  2. Что будет выведено в консоль?

  for(var i=0; i<5; i++) {
    setTimeout (function() {
      console.log(i);
    }, i * 1000);
  }
  1. Можно ли сделать этот код рабочим?
  var a = { id: 1 },
      b = { id: 2 };

  a + b === 3;
  b - a === 1;
  1. Какой результат будет?
  var b = 5;
  b.a = ‘some string’;

  console.log(b.a);
  1. Реализовать функцию curry
  function sum(a,b) { return a + b; }

  function curry(method) {
    // ...
  }

  var add2 = curry(sum, 2);
  add2(3) === 5;
  1. Что будет в консоли?
  function name(a){
    var a = 1;

    console.log('Fist ' + a);

    function a() {};
    console.log('Second ' + a );
  }

  name(2);
  1. Скопировать массив
  var arr = [1, 2, 3, 4, 5];
  1. Расскажите про event loop в JS. Как максимально быстро вызвать функции после текущего event loop'a
  2. Расскажите, что делает оператор new
  3. Передать в конструктор все аргументы из функции в исходном порядке
  4. Найти общий корень для двух узлов в дереве

XX. Необязательно

  // first
  100['toString']['length']

  // будет ли ошибка?
  1..z

  // third
  var a = (1,5 - 1) * 2

ES6:

  1. Какими возможностями ES6 пользуетесь?
  2. WeakMap / WeakSet, в чем преимущество?

React/Redux:

  1. Почему React? в чем ключевая особенность?
  2. Что такое Virtual DOM?
  3. Какие способы оптимизации рендеринга используете?
  4. Какие преимущества у stateless компонента?
  5. Что использовали для тестирования?

Дополнительно:

  • reflow / repaint
  • Layout trashing
  • Вынос в отдельный слой композиции
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment