О чём эта статья

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

Это история о моем опыте собеседования в Амазоне, почему мне в целом не понравилось по сравнению с другими FAANG. Так же тут будут ответы на “а что конкретно спрашивали на интервью, какие были задачки, что на систем дизайне было”, потому что мне не дали подписать NDA, все с пруфами, скринами и прочее.

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

Начало, предложение от Amazon

В один прекрасный день 6 сентября, мне пришло такой сообщение в Линкедин.

Я согласился на собеседование. В то время, собеседование в Амазон состояло из трех этапов: 

  1. Онлайн задачки без интервювера

  2. Интервью с человеком 1 час

  3. Последний раунд интервью, который состоит из 5 интервью по часу каждый.

 

Интервью в Амазоне

С начала понимания, что я буду собеседоваться в Амазоне, я сразу начал задротить литкод, потому что это наиболее слабая моя сторона по части этих интервью, как мне казалось, по крайней мере. Шло не очень хорошо, честно признаться, но понемногу шло.

Все интервью проводились онлайн из-за пандемии, то есть на последний раунд не надо ехать к ним на офис.

Теперь к первому этапу.

Первый этап (done)

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

Уж простите за такие скрины, я тогда думал, что АВС может как-то узнать, что я заскринил. Далее будут нормальные.

Первая:

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

Второй Этап (first try)

Я думал, что если не решил все задачи – то точно не берут дальше, но тут приходит такой имейл:

Я немного удивился, но порадовался. 

Спустя некоторое время, мне назначили второй этап интервью - час с интервьюером. И как я понял по началу, АВС очень любит задавать своими вопросы по лидершип принципам. Я погуглил немного, и понял, что это интервью будет по лидершип принципам, ну и возможно какая-то задачка из литкода.

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

Пришло время собеседования, было оно уже где-то в начале октября. Мы начали разговаривать с интервьюером, он говорит, о чем будет интервью, и тут я понимаю, что готовился вообще не в ту сторону. 

Из его слов я узнаю, что интервью будет на поведенческие вопросы (ни одно интервью на Амазоне не бывает без них) и на знание Линукса и нетворков. Я, как заядлый дотнетчик, юзер виндовса со своих 4 лет, имел очень небольшой опыт Линукса когда нужно было что-то делать на он-премис тачках, хотя по нетворкам и был некоторый опыт, и то теоретический, из книг.

То интервью я не записал на видео, но записал пару вопросов, если кому интересно:

  1. Как удалить файл на линуксе

  2. Если вы удалили файл, но видите, что память не освобождена - что делать?

  3. Вы начали понимать, что у вас на машине нет интернета - что будете делать?

  4. Как в линуксе достать файл с наибольшим весом?

  5. Как передать аут из одной команды в другую в Линуксе

  6. У вас на сервере закончилась память на диске, как будете траблшутить?

  7. В одном регионе задержка запросов увеличилась, в других - все окей, как будем фиксить и траблшутить?

Ну и одно запомнил поведенческое: Расскажите про ситуацию, когда у вас была не комфортная таска, и как вы это преодолели?

Спустя пару дней - мне пришел ответ, что я не прошел это интервью.

Но, потом пришел еще один имейл:

И, конечно же, я согласился. Это топ 1 карьерная амбиция - побывать на ФААНГах.

Второй этап (second try, done)

В этот раз, было такое же собеседование, но теперь интервьюер просто задавал поведенческие вопросы по типу: «расскажите мне о ситуации, когда у вас было недержание, а у вашего коллеги запор, как вы решили ваш конфликт, и какой импакт это дало на проект». Само собой, я утрирую, но за все собеседования такого типа вопросов было задано около 40-50 (смотрите 3 этап), как по мне - это уже перебор.

К счастью, мне дали позитивный фидбек и я перешел в 3 этап.

Подготовка, Литкод, книги

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

Если коротко, я решил 114 задач на Литкоде, даже записал этот момент перед интервью.

Прочитал “System Design Interview” которая не очень мне понравилась, и перечитал “Designing data-intensive applications” Мартина, она как всегда - великолепна.

Третий этап (reject)

Фидбек с того интервью Амазон дает по телефону лично, что немного меня удивило, и я буду рассказывать про все 5 интервью с позиции анализа фидбека. 

Систем дизайн

Первое интервью было на систем дизайн, мне оно понравилось, было не очень много поведенческих вопросов (3-4) и адекватная, на мой взгляд, задача, и адекватное отношение интервьюера. 

Потом я нашел его в Линкедине, и у него там 14 лет на IBM и еще довольно много на АВС, в общем, для меня это было честью и удовольствием собеседоваться с таким человеком и тем более в вопросах архитектуры.

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

Вот мой солюшн, очевидно, он не идеален, но вроде бы в требования вписывается:

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

Первый кодинг

Было где-то 5-6 поведенческих вопросов и тривиальная задача: найдите файл с заданным расширением и с заданным размером.

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

Мой солюшн:

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

Первое поведенческое интервью

Да-да, целый час мне задавали вопросы по типу: “расскажите мне о ситуации, когда у вас было недержание, а у вашего коллеги запор, как вы решили ваш конфликт, и какой импакт это дало на проект”. И их за один час задают где-то  8-13. 

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

Но, тем не менее, это интервью я тоже прошел вроде как окей.

Второй кодинг, или как меня опустили

С самого начала, человек, который проводил интервью, был не очень то радостным. Я спросил, как вы (простой этикет), и мне ответили что-то в роде “как всегда, ни на что не хватает времени, но держусь”.

У меня был час, и с самого начала интервью последовал первый вопрос, как мне тогда объяснили умные люди, это был вопрос на ООП, но я не мог понять, что от меня требуется и просто задавал уточняющие вопросы на протяжении минут 20-ти в попытках это понять. Меня сбивало с толку, что такое локер, потому что я понятия не имел ничего об этом домене, зачем нам айдишки, и что в принципе от меня тут требуется.

В процессе моих вопросов, по интонации и ответах мне казалось, что он просто параллельно делает что-то по работе.

Где-то на 20-ой минуте меня внезапно останавливают: “unfortunately we run out of time”. И начинаются 3-4 поведенческих вопросов с уточнениями.

Теперь самое интересное. За 20 минут до интервью мне дают еще одну задачу. 

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

Зная, что ту простую с Литкода я решил где-то за 40 может 60 минут, и, видя, что до завершения интервью осталось 20 минут, я начал переживать, и так и не додумался до солюшна вообще. 

Это то, на чем я закончил (это неверный солюшн, если что), меня попросили написать комплексити хотя бы того, что я написал, но, даже не дослушав, что я говорю, оборвали тем же “unfortunately we run out of time”.

Будем честны, если это то, что ожидалось от меня, то я явно не тяну, потому что это не мой уровень додуматься до такой задачи за 20 минут (задавая уточняющие вопросы, рассказывая свой солюшн, написав его и сделав мемори и тайм комплексити анализ).

Второе поведенческое интервью

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

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

Фидбек

Фидбек по последнему раунду был мне передан по телефону, к несчастью я не смогу его вам пруфнуть, но если коротко он был таким: ты классный чувак, превысил ожидания на систем дизайне, и очень плохо сделал кодинг сессии, поэтому нет, приходи к нам через 12 месяцев.

Выводы

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

Есть даже такая шутка, что на весь Амазон, для каждого человека можно найти интервью луп (5 людей) которые его бы не взяли. И это вроде как не только про Амазон. 

Все, что я здесь описал - я также рассказал в своём видео, если кто не хочет читать.

Спасибо за внимание, жду фидбеков!

Комментарии (160)


  1. catanfa
    18.01.2022 17:57
    +1

    Спасибо, было интересно читать!

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


    1. andreyka26 Автор
      18.01.2022 18:31

      да, по крайней мере можно было джс и дотнет, это те - которые использую я, в зависимости от задачи.
      Среда их только, этот livecode.amazon, да похоже на блокнот, только синтаксис подсвечивается, а так - больше ничего там нет, на счет автокомплита не помню - вроде не было)
      Спасибо за комментарий))


      1. maxdanify
        18.01.2022 21:18

        Да это обычный блокнот с подсветкой. Компиляцией занимается интервьюер.


  1. rpc1
    18.01.2022 19:39
    +1

    Повезло тебе, я проходил onsite интервью 2 года назад, мне фидбэк не дали, сказали что у них так не принято

    Было где-то 5-6 поведенческих вопросов и тривиальная задача: найдите файл с заданным расширением и с заданным размером.

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

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


    1. andreyka26 Автор
      18.01.2022 20:36

      как понимаю, тоже реджект?


      1. rpc1
        18.01.2022 21:48
        +1

        Да, но хотелось бы знать из-за чего. Live coding у нас был маркером на ватмане ) так что с редактором вам повезло еще )


    1. n2dt4qd2wg9b
      19.01.2022 03:15

      Фидбэк не дают по legal причинам. Чтобы ты потом не засудил.


      1. rpc1
        19.01.2022 09:28

        Вот я удивился, почему другим дали, вероятно из-за локаций, я собеседовался в США, а автор в Ирландию


  1. K36
    18.01.2022 20:17
    +9

    Зачем им все эти "лидершип принципы"?


    1. andreyka26 Автор
      18.01.2022 20:33
      +5

      думаю стебутся ребята)


      1. n2dt4qd2wg9b
        19.01.2022 01:23
        +8

        Если завалишь ЛП то каким бы ты не был спецом - тебя не возьмут. Говорю как работник. И, самое главное, тебе об этом не скажут.

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

        Так что не игнорируй S.T.A.R и придумывай кучу историй как ты develop-ил the best, insist-ил на высоких стандартах и obsess-ил над клиентами и далее по списку


        1. andreyka26 Автор
          19.01.2022 01:24
          +1

          дык по стар и делал) само собой) просто кейсы закончились, но вобщем я знаю, чтоне возьмут, как по мне ИМХО это через чур. За все этапы у меня спросили около 50 таких вопросов. то есть это 50 кейсов... У меня опыта 3 года, у них было мое СV.


          1. n2dt4qd2wg9b
            19.01.2022 02:47

            Дело в том, что один кейс можно натянуть на несколько ЛП и этим нужно пользоваться. Главное чтобы один и тот же кейс не повторялся у одного и того же интервьювера. И вполне окей если один и тот же кейс с нужным уклоном использовался бы дважды у разных интервьюверов для разных ЛП с правильным разъяснением. По крайней мере я так делал и прокатило. Завал ЛП - не найм 100%. Нужно быть убедительным, когда чешешь им по ЛП. 3 года - не оправдание, в Сев. Ам. три года - это вечность.


            1. andreyka26 Автор
              20.01.2022 03:29
              +1

              Я все равно больше приверженец подхода "а давайте поговорим про ваш опыт" и все, без этих постанов. Там свои выводы на счет лидершипов можно сделать)


              1. n2dt4qd2wg9b
                21.01.2022 03:53

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

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


    1. nochkin
      18.01.2022 22:23
      +2

      Оценить пуленепробиваемость и отказоустойчивость кандидата. Но это всего лишь моё мнение. Что они на самом деле хотят могут не знать даже они.


    1. Stas911
      18.01.2022 23:11
      +3

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


      1. andreyka26 Автор
        19.01.2022 01:26

        Дак, можно же начать придумывать всякое)
        Если честно, были кейсы, которые не совсем шли под прям "кейс" и пришлось немного приукрасить и т.д. В моем случае - это было неизбежно, потому что, если по честному, я бы из всех ответил бы может на половину, а у них не принимается "I didn't have such a situation", я пробовал.


        1. maxdanify
          19.01.2022 01:34

          "I didn't have such a situation" вообще вроде валидный вариант, это говорил мне их HR, и я его использовал на пару вопросов. Ну иначе это бессмысленно, как вы сами сказали, придется придумывать сказку.


          1. andreyka26 Автор
            19.01.2022 03:21

            Ну мне перефразировали тот же вопрос другими словами, сказав, ну вот а такой вопросик, я делал еще раз, и мне опять пепрефразировали)


        1. n2dt4qd2wg9b
          19.01.2022 02:54

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


          1. andreyka26 Автор
            19.01.2022 03:23

            да, как вариант) Так я же говорю, что немного неэфективно получается, 50 вопросов за все сесии, ибо кандидат просто выкручивается и новых кейсов не выдает, и интервьверу потом это все собирать и смотреть не обманули ли его)


        1. Stas911
          19.01.2022 03:23
          +2

          Придумать от начала до конца непротиворечивый кейс не так просто, как кажется (особенно для bar raiser с сотнями собесов за плечами)


          1. n2dt4qd2wg9b
            21.01.2022 03:59

            Бар рейзеры тоже люди с их недостатками. И реально бар увы давно не рейзится в найме. Мне ржачно когда на MGHD говорят, что следующий кандидат должен быть на 50% лучше чем вся существующая команда. Написано красиво, а по факту я наблюдаю непотичных бар рейзеров, которые нанимают своих, которые вообще не подходят для работы... Но колесо крутится - лавэшка мутится, а за ошибки в найме никто не несет ответственности. Очень много тупых проблем в амазоне тупо забрасывается большим количеством бабла, как бы это не фругально не звучало :)


    1. Rub_paul
      19.01.2022 19:01

      Чисто по-приколу


  1. maxdanify
    18.01.2022 20:55
    +5

    Могу тоже добавить от себя, так как этим летом собеседовался в AWS Европа. Все также, в начале 2 задачки на HackerRank уровня medium/hard. Потом phone screen interview одно.

    Но между ними можно посетить онлайн meeting с HR, где расскажут, что будет на вопросах по leadership principles, пришлют варианты вопросов по ним. Вообще этих вопросов, да, будет супер много, и они будут примерно отнимать 30 минуты в каждом часовом интервью. Но к ним очень легко подготовиться, я, где-то в течение 2 часов, просто выписал себе в тетрадь все ответы с примерами из жизни (они даже сами подчеркивают, что ответ должен быть с примером из вашей практики) и этого хватило, на последних интервью я просто даже "читал" по бумажке (это не запрещено).

    Ну и после phone screen интервью было 4 подряд online интервью в Amazon Chime, вместо on-site. Из leetcode была только одна задача (что-то вроде пройти конем по шахматной доске из одной точки в другую за минимальное число). Следующая задача была сформулирована как написать игру, ссылку на которую мне скинули (это был sokoban, как я потом узнал). И две другие были design interview: спроектировать сервис Amazon Prime Video, и какая-то задачка на управление светофорами (я так и не понял, что там от меня требовалось, но почему-то именно ее я прошёл :)

    Вообщем один из интервьюеров (задачка с игрой sokoban) сказал нет, поэтому я не прошёл. Мне сказали, чтобы пройти нужно получить да от всех. Фидбек есть, но формальный, они не ответили мне на вопрос почему нет, а только где. То есть сказали, что прошёл все leadership и решил 3 из 4 задач.

    С написанием игры конечно было сложнее всего понять, что от меня требуется. В итоге пришли к тому что, я должен написать модель игры с перемещением кубиков по карте персонажем. Ну и позже, когда поиграл немного понял, что неправильно понял логику перемещения кубиков ????

    Главное в design interview подготовить среду в которой будет удобно рисовать. В идеале, наверное, стилусом на планшете.


    1. andreyka26 Автор
      18.01.2022 21:49

      Это интересно. Прям игру писали, сколько времени дали на это? Или просто нужно было накидать классецы, в плане что с чем будет комуницировать?


      1. maxdanify
        18.01.2022 22:00
        +1

        На все задачи было по 30 минут примерно, потому что в начале leadership bullshit :) я так понял, что нужно было понять какую часть логики писать, может даже определить самому, ну и дальше как успеешь. Понятно, что за 30 минут много не напишешь. Но задача была сформулирована именно в одно предложение, написать игру по ссылке. Дальше в процессе обсуждаешь.

        Я помню, вроде начал с классов модели, которая хранит карту с объектами. И класса персонажа с методом move, который пересчитывает состояние карты в зависимости от действия игрока.

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


        1. andreyka26 Автор
          19.01.2022 01:27

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


    1. khebul
      20.01.2022 03:30
      +1

      На какой уровень вы собеседовались?

      В конце прошлого года собеседовался на Senior SDE (L6), также был HackerRank medium + hard, при этом hard я решил только частично. Тоже был phone screen с LP + медиум задачкой. Однако финальным этапом было 5 собеседований. 3 из них с инженерами.

      Интервью с инженерами включали в себя Leadership Principles и задачку на программирование уровня медиум: простой DFS на графе, задачка на MaxHeap, задачка на проход по массиву с использованием двух указателей. На задачку оставалось 20-30 минут. Следом интервью на System Design + LP, и еще одно интервью целиком на LP.

      Фидбек от моих собеседований был таким: meets the bar для программирования, bar raiser для LP, does not meet the bar для System design-а. В принципе справедливо, я меньше всего готовился к систем дизайну, и это сказалось. Не помогло и то, что последнее собеседование по систем дизайну было поздно вечером.


      1. andreyka26 Автор
        20.01.2022 03:30

        Да на простого инженера вроде как)


    1. n2dt4qd2wg9b
      21.01.2022 04:25

      Оно и так и не так. Если ставят лайк и дизлайк - то один дизлайк и ты не нанят.

      Но если ты одного интервьювера удовлетворил суперски - он может поставить суперлайк и тогда ты нанят.

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


  1. Vilaine
    18.01.2022 21:48
    +1

    У меня почему-то было всё проще, но отказали с такой формулировкой:

    I can’t give you specifics but it was a mix and it was mostly on the LP’s. There were feedback on not clarifying questions and other things. You did not do so bad but just overall they felt it was not bar raising.
    Это, конечно, лучше, чем у некоторых компаний «у нас нет для вас фидбэка».


    1. nochkin
      18.01.2022 22:28
      +3

      У меня был забавный вариант когда я шёл на позицию разработчика мобильного софта, а меня вдруг стали интервировать на ДевОпса. Я в теме что-то понимаю, но не достаточно для уровня интервью в FAANG'е. И, конечно, меня утопили и на этой почве просто тупо забанили на какие-то либо попытки в будущем.


      1. n2dt4qd2wg9b
        19.01.2022 02:52

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


        1. nochkin
          19.01.2022 03:18

          Всё верно. К счастью, у меня были внутренние рычаги, что бы это исправить. Но это заняло уйму времени и я к тому времени потерял к этому интерес.


          1. andreyka26 Автор
            19.01.2022 03:23

            хмм, интересно, что за рычаги?


            1. nochkin
              19.01.2022 04:00

              Просто хорошие контакты внутри компании.


          1. n2dt4qd2wg9b
            21.01.2022 04:01

            Вы dodge that bullet :)


            1. nochkin
              21.01.2022 04:04

              Можно и так сказать. В любом случае я получил интересный опыт и не жалею.


        1. nomn
          20.01.2022 09:58

          т.е. будет приходить отказ буквально на первом шаге отправки резюме?


          1. nochkin
            20.01.2022 17:06

            Обычно просто игнорят.


      1. nomn
        20.01.2022 09:58
        +1

        а как вы узнали про бан?


        1. nochkin
          20.01.2022 17:05

          Мне рассказал свой человек, кто там уже работал в то время.


  1. VFaland
    18.01.2022 21:50
    +5

    Лидершип принципы офигенская штука. Реально работает. Сегодня всяких технологий и языков программирования дочерта, все меняется каждый день, и Амазон просто хочет брать людей которые сами разберутся какую технологию взять, сами все освоят и доведут проект до конца, по пути решая все проблемы какие надо, и с софтом и с хардом и с людьми и с процессами. Ну при этом хочет убедиться что у людей правильные приоритеты.


    1. andreyka26 Автор
      19.01.2022 01:30
      +1

      Да, я понимаю, но есть моменты,когда они хотят от тебя того, что ты дать не можешь, и твое "I didn't have such a situation" их не устраивает, они просто повторяют тот же вопрос другими предложениями, и форсят что-то отвечать, и вот тут, как по мне, процесс идет не так, как должен.


      1. nochkin
        19.01.2022 03:22

        Их цель не узнать была ли такая ситуация или нет, а понять как кандидат повёл бы себя в этом случае.

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

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


    1. n2dt4qd2wg9b
      19.01.2022 02:57
      +5

      Кстати, когда амазон хочет кого-то уволить, а они имеют стэк-рэнкинг и делают это планово - тебя, как работника, обвиняют в неследовании конкретным ЛП. Так что, да, офигенская штука в том числе чтобы увольнять... Ну и абьюзить


      1. nochkin
        19.01.2022 03:26
        +2

        Хорошая фишка -- согласен. Но это можно использовать и себе на руку.

        Плановые увольнения идут не личные, а просто, например, 5%. То есть, надо как в том анекдоте про голодного тигра, который гонится за тобой: "не надо бежать быстрее тигра, достаточно бежать быстрее соседа".

        То есть, вся проблема сводится только к тому, что бы понять критерии увольнения и не более. И таким образом можно сделать так, что бы тебя было менее удобно увольнять, чем соседа.


        1. n2dt4qd2wg9b
          19.01.2022 06:34
          +1

          Я много видел бежавших медленнее всех, но в хороших отношениях с менеджером, и они оставались. А также видел действительно продуктивных и умных инженеров, которые не играли в "коричневый носик" и оказывались за бортом. Да. когда ты по URA за бортом - то пожизненно забанен для найма в амазон и их подконтрольные компании.

          Так что увольнения личные.


          1. nochkin
            19.01.2022 06:42
            -1

            В "хороших отношениях" это как раз один из способов бежать быстрее других.

            Бег -- это не только знания.

            Личные увольнения тоже бывают, но я про обычные плановые увольнения когда начальству надо просто уволить 5% и всё.


            1. n2dt4qd2wg9b
              19.01.2022 07:19
              +2

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

              На виду у меня была команда, которая приносила результаты. Потом туда пришел новый менеджер-армянин и начал тащить своих армян, а не армян - ставить на план каждый год. Вот уже третий год подряд. И пофиг сколько тикетов или сев2 ты закрыл. Ты просто не такой, так как не свой, и пойдешь на улицу...

              Кстати до армянина был неугодный менеджер, которого топы поставили на план и уже были готовы на пайвот выставить, но он вовремя получил VP-approval и перешел в другую команду...


              1. nochkin
                19.01.2022 07:21

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


                1. n2dt4qd2wg9b
                  19.01.2022 22:51

                  Так URA квота и есть такова? Или вы о реоганизационных увольнениях?


                  1. nochkin
                    19.01.2022 23:07

                    Я даже не знаю что такое "URA квота" (интернет что-то про уран показывает, но это явно на другую тему).

                    Я про запланированные реорганизационные увольнения. Когда просто надо сократить какой-то процент людей ради сокращения бюджета и такого плана целей.


                    1. Stas911
                      20.01.2022 00:23

                      Часто же цель наоборот - развитие бизнеса и расширение отдельных направлений


                      1. nochkin
                        20.01.2022 00:30

                        Всё верно. Но есть много разных способов достижения этой цели. И многие способы не конфликтуют друг с другом никак.

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


                      1. Stas911
                        20.01.2022 00:34

                        Дык в СевАмерике и так мало кто больше 2-3 лет на одном месте работает. Зачем увольнять, если достаточно пару раз прокатить с промо и pay rise и сами уйдут?


                      1. nochkin
                        20.01.2022 00:38

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

                        Есть конторы посередине между гос и быстрыми стартапами, где среднее время на одном месте можно варьироваться от 2-3 лет до десятков лет.

                        Более молодные обычно склонны к частому смену места работы, а более возрастные -- наоборот.


                    1. n2dt4qd2wg9b
                      21.01.2022 04:03
                      +1

                      Потому что гугел снюхался с амазоном и не показывает ничего на эту тему... А вот если поискать в яндексе :)

                      https://yandex.ru/search/?text=amazon+unregretted+attirition+quota


                      1. nochkin
                        21.01.2022 04:11

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

                        Как в том анекдоте про неудачников.


      1. Stas911
        19.01.2022 03:28

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


        1. n2dt4qd2wg9b
          19.01.2022 06:30
          +5

          Именно попытка внутреннего перевода ставит тебя в focus и затем PIP.

          Когда ты апплаишься на внутреннем портале - твой менеджер сразу получает имел: ахтунг, раб пытается сбежать с галеры. И 3/4 менеджеров ставят его на план, а на плане ты не имеешь права менять команды без VP аппрувала


          1. Stas911
            19.01.2022 17:39

            Поэтому никто там никогда и не апплаится в здравом уме, а сперва напрямую контачат с hiring manager и делают shadow loops и только потом, если все ок, ставят всех в известность.


            1. n2dt4qd2wg9b
              19.01.2022 22:51

              Да, именно так...


          1. andreyka26 Автор
            20.01.2022 03:34

            это только в авс так? я в принципе слышал, что там плохое отношение к работникам


            1. VFaland
              20.01.2022 03:44
              +1

              Фигня какая то. У нас народ туда сюда постоянно мигрирует между командами, отделами и направлениями. И простые чуваки, и топовые инженеры. Никого ни на какой пип не ставят. Амазон большой, наводите справки по конкретному направлению и менеджерам. Я год в в AWS EFS, уходить не собираюсь, тут все отлично.


              1. n2dt4qd2wg9b
                21.01.2022 04:06

                AWS он большой, и это зависит от менеджера. Есть нормальные, есть не нормальные. Зайдите что-ли на teamblind.com и зарегайтесь с корп имейлом. Прозреете так сказать...

                Пип при трансфере - видел своими глазами не единожды. Причем ты ТТ и тут в фокусе :)


      1. VFaland
        19.01.2022 17:48

        Это да, как и любым инструментом - можно пользоваться по разному, и молотком можно гвозди забивать а можно пальцы отбивать. Так-то все равно все сводится к человескому фактору - и при устройстве надо пристально интервьюировать своего будущего менеджера перед принятием оффера (а не мудак ли он?), и после устройства уделять много внимания выстраиванию отношений. Это часть одинаковая в любой компании.


        1. n2dt4qd2wg9b
          19.01.2022 22:52

          А потом приходит новый менеджер, и ты попал :)


  1. nochkin
    18.01.2022 22:25
    +5

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

    Там даже на скрине немного про это написано. Если интересно, то можно больше узнать по ключевым словам "Amazon Locker".


    1. ZhilkinSerg
      18.01.2022 23:16
      +10

      Постаматы


      1. nochkin
        19.01.2022 00:15

        Да, точно. Оно. Спасибо за правильное название.


    1. andreyka26 Автор
      19.01.2022 01:29

      спасибо)


    1. LuggerMan
      19.01.2022 14:25
      -1

      Locker — это шкафчик с замком. Не только для доставки


      1. nochkin
        19.01.2022 17:09
        +1

        Конечно, не только. Ещё есть полка с замком с таким же названием. Есть устройство, которое закрывает что-либо. Наверняка, есть ещё варианты.

        Но в статье было про конкретный тип от Amazon'а для доставки посылок и не более.


        1. wataru
          19.01.2022 17:30

          Ну там же по контексту понятно. Замените locker на "фигня", переведите все остальное и станет ясно, что locker — это какой-то ящик.


          1. nochkin
            19.01.2022 17:34
            +1

            Как это противоречит с моим начальным ответом?


            1. wataru
              19.01.2022 17:36
              +1

              Никак, невнимательно прочитал ваш комментарий, извините.


              1. nochkin
                19.01.2022 17:38

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


  1. datt
    18.01.2022 23:14

    Очень много информации по 5 часовому интервью для разработчиков и ничего для системных инженеров. Вообще без понятия, что там будет кроме вопросов по leadership principles


    1. nochkin
      19.01.2022 00:18
      +1

      У меня как раз были именно такие (хотя, я шёл на разработчика). Спрашивали про файловую систему на уровне inodes, некоторые глубокие особенности Linux'а (обычный человек за ними лезет в поисковик, так как это надо очень уж редко) и несколько команд общего назначения. С командами, хотя бы, легко, а вот остальное уже как повезёт.


    1. Stas911
      19.01.2022 03:29

      Системный инженер - это кто по-английски? Чем занимается?


      1. Timnet
        19.01.2022 06:06

        Возможно CTO (Chief technical officer), главный инженер по нашему.


        1. n2dt4qd2wg9b
          19.01.2022 06:29
          +2

          Werner Vogels там один CTO.


      1. datt
        19.01.2022 07:28
        +1

        Systems engineer.

        Грубо говоря, "продвинутый администратор". Планированние/установка/настройка серверов, гипервизоров, операционных систем, сетевого оборудования (датацентровые свитчи, роутеры, лоад балансеры), систем хранения данных и т.д. и т.п. и траблшутинг. Считай с нуля спроектировать, поднять и настроить почти всю инфраструктуру. Зачастую это инженеры, работающие в интеграторах или администраторы с большим опытом. Более продвинутые больше проектированием занимаются и меньше руками работают - это системные архитекторы.


    1. Amet13
      20.01.2022 16:15

      На Sysdev Engineer спрашивают такое (последний этап):

      • System Design (пример, как бы ты проектировал сервис конвертации текста в голос)

      • Linux Internal

      • Coding (распарсить какой-нибудь CSV на любом удобном языке; перемножить значения в массиве, все кроме текущего)

      • Behavioral Interview (почти на каждом собеседовании)

      На первом этапе кодинг на 2 часа, задачки из разряда:

      • Надо в текст разбить на предложения и найти в каком предложении больше всего слов и вернуть это число

      • Есть выхлоп по факту ls -l, нужно для файлов с атрибутом исполняемости, размером меньше N и созданные юзером admin, вернуть самую старую дату из файлов которые подходят под эти критерии


    1. Vrenskiy
      21.01.2022 10:09

      А оно кому-то инитересно будет?


  1. Tuxman
    18.01.2022 23:34

    потому что мне не дали подписать NDA, все с пруфами, скринами и прочее.

    Теперь кого-то уволят из Амазона. Все общение с FAANG всегда начинается с подписания NDA.

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


    1. OrangeCrusty
      18.01.2022 23:38
      +1

      на каких форумах?


    1. andreyka26 Автор
      19.01.2022 01:32
      +1

      не было НДА нигде, никто не шарил никаких документов и прочего, у меня есть все переписки, имейлы и т.д. + я все замазал как надо)


    1. n2dt4qd2wg9b
      19.01.2022 02:58

      Да, ранее перед онсайтом так и было, слали НДА :)


  1. Tuxman
    18.01.2022 23:55
    +9

    Это история о моем опыте собеседования в Амазоне

    Собеседование обычно происходит в обе стороны, т.е. не только вас, но и вы их. Надюсь, вы спросили, куда делся целиком предыдущий тим? ;-) Все резко выгорели? Ну ок, вы как раз та самая лампочка, которую вкручивают, взаместа выгоровшей.

    Если без шуток, перед менеджерами в Амазоне ставят цель сделать проект лучше уволить 10% подчинённых в год. Далее, есть два варианта развития событий - если вас взять на работу, такого классного, то придётся кого-то потом уводить "из своих"; или вариант, что лучше нанять вас слабого и потом уволить через полгода "hire to fire", сохранив свой текущий коллектив.

    А там, где целиком коллективы уходят выгорая, там всё просто - у всех Амазоновцев зарплата одинаковая и равна 160тыс в год, но переменная величина - это сток, который падает неравномерно, как во всех остальных хайтек компаниях, а больше на конец 4х-летнего периода. Далее технология проста, включается соковыжималка, и начинаешь работать усиленно, и но потом сдаёшься не дождавшись стоков, или досиживаешь.. но доходят не многие.


    1. maxdanify
      19.01.2022 01:22
      +1

      Я так думаю это верно для Америки или UK, а вот мне интересно как они проворачивают эту схему, например, в Германии? У них, вроде есть тама пара офисов.


    1. andreyka26 Автор
      19.01.2022 01:33

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


    1. n2dt4qd2wg9b
      19.01.2022 03:12
      +3

      Хех, 100% подтверждаю, только за последний год URA target была ~6%. Это идея самого безоса (умышленно с маленькой буквы). Ну и great resignation случилась. Во всем мире скаканула инфляция и другие конторы, чтобы привлечь таланты среагировали моментально в плане подъема компенсации, а вот Beth Galetti (из S-team амазона) не среагировала и народ стал уходить пачками из потогонки на более интересные места. Вот и не брезгуют визовыми рабочими. В Ирландии у них крупный ДЦ и офис с сетевиками и разработчиками....

      Кстати да, base cap 160k недавно убрали


      1. andreyka26 Автор
        20.01.2022 03:37

        Извините, что значит URA ?


        1. n2dt4qd2wg9b
          21.01.2022 04:18
          +2

          UnRegretted Attirition. Это те, кого нам не жалко потерять.

          Дело в том, что каждый менеджер в амазоне имеет метрики, и есть понятие Regretted Attirition - это когда хорошо работающий, продуктивный работник с высоким рейтингом в системе приходит завтра и говорит - я ушёл вчера. Менеджеру такой расклад - бобо, потому что не доглядел, не сделал работника счастливым, не подкинул денег, не сделал проактивный dive and save. И т.п.

          Но, есть и метрика по UnRegretted Attirition, и если ты её заваливаешь - то ты хреново выполняешь свою работу и неправильно делаешь талант менеджмент. А именно не идентифицируешь плохих работников и не выставляешь их на мороз.

          По каждй организации есть квота в процентах, сколько нужно выставлять на мороз, в этом году это около 6%. Потому на Talent Review and Calibration решается кто идёт на улицу и этих людей выводят на улицу давно отточенным механизмом.

          А что делать когда хороший парень собрался уходить? И имел глупость сказать о намерениях перед тем, как выслать письменное увольнение? Ну некоторые менеджеры втихаря ставят их на focus план и при увольнении менеджер не получает боль за RA получает значёк за URA а работник сам того не подозревая - пожизненный бан на последующее возращение в компанию. И если раньше rehire eligibility можно было узнать звонком в ERC, то теперь они не дают подобную информацию. Потому увольнятся нужно письменно, и никому не говорить о намерениях уходить :)


          1. andreyka26 Автор
            21.01.2022 14:56

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

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


    1. Stas911
      19.01.2022 03:33

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


      1. n2dt4qd2wg9b
        19.01.2022 06:27

        Потому что у амазона репутация подмочена и не платят по рынку. Ларец просто открывается


        1. vgogolin
          19.01.2022 15:46
          +1

          Относительно FAANG мало, но относительно всего рынка ценник достаточный, чтобы желающих заполнить опустевшие места хватало.


          1. Stas911
            20.01.2022 19:17

            Тем не менее дофига народу и из Амазона уходит наружу, тч на нем свет клином не сошелся.


  1. kokorins
    18.01.2022 23:59
    +1

    Leadership principles Амазона аналогичны принципам принципам и ценностям других компаний, например, аналогичный список для Яндекса. Предполагается, что если все ими пользуются, то человек способен к самостоятельной работе. Я, лично, не вижу смысла их заучивать, а скорее просто пользоваться здравым смыслом и личным опытом на собеседовании.

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


    1. andreyka26 Автор
      19.01.2022 01:35

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


  1. faiwer
    19.01.2022 01:08
    +1

    Посмотрел code question 2. Пришло в голову такое решение:


    • определяем за O(n) все compartment сохраняя их в отдельную коллекцию, где каждое звено это { left: int, right: int, count: int }
    • создаём новый массив, где каждому звену * задаём соответсвующий compartment выше или -1, если это * по бокам
    • превращаем коллекцию с comparments в древо отрезков по сумме
    • пробегаем по все интервалам, где для каждого индекса сужаем курсоры слева направо и справа налево, чтобы дойти до первого цельного отсека
    • найдя цельные отсеки слева и справа, используя древо отрезков, считаем их сумму

    Итого:


    • на подготовку нужно: O(n) для поиска отсеков и O(n log n) для подготовки древа отрезков
    • на поиск нужно O(log N)
    • т.е. итоговый O(n log n)

    Но я решительно не понимаю, как такое можно успеть написать за 30 минут. оО. Я одно только древо отрезков буду отлаживать минут 20. А там за час надо обе задачи. Бррр.


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


    1. andreyka26 Автор
      19.01.2022 01:38
      +1

      20 минут) там ровно 20 минут, у меня все записано есть)
      ну мой лид предложил другой солюшн

      Мы создаем хешмапу, и проходим по каждому слову в листе.
      Для кажого слова мы берем все префиксы и чекаем, есть ли этот префикс в хешмапе, если нету - продолжаем, если есть - "отрубаем его" и колаем ту же функцию рекурсивно стем, что осталось от слова. Когда доходим до конца слова - то добавляем его в хешмапу.

      Мой лид придумал это за секунд 15, но я - не он, я более тупенький, поэтому не втащил)


      1. faiwer
        19.01.2022 01:40

        Я про задачу с интервалами и звёздочками.


        1. andreyka26 Автор
          19.01.2022 03:26

          Извините, недочитал детально)


      1. iboltaev
        19.01.2022 16:51

        не, хэшмапа тут мимо. Это на trie задача


        1. wataru
          19.01.2022 16:59

          Нет, это в первую очередь на динамическое программирование. Но вы правы, с trie это будет работать быстрее, чем с хешмапом.


          1. iboltaev
            19.01.2022 17:04

            можно еще backtracking + memoization


            1. wataru
              19.01.2022 17:05

              backtracking + memoization = динамическое программирование.


      1. wataru
        19.01.2022 17:05

        Это решение лида — брутфорс. Скорее всего, не прошло бы по времени. Тут надо динамическое программирование писать:
        F(i) — можно ли собрать строку, начиная с i-ого символа.
        База F(n) = true.
        Переход — для всех следующих символов j проверяем, что подстрока с i по j-1 есть в хешмапе (или лучше — в trie, ибо мы по одному символу добавляем к проверяемой строке), и что, F(j) == true, тогда запоминаем, что после i идет j и F(i) = true.
        В конце, если видим, что F(0) = true, то можно по сохраненным ссылкам пройтись и вывести все куски.
        Ниже я уже привел решение.


      1. zagayevskiy
        19.01.2022 19:31
        -2

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


        1. andreyka26 Автор
          20.01.2022 03:39

          мне так удобнее и больше по кайфу)
          Я бы вообще на английском статью бы запилил, да только на хабре это не особо ценится)


    1. nsinreal
      19.01.2022 05:19
      +1

      Мне в голову пришло следующее решение. Не уверен, но вроде должно сработать.

      Три массива для подготовки:

      - массив префиксных сумм "сколько инвентаря от нуля до этого индекса"

      - массив "индекс предыдущего или этого сепаратора" (можно рассматривать как массив префиксных сумм, но вместо операции + будет операция max index)

      - массив "индекс следующего или этого сепаратора" (строится с конца)

      Строится за линейный проход.

      Рассчет за константу.

      Сначала определяем индексы сепараторов. Потом result = prefixSum[end] - prefixSum[start].

      С точки зрения кода - вроде просто. На думание потрачено где-то три-пять минут.


      1. faiwer
        19.01.2022 13:08

        массив префиксных сумм "сколько инвентаря от нуля до этого индекса"

        Вот да. В этом суть. Меня понесло в деревья отрезков, а ведь для суммы можно просто иметь массив вида a[i] = a[0] + a[1] + ... a[i]. И тогда сумма от i до j это просто a[j] - a[i]. Реализуется тривиально. Но эта мысль пришла мне уже в ночи :)


    1. wataru
      19.01.2022 13:21
      +1

      Да можно проще — проходимся по строке слева-направо и в отдельных массивах помечаем сколько до этой позиции "*" и где предыдущий "|". Потом проходимся справа-налево, и запоминаем, где следующий "|" от каждой позиции.


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


      O(n) памяти и времени на предподготовку и O(1) на каждый запрос.


      Кода тут — строк 10. Два невложенных for, пара if-ов и 2-3 счетчика. Не надо никаких стркутур данных хитрых.


      Кстати, на интервью обычно, если вы знаете то же дерево отрезков, то можно его не писать. Достаточно сказать "допустим есть вот такой интерфейс и это вот такая структура данных". Интервьювер спросит про сложность всех операций и как оно там может быть реализовано, конечно, но если у вас не хватит времени его писать, это не будет проблемой.


      1. faiwer
        19.01.2022 13:30

        Ага. Спасибо. Всё так. Фантазии на тему:


        • Я описываю вслух своё решение с O(n log n)
        • Интервьювер говорит, что хорошо, но можно быстрее и проще
        • Я думаю, где можно упростить. Спрашиваю можно за O(n)?
        • Он говорит6 да, можно линейно
        • Я понимаю что log N у меня в древе отрезков и надо от него избавиться. Вспоминаю, что для статичных массивов можно решить проще. Описываю словами новое решение с O(n)
        • Интервьювер утверждает его
        • Я начинаю его писать в коде, но не успеваю по времени

        Интервьювер куда-то записывает: "2-ую задачу не успел решить в коде, но озвучил правильный алгоритм, потребовалась одна подсказка". Это так работает?


        1. wataru
          19.01.2022 13:38
          +1

          Ну, я бы не стал прям оценки сложности вам говорить. Но мог бы прямо спросить, а вам точно тут нужно дерево отрезков? Нет ли более быстрой структуры данных, дающей то, что вам надо? Если бы вы не доперли, попросил бы выписать, а что именно вы со структурой делаете? Формализовать требования. Намекнул бы, что вы же ничего не меняете, а дерево отрезков позволяет любой элемент онлайн менять. Это же вам не надо.


          Если не успели эту задачу закодить, то я бы поставил вам 5 за знание алгоритмов и 2 за эффективность. В целом, я бы не рекомендовал нанимать такого кандидата вот прям сейчас. Надо бы, конечно, успеть эту задачу закодировать. Но я бы в своем отчете обязательно сказал, что если это единственное интервью, то стоит дать человеку еще шанс. Может, тупил и волновался. Если из пяти интервью у вас одно такое, то, я думаю, шансы быть нанятым у вас бы были не плохие.


          1. faiwer
            19.01.2022 19:56

            Тогда есть ещё 1 вопрос. Я заметил, что если не объяснять решение интервьюверу (о чём чуть ли не капсом пишут во всех статьях про интервью), а просто тупо молчать и делать задачу, как если бы интервьювера вообще не существовало, то, внезапно, оказывается мозг начинается сосредотачиваться на самой задаче, а не на том, как бы сформулировать ему на английском, что тут индекс сюда\индекс туда. В таком случае можно даже успеть что-то решить, хаха. Такое рассматривается как дерзость? :)


            • I think I almost have grasped the task, but I need some time to debug it in my head. If you don't mind I'll do it and later will explain how it's supposed to work.

            Что-нибудь такое.


            Пример из жизни. Буквально вчера меня попросили написать палиндром (хаха, как он ещё всем не надоел). Ну я написал. А оно не работает. Трём программистам (два интервьювера) понадобилось минут 5 на то чтобы заметить, что вместо arr[len - i - 1] написано arr[len - 1]. А что, 1 похожа на i. В глаза не бросается. Но т.к. считается что все должны постоянно что-то тараторить (включая интервьюверов, им ведь тоже интересно поучаствовать), и даже дебажить вслух, то даже коллективный разум сильно падает :) Чем больше галдежа и мнений, тем ниже коллективный интеллект.


            1. wataru
              19.01.2022 20:00
              +1

              Было и такое в моей практике. Говорили, что им надо подумать и замолкали. Я это минусом никогда не считал. Главное, я прошу объяснить мне идею решения до начала кодирования. А то кандидат может в такие дебри залезть, что его оттуда уже никак не вытащишь. А так не надо постоянно говорить.


      1. Alexandroppolus
        19.01.2022 16:35

        Можно и без массивов с ближайшими "|". Нужны только префиксные суммы, и "сдвинутые префиксные суммы", из которых будем брать значение для стартовых символов.

        Для примера из задания:

        строка "| * * | * | *",

        sums = [0, 0, 0, 2, 2, 3, 3], shiftSums = [0, 2, 2, 2, 3, 3, 3]

        result = max(0, sums[end] - shiftSums[start])


        1. wataru
          19.01.2022 16:57

          Ну, это фактически предподсчитанное sums[i] = prefix_sum[next[i]] и shiftSums[i] = prefix_sum[prev[i]]. Просто логика более сгруппирована получается. Решение с выделенными next/prev массивами мне кажется более простым в понимании и реализации.


  1. BobArctor
    19.01.2022 01:10
    +6

    Что-то неладно в датском королевстве. На собственном опыте могу сказать что они умудрились сфэйлить свои же 16 любимых принципов на третьем этапе. Особенно ownership когда ответсвенный HR просто потерялся, приходят ООО с именем делегата, делегат тоже ООО и потерялся. И Earn Trust, когда задаёшь некоторые интересные вопросы и человек со стороны амазона делает лицо будто ожидает наказания и начинает шпарить корпоративную методичку.


    1. n2dt4qd2wg9b
      19.01.2022 03:00
      +2

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


      1. Stas911
        19.01.2022 03:36
        +2

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


        1. n2dt4qd2wg9b
          19.01.2022 06:26

          Так я ж не менеджер. Я так просто наблюдаю со стороны.

          И им говорят - хватить энфорсить URA, но Beth не реагирует...


          1. Stas911
            19.01.2022 17:49

            Дык это же бизнес, ничего личного. Первые пару раз когда увольняют еще напрягаешься, а потом попускает.


            1. VFaland
              19.01.2022 17:54

              Вот-вот. Вне ФААНГов в США с этим зачастую хуже, нанимать не умеют, наберут балласта, потом массово увольняют без разбора, потом страдают и никого нанять не могут. А так-то и в ФБ можно влететь на ПИП если с менеджером общий язык не нашел, и Гугл сокращает если проект закончился а ты себе быстро новый не нашел итп.


              1. Stas911
                19.01.2022 18:05

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

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


                1. n2dt4qd2wg9b
                  19.01.2022 22:55

                  Золотые слова!


              1. n2dt4qd2wg9b
                19.01.2022 22:55

                Ну гугл дает достаточно времени чтобы найти. И дает тебе приоритет, если ты выбрал что-то внутри. А амазон просто пипнет и 3 мес severance и ты на улице


                1. Stas911
                  20.01.2022 00:25

                  Что значит "пипнет"? Как расшифровывается?


                  1. Konstantin0Scheglov
                    20.01.2022 10:05
                    +1

                    PIP = performance improvement plan


      1. BobArctor
        19.01.2022 12:09
        +1

        Возможно и не улыбнулся, но реджекта не пришло. Аппрува впрочем тоже. Из чистого любопытства наблюдаю сколько в их системе можно висеть в статусе "Under consideration" после окончания третьего этапа. Текущий рекорд с сентября 2020 по сейчас.


      1. vmc1
        19.01.2022 14:52

        это в US или EMEA, или локация на важна?


  1. Stonislaff
    19.01.2022 03:26
    +1

    Отлично расписали, очень интересно читать!


  1. toxano
    19.01.2022 03:26
    +2

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


  1. Yser
    19.01.2022 05:13
    +1

    У меня диссонанс - вчера статья как парсить википедию, сегодня FAANG. Даже не знаю как эти две вещи сопоставить в одном предложении, задумался о том что видимо со мной что-то сильно не так, спасибо.


    1. andreyka26 Автор
      20.01.2022 03:42

      да так, тещу, что заходит больше, как аудитория воспринимает и т.д. ну а возможно что-то задело и захотелось написать чето, что там не обкидают чем попало)


  1. scruff
    19.01.2022 10:15

    То интервью я не записал на видео, но записал пару вопросов, если кому интересно:

    1. Как удалить файл на линуксе

    2. Если вы удалили файл, но видите, что память не освобождена - что делать?

    3. Вы начали понимать, что у вас на машине нет интернета - что будете делать?

    4. Как в линуксе достать файл с наибольшим весом?

    5. Как передать аут из одной команды в другую в Линуксе

    6. У вас на сервере закончилась память на диске, как будете траблшутить?

    7. В одном регионе задержка запросов увеличилась, в других - все окей, как будем фиксить и трабл шутить?

    Как линукс-инженер, я смог без гугла ответить только на 1-й, 3-й (частично), 5-й и 6-й (тоже частично). 2,4 - есть маразм спрашивать ключи комманд "на память". Достаточно спросить - как будешь гуглить ту или иную команду. 7-й - специфический, поле для мыслей обширное - часа на 2 обсуждений

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

    Тут вообще нагорожено неподетски в ответе у автора. Мыслю так - каждый сервис имеет свои логи. В логах сидят ключевые слова. Таким образом - делаем в cron ежеминутную задачу - отслеживать конкретный лог-файл на предмет ключевого слова/фразы/цифры и т.д. При появлении таковых - нотификейшн на мыло/телегу/смс. Кому интересен код крона - пишите.


    1. sYB-Tyumen
      19.01.2022 12:21

      2 - это ошибка перевода, похоже. Если удалили файл [на блочном устройстве], а [оперативная] память не освобождена, то я буду недоумевать. Должна была, что-ли?


      1. cadmi
        19.01.2022 17:19
        +1

        Это про дисковую. Файл удалили, а свободного места не прибавилось. Что делать? Искать процесс, в котором был открыт этот файл. Дальше "линукс-инженеры" знают, что делать :)


      1. nochkin
        19.01.2022 17:37

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


    1. AcckiyGerman
      19.01.2022 13:56

      вроде бы tail -f сейчас под капотом inotify использует, поэтому подписатся на логи проще, запустив нижеприведенный код после ребута (systemd service или тот же крон)

      tail -f logfile | grep "keyword" | xargs send_notification.sh

      Но мне кажется все таки, что изначальная задача немного о другом.


    1. Izaron
      19.01.2022 14:22

      Таким образом - делаем в cron ежеминутную задачу - отслеживать конкретный лог-файл на предмет ключевого слова/фразы/цифры и т.д.

      Мне кажется, это одно из худших проявлений Hyrum's law. Мне было бы неприятно, если после релиза с изменением логов стали стучаться в личку и требовать вернуть их назад, а то не считается статистика за день. Настолько "разумную жизнь" на основе логов надо убирать как можно быстрее.


  1. maxim_ge
    19.01.2022 10:56

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

    Можно более подробно про условия задачи? Также не очень понятны требования:


    • Notification Service is ext
    • Do not loose data


    1. Silverthorne
      19.01.2022 13:32

      Похоже, что хотят внешний event-driven notifications service и намекают, что at most once delivery не пойдет (как и просто фейлить обработку событий без ретрая)


    1. andreyka26 Автор
      20.01.2022 03:46

      там в процессе накидывал реквы.

      "notification service is ext" - Вобщем, имейл сендер, phone notification sender - это не наше, может упасть, нужны ретраи. То, что будет нас колать - тоже не наше, я в принципе отделил пунктирной линией на солюшне своем (только лоадбалансер должен быть выше).

      "Do not loose data" - Мы не должны потерять запрос на посыфл нотификейшна


  1. Ogoun
    19.01.2022 13:14
    +1

    Стало интересно решить задачу про составные слова, за один проход.

    Получилось так
    static void Main(string[] args)
    {
        var words = new HashSet<string> { "rock", "super", "rockstar", "super", "star", "way", "highway", "superhighway", "high", "a", "waya" };
        var list_of_parts = new List<string>();
        var word = new StringBuilder();
        string candidate;
        int count_parts;
    
        foreach (var w in words)
        {
            word.Clear();
            count_parts = 0;
            list_of_parts.Clear();
            for (var index = 0; index < w.Length; index++)
            {
                word.Append(w[index]);
                if (words.TryGetValue(word.ToString(), out candidate))
                {
                    if (string.Compare(w, candidate) != 0)
                    {
                        count_parts++;
                        word.Clear();
                        list_of_parts.Add(candidate);
                    }
                    else break;
                }
            }
            if (count_parts > 1)
            {
                Console.WriteLine($"{w} = {string.Join(" + ", list_of_parts)}");
            }
        }
    }

    Вывод:

    rockstar = rock + star
    highway = high + way
    superhighway = super + high + way
    waya = way + a


    1. wataru
      19.01.2022 13:31
      +1

      А на тесте {"a", "b", "abc", "d", "abcd"} сработает? А если перетасовать? Просто если ваше решение сначала жадно откусит кусок "a" от "abcd", то уже никак не соберет его, потому что надо откусывать именно "abcd".


      Тут, похоже, надо динамическое программирование писать. Надо считать, можно ли префикс текущей строки 0..i собрать как набор слов. А дальше, если текущий префикс можно собрать, то проверять, если ли слово i+1..j и помечать, что можно собрать префикс с 0 по j. В итоге O(n l^2). получается, где l — длина максимальной строки.


      Если


      1. Ogoun
        19.01.2022 13:48

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


        1. wataru
          19.01.2022 16:00

          Вот все решение:


          Заголовок спойлера
          #include <iostream>
          #include <vector>
          #include <string>
          #include <unordered_map>
          
          class Trie {
          public:
              Trie() : nodes(1) {};
          
              void Add(std::string s) {
                  int v = 0;
                  for (auto c: s) {
                      auto it = nodes[v].next.find(c);
                      if (it == nodes[v].next.end()) {
                          nodes[v].next[c] = nodes.size();
                          v = nodes.size();
                          nodes.push_back(Node());
          
                      } else {
                          v = it->second;
                      }
                  }
                  nodes[v].final = true;
              }
          
              int Next(int v, char c) {
                  auto it = nodes[v].next.find(c);
                  if (it == nodes[v].next.end()) return -1;
                  return it->second;
              }
          
              bool IsFinal(int v) {
                  return nodes[v].final;
              }
          
          private:
             struct Node {
               bool final = false;
               std::unordered_map<char, int> next;
             };
          
             std::vector<Node> nodes;
          };
          
          int main()
          {
              std::vector<std::string> words = { "rock", "super", "rockstar", "super", "star", "way", "highway", "superhighway", "high", "a", "waya" };
          
              Trie trie;
              for (const auto w : words) {
                  trie.Add(w);
              }
          
              for (const auto w : words) {
                  std::vector<bool> repr(w.size()+1, false);
                  std::vector<int> prev(w.size()+1);
                  repr[w.size()] = true;
                  for (int i = w.size()-1; i >= 0; --i) {
                    int v = 0;
                    for (int j = i; j < w.size(); ++j) {
                        v = trie.Next(v, w[j]);
                        if (v == -1) break;
                        if (trie.IsFinal(v) && repr[j+1] && (i > 0 || j+1 < w.size())) {
                          repr[i] = true;
                          prev[i] = j+1;
                        }
                    }
                  } 
                  if (repr[0]) {
                     std::cout << w << " = ";
                     bool is_first = true;
                     int i = 0;
                     while (i < w.size()) {
                         int next = prev[i];
                         if (!is_first) std::cout << " + ";
                         else is_first = false;
                         for (int t = i; t < next; ++t) {
                             std::cout << w[t];
                         }
                         i = next;
                     }
                     std::cout << std::endl;
                  }
              }
              return 0;
          }

          Заняло у меня 20 минут с отладкой и перервами помешать и наложить пельмени. Сначала упустил +1 в нужном месте. Потом понял, что у меня строчки-состовляющие в обратном порядке выводятся, развернул цикл.


  1. iboltaev
    19.01.2022 16:20

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

    Тут не динамическое программирование, а префиксная сумма + бинарный поиск по ней


    1. wataru
      19.01.2022 16:30

      Не надо никаких бинарных поисков. За два прохода в разные стороны можно для каждого символа найти ближайший слева или справа "|". Так можно сузить отрезок-запрос до границ контейнеров за константу. А потом, как вы и написали — перфексные суммы.


      1. iboltaev
        19.01.2022 16:47

        да, без бинарного поиска, тупанул. Там же индексы даются сразу


  1. IonDen
    19.01.2022 20:49
    +1

    Про работу в амазон последнее время слышно только плохое.


  1. mfenderov
    20.01.2022 03:48
    +3

    Видимо, в зависимости от локации(а может ещё чего), процесс интервью немного меняется.
    Я проходил собеседование в прошлом (2021) году с февраля по май на SDE 3 а.к.а сеньёр-помидор в Берлин, и у меня не было отдельных поведенческих интервью, все этапы были 50/50, пару-тройку поведенческих вопросов + кодинг челендж/систем дизайн. И интервью на последнем этапе было "всего" 4.
    Получил отлуп я в таком же стиле:
    "Your answers to our Leadership Principle questions were great, but unfortunately the technical competencies weren’t quite where we need them to be."
    В чём конкретно была загвоздка я так и не понял, потому что все кодин челенджи я решил(я был хорошо подготовлен), и по реакции на мои систем дизайн ответы, мне казалось, что тоже норм наговорил.

    Пути Амазона неисповедимы.