pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Как тестировать сеошников перед приемом на работу?

Лучший ответ: Тестовые задания, на которые даётся время для самостоятельного решения, неэффективны. Понять, адекватен ли человек, можно только если попросить его объяснить смысл того, что он стал бы делать в той или иной конкретной ситуации. Важно дать именно конкретную, а не общую ситуацию, чтобы нельзя было отделаться такими же общими словами. Вам не обязательно понимать сходу всю конкретику, о которой он будет говорить - вы в полном праве записать сказанное и либо проанализировать это самостоятельно, либо дать на оценку тому, кому доверяете.

Худший ответ: Ну вы семь задали вопросы и аспекты которые надо спросить
Понятное дело что сеоов тестировать вопросами да нет не стоит
Вопрос: Правильно ли мы закрыли ссылки от поисковых роботов с помощью rel="nofollow"?

Лучший ответ: Если вы хотите закрыть какую либо ссылку от передачи статического веса для поисковиков, то лучше прибегнуть к более сложному способу, нежели rel=nofollow.  Принцип действия скрипта – переопределить таблицу стилей сайта таким образом, чтобы ссылки для пользователя, оставались ссылками, а для поисковых систем – просто текст. Таким образом статический вес не передаётся на нужные нам страницы практически гарантированно. (JS  до сих пор очень слабо индексируют, хотя и заявляют что учатся).
Создание отдельного класса и удалением атрибута тега  a href . 
 Пример скрипта: $(document).ready(function(){
      $(".ext2").each(function(){
        $(this).replaceWith('<a href="'+$(this).attr("ext")+'">'+$(this).html()+'</a>');
      });
    });

Худший ответ: Не будет.
Вопрос: Аргумент request в функциях Django?

Лучший ответ: Как-то слишком много магии...
Неужели вы не понимаете, что request не самозарождается внутри функции, как дети в капусте?! 
1. При старте фреймворка джанга ищет все urls.py, вычитывает из них все urlpatterns.
2. После этого она сохраняет у себя во внутреннем реестре связку урл - функция.
3. Когда приходит запрос, WSGI вычитывает TCP данные, HTTP данные и формирует WSGIRequest объект всунув в него эту информацию и вызывает главный хендлер джанги.
4. Хендлер джанги получив этот объект формирует на его основе свой HttpRequest дополняя его джанговскими фичами. После этого находится соответствие урлу и функция обрабатывающаяя этот урл вызывается, с переданным в нее HttpRequest. И кстати не только request. Надо писать:def handler(request, *args, **kwargs) -> HttpResponse:
    pass
потому что джанга может НЕ ТОЛЬКО REQUEST передать в функцию, будете потом тупить, "а почему у меня user_id пишет что не поместилось".
НЕЛЬЗЯ "№;%% В ВОЗДУХЕ НАПИСАТЬ blabla(request) И ЖДАТЬ ЧТО REQUEST САМОЗАРОДИТСЯ ИЗ НИЧЕГО!!!
И вообще, у меня сильное ощущение, что вам на три-четыре месяца надо отложить Django  и выучить сам питон для начала...

Худший ответ: Параметр request подставляет фреймворк, когда вызывает функцию или метод представления.
Вопрос: Как сделать, чтобы VLANы видели друг друга?

Лучший ответ: Как сделать, чтобы VLANы видели друг друга?Никак. Это невозможно. У них глаз нет, поэтому они не могут видеть.

Если вы хотите чтобы между ними трафик ходил - настраивайте маршрутизацию. Обмен трафиком между разными сетями настраивается именно на маршрутизаторе.

Худший ответ: Цель какая? Если файлообмен, то подрубить виланы с локалкой к серверу. Если принтеры,  виланы с локалкой в маршрутизатор(или если они в маршрутизатор уже воткнуты), прописать маршруты в нём и насколько помню в компах. Просто обычно не просто так делят, а как раз, чтобы они раздельно были. Поэтому и вопрос, какова цель?
Вопрос: Как сделать таймер с начало 0?

Лучший ответ: Если принципиально без js, то можно так: 
1. Делаешь форму с кнопкой.
2. После нажатия записываешь куда-то (в сессию, например) стартовое время.
3. Отдаешь с сервера красивую страничку с нулем, и с мета тегом refresh, в котором указываешь, через какое время браузер должен обновить страницу (1 сек, например).
4. При обновлении сравниваешь текущее время со стартовым, отдаешь страничку уже не с нулем, а сколько там прошло.
Тебе конечно скажут, что это говнокод, и будут правы.

Худший ответ: Это делается на JS
Вопрос: Как заменить конструкцию if else на switch?

Лучший ответ: Но со switch не будет компактней.
Компактней будет если ты свои CategoryToggle и RectangleCategory разместишь в массивы. И тогда у тебя логика будет только одна, проверить чекер и применить браш.for (int i = 0; i < categoryToggleArr.Length; i++)
{
   if (categoryToggleArr[i].IsChecked)
   {
      RectCategoryArr[i].Fill = new SolidColorBrush(dialog.Color);
      RectangleCategoryArr[i] = new BrushConverter().ConvertToString(dialog.Color);
   }
}

Худший ответ: switch работает по одной переменной. 
у вас же 2 
CategoryToggle1.IsChecked 
CategoryToggle2.IsChecked
Вопрос: Какой helpdesk open source посоветуете исходя из моего ТЗ?

Лучший ответ: Бесплатно или за бабки?

Бесплатно:
OTRS
Redmine
Mantis
Bugzilla

За бабки
JIRA
ManageEngine

JIRA - лучший из виденных мной продуктов, но цена не просто кусается - она злющая, как бешеная собака, если нужно более 10 юзеров

Худший ответ: Рекомендую изучить:
zammad.org - имхо, самый дельный, но основной минус, что нет мобильной версии из коробки.
trudesk - из минусов помню, что уведомления о новом тикете приходят сразу всем агентам, это нельзя было убрать
helpy.io 
uvdesk
Вопрос: Как проиндексировать группу в ВК в Яндекс и Гугл?

Лучший ответ: Накидать в соцсети ссылок на группу ну и она должна быть живой и тогда заиндексится

Худший ответ: Именно потому, что группа в вк вам не принадлежит, вы и не можете подтвердить право собственности. Соответственно, данные с поиска вы можете тянуть только в выдачи. И по страницам в индексе и по ключам.
Вопрос: Как правильно вывести результат выполнения php?

Лучший ответ: return $users;
Вы возвращаете результат, а потом хотите ещё какие то действия выполнять. Не надо так!

Худший ответ: $users у Вас массивом является
Чтобы добраться до ['surname'] нужно или так $users[0]['surname'] или в foreach его прокручивать
Вопрос: Стоит ли изучать pug?

Лучший ответ: Там нечего толком изучать. Всё интуитивно понятно, разок доку прочитать достаточно.
А вот стоит ли использовать при наличии современных фреймворков(или совместно с ними) - это уже отдельный вопрос.

Худший ответ: Там нечего толком изучать. Всё интуитивно понятно, разок доку прочитать достаточно.
А вот стоит ли использовать при наличии современных фреймворков(или совместно с ними) - это уже отдельный вопрос.
Вопрос: Какие есть протоколы или системы помимо RDP и VNC?

Лучший ответ: Citrix получше передаёт видео.

Худший ответ: Сколько же у Вас ресурсов на этом сервер, что бы еще и видео с youtube смотреть). Бывают же извращенные задачи.

Можно попробовать использовать remoteFX в RDP.
Вопрос: Совмещение асинхронного и синхронного программирования — это плохо?

Лучший ответ: На пальцах - примерно так. Есть страны с правосторонним движением, есть с левосторонним. Нормально ездят и там, и сям. Но идея замутить страну, где на некоторых улицах ездят справа, а на других слева - так себе идея.
Там, где синхронная и асинхронная парадигмы кода встречаются, возникают издержки на их стыковку. Обычно это выливается в асинхронные обёртки для синхронного кода. По неизбежности (например, при отсутствии асинхронного драйвера к бд) так и делают. Но идея так себе.

Худший ответ: Сейчас много что в питоне создаёт иллюзию асинхронности пулом тредов. Ничего в этом удивительного нет. Если асинхронный код выполнять как синхронный (что и происходит в статье) — он будет медленней синхронного. Очевидно же, что синхронный выполняется последовательно, а асинхронным нужно управлять — постоянные свичи "контекста", сколько-то времени тратит event loop на себя, треды порождаются долго (если "асинхронность" на тредах).
Производительность не в том, что запросы должны лететь быстрее, а в том, что другой код может выполняться, пока запрос к БД висит. Потому что он висит в отдельном треде и никому не мешает (за исключением всяких edge-кейсов, которые блокируют все треды). Да, часто пула тредов может не хватать (по умолчанию это 5 * количество_ядер). Например, если ты пытаешься через aiohttp скачать 100к страниц. Но в этом случае синхронный был бы раз в 40 медленней (на 8-ядерном процессоре). И этот пул при желании можно увеличить. Но я сильно сомневаюсь, что затык будет в тредах, а не в сети.
Вопрос: Динамические классы в CSS и HTML используя Angular 9?

Лучший ответ: При стандартных настройках ангуляр добавляет хтмл-элементам компонента свою метку, типа _nghost-lli-c18 или _ngcontent-rja-c18
Всем стилям компонента автоматически добавляется эта приписка, например в браузере будет выглядеть как
a[_ngcontent-rja-c18] {
    color: red;
}
В Ангуляре это зовется "инкапсуляция стилей", является дефолтным поведением и может быть выключено или изменено на использование ShadowDOM.
Таким образом стили компонента накладываются только на тэги в компоненте. Что-то там отдельно синхронизировать не нужно.

Худший ответ: Ну вам и не надо это делать. Раз ангуляр собирает и подставляет динамические классы/ид тегам, то он и соберет стили для них. В данном случае используется css-in-js, который и дает возможность генерить крякозябры(названия классов). А если хотите задать элементу стиль с css-файла, то просто добавьте в хтмл соответственный класс вручную(ну по канонам ангуляр, естественно)
Вопрос: Что произойдёт, если удалить Internet Explorer 11?

Лучший ответ: Отформатируется BIOS.
Шучу.
Удаляйте, ничего не произойдёт.

Худший ответ: Если вы удалите IE11, у вас его больше не будет.
Вопрос: Как сделать кнопку-переключатель и блок выбора тарифов?

Лучший ответ: Список необходимых библиотек:
1. html
2. css
3. js

Худший ответ: Вкладки(tabs) используйте у бутстрапа и всё
Вопрос: Как собрать команду блокчейн разработчиков? Где их найти? Как договориться?

Лучший ответ: Скорее всего, ваш "проект" так успешно "продался" именно потому, что
Мы то сами не разработчики ни разу да и в технологии шарим "поверхностно"
Не разбираясь в технологиях, можно предлагать очень крутые плюшки, вступающие в непримиримое противоречие с технической реальностью. И теперь вам всего-то нужно - найти за копейку спецов, которые создадут по вашим фантазиям продукт, не имеющий мировых аналогов, на самой хайповой технологии десятилетия... к успеху идете, чо.

"Ведущие издатели очень заинтересованы в нашей ААА-игре об ограблении корованов, теперь нужно только ее написать".

Худший ответ: есть только "красивые картинки" и привлекательная презентация (с технологией, концепцией и пр.).

думали, что все что в ICO пишут - правда, а оно
 в технологии шарим "поверхностно" без особой математики

теперь найти бы кто шарит и сделает
Вопрос: Реально ли найти работу Junior Unity программисту на удаленке?

Лучший ответ: Джунов на удалёнку не берут.

Худший ответ: Шагом марш в офис!
Вопрос: Как победить рассыпающуюся картинку с IP камер в OBS?

Лучший ответ: Можно попробовать увеличить частоту i-фреймов(опорных кадров) - в настройках камер, но от этого возрастет трафик.

Худший ответ: По мойму дело не в компе. Попробовать разные порты RTSP с камер.
Если не хватает траффика или думаете ПК, снизьте качество до минимума и проверьте. Попробуйте для теста запустить sub поток
Вопрос: Существует ли способ получения обновления состояния таблицы postgresql внешним процессом java?

Лучший ответ: https://www.postgresql.org/docs/current/logicaldec...
Инфраструктура Logical Decoding.
Либо триггером пишете в pgq, ваше приложение вычитывает очередь pgq. Это сильно проще.

Худший ответ: Сделать триггер отправляющий NOTIFY при изменениях и выполнить LISTEN в программе.
Вопрос: Что делать если не читает кириллицу в задаче?

Лучший ответ: Именно для такой задачи в Python есть класс deque:from collections import deque

def encrypt(word, k):
    code = deque(word)
    code.rotate(-k)
    code.reverse()
    return ''.join(code)

assert encrypt('ШКОЛА', 3) == 'ОКШАЛ'

Худший ответ: попробуй такk = 3
s = 'ШКОЛА'

print(''.join(s[k:] + s[:k])[::-1])  # ОКШАЛ

# возможно стоит еще добавить такое, если k будет больше чем длина строки
print(''.join(s[k % len(s):] + s[:k % len(s)])[::-1])  # ОКШАЛ
Если в тексте задачи есть переменная k, зачем в коде ее заменять на a?b=str(input()).upper() - зачем переводить в верхний регистр?
Вопрос: Влияет ли режим автоматической фиксации транзакции на производительность?

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

Всё зависит от ситуации.

Ситуация номер 1

Атомарность.

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

Ситуация номер 2
Вы хотите задампить большой объем данных, с последующим восстановлением.

В этом случае на N количество запросов можно открыть транзакцию, а после зафиксировать.
Это тоже даст прирост.

Это как с дверью, когда туда-сюда носишь мешки и при этом открываешь и закрываешь дверь, вы тратитевремя на эту неблагодарную операцию.

Если вам нужно занести 15 мешков картошки, открыли дверь, подставили кирпич и носите мешки, а потом не забываем закрывать.

Не забывайте, если постоянно держать дверь, можно простудиться и словить ошибку переполнения журнала транзакций.

В обычных случаях используем  autocommit.
Сами понимаете, зачем открывать транзакцию если вставляете всего одну запись.

Ответ на ваш вопрос.
Оптимизация запросов и тюнинг СУБД даёт прирост.

Вот такой дилетантский ответ.
Спасибо.

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

Всё зависит от ситуации.

Ситуация номер 1

Атомарность.

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

Ситуация номер 2
Вы хотите задампить большой объем данных, с последующим восстановлением.

В этом случае на N количество запросов можно открыть транзакцию, а после зафиксировать.
Это тоже даст прирост.

Это как с дверью, когда туда-сюда носишь мешки и при этом открываешь и закрываешь дверь, вы тратитевремя на эту неблагодарную операцию.

Если вам нужно занести 15 мешков картошки, открыли дверь, подставили кирпич и носите мешки, а потом не забываем закрывать.

Не забывайте, если постоянно держать дверь, можно простудиться и словить ошибку переполнения журнала транзакций.

В обычных случаях используем  autocommit.
Сами понимаете, зачем открывать транзакцию если вставляете всего одну запись.

Ответ на ваш вопрос.
Оптимизация запросов и тюнинг СУБД даёт прирост.

Вот такой дилетантский ответ.
Спасибо.
Вопрос: Сильно-ли замедляется доступ к объектам словаря при большом количестве?

Лучший ответ: Если у ключей будет плохая хэш-функция (__hash__) — замедление будет сильное. Например, если все ключи будут отдавать хэш 42. Тогда открытая адресация просто умрёт, пытаясь найти очередную свободную ячейку в хэш-таблице.
В остальном, хоть 100, хоть 10000000 — неважно. Вероятность коллизии примерно одинаковая. И амортизированная сложность вставки/получения/удаления элемента — O(1)

Худший ответ: если много дынных то лучше использовать redis
Вопрос: Как починить переключение раскладки по CapsLock в Ubuntu 20.04?

Лучший ответ: Мне помогло на Ubuntu 20.04 в терминале:
gsettings set org.gnome.desktop.input-sources xkb-options "['grp:caps_toggle']"

Худший ответ: Ищи через dconf-editor.
Все настройки по клаве там.

А лучше, вернись до 18.04, установи с mini.iso голую систему и потом накати Unity и получишь чистую Ubuntu 18.04 + LiightDM + Unity!
И никаких трабл!
У меня так установлено.
Радуюсь жизни!

Начиная с 19.10 так уже чисто не получится.
Unity подшаманили и теперь в нагрузку ещё сессию Gnome Shell впиндюривают, да ещё и сама Unity с примесью Mate и кучей дерьма.
Вопрос: Как сделать чтобы текст в блоке подстраиваться под ширину экрана?

Лучший ответ: Возможно, вам подойдет это: вариант?!

Худший ответ: Подгони размер в vw. Например, font-size: 12vw;
Вопрос: Как запустить explorer (графическую оболочку) на Microsoft Windows Server 2019 Base от Amazon?

Лучший ответ: FoD вам в помощь  -  https://docs.microsoft.com/en-us/windows-server/ge...

Худший ответ: Никак. В этой версии отсутствует графика - это "виндукс", в котором только командная строка. Powershell - Ваше все :)
Вопрос: Можно ли из Сео оптимизатора вырасти в веб разработчика?

Лучший ответ: Отличный ответ от человека, который вдохновил меня на этот путь. 
Надеюсь, поможет и вам. Ответ
p.s. "java script" - пишется вместе

Худший ответ: Пока ты задаешь такие вопросы сотни уже становятся веб-разработчиками. Не теряй время.
Вопрос: Можно ли при объявлении объекта сослаться на другие его поля?

Лучший ответ: Тиражируемое значение в переменную заранее:const value = 1 + 1 * 1;
var a = {
  b: value,
  b1: value
}
Вопрос возник из-за чего: некрасиво как-то в коде выглядит повтор, или не хочется одну строку добавить, как предложил dollar ?  Или есть задача обработки назначаемых данных – видели сеттеры / геттеры?// хочется так? (но нельзя!)
var a = {
  b: 1,
  c: this.b * 10
}

// тогда можно так:
var a = {
  get c() { return this.b * 10; }
}
a.b = 1;

a.c // 10

Худший ответ: Нет
Вопрос: Лучший вариант IDE для разработки на Go для мобильных устройств?

Лучший ответ: Я лучше GoLand ничего не видел, да и андроид студио должна норм с го работать, потому что ядро тоже что и у goland. Вообще в idешках от jetbarins, достаточно обычно где-то в недрах включить поддержку языка, либо скачать плагин для поддержки, и тогда подстветка, автокомплит, автомипорт и проч появится, только инструменты по отладке не изменятся, и будут заточены под специфику ide.
Под xcode сомневаюсь что то есть, но имхо xcode пользоваться, это если больше ничем другим сделать нужное действие нельзя, потому что даже виндовс блокнот лучше чем xcode.

Худший ответ: Android Studio/Jetbrains Goland
Если слабое железо, то на базе специализированных редакторов программистских делать, настроив плагинами
Или LiteIDE использовать.
Лично я использую Jetbrains Goland или FAR или vim (с плагином vim-go) - по ситуации, смотря какое железо или какая операция выполняется над исходным кодом.
Раньше пробовал LiteIDE, но в то время это был не более чем редактор, дополненный функционалом, который есть и у vim-go и прочих. Может, сейчас что-то и изменилось.
Вопрос: Где ошибка в коде C#?

Лучший ответ: Зачастую дебаггер показывает на следующую строку (инструкцию) после проблемной, как в этом случае.
У вас, чтобы всё работало, x и y должны быть равны числу 0, 1 или 2. А Console.Read читает символ, а не число. Т.е. введя 0, вы получите символ '0', что соответствует числу 48. 
Вам нужно обработать ввод, отсечь не правильные символы и преобразовать символы в числа.

Худший ответ: const int FieldWidth = 3;
    const int FieldHeight = 3;

    int[,] array = new int[FieldWidth, FieldHeight];

    //Ввод нуля и последующая проверка на выигрыш.
    public void Enter0()
    {
      int x, y;

      while (!int.TryParse(Console.Read(), out x) || x < 0 || x >= FieldWidth) continue; // Здесь можно обработать неверный ввод.
      while (!int.TryParse(Console.Read(), out y) || y < 0 || y >= FieldHeight) continue; // Здесь можно обработать неверный ввод.

      array[x, y] = 0;
      draw_array();
      if (Check(x, y))
        Player.Win();
    }
И везде в коде тройки замените на константы.
Вопрос: Какую из 3-х моделей мониторов выбрать для Macbook Pro 13" 2014?

Лучший ответ: Лично мне не нравится 2К на 27". На масштабировании 100% - слишком мелко.
На 125-175 - мыльно. На 200% - слишком крупно.
Мой выбор - 4к и масштабирование 200%.
Насчёт 144hz - точно не стоит переплачивать, если монитор "для работы".

Худший ответ: Лично мне не нравится 2К на 27". На масштабировании 100% - слишком мелко.
На 125-175 - мыльно. На 200% - слишком крупно.
Мой выбор - 4к и масштабирование 200%.
Насчёт 144hz - точно не стоит переплачивать, если монитор "для работы".
Вопрос: Python.Импорт в нужное время.Модификация скрипта.Как мне быть?

Лучший ответ: 1) можно перезагрузить модуль: 3.4+ importlib.reload
2) можно запускать скрипт через subprocess с запаковой -> распаковкой (например через pickle)
3) хранить в json/hjson/json5/yaml и т.п.

Худший ответ: 1) можно перезагрузить модуль: 3.4+ importlib.reload
2) можно запускать скрипт через subprocess с запаковой -> распаковкой (например через pickle)
3) хранить в json/hjson/json5/yaml и т.п.
Вопрос: Имею несколько HTML страниц, какой css файл подключать?

Лучший ответ: Оставьте один. Он всё равно кэшируется. Нет никаких проблем иметь все стили в одном файле (у вас же сайт не на 100500 разных страниц по контенту).
Но никто не запрещает хранить общие стили в одном CSS,  но подключать вторые, имеющие отношение к конкретной странице. Либо прописывайте уникальный стиль прямо в теги style на странице.
Нет четких правил - всё зависит от структуры сайта и принципов оптимизации.

Худший ответ: Да, лучше разделить, так проще поддерживать и не нужно будет таскать огромные файлы. Для этого нужно вынести из index.css все стили шапки, футера и других самостоятельных компонентов в отдельные файлы: footer.css, header.css и т.д. Эти файлы импортировать в каждый css файл с помощью "@import" в стилевые файлы для каждой страницы: hone.css, item.css и так далее
Вопрос: Что можно почитать по разработке финтеха?

Лучший ответ: Единственное что из этого доступно в паблике - блокчейн. Нагуглить можно любые статьи, ролики и даже книги. Одним ресурсом тут не обойтись. Что до остального - там надо знать 2 темы; безопасность и гарантированная доставка (при чем exactly one delivery). Можно ещё про транзакции в распределённых системах

Худший ответ: Странно, что никто не посоветовал эту книгу:
https://www.litres.ru/dmitriy-artimovich-17903743/...

По сути то, что я хотел.
Вопрос: Как работать с большими массивами на php?

Лучший ответ: Я думаю, самым разумным решением будет писать эти массивы в базу и сравнивать простым запросом. Именно так в общем случае решается задача "сравнение двух больших массивов данных на РНР." Конкретную же реализацию можно будет предложить только если будет конкретный вопрос, без "может быть " и "например".

Да, память в БД тоже не бесплатная, но тут надо уже определиться - или мы хотим ворочать гигазы варезов, или сидеть на копеечном впс с 500 метрами памяти. Одновременно не получится.

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

Худший ответ: Чтобы не в памяти, можно на диск. Сохранить массив чисел в файл. Для компактности как бинарный файл, по 4 байта на число pack() (если это 32-битные id ВКонтакте вы сравниваете. Facebook id — лонги). Отсортированным. Тот же ВК умеет отдавать список сортированным.  Сохранить так же второй.

Открыть оба файла, считать fread($fh, 4) из каждого по числу: число А, число Б.
А больше Б ? Читаем новый Б.
Б больше А ? Читаем новый А.
Равны?  Ура, это число сохраняем в «пересечение». Читаем новый А и новый Б.
Закончился один из файлов — пересечений больше нет.
Вопрос: Должен ли фронтенд разработчик уметь верстать (css)?

Лучший ответ: Фронт-энд разработчик не умеющий верстать, это как сантехник, не умеющий починить кран. CSS - это наверное самое легкое, что есть во фронт-энд, так что учите его, иначе вы не можете претендовать на его звание. Тем более на full-stack.

Худший ответ: Можно даже js не знать, главное react и nodejs изучить. Извините, не сдержался.
А так вообще не претендую на истину, но мой взгляд таков: фронт обязан уметь верстать, понимать что такое БЭМ нейминг и уметь использовать на практике. Scss pug gulp по вкусу. Был опыт в компании подключили ко мне к вёрстке фронта(я верстальщик). Он написал ну прям достаточное количество отвратной вёрстки, которая не по бэму, а по кайфу(ща сдадим нормально все будет), не предусмотрено если 2 строчки заместо 1 будет. В исходники смотришь там медиазапросы одни сплошные. Прям супер абусфуцировал вёрстку. Прошло уже месяцев 6 вроде. Совсем недавно прекратились правки по его страницам. 
Ну и как это? Недофронтэнд или фронт неверстак? По мне так первый вариант и профнепригодность.
Я не говорю что фронт обязан верстать, я говорю о том что он обязан уметь верстать и делать это хорошо.