@Keksonov

Что можно считать глубокими знаниями в js?

Везде пишут, что нужно глубокое знание/понимание языка. Что это значит?
  • Вопрос задан
  • 11189 просмотров
Решения вопроса 1
  • @MaxKorz
    Глубокое знание/понимание JS:
    - понимание как работает браузер;
    - как работает V8;
    - какой код будет оптимизирован движком, а какой нет и почему;
    - умение находить утечки памяти и знать что их вызывает;
    - умение пользоваться профайлером;

    Ну и сам JS: понимание прототипного наследования, замыканий, области видимости, this, promise, call, apply, bind, регулярки и т.п.

    Как работает браузер
    Под капотом V8
    Что убивает оптимизацию V8 (еще)
    Написание быстрого JS кода, еще и еще
    4 вида утечек памяти в JavaScript и как с ними бороться (перевод)

    Бонус - как работает интерпретатор javascript

    P.S. очевидно, что достичь глубоких познаний в JS будет сложновато без хотя бы средних познаний в английском
    Ответ написан
Пригласить эксперта
Ответы на вопрос 7
  • pm_wanderer
    @pm_wanderer
    junior-HTML
    Немного дополню, чтобы новички не пугались. А то страшилок много о том, что надо знать все, хотя в реальности, тех кто действительно "знает все" можно пересчитать по пальцам:

    Как работает браузер - можно знать лишь в общих чертах, для общего развития. В повседневной жизни это в 99% случаев не нужно. Браузер предоставляет нам API и мы его используем. То как оно устроено внутри пусть остается инкапсулировано внутри.

    Как работает V8 - опять же, достаточно общего представлени об event loop. Все остальное пусть остается скрыто и используется через API.

    Оптимизация кода под браузерные движки - в большинстве случаев вообще не надо.

    Утечки памяти - если умышленно не стрелять себе в ногу, то тоже никаких проблем с этим не будет.

    Написание быстрого кода - практически не нужно (он и так будет достаточно быстрый). Лучше сосредоточиться над написанием читаемого, тестируемого и поддерживаемого кода.

    К общему списку еще можно добавить паттерны проектирования. Это будет намного полезней, чем всякие техники спичечной оптимизации)
    Ответ написан
  • fakey0u
    @fakey0u
    (javascript) => ['Node.js', 'React']
    Я бы конечно определился, что такое более глубокое понимание. Для себя я бы обозначил глубокое понимание, как умение решать "бизнес-задачи" на языке JavaScript, наиболее эффективным образом.

    Глубокое понимание, уже перестает относиться только к JavaScript, а начинает очень тесно взаимодействовать с общими паттернами которые есть в программировании.

    Знать и уметь применять паттерны проектирования:

    - Singleton
    - publish/subscribe
    - factory
    - proxy
    - facade
    - strategy

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

    - Список, связанный список
    - Деревья, бинарные деревья
    - Очередь/Стек
    - Графы

    Уметь писать в ООП парадигме и в функциональном стиле, просто чистый код:

    - SOLID
    - fp (pipe, compose, curry, functor, monads, etc)
    - SOA, понимание Service-oriented architecture

    Понимание работы компилятора и интерпретатора, MaxKorz хорошо уточнил.
    Ответ написан
  • iCoderXXI
    @iCoderXXI
    Fullstack WEB dev, software/DB architect, sysadmin
    У каждого HR/техлида, который будет собеседовать, свои представления о прекрасном. Есть база, которую надо знать, иначе будешь плавать категорически, все остальное - по мере необходимости (имхо). Если с инглишем туго, то сожалею, хотя у кантора весьма недурной ресурс, да и есть платные качественные курсы по JS. Опять же зоракс на ютубе доходчиво объясняет базу.

    Правда кроме теории неплохо бы все это дело на практике обкатать на нескольких проектах, и чем заковыристее задачи - тем лучше, в крайнем случае на том же кодварс можно навыки обкатывать.

    Собеседующим главное надо показать, что их задачи ты сможешь решить. Для этого софт-скиллы местами даже гораздо важнее технических скиллов.
    Ответ написан
  • @Batlab
    PHP/JS Middle | Python Junior
    Я думаю, опыт работы минимум 2 года + знания современных библиотек и фреймворков, возможность самому создавать их.
    Ну и иметь парочку проектов не мешало бы.
    Ответ написан
  • xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.ru
    В 99.9% случаев: кодить без jQuery.
    Когда звучат такие слова, как "глубокие знания", то речь идёт о скорости исполнения JS-кода и достижение максимально-возможной через знания того, что под "капотом" как функционируют все прослойки.
    Ошибочное мнение, что речь идёт о знаниях стандартных JS функций, методов и алгоритмов.

    А вообще, MaxKorz всё верно изложил.
    Ответ написан
  • SowingSadness
    @SowingSadness
    web-разработчик
    Все что выше написали булщит.
    Глубокое понимание JS, это умение написать функции наследования через прототипы не по памяти, а потому что понимаешь как это делается.
    + Теперь ещё понимание символов.
    Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Вакансии с Моего Круга Все вакансии
Заказы с Фрилансим Все заказы