О чём эта статья
Это не история успеха, потому что в Амазон меня не взяли, но и не история полного лузера, который бомбит из-за своей тупости, ибо позже я прошел в Майкрософт, о чем будет отдельный пост.
Это история о моем опыте собеседования в Амазоне, почему мне в целом не понравилось по сравнению с другими FAANG. Так же тут будут ответы на “а что конкретно спрашивали на интервью, какие были задачки, что на систем дизайне было”, потому что мне не дали подписать NDA, все с пруфами, скринами и прочее.
В общем и целом, статья будет о моем опыте, какие были интервью, что было сложного, что не очень, как я готовился, и какая доля везения в этом всем.
Начало, предложение от Amazon
В один прекрасный день 6 сентября, мне пришло такой сообщение в Линкедин.
Я согласился на собеседование. В то время, собеседование в Амазон состояло из трех этапов:
Онлайн задачки без интервювера
Интервью с человеком 1 час
Последний раунд интервью, который состоит из 5 интервью по часу каждый.
Интервью в Амазоне
С начала понимания, что я буду собеседоваться в Амазоне, я сразу начал задротить литкод, потому что это наиболее слабая моя сторона по части этих интервью, как мне казалось, по крайней мере. Шло не очень хорошо, честно признаться, но понемногу шло.
Все интервью проводились онлайн из-за пандемии, то есть на последний раунд не надо ехать к ним на офис.
Теперь к первому этапу.
Первый этап (done)
Касательно первого этапа, на Хакерранке мне попались 2 задачи, из которых я решил только одну. Одно примечание, каждую задачу нужно было расписывать (то есть объяснить свой солюшн).
Уж простите за такие скрины, я тогда думал, что АВС может как-то узнать, что я заскринил. Далее будут нормальные.
Первая:
Вторая: эту я тогда не решил, не успел, брутфорс падал по таймауту, нужно было дайнемик программинг использовать.
Второй Этап (first try)
Я думал, что если не решил все задачи – то точно не берут дальше, но тут приходит такой имейл:
Я немного удивился, но порадовался.
Спустя некоторое время, мне назначили второй этап интервью - час с интервьюером. И как я понял по началу, АВС очень любит задавать своими вопросы по лидершип принципам. Я погуглил немного, и понял, что это интервью будет по лидершип принципам, ну и возможно какая-то задачка из литкода.
Поэтому, я, прям, выучил каждый принцип, подготовил хоть какие-то примеры из моего не столь большого опыта(3 года), и продолжал задротить литкод.
Пришло время собеседования, было оно уже где-то в начале октября. Мы начали разговаривать с интервьюером, он говорит, о чем будет интервью, и тут я понимаю, что готовился вообще не в ту сторону.
Из его слов я узнаю, что интервью будет на поведенческие вопросы (ни одно интервью на Амазоне не бывает без них) и на знание Линукса и нетворков. Я, как заядлый дотнетчик, юзер виндовса со своих 4 лет, имел очень небольшой опыт Линукса когда нужно было что-то делать на он-премис тачках, хотя по нетворкам и был некоторый опыт, и то теоретический, из книг.
То интервью я не записал на видео, но записал пару вопросов, если кому интересно:
Как удалить файл на линуксе
Если вы удалили файл, но видите, что память не освобождена - что делать?
Вы начали понимать, что у вас на машине нет интернета - что будете делать?
Как в линуксе достать файл с наибольшим весом?
Как передать аут из одной команды в другую в Линуксе
У вас на сервере закончилась память на диске, как будете траблшутить?
В одном регионе задержка запросов увеличилась, в других - все окей, как будем фиксить и траблшутить?
Ну и одно запомнил поведенческое: Расскажите про ситуацию, когда у вас была не комфортная таска, и как вы это преодолели?
Спустя пару дней - мне пришел ответ, что я не прошел это интервью.
Но, потом пришел еще один имейл:
И, конечно же, я согласился. Это топ 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)
rpc1
18.01.2022 19:39+1Повезло тебе, я проходил onsite интервью 2 года назад, мне фидбэк не дали, сказали что у них так не принято
Было где-то 5-6 поведенческих вопросов и тривиальная задача: найдите файл с заданным расширением и с заданным размером.
У меня такая задача была как раз на ООП, где интервьюер постоянно ее усложнял: давай добавим в поиск дату файла, несколько имен файлов, маску имени и т.д. в итоге пришли к выводу с интерфейсов которые содержит разные реализации.
Вообще интервью мне понравилось, были приятные впечатления, кроме одного интервьюера, который оказался переехавшим из Москвы, вел себя хамовато... или я не привык к таким
andreyka26 Автор
18.01.2022 20:36как понимаю, тоже реджект?
rpc1
18.01.2022 21:48+1Да, но хотелось бы знать из-за чего. Live coding у нас был маркером на ватмане ) так что с редактором вам повезло еще )
n2dt4qd2wg9b
19.01.2022 03:15Фидбэк не дают по legal причинам. Чтобы ты потом не засудил.
rpc1
19.01.2022 09:28Вот я удивился, почему другим дали, вероятно из-за локаций, я собеседовался в США, а автор в Ирландию
K36
18.01.2022 20:17+9Зачем им все эти "лидершип принципы"?
andreyka26 Автор
18.01.2022 20:33+5думаю стебутся ребята)
n2dt4qd2wg9b
19.01.2022 01:23+8Если завалишь ЛП то каким бы ты не был спецом - тебя не возьмут. Говорю как работник. И, самое главное, тебе об этом не скажут.
Если классно сдать ЛП, но дать слабину в техническом плане - тебя возьмут, т.к. ты докажешь им что ты сможешь и подтянешься.
Так что не игнорируй S.T.A.R и придумывай кучу историй как ты develop-ил the best, insist-ил на высоких стандартах и obsess-ил над клиентами и далее по списку
andreyka26 Автор
19.01.2022 01:24+1дык по стар и делал) само собой) просто кейсы закончились, но вобщем я знаю, чтоне возьмут, как по мне ИМХО это через чур. За все этапы у меня спросили около 50 таких вопросов. то есть это 50 кейсов... У меня опыта 3 года, у них было мое СV.
n2dt4qd2wg9b
19.01.2022 02:47Дело в том, что один кейс можно натянуть на несколько ЛП и этим нужно пользоваться. Главное чтобы один и тот же кейс не повторялся у одного и того же интервьювера. И вполне окей если один и тот же кейс с нужным уклоном использовался бы дважды у разных интервьюверов для разных ЛП с правильным разъяснением. По крайней мере я так делал и прокатило. Завал ЛП - не найм 100%. Нужно быть убедительным, когда чешешь им по ЛП. 3 года - не оправдание, в Сев. Ам. три года - это вечность.
andreyka26 Автор
20.01.2022 03:29+1Я все равно больше приверженец подхода "а давайте поговорим про ваш опыт" и все, без этих постанов. Там свои выводы на счет лидершипов можно сделать)
n2dt4qd2wg9b
21.01.2022 03:53Так им редко интересен опыт. Им интересно, чтобы ты из шкуры лез и был проактивен. Я помню мне назначили первый фон колл и сказали что будет сугубо техническое. А по факту были только ЛП и немного "за жизнь". В конце интервью я спросил: как так, обещали тех а по факту было не тех. На что мне девушка ответила: если ты семь пядей во лбу тех, но не проходишь по ЛП - ты нам не нужен. А если у тебя не хватает тех знаний, но по ЛП всё отлично, то мы тебя возьмем, а тех - научим. Кстати в ту попытку я завалил ЛП и не прошел... Потому с амазоном - убираем легкомысленное отношение к ЛП и всё станет ок.
Да, дисклеймер - я бы лучшему другу не пожелал бы тут работать. Но если это способ "завести трактор" - то почему бы и нет. Главное - вовремя из амазона уйти. Не задерживайтесь здесь.
nochkin
18.01.2022 22:23+2Оценить пуленепробиваемость и отказоустойчивость кандидата. Но это всего лишь моё мнение. Что они на самом деле хотят могут не знать даже они.
Stas911
18.01.2022 23:11+3Практика показала, что в реальной работе лучше всего себя показывают люди, обладающие определенными личностными качествами, которые и стараются определить у кандидата спрашивая поведенческие вопросы о прошлых проектах.
andreyka26 Автор
19.01.2022 01:26Дак, можно же начать придумывать всякое)
Если честно, были кейсы, которые не совсем шли под прям "кейс" и пришлось немного приукрасить и т.д. В моем случае - это было неизбежно, потому что, если по честному, я бы из всех ответил бы может на половину, а у них не принимается "I didn't have such a situation", я пробовал.maxdanify
19.01.2022 01:34"I didn't have such a situation" вообще вроде валидный вариант, это говорил мне их HR, и я его использовал на пару вопросов. Ну иначе это бессмысленно, как вы сами сказали, придется придумывать сказку.
andreyka26 Автор
19.01.2022 03:21Ну мне перефразировали тот же вопрос другими словами, сказав, ну вот а такой вопросик, я делал еще раз, и мне опять пепрефразировали)
n2dt4qd2wg9b
19.01.2022 02:54Неправильно вы дядя Федор бутерброд едите (ц). В таких случаях я натягивал ситуацию на ближайший ЛП и прямо в нос спрашивал, либо утверждал: приведенная вами ситуация ближе всего подходит под ЛП №х и сразу давал зачёс по готовым шаблонам :)
andreyka26 Автор
19.01.2022 03:23да, как вариант) Так я же говорю, что немного неэфективно получается, 50 вопросов за все сесии, ибо кандидат просто выкручивается и новых кейсов не выдает, и интервьверу потом это все собирать и смотреть не обманули ли его)
Stas911
19.01.2022 03:23+2Придумать от начала до конца непротиворечивый кейс не так просто, как кажется (особенно для bar raiser с сотнями собесов за плечами)
n2dt4qd2wg9b
21.01.2022 03:59Бар рейзеры тоже люди с их недостатками. И реально бар увы давно не рейзится в найме. Мне ржачно когда на MGHD говорят, что следующий кандидат должен быть на 50% лучше чем вся существующая команда. Написано красиво, а по факту я наблюдаю непотичных бар рейзеров, которые нанимают своих, которые вообще не подходят для работы... Но колесо крутится - лавэшка мутится, а за ошибки в найме никто не несет ответственности. Очень много тупых проблем в амазоне тупо забрасывается большим количеством бабла, как бы это не фругально не звучало :)
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 подготовить среду в которой будет удобно рисовать. В идеале, наверное, стилусом на планшете.
andreyka26 Автор
18.01.2022 21:49Это интересно. Прям игру писали, сколько времени дали на это? Или просто нужно было накидать классецы, в плане что с чем будет комуницировать?
maxdanify
18.01.2022 22:00+1На все задачи было по 30 минут примерно, потому что в начале leadership bullshit :) я так понял, что нужно было понять какую часть логики писать, может даже определить самому, ну и дальше как успеешь. Понятно, что за 30 минут много не напишешь. Но задача была сформулирована именно в одно предложение, написать игру по ссылке. Дальше в процессе обсуждаешь.
Я помню, вроде начал с классов модели, которая хранит карту с объектами. И класса персонажа с методом move, который пересчитывает состояние карты в зависимости от действия игрока.
Точно был косяк в том что я подумал, что ящики могут толкать друг друга, но оказалось, что персонаж может двигать только один ящик за раз.
andreyka26 Автор
19.01.2022 01:27Понимаю, совет "задавайте кларификейшн вопросы" не совсем мне помог тоже, одну задачу, к слову, я так и не понял, я понимаю там добавить ambiguity и т.д., но все же
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-а. В принципе справедливо, я меньше всего готовился к систем дизайну, и это сказалось. Не помогло и то, что последнее собеседование по систем дизайну было поздно вечером.
n2dt4qd2wg9b
21.01.2022 04:25Оно и так и не так. Если ставят лайк и дизлайк - то один дизлайк и ты не нанят.
Но если ты одного интервьювера удовлетворил суперски - он может поставить суперлайк и тогда ты нанят.
Аналогично бар рейзер может поставить лайк и ты будешь нанят.
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.
Это, конечно, лучше, чем у некоторых компаний «у нас нет для вас фидбэка».nochkin
18.01.2022 22:28+3У меня был забавный вариант когда я шёл на позицию разработчика мобильного софта, а меня вдруг стали интервировать на ДевОпса. Я в теме что-то понимаю, но не достаточно для уровня интервью в FAANG'е. И, конечно, меня утопили и на этой почве просто тупо забанили на какие-то либо попытки в будущем.
n2dt4qd2wg9b
19.01.2022 02:52Да, во внутренней системе найма есть такой флаг, при котором на тебя не обратят никогда больше в жизни.
nochkin
19.01.2022 03:18Всё верно. К счастью, у меня были внутренние рычаги, что бы это исправить. Но это заняло уйму времени и я к тому времени потерял к этому интерес.
VFaland
18.01.2022 21:50+5Лидершип принципы офигенская штука. Реально работает. Сегодня всяких технологий и языков программирования дочерта, все меняется каждый день, и Амазон просто хочет брать людей которые сами разберутся какую технологию взять, сами все освоят и доведут проект до конца, по пути решая все проблемы какие надо, и с софтом и с хардом и с людьми и с процессами. Ну при этом хочет убедиться что у людей правильные приоритеты.
andreyka26 Автор
19.01.2022 01:30+1Да, я понимаю, но есть моменты,когда они хотят от тебя того, что ты дать не можешь, и твое "I didn't have such a situation" их не устраивает, они просто повторяют тот же вопрос другими предложениями, и форсят что-то отвечать, и вот тут, как по мне, процесс идет не так, как должен.
nochkin
19.01.2022 03:22Их цель не узнать была ли такая ситуация или нет, а понять как кандидат повёл бы себя в этом случае.
Даже хорошо, что не было такой ситуации, так как под стрессом человек склонен делать больше глупостей, чем если просто общаться на эту тему и генерить банальные советы с чашечкой горячего какао в руке.
Я могу сам напридумывать кучу вопросов на эту тему и сам же предложить их изящное решение. Половина из них не сработает в реальной жизни из-за человеческого фактора и общего раздолбайства, но зато как красиво будут звучать решения!
n2dt4qd2wg9b
19.01.2022 02:57+5Кстати, когда амазон хочет кого-то уволить, а они имеют стэк-рэнкинг и делают это планово - тебя, как работника, обвиняют в неследовании конкретным ЛП. Так что, да, офигенская штука в том числе чтобы увольнять... Ну и абьюзить
nochkin
19.01.2022 03:26+2Хорошая фишка -- согласен. Но это можно использовать и себе на руку.
Плановые увольнения идут не личные, а просто, например, 5%. То есть, надо как в том анекдоте про голодного тигра, который гонится за тобой: "не надо бежать быстрее тигра, достаточно бежать быстрее соседа".
То есть, вся проблема сводится только к тому, что бы понять критерии увольнения и не более. И таким образом можно сделать так, что бы тебя было менее удобно увольнять, чем соседа.
n2dt4qd2wg9b
19.01.2022 06:34+1Я много видел бежавших медленнее всех, но в хороших отношениях с менеджером, и они оставались. А также видел действительно продуктивных и умных инженеров, которые не играли в "коричневый носик" и оказывались за бортом. Да. когда ты по URA за бортом - то пожизненно забанен для найма в амазон и их подконтрольные компании.
Так что увольнения личные.
nochkin
19.01.2022 06:42-1В "хороших отношениях" это как раз один из способов бежать быстрее других.
Бег -- это не только знания.
Личные увольнения тоже бывают, но я про обычные плановые увольнения когда начальству надо просто уволить 5% и всё.
n2dt4qd2wg9b
19.01.2022 07:19+2А тут дальше вступают в силу голодные игры, когда группа рабочих сбивается в кучку, которая таргетит по их мнению белую(ых) ворону. И ты бы такой хотел бы не участвовать в "политических" играх, но твоё неучастие сделает тебя вороной. А если участвуешь - то уже ты волк и попробовал вкус крови :) Потому я считаю эти вещи очень деструктивными.
На виду у меня была команда, которая приносила результаты. Потом туда пришел новый менеджер-армянин и начал тащить своих армян, а не армян - ставить на план каждый год. Вот уже третий год подряд. И пофиг сколько тикетов или сев2 ты закрыл. Ты просто не такой, так как не свой, и пойдешь на улицу...
Кстати до армянина был неугодный менеджер, которого топы поставили на план и уже были готовы на пайвот выставить, но он вовремя получил VP-approval и перешел в другую команду...
nochkin
19.01.2022 07:21Конечно, есть куча разных несправедливых ситуаций типа таких и даже ещё хуже. Но мы про обычные плановые увольнения сейчас.
n2dt4qd2wg9b
19.01.2022 22:51Так URA квота и есть такова? Или вы о реоганизационных увольнениях?
nochkin
19.01.2022 23:07Я даже не знаю что такое "URA квота" (интернет что-то про уран показывает, но это явно на другую тему).
Я про запланированные реорганизационные увольнения. Когда просто надо сократить какой-то процент людей ради сокращения бюджета и такого плана целей.
Stas911
20.01.2022 00:23Часто же цель наоборот - развитие бизнеса и расширение отдельных направлений
nochkin
20.01.2022 00:30Всё верно. Но есть много разных способов достижения этой цели. И многие способы не конфликтуют друг с другом никак.
Например, есть мнение, что время от времени надо увольнять некоторое количество рабочих для того, что бы было место для привлечения свежей силы. Так же это помогает показать инвесторам, что трата бюджета снижена таким образом. И так далее.
Stas911
20.01.2022 00:34Дык в СевАмерике и так мало кто больше 2-3 лет на одном месте работает. Зачем увольнять, если достаточно пару раз прокатить с промо и pay rise и сами уйдут?
nochkin
20.01.2022 00:38Сильно зависит от компании и кого они нанимают. В тех же гос учреждениях работают десятки лет и их никто не увольняет даже если они там ничего не делают особо. Главное, что бы уж совсем глупостями не заниматься. В тех же гос конторах часто просто нет промо и бонусов.
Есть конторы посередине между гос и быстрыми стартапами, где среднее время на одном месте можно варьироваться от 2-3 лет до десятков лет.
Более молодные обычно склонны к частому смену места работы, а более возрастные -- наоборот.
n2dt4qd2wg9b
21.01.2022 04:03+1Потому что гугел снюхался с амазоном и не показывает ничего на эту тему... А вот если поискать в яндексе :)
https://yandex.ru/search/?text=amazon+unregretted+attirition+quota
nochkin
21.01.2022 04:11Спасибо, познавательно. Видимо, я тогда как раз про такие штуки. Просто обычный план по увольнению, ничего личного.
Как в том анекдоте про неудачников.
Stas911
19.01.2022 03:28Мне кажется, достаточно возможностей для внутреннего перевода, чтобы не дойти до ситуации, когда тебя хотят уволить. Часто человек просто попал не туда и это несложно исправить не увольняя.
n2dt4qd2wg9b
19.01.2022 06:30+5Именно попытка внутреннего перевода ставит тебя в focus и затем PIP.
Когда ты апплаишься на внутреннем портале - твой менеджер сразу получает имел: ахтунг, раб пытается сбежать с галеры. И 3/4 менеджеров ставят его на план, а на плане ты не имеешь права менять команды без VP аппрувала
Stas911
19.01.2022 17:39Поэтому никто там никогда и не апплаится в здравом уме, а сперва напрямую контачат с hiring manager и делают shadow loops и только потом, если все ок, ставят всех в известность.
andreyka26 Автор
20.01.2022 03:34это только в авс так? я в принципе слышал, что там плохое отношение к работникам
VFaland
20.01.2022 03:44+1Фигня какая то. У нас народ туда сюда постоянно мигрирует между командами, отделами и направлениями. И простые чуваки, и топовые инженеры. Никого ни на какой пип не ставят. Амазон большой, наводите справки по конкретному направлению и менеджерам. Я год в в AWS EFS, уходить не собираюсь, тут все отлично.
n2dt4qd2wg9b
21.01.2022 04:06AWS он большой, и это зависит от менеджера. Есть нормальные, есть не нормальные. Зайдите что-ли на teamblind.com и зарегайтесь с корп имейлом. Прозреете так сказать...
Пип при трансфере - видел своими глазами не единожды. Причем ты ТТ и тут в фокусе :)
VFaland
19.01.2022 17:48Это да, как и любым инструментом - можно пользоваться по разному, и молотком можно гвозди забивать а можно пальцы отбивать. Так-то все равно все сводится к человескому фактору - и при устройстве надо пристально интервьюировать своего будущего менеджера перед принятием оффера (а не мудак ли он?), и после устройства уделять много внимания выстраиванию отношений. Это часть одинаковая в любой компании.
nochkin
18.01.2022 22:25+5"Локер" -- это такие мини-сейфы для доставки посылок тем, у кого нет возможности их принять по адресу проживания. Эти локеры обычно распоположены в каких-то крупных магазинах и похожих точках, где есть доступ.
Там даже на скрине немного про это написано. Если интересно, то можно больше узнать по ключевым словам "Amazon Locker".
LuggerMan
19.01.2022 14:25-1Locker — это шкафчик с замком. Не только для доставки
nochkin
19.01.2022 17:09+1Конечно, не только. Ещё есть полка с замком с таким же названием. Есть устройство, которое закрывает что-либо. Наверняка, есть ещё варианты.
Но в статье было про конкретный тип от Amazon'а для доставки посылок и не более.
datt
18.01.2022 23:14Очень много информации по 5 часовому интервью для разработчиков и ничего для системных инженеров. Вообще без понятия, что там будет кроме вопросов по leadership principles
nochkin
19.01.2022 00:18+1У меня как раз были именно такие (хотя, я шёл на разработчика). Спрашивали про файловую систему на уровне inodes, некоторые глубокие особенности Linux'а (обычный человек за ними лезет в поисковик, так как это надо очень уж редко) и несколько команд общего назначения. С командами, хотя бы, легко, а вот остальное уже как повезёт.
Stas911
19.01.2022 03:29Системный инженер - это кто по-английски? Чем занимается?
datt
19.01.2022 07:28+1Systems engineer.
Грубо говоря, "продвинутый администратор". Планированние/установка/настройка серверов, гипервизоров, операционных систем, сетевого оборудования (датацентровые свитчи, роутеры, лоад балансеры), систем хранения данных и т.д. и т.п. и траблшутинг. Считай с нуля спроектировать, поднять и настроить почти всю инфраструктуру. Зачастую это инженеры, работающие в интеграторах или администраторы с большим опытом. Более продвинутые больше проектированием занимаются и меньше руками работают - это системные архитекторы.
Amet13
20.01.2022 16:15На Sysdev Engineer спрашивают такое (последний этап):
System Design (пример, как бы ты проектировал сервис конвертации текста в голос)
Linux Internal
Coding (распарсить какой-нибудь CSV на любом удобном языке; перемножить значения в массиве, все кроме текущего)
Behavioral Interview (почти на каждом собеседовании)
На первом этапе кодинг на 2 часа, задачки из разряда:
Надо в текст разбить на предложения и найти в каком предложении больше всего слов и вернуть это число
Есть выхлоп по факту
ls -l,
нужно для файлов с атрибутом исполняемости, размером меньше N и созданные юзером admin, вернуть самую старую дату из файлов которые подходят под эти критерии
Tuxman
18.01.2022 23:34потому что мне не дали подписать NDA, все с пруфами, скринами и прочее.
Теперь кого-то уволят из Амазона. Все общение с FAANG всегда начинается с подписания NDA.
Есть, правда, workaround. На китайских форумах, через гугл-транслейт всегда можно узнать все вопросы, со всеми ответами, со всеми обсуждениями, и это примяком из Силиконовой Долины. Совет - не пишите обратно через гугл-траслейт, вас спалят, как спалились все те индусы, что захотели поучавствовать в дискуссии.
andreyka26 Автор
19.01.2022 01:32+1не было НДА нигде, никто не шарил никаких документов и прочего, у меня есть все переписки, имейлы и т.д. + я все замазал как надо)
Tuxman
18.01.2022 23:55+9Это история о моем опыте собеседования в Амазоне
Собеседование обычно происходит в обе стороны, т.е. не только вас, но и вы их. Надюсь, вы спросили, куда делся целиком предыдущий тим? ;-) Все резко выгорели? Ну ок, вы как раз та самая лампочка, которую вкручивают, взаместа выгоровшей.
Если без шуток, перед менеджерами в Амазоне ставят цель
сделать проект лучшеуволить 10% подчинённых в год. Далее, есть два варианта развития событий - если вас взять на работу, такого классного, то придётся кого-то потом уводить "из своих"; или вариант, что лучше нанять вас слабого и потом уволить через полгода "hire to fire", сохранив свой текущий коллектив.А там, где целиком коллективы уходят выгорая, там всё просто - у всех Амазоновцев зарплата одинаковая и равна 160тыс в год, но переменная величина - это сток, который падает неравномерно, как во всех остальных хайтек компаниях, а больше на конец 4х-летнего периода. Далее технология проста, включается соковыжималка, и начинаешь работать усиленно, и но потом сдаёшься не дождавшись стоков, или досиживаешь.. но доходят не многие.
maxdanify
19.01.2022 01:22+1Я так думаю это верно для Америки или UK, а вот мне интересно как они проворачивают эту схему, например, в Германии? У них, вроде есть тама пара офисов.
andreyka26 Автор
19.01.2022 01:33да, по крайней мере, я правшивал у майкрософт ребят - то там все так же, зп +- одинаковая по стране, где офис, но стоками и годовыми бонусами - она очень отличается)
n2dt4qd2wg9b
19.01.2022 03:12+3Хех, 100% подтверждаю, только за последний год URA target была ~6%. Это идея самого безоса (умышленно с маленькой буквы). Ну и great resignation случилась. Во всем мире скаканула инфляция и другие конторы, чтобы привлечь таланты среагировали моментально в плане подъема компенсации, а вот Beth Galetti (из S-team амазона) не среагировала и народ стал уходить пачками из потогонки на более интересные места. Вот и не брезгуют визовыми рабочими. В Ирландии у них крупный ДЦ и офис с сетевиками и разработчиками....
Кстати да, base cap 160k недавно убрали
andreyka26 Автор
20.01.2022 03:37Извините, что значит URA ?
n2dt4qd2wg9b
21.01.2022 04:18+2UnRegretted Attirition. Это те, кого нам не жалко потерять.
Дело в том, что каждый менеджер в амазоне имеет метрики, и есть понятие Regretted Attirition - это когда хорошо работающий, продуктивный работник с высоким рейтингом в системе приходит завтра и говорит - я ушёл вчера. Менеджеру такой расклад - бобо, потому что не доглядел, не сделал работника счастливым, не подкинул денег, не сделал проактивный dive and save. И т.п.
Но, есть и метрика по UnRegretted Attirition, и если ты её заваливаешь - то ты хреново выполняешь свою работу и неправильно делаешь талант менеджмент. А именно не идентифицируешь плохих работников и не выставляешь их на мороз.
По каждй организации есть квота в процентах, сколько нужно выставлять на мороз, в этом году это около 6%. Потому на Talent Review and Calibration решается кто идёт на улицу и этих людей выводят на улицу давно отточенным механизмом.
А что делать когда хороший парень собрался уходить? И имел глупость сказать о намерениях перед тем, как выслать письменное увольнение? Ну некоторые менеджеры втихаря ставят их на focus план и при увольнении менеджер не получает боль за RA получает значёк за URA а работник сам того не подозревая - пожизненный бан на последующее возращение в компанию. И если раньше rehire eligibility можно было узнать звонком в ERC, то теперь они не дают подобную информацию. Потому увольнятся нужно письменно, и никому не говорить о намерениях уходить :)
andreyka26 Автор
21.01.2022 14:56Очень как-то не по человечески звучит. Такое отношение к людям должно распространяться, что бs давать негативній фидбек всем тем менеджерам, которіе такое делают.
Интересно, почему постоянно каждый год идет политика увольнения.
Stas911
19.01.2022 03:33Подозреваю, что это от команды зависит - знакомые говорили у некоторых команд наоборот адская нехватка народу и не могут набрать согласно спущенным планам.
n2dt4qd2wg9b
19.01.2022 06:27Потому что у амазона репутация подмочена и не платят по рынку. Ларец просто открывается
kokorins
18.01.2022 23:59+1Leadership principles Амазона аналогичны принципам принципам и ценностям других компаний, например, аналогичный список для Яндекса. Предполагается, что если все ими пользуются, то человек способен к самостоятельной работе. Я, лично, не вижу смысла их заучивать, а скорее просто пользоваться здравым смыслом и личным опытом на собеседовании.
Насчет задачек у меня кстати обратное мнение. Заучивание решений с leetcode пусть и полезно, но слабо коррелирует с реальной работой. Придумывать хорошие и нестандартные задачи довольно сложно, отчасти поэтому и нужна NDA.
andreyka26 Автор
19.01.2022 01:35Да, но тогда как иначе (кроме как заучиваний патернов решений задач) готовится?)
Я даже книгу по нейробиологии прочитал конкретно про проблем солвинг, никто не знает как работает "еврика эфект", и кроме как попасть на что-то знакомое, или же нативного солюшна, к которому дедуктивно приходишь - вроде больше способов нету)
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. А там за час надо обе задачи. Бррр.
Может быть есть какое-то совсем примитивное решение? Или подразумевается, что древо отрезков есть в стандартной либе?
andreyka26 Автор
19.01.2022 01:38+120 минут) там ровно 20 минут, у меня все записано есть)
ну мой лид предложил другой солюшн
Мы создаем хешмапу, и проходим по каждому слову в листе.
Для кажого слова мы берем все префиксы и чекаем, есть ли этот префикс в хешмапе, если нету - продолжаем, если есть - "отрубаем его" и колаем ту же функцию рекурсивно стем, что осталось от слова. Когда доходим до конца слова - то добавляем его в хешмапу.Мой лид придумал это за секунд 15, но я - не он, я более тупенький, поэтому не втащил)
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, то можно по сохраненным ссылкам пройтись и вывести все куски.
Ниже я уже привел решение.
zagayevskiy
19.01.2022 19:31-2Слушайте, а у вас русский ленгвидж атрофировался после устройства в майкрософт, или уот? Все употребляемые вами слова есть в русском языке.
andreyka26 Автор
20.01.2022 03:39мне так удобнее и больше по кайфу)
Я бы вообще на английском статью бы запилил, да только на хабре это не особо ценится)
nsinreal
19.01.2022 05:19+1Мне в голову пришло следующее решение. Не уверен, но вроде должно сработать.
Три массива для подготовки:
- массив префиксных сумм "сколько инвентаря от нуля до этого индекса"
- массив "индекс предыдущего или этого сепаратора" (можно рассматривать как массив префиксных сумм, но вместо операции + будет операция max index)
- массив "индекс следующего или этого сепаратора" (строится с конца)
Строится за линейный проход.
Рассчет за константу.
Сначала определяем индексы сепараторов. Потом result = prefixSum[end] - prefixSum[start].
С точки зрения кода - вроде просто. На думание потрачено где-то три-пять минут.
faiwer
19.01.2022 13:08массив префиксных сумм "сколько инвентаря от нуля до этого индекса"
Вот да. В этом суть. Меня понесло в деревья отрезков, а ведь для суммы можно просто иметь массив вида
a[i] = a[0] + a[1] + ... a[i]
. И тогда сумма отi
доj
это простоa[j] - a[i]
. Реализуется тривиально. Но эта мысль пришла мне уже в ночи :)
wataru
19.01.2022 13:21+1Да можно проще — проходимся по строке слева-направо и в отдельных массивах помечаем сколько до этой позиции "*" и где предыдущий "|". Потом проходимся справа-налево, и запоминаем, где следующий "|" от каждой позиции.
Получив отрезок на входе, урезаем его до ближайших "|" с концов, используя предподсчитанные позиции. А дальше берем разность из количества вещей в концах. Так как строка не меняется, никакие деревья отрезков тут не нужны. Можно использовать частичные суммы.
O(n) памяти и времени на предподготовку и O(1) на каждый запрос.
Кода тут — строк 10. Два невложенных for, пара if-ов и 2-3 счетчика. Не надо никаких стркутур данных хитрых.
Кстати, на интервью обычно, если вы знаете то же дерево отрезков, то можно его не писать. Достаточно сказать "допустим есть вот такой интерфейс и это вот такая структура данных". Интервьювер спросит про сложность всех операций и как оно там может быть реализовано, конечно, но если у вас не хватит времени его писать, это не будет проблемой.
faiwer
19.01.2022 13:30Ага. Спасибо. Всё так. Фантазии на тему:
- Я описываю вслух своё решение с O(n log n)
- Интервьювер говорит, что хорошо, но можно быстрее и проще
- Я думаю, где можно упростить. Спрашиваю можно за O(n)?
- Он говорит6 да, можно линейно
- Я понимаю что log N у меня в древе отрезков и надо от него избавиться. Вспоминаю, что для статичных массивов можно решить проще. Описываю словами новое решение с O(n)
- Интервьювер утверждает его
- Я начинаю его писать в коде, но не успеваю по времени
Интервьювер куда-то записывает: "2-ую задачу не успел решить в коде, но озвучил правильный алгоритм, потребовалась одна подсказка". Это так работает?
wataru
19.01.2022 13:38+1Ну, я бы не стал прям оценки сложности вам говорить. Но мог бы прямо спросить, а вам точно тут нужно дерево отрезков? Нет ли более быстрой структуры данных, дающей то, что вам надо? Если бы вы не доперли, попросил бы выписать, а что именно вы со структурой делаете? Формализовать требования. Намекнул бы, что вы же ничего не меняете, а дерево отрезков позволяет любой элемент онлайн менять. Это же вам не надо.
Если не успели эту задачу закодить, то я бы поставил вам 5 за знание алгоритмов и 2 за эффективность. В целом, я бы не рекомендовал нанимать такого кандидата вот прям сейчас. Надо бы, конечно, успеть эту задачу закодировать. Но я бы в своем отчете обязательно сказал, что если это единственное интервью, то стоит дать человеку еще шанс. Может, тупил и волновался. Если из пяти интервью у вас одно такое, то, я думаю, шансы быть нанятым у вас бы были не плохие.
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
. В глаза не бросается. Но т.к. считается что все должны постоянно что-то тараторить (включая интервьюверов, им ведь тоже интересно поучаствовать), и даже дебажить вслух, то даже коллективный разум сильно падает :) Чем больше галдежа и мнений, тем ниже коллективный интеллект.wataru
19.01.2022 20:00+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])
wataru
19.01.2022 16:57Ну, это фактически предподсчитанное sums[i] = prefix_sum[next[i]] и shiftSums[i] = prefix_sum[prev[i]]. Просто логика более сгруппирована получается. Решение с выделенными next/prev массивами мне кажется более простым в понимании и реализации.
- определяем за
BobArctor
19.01.2022 01:10+6Что-то неладно в датском королевстве. На собственном опыте могу сказать что они умудрились сфэйлить свои же 16 любимых принципов на третьем этапе. Особенно ownership когда ответсвенный HR просто потерялся, приходят ООО с именем делегата, делегат тоже ООО и потерялся. И Earn Trust, когда задаёшь некоторые интересные вопросы и человек со стороны амазона делает лицо будто ожидает наказания и начинает шпарить корпоративную методичку.
n2dt4qd2wg9b
19.01.2022 03:00+2Амазон top-down компания с неограниченной силой в руках менеджера. Ты ему лицом не понравился, или не улыбнулся когда требуется и через пару месяцев сдаешь бэдж
Stas911
19.01.2022 03:36+2Да камон, на рынке сейчас такая нехватка народу, что не известно кто больше на этом потеряет.
n2dt4qd2wg9b
19.01.2022 06:26Так я ж не менеджер. Я так просто наблюдаю со стороны.
И им говорят - хватить энфорсить URA, но Beth не реагирует...
Stas911
19.01.2022 17:49Дык это же бизнес, ничего личного. Первые пару раз когда увольняют еще напрягаешься, а потом попускает.
VFaland
19.01.2022 17:54Вот-вот. Вне ФААНГов в США с этим зачастую хуже, нанимать не умеют, наберут балласта, потом массово увольняют без разбора, потом страдают и никого нанять не могут. А так-то и в ФБ можно влететь на ПИП если с менеджером общий язык не нашел, и Гугл сокращает если проект закончился а ты себе быстро новый не нашел итп.
Stas911
19.01.2022 18:05Я как-то работал полтора года в подразделении компании и у нас за это время ни одного проекта не было. Мы делали спринты, что-то писали, но ничего, за что платят конторе деньги. В один момент халява кончилась и всех уволили одним днем. Я на них сперва обиделся, но они оставили медстраховку на месяц и выплатили денег больше чем должны. Тч спустя годы должен признать, что повели себя вполне по-человечески.
После этого я понял, что это игра, в которую можно играть вдвоем и что не нужно сидеть на жопе ровно и если подворачивается хорошая возможность, то точно так же нужно уходить одним днем и ни о чем не жалеть.
n2dt4qd2wg9b
19.01.2022 22:55Ну гугл дает достаточно времени чтобы найти. И дает тебе приоритет, если ты выбрал что-то внутри. А амазон просто пипнет и 3 мес severance и ты на улице
BobArctor
19.01.2022 12:09+1Возможно и не улыбнулся, но реджекта не пришло. Аппрува впрочем тоже. Из чистого любопытства наблюдаю сколько в их системе можно висеть в статусе "Under consideration" после окончания третьего этапа. Текущий рекорд с сентября 2020 по сейчас.
toxano
19.01.2022 03:26+2Проходить многоуровневые фильтры компании это нервы и подготовка. А потом кажется не задействуешь и половины информации. После приходит осознание, что неплохо прокачался
Yser
19.01.2022 05:13+1У меня диссонанс - вчера статья как парсить википедию, сегодня FAANG. Даже не знаю как эти две вещи сопоставить в одном предложении, задумался о том что видимо со мной что-то сильно не так, спасибо.
andreyka26 Автор
20.01.2022 03:42да так, тещу, что заходит больше, как аудитория воспринимает и т.д. ну а возможно что-то задело и захотелось написать чето, что там не обкидают чем попало)
scruff
19.01.2022 10:15То интервью я не записал на видео, но записал пару вопросов, если кому интересно:
Как удалить файл на линуксе
Если вы удалили файл, но видите, что память не освобождена - что делать?
Вы начали понимать, что у вас на машине нет интернета - что будете делать?
Как в линуксе достать файл с наибольшим весом?
Как передать аут из одной команды в другую в Линуксе
У вас на сервере закончилась память на диске, как будете траблшутить?
В одном регионе задержка запросов увеличилась, в других - все окей, как будем фиксить и трабл шутить?
Как линукс-инженер, я смог без гугла ответить только на 1-й, 3-й (частично), 5-й и 6-й (тоже частично). 2,4 - есть маразм спрашивать ключи комманд "на память". Достаточно спросить - как будешь гуглить ту или иную команду. 7-й - специфический, поле для мыслей обширное - часа на 2 обсуждений
Задача была в следующем, мы должны спроектировать нотификейшн систем, который отправлял бы нотификейшены, когда его об этом будут просить сторонние сервисы.
Тут вообще нагорожено неподетски в ответе у автора. Мыслю так - каждый сервис имеет свои логи. В логах сидят ключевые слова. Таким образом - делаем в cron ежеминутную задачу - отслеживать конкретный лог-файл на предмет ключевого слова/фразы/цифры и т.д. При появлении таковых - нотификейшн на мыло/телегу/смс. Кому интересен код крона - пишите.
sYB-Tyumen
19.01.2022 12:212 - это ошибка перевода, похоже. Если удалили файл [на блочном устройстве], а [оперативная] память не освобождена, то я буду недоумевать. Должна была, что-ли?
cadmi
19.01.2022 17:19+1Это про дисковую. Файл удалили, а свободного места не прибавилось. Что делать? Искать процесс, в котором был открыт этот файл. Дальше "линукс-инженеры" знают, что делать :)
nochkin
19.01.2022 17:37Это раньше называть дисковое пространство памятью было грубой ошибкой, а теперь я такие штуки даже в технической документации встречаю.
AcckiyGerman
19.01.2022 13:56вроде бы
tail -f
сейчас под капотом inotify использует, поэтому подписатся на логи проще, запустив нижеприведенный код после ребута (systemd service или тот же крон)tail -f logfile | grep "keyword" | xargs send_notification.sh
Но мне кажется все таки, что изначальная задача немного о другом.
Izaron
19.01.2022 14:22Таким образом - делаем в cron ежеминутную задачу - отслеживать конкретный лог-файл на предмет ключевого слова/фразы/цифры и т.д.
Мне кажется, это одно из худших проявлений Hyrum's law. Мне было бы неприятно, если после релиза с изменением логов стали стучаться в личку и требовать вернуть их назад, а то не считается статистика за день. Настолько "разумную жизнь" на основе логов надо убирать как можно быстрее.
maxim_ge
19.01.2022 10:56Задача была в следующем, мы должны спроектировать нотификейшн систем, который отправлял бы нотификейшены, когда его об этом будут просить сторонние сервисы.
Можно более подробно про условия задачи? Также не очень понятны требования:
- Notification Service is ext
- Do not loose data
Silverthorne
19.01.2022 13:32Похоже, что хотят внешний event-driven notifications service и намекают, что at most once delivery не пойдет (как и просто фейлить обработку событий без ретрая)
andreyka26 Автор
20.01.2022 03:46там в процессе накидывал реквы.
"notification service is ext" - Вобщем, имейл сендер, phone notification sender - это не наше, может упасть, нужны ретраи. То, что будет нас колать - тоже не наше, я в принципе отделил пунктирной линией на солюшне своем (только лоадбалансер должен быть выше).
"Do not loose data" - Мы не должны потерять запрос на посыфл нотификейшна
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
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 — длина максимальной строки.
Если
Ogoun
19.01.2022 13:48Забыл добавить проверку что сумма длин составляющих слова будет равна длине слова. А жадный алгоритм действительно не подходит. Придется задуматься.
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 в нужном месте. Потом понял, что у меня строчки-состовляющие в обратном порядке выводятся, развернул цикл.
iboltaev
19.01.2022 16:20Вторая: эту я тогда не решил, не успел, брутфорс падал по таймауту, нужно было дайнемик программинг использовать.
Тут не динамическое программирование, а префиксная сумма + бинарный поиск по ней
wataru
19.01.2022 16:30Не надо никаких бинарных поисков. За два прохода в разные стороны можно для каждого символа найти ближайший слева или справа "|". Так можно сузить отрезок-запрос до границ контейнеров за константу. А потом, как вы и написали — перфексные суммы.
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."
В чём конкретно была загвоздка я так и не понял, потому что все кодин челенджи я решил(я был хорошо подготовлен), и по реакции на мои систем дизайн ответы, мне казалось, что тоже норм наговорил.
Пути Амазона неисповедимы.
catanfa
Спасибо, было интересно читать!
В задачах на кодинг всегда можно было выбирать любой язык? Среду для разработки можно было выбрать, или нужно было использовать их собственную? Если их собственную, но насколько она хороша? Ближе к блокноту, или с автокомлитом, и т.д.?
andreyka26 Автор
да, по крайней мере можно было джс и дотнет, это те - которые использую я, в зависимости от задачи.
Среда их только, этот livecode.amazon, да похоже на блокнот, только синтаксис подсвечивается, а так - больше ничего там нет, на счет автокомплита не помню - вроде не было)
Спасибо за комментарий))
maxdanify
Да это обычный блокнот с подсветкой. Компиляцией занимается интервьюер.