• Почему говорят что jquery не нужен?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    jQuery был хорош, но ничто не стоит на месте. Раньше фронтенд никто особо не воспринимал всерьез. Все считали, что фронтенд - это несколько скриптов, которые принципиально погоды не делают. Все изменилось с ростом популярность SPA, в т.ч. и благодаря бурному развитию JS.

    В любом приложении очень важно прозрачно и понятно управлять состоянием, очень желательно делать это централизованно. Былой подход с участием jQuery делает это невозможным. Кто угодно может менять что угодно на странице, когда угодно, и приложение об этом ничего не знает без очень хитровыдуманных методов. Например в первом ангуляре для этого постоянно бегал по элементам и проверял что там изменилось, это называется "грязные проверки" (dirty checking). Мягко говоря это ни разу не оптимальный способ контроля состояния, но, на тот момент, вариантов особо не было.

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

    В каких-то простых страничках с парой-тройкой функций jQuery даже сегодня может быть актуален, особенно если приложить усилия и делать грамотно.

    Но что-то чуть более сложное уже требует совершенно иного подхода.
    Ответ написан
    Комментировать
  • Какой необходимый уровень знаний для junior React.js Разработчика?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    UPDATE: реальные тестовые задания и разборы здесь, ответы на все вопросы из поста в моем блоге об обучении react.

    не включая основы js

    Извините, но стандартная задача, про "напишите функуцию add, которая при вызове add(1)(2) вернет 3" - многих положила на лопатки =) Поэтому будьте готовы..

    React
    0) Какую проблему решает react ?
    1) Мгновенно ли срабатывает setState? Если нет, то как выполнить код, который 100% выполнится после того, как новый state будет установлен?
    2) Зачем многие постоянно пишут в constructor: this.FUNCTION_NAME = this.FUNCTION_NAME.bind(this) и отсюда вопрос вытекает чему равно this в разных местах вашего компонента...
    3) в каких методах жизненого цикла стоит выполнять xhr запросы? В каких стоит "обновлять state на основе props"?
    4) Что будет если вызвать this.setState в render методе компонента?
    5) зачем нужен componenWIllUnmount, приведите пример..
    6) Контролируемые, не контролируемые компоненты
    7) Как организовать роутинг в реакт приложении? (ответ: взять react-router - подходит, но было бы круто, если бы вы рассказали, как он примерно работает)*
    8) Зачем нужны propTypes? Что происходит с ними в production сборке?
    9) Как можно удобно "отлаживать" чужой код приложения, написанного на react (намек в сторону React devtools)
    ...

    Redux
    0) Какую проблему решает redux?
    1) Зачем многие создают типы действий NAME_REQUEST / NAME_SUCCESS ? А заодно, что такое "действие", а что такое "создатель действия"...
    2) Что такое редьюсер? Можете написать простой редьюсер без react/redux?*
    3) Для чего нужен redux-thunk? Как он работает? Напишите (можно псевдокод) асинхронный создатель действия (либо, если надоело говорить "терминами" - асинхронный aciton)
    4) Как компоненты приложения получают "пропсы" из "стора"?*
    5) Можно ли (и считается ли это нормальным) использовать state, если используется Redux?
    6) Почему в reducer'ax мы возвращаем новые объекты? Приведите пример, когда вы возвращаете новый объект, а когда тот же самый.
    6.5) А так же, "как в js вообще это работает?". Например:
    let obj1 { name: 'Test', age: 100 }
    let obj2 = obj1
    obj2.name = 'Test_new'

    Что будет в obj1, почему? В каких случаях объекты могут быть равны?
    7) Что возвращает функция connect (из react-redux)?
    ...

    Общее:
    0) package.json
    1) Webpack, gulp, etc...
    2) node.js
    3) promise

    Что-нибудь практическое:
    1) Как бы вы валидировали форму, если ошибки валидации приходят после submit'a ее на сервер..
    2) Почему не работает следующий код, сделайте чтобы работало
    ...
    На истину не претендую, но такие вопросы имели место быть на собеседованиях. В беседе можно многое разузнать дополнительными вопросами и так далее. Так же, если часть вопросов вам неизвестна - не беда, многие и на половину ответить не могут.

    p.s. возможно дополню...
    p.p.s. звездочкой отметил, на мой взгляд не самые необходимые для junior-собеседования вопросы.
    Ответ написан
    31 комментарий
  • Зачем нужна jwt стратегия?

    devellopah
    @devellopah
    Справка(упрощённо).
    Аутентификация - вход в систему.
    Авторизация - получение доступа к инфе из базы данных.

    Если ты создаёшь сессию для пользователей своего приложения, то когда юзер залогинился на сервере инициируется сессия и сервер в куках отправляет на клиент session id.
    В последующих запросах к базе данных сервер читает этот session id из кук, обращается к некой внутренней базе ( обычно имеет форму ключ-значение, где ключ - это session id, значение - mail пользователя, к примеру ) затем обращается к базе данных, достаёт данных для пользователя ( мы определили его на предыдущем шаге ) и возвращается в response.
    Такая система называется stateful ( поскольку мы вынуждены хранить инфу об аутентифицированных пользователях на сервере ). Это не вяжется с концепцией RESTful API, подразумевающей, что сервер должен быть stateless ( не хранить инфу аутентифицированных пользователях ).
    Добиться этого помогает json web token, поскольку он хранит всю необходимую для авторизации пользователя инфу. Это позволяет тебе написать RESTful API(stateless)

    Что почитать: session-based authentication, token-based authentication
    Ответ написан
    Комментировать
  • Поясните сложность данного алгоритма?

    vvovas
    @vvovas
    Как мне кажется, лишняя N в начале - внутренний цикл отработает (N-1)+(N-2)+...+1 раз. А по сути, вы сравниваете 2 числа и если обратиться к комбинаторике, то первое можно взять N вариантов, а второе (N-1). Так как нам не важен порядок, то делим пополам - вот и получается N*(N-1)/2
    Ответ написан
    Комментировать
  • Поясните сложность данного алгоритма?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    для детей:
    это известная байка про Гаусса, она хреново описана тут и тут и хорошо описана в хз каком учебнике: Гаусс заметил, что в ряду N чисел сумма первого и последнего равна сумме второго и предпоследнего, равна сумме N[3] и N[n-2] и т.д.
    т.е. N[1]+N[n] = N[2]+N[n-1] = N[3]+N[n-2] и т.п., всего таких "пар" - N/2 , значит сумма всех равна (N[1]+N[n]) * N/2 что эквивалентно (N+1)*N/2
    единицей пренебрегаем, получаем квадратичную сложность

    ну а для взрослых: это типичная запись ряда, для наметанного глаза все очевидно
    Ответ написан
    Комментировать
  • Поясните сложность данного алгоритма?

    Stalker_RED
    @Stalker_RED
    Если у вас на входе массив {a, b, c} то при проверке мы переберем сочетания ab ac bc.
    Проверим, сходится ли с формулой:
    (3^2 - 3) / 2 = 3

    Если на входе {a, b, c, d} то переберем сочетания ab ac ad bc bd cd
    Проверим, сходится ли с формулой:
    (4^2 - 4) / 2 = 6

    Можно продолжить и дальше, и тоже сойдется. Вообще сочетания считаются так:
    a73cf8428fc85510cade14325f0d8a3f460ed0c6
    (в нашем случае k = 2).

    Внимательный читатель мог бы заметить, что 3^2 = 9 и при этом 9 ! = 4 но при оценке сложности постоянные множители зачастую опускают, и вместо O(2N^2) или вместо O(N^2 / 2) пишут O(N^2), так как отличия в сложности в несколько раз не так важны, как отличия на порядок, типа O(N^2) и O(N^3) или O(N!).

    Или ваш вопрос про раскрытие скобок?
    Ответ написан
    1 комментарий