Pull to refresh

Comments 20

В Питоне можно даже красивее сделать, if char in brackets.keys() / .values() вместо строковых литералов. Чуть медленнее, но нет дублирования данных.

Dart (правда Stack нужно подключить из репозитория, в стандартной библиотеке нет):

bool isValid(String s) {
  var stack = Stack<String>();
  var brackets = {
    ')': '(',
    ']': '[',
    '}': '{',
  };

  for (var i = 0; i < s.length; i++) {
    if (brackets.values.contains(s[i]))
      stack.push(s[i]);
    else if (brackets.keys.contains(s[i])) {
      if (stack.isEmpty || brackets[s[i]] != stack.pop()) return false;
    }
  }
  return stack.isEmpty;
}

Странно что для питона используется dict а для js используется множественные условия. Хотя и там и там можно писать примерно одинаково (разница в скобках):

function isValid(s) {     
  let stack = [];
  let brackets = {
    ')': '(',
    ']': '[',
    '}': '{'
  }

  for (let char of s) {
    if ('([{'.includes(char)) {
      stack.push(char);
    } else if (')]}'.includes(char)) {
      if (stack.length == 0 || brackets[char] != stack.pop()) {
        return false;
      }
    }
  }

  return stack.length == 0;
}

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

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

Мне почему-то казалось, что в алгоритмическом интервью на обратной стороне провода должен быть тоже какой-то разработчик. И в моем понимании любой разработчик способен понять псевдокод. Также мне казалось, что помимо компилируется\не компилируется и проходит ли оно тест-кейсы на таких интервью в основном смотрят на "ход мысли" кандидата.

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

Спасибо за вопрос. Есть 2 вида:
- С автоматизированной системой: это обычно скрининг или скорее пре-скрининг
- С человеком: полное интервью или так же скрининг, зависит от компании

При интервью с человеком - это почти наверняка будет разработчик который умеет читать код. Но код должен быть кодом, иначе он не сможет догадаться можете ли вы писать код хотя бы на 1 языке.
Ход мысли обязателен, но и задача должна быть закончена. Иначе не сходится

Разве другие этапы интервью не показывают ли владение человека каким-либо языком программирования? Ну типа live coding какой-нибудь, или тестовое задание. Да и вообще странно, человек идет в MAANG и не может показать публичный код, который он написал? Такое бывает? Я не то что в MAANG не работал, я даже в Яндекс и Тинькофф ни разу не собеседоваля, но могу столько кода на своем гитхабе показать - учитаешься.

Раз уж тут конкурс на самое короткое решение, вот еще один плюсовый вариант

bool isValid(string s) {
    stack<char> q;
    string u = ")(][}{";
    for (char c : s) {
        auto p = u.find(c);
        if (p & 1) {
            q.push(u[p - 1]);
        } else if (q.empty() || q.top() != c) {
            return false;
        } else {
            q.pop();
        }
    }
    return q.empty();
}

По-моему тут не хватает проверки на то, является ли p одной из закрывающих скобочек

А зачем такая доп проверка? По условиям задачи на leetcode нам гарантируется, что строка состоит только из символом '()[]{}'. Так что достаточно только проверить что скобка открывающаяся, если же провалились ниже в цепочке if то это уже точно закрывающаяся скобка.

То есть что бы устроиться на работу по профилю нужно освоить технологию не по профилю?

К примеру, занимаюсь я .NET и ничего кроме .NET (и порой TS/JS ни нужно), но что бы устроиться на работу, вместо повышения навыков в основной специализации, нужно распыляться на Питон, Го или ещё что-нить далёкое…

Это только мне данная ситуация кажется кринжовой?
PS: к автору никаких претензий не имею, а вот ситуация с наймом очень неоднозначная.

Это ситуация с наймом в большие компании, где поток кандидатов в сотни тысяч человек в год, стандартизация итп. К тому же в МААНГах обычно нет такой привязки к языку/стеку, люди осваивают нужные технологии на ходу. А раньше вон вообще всякие Брейн тизеры давали, типа почему люки круглые, так что сейчас ещё нормально. Ну и всегда есть вариант пойти в компании поменьше/попроще, где будет важен именно ваш стек, коммиты в гитхаб итп.

Например - в МААНГах не нужны ".NET разработчики" или "Java разработчики", а скорее бэкенд-девелоперы в целом, которые могут переучиться на то что будет нужно для решения конкретных проблем

UFO just landed and posted this here

То есть, в мире полно уникомов способных освоить язык и полноценный фреймворк "условно" за испытательный срок? Я очень сомневаюсь, что МААНГ собрал 100000 людей способных на такое быстрое обучение.

Я за свою небольшую практику уже насмотрелся на "велосипеды" в кодовых базах очень обеспеченных копаний. Порой было стойкое ощущение, что разработчики начали работать с .NET только на этом проекте. При этом, чтобы писать высокопроизводительный код нужно знать особенности языка и тонкости фреймворка.

Конечно же я не отрицаю возможность переда между Java Spring - C# .NET - Kotlin - Dart, эти языки очень близки. Программисты этим занимаются уже давно и переходят вполне успешно, но достичь тот же уровень сеньорности потребуется явно не пара месяцев обучения.

Дофига кода пишет консалтинг. Когда нанимают человек проходит собес на одном языке, а потом его назначают на проект к клиенту, который использует другой. И это сплошь и рядом в индустрии. Как ты думаешь - реально ли знать условно 5 языков на достаточно высоком уровне? Наверное, есть такие уникумы, но многие хорошо если 1-2 знают хорошо.

Ну вообще профиль впечатляющий - интересно, сколько у вас заняло времени 350+ задач прорешать?

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

Sign up to leave a comment.

Articles