• Какой необходимый уровень знаний для 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 комментарий
  • Как открыть файл на gitHub?

    honor8
    @honor8
    Принципы быстродействия VBA в описании
    Ответ написан
    Комментировать
  • Как зарегистрировать почту в google.com, если логин вроде бы занят и не занят?

    Scorpi
    @Scorpi
    Возможно этот ящик существовал раньше, но его удалили.
    Насколько я знаю логин после этого не освобождается.
    Ответ написан
    4 комментария
  • Почему Chrome использует ну очень много оперативной памяти?

    In4in
    @In4in
    °•× JavaScript Developer ^_^ ו°
    У меня он кушает не больше 1 Гб (без расширений и прочих модификаций) на 64-битной версии.

    Почему Chrome использует ну очень много оперативной памяти?

    Потому.
    Ответ написан
    1 комментарий
  • Существуют ли какой нибудь сборник интересных задач и алгоритмов?

    @LightKeeper
    попробуй https://www.codingame.com

    тут нужно писать алгоритмы, которые играют в игры. есть игры на нескольких участников, и тебе нужно соревноваться с ботами других разработчиков.
    Ответ написан
    Комментировать
  • Существуют ли какой нибудь сборник интересных задач и алгоритмов?

    @krll-k Автор вопроса
    Q:Что почитать что повысить свой уровень знаний по javascript?
    A:habrahabr.ru/post/117838

    Q:Существуют ли какой нибудь сборник интересных задач и алгоритмов?
    A:Усложнить имеющийся пример на клиенте
    A:Опробовать javascript на сервере, Node.js
    A:Попробовать другие языки программирования, такие как C/C++/Java или Ruby/Python/Go
    A:Принять участие в проекте Эйлера, о том как это сделать -> habrahabr.ru/post/37379
    A:Идеи

    Копьютерный интелект(бот)
    Бота для игры в 2048, типа как для шахмат бота! Конечно смысл этого бота равен нулю, т.к. игра однопользовательская

    Анализатор действий игрока(тест на когнетивные способности)
    Проверка на то на сколько дальновидный игрок играет в 2048, случайно ли его действия или заранее продуманные, и т.д.

    Многопользовательская игра в 2048(мультиплеер), или реализация другой игры, такой как "морской бой" или "шахматы", Node.js
    Ответ написан
    2 комментария
  • Как верстать блоки сложной формы на чистом css?

    углы делаются с помощью псевдоэлементов - after, before

    ссылка на генератор углов: apps.eky.hk/css-triangle-generator
    Ответ написан
    6 комментариев
  • Как бы вы объяснили ребенку 7 лет что такое.. ?

    @lookid
    А когда ему будет 10 лет, то вы забьете его до полусмерти с криками ТЫ УЖЕ 3 ГОДА УЧИШЬ ПРОГРАММИРОВАНИЕ И ТЕБЯ НЕ ВЗЯЛИ В ГУГЛ!!! АААА!!! РЯЯЯЯЯЯ! ?
    Переменная - ведро, куда ребенок может положить кубики.
    Массив - ряд из ведер с кубиками.
    Итератор - палец, которым ребенок тычет в ведро.
    Функция - набор операция с кубиками и ведрами.
    Программа - набор функций или просто набор операций с кубиками и ведрами.
    Ответ написан
    5 комментариев
  • Что должен знать и уметь начинающий сетевой администратор?

    @throughtheether
    human after all
    0) Представим, необходимо передать данные между компьютерами 1 и 2. Никаких Ethernet и IP еще не придумали, допустим. Есть провода, оптоволокно, соответствующие трансиверы. Что делать? (семиуровневая модель и почему это не священная корова, мультиплексирование, инкапсуляция)

    1) Коммутация. Как происходит обработка (перенаправление) трафика коммутатором? Допустим, пришел фрейм с таким-то адресом источника и таким-то адресом назначения - что происходит? Что и почему произойдет, если два 'деревянных' (без STP и прочих излишеств) коммутатора соединить двумя линками? Как с этим бороться (STP, в чем минусы)?

    2) Статическая маршрутизация IPv4. Зачем вообще нужен IP, когда есть Ethernet или Serial интерфейсы (хотя, по-моему, IP появился раньше, чем Ethernet, но вопрос имеет определенный смысл, пересекается с пунктом 0)? Допустим, на маршрутизатор приходит пакет (точнее, Ethernet-фрейм, а в нем IP-пакет). Что дальше происходит? Чем концептуально отличается перенаправление пакетов на 3 и 2 уровнях ЭМВОС? Почему l2-петля (в случае Ethernet) это скрежет зубовнай, а L3-петля не так страшна? Чем концептульно отличаются IPv4-адреса от MAC-адресов?

    3) Как заставить работать вместе Ethernet и IP (это про ARP)?

    4) Нарисуйте топологию вида "маршрутизатор на палочке", где маршрутизатор маршрутизирует трафик между двумя вланами. К нему транком подключен коммутатор, к коммутатору - два хоста в разных вланах. Один хост шлет icmp echo запрос другому ('пингует'). Что происходит на каждом устройстве? Какие адреса (IP, MAC) используются в заголовках пакетов и фреймов на разных этапах? Каково содержимое таблиц маршрутизации, коммутации, ARP-таблиц?

    5) Уже после четкого освоения вышеописанного: безопасность (ACL, фаерволлы), туннели (зачем нужны, в чем минусы), NAT (зачем нужен, в чем минусы). Динамическая маршрутизация. Как устроен Интернет (и чем Интернет отличается от Worldwide web)

    Из книг, Jeff Doyle, 'Routing TCP/IP', volume I, первые несколько глав. И есть неплохая книжка, на тему 'чего не сказали в курсе CCNA'.

    Привел самые базовые вопросы. Разобравшись с ними, думаю, дальнейший вектор развития сами будете способны задать.
    Ответ написан
    3 комментария
  • Вы в браузере набрали адрес сайта, нажали Enter. Расскажите максимально подробно о технических процессах происходящих далее?

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

    0) Пользователь вбивает в адресную строку браузера адрес сайта (нажимая клавиши на клавиатуре, которые замыкают определённую дорожку в матрице, по которой происходит определение нажатой клавиши, что через шину USB в какой-то момент передастся OS, где это поймает HID-драйвер и вызовет определённое прерывание, что OS передаст как событие/или_ещё_как в программу, которая вызовет соотвествующую функцию из API менеджера окон, которая изменит содержимое строки и в результате когда-то будет перерисован UI-элемент, а если нажат был Enter, то начнётся следующее).
    1) Браузер вытащит из input'а строку с запросом и посмотрит, похоже ли это на адрес. Если да, то добавит недостающие уточнения (например, http или file протокол, порт и подобные довольно стандартные вещи). Если нет - то скорее всего создаст запрос в поисковую систему, установленную по умолчанию (я более не буду опускаться до таких бессмысленных деталей, как вызовы API-функций, иначе я буду набирать это сообщение ОЧЕНЬ долго). В любом случае на выходе мы по сути получим URL, который надо загрузить. Протокол file:// мы рассматривать не будем, ftp далеко не везде есть, https:// на не хватит вечности, так что остановимся на http, который по сути есть tcp/ip по умолчанию на 80 порту с определённым форматом общения.
    2) Окей, url есть. Теперь нам нужен адрес, к которому обращаться. Так как http это tcp/ip - нам нужен ip адрес. Здесь нам помогают dns-сервера. Обычно, нормальный провайдер устанавливает у себя кэш-сервера dns, которые не обращаются по стопицот раз за vk.com к ответственному серверу com-зоны. Давайте не будем отвлекаться на то, как происходит там общение, если что - вот (вики тем хороша, что часто содержит внизу релевантные ссылки). Скажу лишь то, что на выходе мы получаем ip адрес(а).
    3) Имея адрес мы можем запросить страницу. Собственно, всё что после первого слэша - это как-бы параметры для http-сервера: какую именно страницу запрашивать, он всё же не телепат. Конечно, можно было бы немного схитрить и отправить читать про tcp/ip, но ведь существует и shared-hosting. Ограничемся лишь его упоминанием. Собственно, по полученному адресу отправляется GET запрос, который и обрабатывает сервер, находящийся по полученному IP-адресу.
    4) Сервер же, получив адрес, начинает распарсивать строку, медленно вытягивая нужные данные из баз-данных и настроек, выполняются сотни скриптов, иногда делается ещё не одна сотня различных запросов на другие сервера (здесь и разного вида метрики и разного вида HADOOP и т.д.). Пройдя сквозь скрипты и темплейторы в самом конце мы получаем html-страницу, готовую к употреблению. Её-то сервер и отправит в ответе (после заголовков, конечно).
    5) Вот и началось самое интересное. Получив html страницу браузер начинает жутко надругаться над CPU, HDD и GPU, попутно сжирая тонны RAM и мусоря в swap. Виной всему нереальные для полного соблюдения стандарты от небезызвестной w3c.org. Для облегчения многие делают костыли, вроде webkit, а некоторые и вовсе забивают на него и пилят свой стандарт с преферансом и картёжницами (впрочем, в последнее время становиться лучше). Здесь снова начинаются сотни вызовов API ОС, windows manager'а и прочих библиотек, вроде boost, qt или libpng. В ходе работы в RAM строится макет, по которому потом строится нечто вроде PDF (тоже сильно векторный), что, потом, обрабатываясь быстрыми шейдерами на GPU, выдаётся на экран. Опять же, многое пропущено, но вряд ли кому-либо, кроме парня в свитере с оленями, действительно интересно, как работает GDI, DirectX или OpenGL.
    6) Ах да, мы же забыли про тысячи js-скриптов, миллионы картинок и анимации с котиками, а также о таких дополнительных плюшках, как flash-player или java-weblets. В кратце, что js, то и flash и java - это виртуалка, со специальной архитектурой. Они, виртуалки, конечно разные (хотя flash и js довольно похожи, ещё бы - ECMAScript один и тот же). JS - самый интегрированный внутрь браузера, он же и самый медленный чисто визуально (ибо последние два имеют доступ к быстрому GPU), хотя самый быстрый в попугаях. Второй постепенно вымирает и представляет из себя, так же как и третий специальную shared-библиотеку, о которой браузер как-нибудь узнал и которой скармливает специальное содержимое помечанное специальным тегом html. Третий уже почти умер и встречается лишь изредка или в каком-нибудь энтерпрайзед со страшным legacy-базой. Ну здесь из сылок разве только гугл. Ибо сколько всего - даже не сообразишь. Да и вообще, эта тема ещё скучнее GDI, DirectX и OpenGL и к свитеру с оленями требуются ещё очки с толстенными стёклами, дающие стопицот к терпению и задроству над матаном. Если в кратце, то в случае JS, всё что было загружено в память и не думает выгружаться и формирует этакое дерево - DOM, над которым с помощью специального API и происходят модификации. При этом, перед тем как исполниться, весь JS-код компилируется, в нативный для VM байт-код. То же самое в общем-то и со вторым и третьим, разве только они не имеют доступа к DOM и организовать его - дело тех ещё костылей. Ах да, забыл ещё про Silverlight (или как оно там пишется), который сдох, не успев родиться. Так же как и Java, жив в серьёзном энтерпрайзе, не поскупившийся не "дешёвую" поддержку MS.
    7) Ну... А дальше пользователь нажимает на нужную гиперссылку и всё по новой.

    За кадром остались такие костыли, как ajax, websockets и прочая асинхронная ересь. С ней всё в миллионы раз сложнее. И к очкам со свитером потребуется ещё и... а чёрт их знает, что они там ещё носят. Ну да ладно, я искренне завидую тем парням (и девушкам), которые разбираются во всей этой машине. Целиком. Ибо это лишь верхушка айсберга. Разбавленная не лучшей памятью и ужасным гуглом.

    P.S. Не бейте сильно за грамматические и синтаксические ошибки. Спеллчекер приказал долго жить, да и 5 утра как никак.

    UPDATE
    На хабр выложили неплохой перевод дающий некоторое представление, как браузер ругается над памятью и процессором. Хотя и весьма поверхностное,
    Ответ написан
    26 комментариев
  • Где искать практические задания для системного администратора?

    dintsec
    @dintsec
    Маркетолог, копирайтер
    Ресурсов не подскажу, а с практическими занятиями пожалуйста:
    Поднимите контроллер домена+резервный с репликацией. Установите на нем роли Active Directory, DNS, DHCP. В политиках настройте пароли с цифрами, буквами, верхними, нижними регистрами. Установка приложений по сети. Запрет на запуск определенных приложений. Запрет на подключение съемных устройств по usb. Сделайте установочный образ винды с уже установленными софтом для предприятия. Например: офисный пакет+архиватор+браузер+Муз.плеер+pdf/djvu читалка. Настройте регулярный бэкап, локальный WSUS.Поднимите проксик с авторизацией пользователей через AD, блокировкой рекламы с IDS, IPS. С веселым редиректом. Например, когда юзер хочет зайти на соцсети или порнуху, его редиректит на страничку с какой нибудь прикольной картинкой и надписью типа: "работать!!!" В идеале собрать на фряхе squid+sams+rejik (AD). Да и еще установи mydlp community. Чтобы инфу не сливали. Да, и при всём при этом желательно ведите для себя ежедневник по проделанной работе, трудностях и методах их решения. Хватит работы на пару месяцев? По окончании всего этого, если вы сделаете ПОЛНЫЙ бэкап, отформатируйте все серваки и разверните бэкапы, чтобы всё работало и вы потратили на это максимум рабочий день. Успехов.
    Ответ написан
    4 комментария
  • Какими навыками должен обладать системный администратор?

    foxmuldercp
    @foxmuldercp
    Системный администратор, программист, фотограф
    Для работы хорошим системным администратором надо:
    нулевой уровень - крепкие нервы и выдержку - часто звонят обычно истерики, у которых "аа, ничего не работает, вы все козлы". Ну или реально, что-то большое и толстое упало и не работает, Вы занимаетесь восстановлением.

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

    Дальше - оптимизация и учёт своей работы и проблем, написание документации для часто возникающих вопросов, вроде как самому менять пароль когда приходит срок его смены, вроде "полчаса - замена материнки Пупкину, полчаса обьяснение Тарасовой что такое поверпоинт".

    Учёт и инвентаризация юзерского железа, установленного софта и какие компы за кем числятся, совместно с бухгалтерией.

    Дальше - оптимизация переустановки рабочих станций - служба вроде WDS - не руками же винду, офис и прочий внутренний софт накатывать каждый раз (по два часа на машину, угу)

    Прокладка сетей и их диагностика - обрывы, переобжимание патчей, учёт что и куда на патчпанелях воткнуто. что такое вланы и подсети, маски, - это хорошо рассказано в курсах Cisco ICND и более старшем CCNA - маршрутизация и TCP/IP стек

    Ну а дальше - уже всякий серверный стафф - серверное железо, технологии удалённого управления самими серверами (ssh/rdp) и их железом - ipkvm, ipmi, iLO, мониторинг, диагностика.
    Тоже самое с системами хранения данных - дисковые полки, стримеры для бекапов на ленты и библиотеки лент.

    Программная часть серверов - Active Directory и роли Windows Server, какие есть, зачем нужны и как настраиваются, как делается резервное копирование и восстановление данных, как правильно хранить бекапы и где их хранить, как ставится ось - linux, windows, как она правильно настраивается под конкретные задачи - почта, dns, dhcp, брандмауер/фаервол, и т.п., как выпускается в интернет, что такое демилизаризованный сегмент сети.
    Как правильно ставится более сложные сервисы - SQL, почта, веб, мастер установки - 10 минут Next, Next, а грамотное развёртывание - и настройка - вполне нормально от нескольких дней.

    Виртуализация - какая есть, на кой черт нужна.

    Диагностика, мониторинг, серверного железа, планирование рисков при аварии и восстановления ИТ инфраструктуры - от выхода из строя конкретного сервиса (упал почтовый демон) до все, приехали - "здания офиса больше нет".

    Побочно - мелкое скриптописание - powershell, bash или крупно-программирование - C#, python, perl, местами веб вроде html/css.

    Вроде ничего не забыл
    Ответ написан
    2 комментария