Meet speakers from Tinder, IBM, Siemens, Indeed and other QA Rockstar’s on …Testing Stage, Save $30 till 28/02
×Закрыть

Марафон по подготовке к интервью в FAANG

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

Зачем это мне? Как минимум, мотивация, можно наблюдать свой прогресс или использовать в будущем для повторения материала. I will try to post updates every week or so.

Стартовые условия:
1. Страна проживания США
2. Работа не FAANG
3. Основной язык Java
4. Раньше решено около 100 задач на литкоде
5. Цель офер FAANG
6. Время на подготовку к телефонным интервью 2.5-3 месяца (ориентировочно 1 апреля)
7. Время на подготовку к онсайту 4 месяца (ориентировочно 1 мая)

Поехали ...

Вдохновением послужила тема dou.ua/forums/topic/28593

Update 2020-01-19 dou.ua/...​rums/topic/29440/#1761881

LinkedIn

Лучшие комментарии пропустить

Стартовые условия:
1. Страна проживания США

Читер :)

Можете мне написать — я тоже из Cиэтла. Относительно собеседований в FANG и все, что с ними связанное. Выскажу свое humble opinion.

-1: Резюме: делайте его не более чем на 2 страницы. Рекрутер часто вообще не читает ваще резюме и если видит, что вы подходите — спросит все по телефону. Вообщем по статистики он тратит на просмотр резюме 6 секунд — так что сделайте его работу проще.

0: Телефонное собеседование: напишите текст. В целом вопросы будут по опыту и так далее. Над чем работали, ваша роль, технологии. Что вам интересно, какой процесс интервьюирования. Ничего сложного. Google меня очень впечатлил организаций — они всегда перезванивали в точно назначенное время, всегда переносили если нужно было — я бы сказал, что лучше я еще никого в рекрутинге не встречал.

0+: Телефонное собеседование: было пару разу. В целом обычный кодинг — уровня leet-code. От простого до среднего. Старт-апы вообще иногда заморачиваются. Я проходил в Cruise Automation и мы решили задачу где-то минут за 25, и за 10 минут он дает другую задачу. Я писал на Go для алгоритма подходила MinHeap как наиболее оптимальная структура данных, а ее нет в Go — пришлось писать по памяти и я завалился, потому что не помнил как лучше сделать перестановку. Иногда просят реализовать Binary Search Tree, LRU, Stack/Queue итд. Когда-то два молодых русских программиста меня как-то попросил реализовать Red-Black Tree, на что я сразу сказал, что мы просто не успеем это сделать за час, тогда они попросили реализовать меня конечный автомат... вообщем мы друг друга не поняли.
В Uber была задача я бы сказал уровня middle-hard, я решил ее брут-форсом, но нужно было что-то за время O(n) и в целом с помощью интервьюэра я ее решил тоже и прошел на on-site interview.
Google просят писать код в google-doc, как по мне эта самая жесть — больше тратишь времени, чтобы правильно все расставить, чем думать над задачей. Почему не использовать какой-то codepad.io для таких целей, я не понимаю.

0++: Иногда просят сделать домашнее задании и что-то написать. Amazon просил написать эссе о самом инновационном, что я сделал. Мне было сложно, но я сделал — было полезно и потратил два дня. Иногда дают задачи — не сложные, но интересные — я тоже всегда делаю, полезно для прокачки мозгов и навыков кодирования/алгоритмики. Amazon вас сразу отправить на свой сайт — там 2 задачи на 90 минут, одна простая, другая сложная. Решить можно — но нужно четко знать алгоритмы.

1. Первое — это все-таки английский язык. Вы настолько умный, насколько вы можете об этом рассказать :)) И тут вы сразу на пару ступенек ниже местных кандидатов, поэтому нужно очень хорошо готовить behavioral questions. Также у вас может быть Team match или скажем lunch interview, где вы тоже можете показать себя или хорошо или плохо. В Amazon на позицию Solution Architect я 7 часов говорил только про leadership principles — реально было тяжело, вышел после интервью и чувствую, что у меня в голове каша. В несколько start-up было больше конекретики — как делал вот это, а как вот это, а если вот так. Тоже сложно — особенно в сжатые сроки. Нужно явно готовить истории, прорабатывать их и уже потом с той или иной степенью вариативности их рассказывать.

2. Что касается coding-interview: он будет, но в зависимости от позиции. Скажем на позицию Architect этой части может не быть вообще, а на позицию SDE будет скорее всего на каждом интервью. Leetcode помогает наработать паттерны решений и набить руку, как решать такие задачи — сначала вы решаете ее не эффективно, потому подбираете уже более разумный алгоритм. Кстати, leetcode задача в чистом виде попалась только раз в Amazon. У меня где-то 220-250 решенных задач — делаю часто в свободное время или на работе, когда скучно.
Никогда не спрашивали конкретно по технологиям — т.е. всем все равно, только в Microsoft я писал все задачи на Go, а они все дальше C# не ушли. Я так понял, что они и код мой на доске слабо понимали — я отказался, потому что чисто индуская команда.

3. System-Design: тоже в зависимости от позиции, будет либо много, либо очень поверхностно. Тут реально нужно проходить курсы и запоминать. И самое главное тут — это понять, что от вас вообще хотят, либо просто общий дизайн, либо проработку требований, либо как вы подходите к решению нестандартный вещей, либо как можно это масштабировать. В целом лучше собрать требование сначала, а потом уже начать предлагать какой-то наиболее просто дизайн.
Пройдите курсы — очень помогает с подходом. Мне пока это дает с трудом.

4. Bar raiser: это вообще часто «жесть». Тут вообще что угодно могут спросить — меня просили когда-то придумать алгоритм, как Shazam распознает музыку, и я примерно пришел к тому же решению, что и делает Shazam — а оказалось, что они хотели услышать от меня решение на базе обхода графа, я тогда не сильно спорил — потому что не знал, как они распознают музыку. Где-то меня просили задизайнить поисковый индекс. Всякие SOLID спросили только раз — я ответил, а потом спросил каким из принципов они следуют в своих проектах и сказали, что следуем в зависимости от проекта. Откровенно говоря полная фигня.

5. Интервью с менеджером: Тут больше bla-bla-bla. Иногда мне просто нравилось поговорить и я обычно отказывают от ланча, потому что говорить с набитым ртом не очень удобно. Да и когда поешь, потом мозг вообще не работает.

На какой уровень идешь?

Не забудь отменить месячную LC Premium подписку после получения офера.

В LC сортируй задачи по популярности и решай топ 25. А лучше сортируй по популярности в конторе в которую собираешься собеседоваться. Кроме этого, просматривай и решай задачи про которые пишут в обсуждениях недавних интревью, а так же те которые недавно упоминали на blind. То есть уделяй время свежаку, который собеседующие используют прямо сейчас.

Чтобы не возиться долго с LC задачами, я бы рекомендовал сразу просмотреть все способы решения, а потом их уже реализовать и проверять корректность. Сидеть и пыхтеть над задачей с нуля нет никакого смысла, потому что цель LC это набить руку и натренировать мозги на распозование классов задач и запоминание подходов. 60%+ задач решаются используя какой-то хитрый трюк, а не методом запугивания задачи своим могучим CS опытом.

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

Советую просмотреть Кормана Intro to algos чтобы освежить алгоритмы. Так же советую прочить что-нибудь про подходы решения олимпиадных задач, он же competitive programming. Я читал бумажную версию вот этого чувака cses.fi/book, местами книга написана откровенно хреново, но зато даёт типичные подходы в сжатом виде. Читать другие талмуды не вижу смысла.

В дизай раундах твоя цель это найти разные варианты решения задачи и описать их pros/cons. То что может отлично работать с 1K QPS, может совсем не работать с 10MM QPS или с требованием чтобы P90 latency было меньше 10мс.

Если ты идешь в FAANG, то дизай раунд скорее всего будет либо про распределенные системы, либо про API. Для распределенных систем не забудь прочитать про консенсус/выборы лидера (туда же paxos и raft), consistent hashing (которых кстати уже как минимум пять штук), репликацию, шардинг, иерархическую струкруту систем с 10К+ нодами, балансировку нагрузки, плюсы/минусы разных типов БД, fault tolerance.

N из FAANG в Puget Sound нет, к тому же они берут только сеньорных чуваков. Apple строит кампус на Мерсере, но их рекрутеры очень сильно отмораживаются, берут в основном клауд чуваков. У F есть 9 офисов занимающихся продуктом, инфрой и железом. G в последнее время сильно занижает позицию и лоуболит. A гребёт всех подряд и даже можно получить хороший офер, в AWS веселей чем в retail. В Oracle OCI стоки дают раз в год, тебе повезет если перед этим ты не попадешь в очередной раунд увольнений (так же как в Uber). Uber, Lyft, Snap вполне норм если ты ок с тем как ведёт себя их сток. MSFT дает мало денег (по сравнению с FB/G), вне Azure очень скучно и половина чуваков это rest and vest чуваки, гребут всех подряд.

Не забудь получить несколько оферов чтобы можно было поторговаться. Выбивай больше стоков и sign up бонус. Смотри levels.fyi для текущего уровня ТС в той или иной конторе.

Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Процент hard задач из всех задач, которые задают в конкретной компании (если верить отзывам и тегам, округлил до ближайшего целого):
Apple 15%
Amazon 18%
Facebook 17%
Linkedin 18%
Microsoft 17%
...
Google 24%

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

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

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

База нарабатывается теорией и решением задач. Но как понять, что база сформирована в достаточной мере? Должны же быть условные маркеры, например 500 задач на литкоде или 3 решенные задачи за контест. Что-то более конкретное чем просто «иметь опыт».

База нарабатывается теорией и решением задач. Но как понять, что база сформирована в достаточной мере? Должны же быть условные маркеры, например 500 задач на литкоде или 3 решенные задачи за контест. Что-то более конкретное чем просто «иметь опыт».

для мінімального шансу я отут описав

dou.ua/...​rums/topic/28593/#1690771

20 задачок рівня easy, 5 medium, 3 hard
на різну тематику
масиви, стрічки, рекурсія, обхід дерева (прямо на leetcode.com є навчальні матеріали по цьому).
В ідеалі — www.coursera.org/learn/algorithms-part1 , книжка по алгоритмам «от создатєлєй» курса.
Книжка — «Cracking The Coding Interview». Її авторша часто партнериться з різними топ компаніями і знімає відео «как в хату ходить, что на стене чертить», чого очікувати на інтерв’ю, і як підходити до вирішення кодінгових задач. Погугліть.

И графы с их бфс/дфс как минимум. Помнить, что дерево — тоже граф

zzhou неправ в целом, но прав в частности. Литкод не самоцель, а средство в подготовке к интервью.
Если же ставить литкод как самоцель, методично целый год решать задачи каждый день, решить 500-600 задач, то в итоге на собеседовании результат может быть хуже, чем у того кто решил 70-100 задач. Важно решить достаточное количество задач из разных разделов и разных уровней сложности. Например, 10 задач на массивы и сортировки, 10 задач на динамику, 10 на графы и т.д.

Важно решить достаточное количество задач из разных разделов и разных уровней сложности.

я почему-то думал важно пройти интервью ))

Вот в том то и дело, что это «достаточное количество» должно как-то хоть и грубо, но измеряться. Вот у меня сейчас стабильно 2 задачи за контест, иногда 3. Чувствую, что этого не достаточно. По 10 задач на топик тоже как-то маловато. Плюс чем больше задач решаешь, тем выше шанс наткнуться на одну из них на интервью и уже знать суть решения.

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

Человек удвоил зп после 6 интервью:
Over the span of 4 weeks, I solved about 60 total, mostly mediums. ~50 I did on my own, ~10 I read the solutions and re-implemented it.

Why only 60? After a certain point, for every solution I learned, it felt like I forgot previous one. In my opinion, really making sure you understand why a solution works is more important than just speedrunning hundreds of problems. After doing enough, you’ll start to see the same patterns come up and cramming more Leetcode had diminishing returns for me. I often went back and re-did previously solved problems to make sure I remembered how to do them.

Memorizing a solution is like giving a man a fish. Learning how to solve certain types of problems is like teaching a man to fish.

Відповідь від учасника контестів: ви вірно відчуваєте, що мабуть таки треба дещо краще. Натренувати більше тем. Але вам також вірно пишуть, що контести — це ніфіга не інтерв’ю. Якщо шо — я більше вкладаюсь в час, ніж не вкладаюсь на контестах. В гугол пролетів (одна задачка із трьох і те н лог н де можна н). В Амазон не пройшов онлайн частину (!), мабуть тому що не знайшов якийсь corner case на вкрай тупій задачці (проходило 19/20, по О(н) складність була оптимальною).

На контесті є умова відразу. На інтерв’ю її треба видирати із інтерв’ювера. Треба говорити. Є великий рандом і різниці через різні причини. Задачки дуже різні. Інколи досі встигаю вирішити лише дві, а наступні дві за годину без проблем дописую. Інколи хард така, шо годину афігєвший мучаю на контесті, ще день думаю/пробую, потім все одно йду у рішення. Є різниця в конторах, мені здається в Амазон таки набагато легше, ніж в Гугол. Можливо є різниця, в тому, на якій левел ідете, тобто скільки орієнтовно просите.

Блін, всі теми про марафони, кракі інтерв’ю, ніхто з тих, хто успішно відмарафонив, не не напише — як він говнокодив в FAANG нікому не потрібний внутрішній сервіс а менеджер міряв мій перфоманс лінійкою і нею же мене підгоняв по нижній задній гендернонейтральній голові, як йому в буткемпі соску в рот сували, як він плакав в амазоні, етс.
Хоча, була стаття колись.

За прошедшее время решил 21 задачу (почти все медиум)
Итого с начала подготовки 15 + 12 + 21 = 48 задач

Участвовал в контесте, решил 2 задачи (easy и medium) из 4. С hard пока сложно решить не посмотрев в ответ. Из 7800 участников одну из задач решило меньше 200. Первые две задачи решаются за 15-20 минут, на остальные две остается больше часа. Каким образом без подготовки как кое-то выразился «на сообразительность» можно выдать готовое решение для этой задачи за 20-25 минут?

цікаво, що там за мегамозги, швидкопечатальщики чи чітери, що першу задачку за 1 хв з копійками рішають? :-)

Первая почти всегда супер-изян, ну если это не DP или что-то специфическое.

Первая почти всегда супер-изян, ну если это не DP или что-то специфическое.

та нехай
але за 1 хв з копійками напишете?

Я решал Easy задачки на литкоде за минуту с копейками. Если что-то относительно простое и интуитивное, или я до этого решал подобную задача и знаю о edge case

Вот пример:

leetcode.com/...​product-of-three-numbers

Запилил решение с сортировкой «on the spot», до этого ни разу не видел задачу и не слышал про нее. Заняло ровно столько времени сколько занимает набить этот код

        Array.Sort(nums);
        
        int length = nums.Length;
        
        return Math.Max(
            nums[0] * nums[1] * nums[length - 1],
            nums[length - 3] *  nums[length - 2] * nums[length - 1] );

Плюс сколько-то времени заняло прочитать условие — это не засекал.

Толку в том, что вы решили задачу за минуту, если вы решили ее не правильно?

С этого места, пожалуйста, поподробнее. Все тесты проходит.

На вскидку: [-10,-9,-8,-7,-6,-5,1]

Мой код выдает ответ: 90 ((-10) * (-9) * 1). Приведите комбинацию, произведение которой больше 90

Прошу прощения, не рассмотрел один из индексов.

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

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

ріспект :-)

leetcode.com/...​f-n-and-its-double-exist

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

Мое решение:

        for (int i = 0; i < arr.Length; i++) {
            for (int j = 0; j < arr.Length; j++) {
                if (i == j) {
                    continue;
                }
                
                if (arr[i] == arr[j] * 2) {
                    return true;
                }
            }
        }
        
        return false;

Потратил больше времени, потому что начал думать как решить за O(n), но умные люди, вероятно, знают правила игры лучше, чем я, и сразу идут брут форс там, где видят, что он прокатит (по условию — в массиве не более 500 элементов, так что брут форс рулит)

И в чем отличие задачи от того же 2Sum? Берете HashSet и вот вам линейное время

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

class Solution {
public boolean checkIfExist(int[] arr) {

if (2 > arr.length || arr.length > 500) return false;
Set existingNumbers = new HashSet();

for (int i = 0; i < arr.length; i++) {
if (existingNumbers.contains(arr[i] * 2)) return true;
if (arr[i]%2 == 0 && existingNumbers.contains(arr[i] / 2)) return true;
else existingNumbers.add(arr[i]);
}

return false;
}
}

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

Як правильно підказали знизу задачка схожа на leetcode.com/problems/two-sum
І рішається схоже, з dictionary у Python.
Легенькі задачки (точніше, елементарні), я рішав бувало в районі 5 хв (це з підготуванням локального каталога, і т.д.)
Тут вирішив піти на поводу у натовпу, вирішив прямо в браузері.
Здав з третьої спроби, тому що суперницький стрес на час і відповідно кууупа дурних логічних помилок. І це при тому, що ідея зрозуміла і зрозуміло, як вирішувати.
7:40

Ну вот, написал прямо в литкоде, первый самбит и все работает

    public boolean checkIfExist(int[] arr) {
        HashSet<Integer> m = new HashSet<>();
        for (int i=0; i<arr.length; i++) {
            int v = arr[i];
            
            if (m.contains(v * 2) || ((v % 2 == 0) && m.contains(v / 2))) {
                return true;
            }
            m.add(v);
        }
        
        return false;
    }

Я бы не гнался за контестами, а, все же, старался бы искать решения пооптимальнее. Хотя если на интервью интервьюер действительно укажет такие халявные ограничения (напоминающее классическое crackingthecodinginterview’шное «нужно отсортировать массив интов, как будете делать», с идеей того что это массив возрастов), то может и такое бы прокатило.

Приходи к нам на обед как-нибудь :)

я думал сеньйоры лямбдами и стримами все пишут, ну на крайняк можна было foreach прицепить, а не банальное for int i=0

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

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

  public boolean checkIfExist(int[] arr) {
    return
        IntStream.of(arr).filter(x -> x == 0).count() > 1 ||
          IntStream
            .of(arr)
            .boxed()
            .filter(
                IntStream
                    .of(arr)
                    .boxed()
                    .flatMap(x -> x % 2 == 0 ? Stream.of(x / 2, x * 2) : Stream.of(x * 2))
                    .collect(Collectors.toSet())::contains)
            .anyMatch(x -> x != 0);
  }
запихнуть в один expression.

расстрэлять!

дякую, що відсіюєш «умніків»

public boolean checkIfExist(int[] arr) {         HashSet<Integer> m = new HashSet<>();         foreach(int v: arr) {                    if (m.contains(v * 2) || ((v % 2 == 0) && m.contains(v / 2))) {                 return true;             }             m.add(v);         }         return false;     }

нада писать поддерживаемый, расширяемый код, а не извращенния )))

І це тепер називається ван-лайнер? оце ван-лайнер:

class Solution {
public:
bool checkIfExist(vector<int>& v) {
   return size(unordered_set(begin(v), end(v), 1, [](int){return 0;}, [](int a, int b){return a==2*b||b==2*a;})) < size(v);
}};

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

p.s. я специально написал в изначальном сообщении про «один expression», а не одну строку. Одним выражением можно много чего сделать :)

рейстрейсер — жжжесть :-)

ничего такого, там кстати некоторые вещи скрыты в
select thing.Intersect(traceRayArgs.Ray) и let ray = new Ray() { Start = scene.Camera.Pos, Dir = point }

Встречаются задачи, где просится решения стримами/ламбдами. Но опасно.

Один раз застрял минут на 10, пока пытался понять, какой именно overload GroupBy мне понадобится (docs.microsoft.com/...​pby?view=netframework-4.8), имея доступ к документации, и как его правильно написать в веб-редакторе. Лучше простым дедовским методом.

Да. У меня рука тянется написать

var set = new HashSet(arr)

после этого начинают вылазить куча edge case’ов (типа два 0). Чтоб понять, что надо добавлять в set по мере обработки массива, нужно время, забили решил сделать обычным O(n*n).

Приходи к нам на обед как-нибудь :)

Вы где?

Я в керкленде, но разок могу съездить в slu-шный офис. Я там еще не был. Раньше сидел в Dawson, потом в Nessie, так что с местами знаком :)

не прокатит, время не линейное, скорее даже квадратное

Для контеста — прокатит. Решение, которое я выше написал, проходит все тесты

Це був складний контест саме через ту задачу. Спробуйте бівіклі leetcode.com/...​ntest/biweekly-contest-19 — він був легкий.

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

1. 30 задач на литкоде за неделю не осилил, решил всего 12.
Начал писать юнит тесты для решенных задач. Если кейс на литкоде зафейлился, то добавляю его входные данные в юнит тест. Плюс подобного подхода в том, когда будешь смотреть на свое же решение через месяц-два, то сразу будешь видеть подводные камни, на которые уже натыкался.
2. Algorithms, 4th edition by Robert Sedgewick and Kevin Wayne прошел два первых раздела (фундаментальные структуры данных, сортировки).
Заимплементил quick sort, merge sort, selection sort, insertion sort, свой ArrayList, Stack на основании ArrayList, Union-Find.
Книга очень хорошо написана, доступно, детально, с хорошим пояснением (но без сильного углубления в теоретическую математику и формулы, как в Кормене).

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

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

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

я задачки рішаю на Python
структура така
зверху їхній class Solution, знизу def main з print-ами
раніше було == True, тепер Syntastic матюкається і я поставив для його заспокоєння is True, is False
для сабміту даю їм частину до def main

class Solution
...
def main():
    print(Solution().isBipartite([[1, 3], [0, 2], [1, 3], [0, 2]]) is True)
...
    return 0

if __name__ == "__main__":
    main()

Совет: юнит тесты мешают подготовке. Дергни main c 1-2 наборами входных данных и фигачь другую задачу. В подготовке надо держать темп и правильный фокус. От вылизывания деталей нет никакого толка.

Если во время собеседования забыл название какой-то (не-)существующей полезной функии, то не надо сразу бежать и писать свою реализацию, как тот чувак с бинарным хипом. Скажи «предположим, что есть такая-то функция и работает она так-то» и сфокусируйся на основной проблеме. Не бойся стереть с доски и переписать в другом месте условие задачи чтобы было больше места. За день до собеседование спланируй когда ты ляжешь спать, чтобы проснуться свежим и выспавшимся. На завтрак и обед — немного легкой еды, чтобы не тянуло в сон после увесистого стейка. Рекомендую бахнуть таблетку парацетамола (тайленол)/ибупрофена перед собеседованием чтобы не болела голова, потому что тебе придется активно говорить 5+ часов. Всегда, абсолютно всегда проси дать 1-2 примера чтобы не тратить 45+ минут на решение не той задачи :)

Заимплементил quick sort, merge sort, selection sort, insertion sort, свой ArrayList, Stack на основании ArrayList, Union-Find.

Делай упор на графы — разные обходы, обход используя рекурсию и стек, обходы с запоминаниием, поиск циклов, де-/сериализация, слияние компонент, поиск общего предка, интервальные деревья. В большинстве случаев достаточно обычных бинарных деревьев, но есть и задроты которые просят написать 200 строк на доске для балансировки каких-нибудь AVL деревьев (тут ты сразу идешь назначать собеседование в другую компанию :) ). Некоторые чувасики спрашивают задачи, где нужна топологическая сортировка. У меня два года назад в msft почти все задачи были на графы.

Не забудь про trie и компактные формы trie. Слияние интервалов. Бинарный поиск двумя методами. Можно глянуть на spatial partition для двумерного пространства. Хорошо бы знать, как смержить N отсортированных списков с помощью «10» строчек. Поиск дубликатов с помощью сотрировки и хеш таблиц. Комбинации и permutation. Не знаю почему, но реализацию LRU кеша спрашивают довольно часто.

Хорошо подготовленный глубокий ответ на behavior вопросы даёт +30% буста к успеху.

Удачи.

Совет: юнит тесты мешают подготовке. Дергни main c 1-2 наборами входных данных и фигачь другую задачу. В подготовке надо держать темп и правильный фокус. От вылизывания деталей нет никакого толка.

решта підтримаю, окромя оцього
на співбесіді можуть дати corner чи заковиристі cases, і якщо не наловчитися проходити leetcode зі 100% пройдених тестів, то можна звикнути до писання халтурного коду

Тест кейсы в LC — полный отстой. Не стоит на это тратить время.

Абсолютное большинство задач спрашиваемых на собеседовании не имеет corner cases, либо же они сходу понятны и вовсе ими не являются.

халтурного коду

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

решта підтримаю, окромя оцього

Не спорю, у каждого свой подход. У чувака цель это подготовиться к собеседованию и получить офер, а не получить 100% code coverage кода который он завтра выбросит. Это и должно быть основным драйвером.

Тест кейсы в LC — полный отстой. Не стоит на это тратить время.

там є такі простенькі, які задачу, вирішену не оптимальним способом (брутфорсом), не приймуть по таймату

Нещодавно бачив там якусь задачку, medium, здається, алгоритм дуже простий, думаю, чого вона не ізі, а вона на те, щоб саме правильно закодити, там нуль, там вже нічого нема, раз код завалився, два завалився.

Согласен со всем, кроме

Совет: юнит тесты мешают подготовке. Дергни main c 1-2 наборами входных данных и фигачь другую задачу. В подготовке надо держать темп и правильный фокус. От вылизывания деталей нет никакого толка.

Возьмем для примера leetcode.com/...​-rotated-sorted-array-ii
С первого взгляда задача полностью аналогична leetcode.com/...​-in-rotated-sorted-array с использованием бинарного поиска сначала для нахождения pivot point, потом для бинарного поиска с сдвигом. Закодил, не прошло, подумал, исправил, опять не прошло, потратил 50 минут, посмотрел в решение и реализовал правильно.

А на будущее добавил себе юнит тест с условием
assertTrue(sol.search(new int[]{2, 2, 2, 0, 2, 2}, 0));
Соответственно, если я захочу освежить решенные задачи в будущем, то сразу увижу юз кейс с подводным камнем вместо того, чтобы наступать на те же грабли опять.

На какой уровень идешь?

Не забудь отменить месячную LC Premium подписку после получения офера.

В LC сортируй задачи по популярности и решай топ 25. А лучше сортируй по популярности в конторе в которую собираешься собеседоваться. Кроме этого, просматривай и решай задачи про которые пишут в обсуждениях недавних интревью, а так же те которые недавно упоминали на blind. То есть уделяй время свежаку, который собеседующие используют прямо сейчас.

Чтобы не возиться долго с LC задачами, я бы рекомендовал сразу просмотреть все способы решения, а потом их уже реализовать и проверять корректность. Сидеть и пыхтеть над задачей с нуля нет никакого смысла, потому что цель LC это набить руку и натренировать мозги на распозование классов задач и запоминание подходов. 60%+ задач решаются используя какой-то хитрый трюк, а не методом запугивания задачи своим могучим CS опытом.

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

Советую просмотреть Кормана Intro to algos чтобы освежить алгоритмы. Так же советую прочить что-нибудь про подходы решения олимпиадных задач, он же competitive programming. Я читал бумажную версию вот этого чувака cses.fi/book, местами книга написана откровенно хреново, но зато даёт типичные подходы в сжатом виде. Читать другие талмуды не вижу смысла.

В дизай раундах твоя цель это найти разные варианты решения задачи и описать их pros/cons. То что может отлично работать с 1K QPS, может совсем не работать с 10MM QPS или с требованием чтобы P90 latency было меньше 10мс.

Если ты идешь в FAANG, то дизай раунд скорее всего будет либо про распределенные системы, либо про API. Для распределенных систем не забудь прочитать про консенсус/выборы лидера (туда же paxos и raft), consistent hashing (которых кстати уже как минимум пять штук), репликацию, шардинг, иерархическую струкруту систем с 10К+ нодами, балансировку нагрузки, плюсы/минусы разных типов БД, fault tolerance.

N из FAANG в Puget Sound нет, к тому же они берут только сеньорных чуваков. Apple строит кампус на Мерсере, но их рекрутеры очень сильно отмораживаются, берут в основном клауд чуваков. У F есть 9 офисов занимающихся продуктом, инфрой и железом. G в последнее время сильно занижает позицию и лоуболит. A гребёт всех подряд и даже можно получить хороший офер, в AWS веселей чем в retail. В Oracle OCI стоки дают раз в год, тебе повезет если перед этим ты не попадешь в очередной раунд увольнений (так же как в Uber). Uber, Lyft, Snap вполне норм если ты ок с тем как ведёт себя их сток. MSFT дает мало денег (по сравнению с FB/G), вне Azure очень скучно и половина чуваков это rest and vest чуваки, гребут всех подряд.

Не забудь получить несколько оферов чтобы можно было поторговаться. Выбивай больше стоков и sign up бонус. Смотри levels.fyi для текущего уровня ТС в той или иной конторе.

Кстати у SalesForce отличный вид из окна офиса в Bellevue. Так же баристы готовят отличный кофе.

Вот ещё. Для behavioral раундов выпиши список своих проектов, так будет проще подготовить ответ на типичный амазоновский «Give me an example of a calculated risk that you have taken where speed was critical».

Ответы на behavioral вопросы должны быть по STAR (situation, task, action, result), и должны демонстрировать определенный уровень глубины. Если ты знаешь, что данный тобой ответ вовсе не показывает тебя с лушей стороны, тогда надо добавить что-то вроде «да, я облажался/-лась там-то и там-то, сейчас я знаю что для получения лучшего результата в будущем я буду делать то-то и то-то».

в AWS веселей чем в retail

Иди в AWS, говорили они. Будет веселей, чем в retail, говорили они.

в AWS веселей чем в retail

Скупая мужская слеза прокатилась по щеке. По сравнению с весельем, задаваемым реинвентом и менеджерским пушем «надо успеть», ритейловские прайм дей и блек фрайдей кажутся детскими утренниками (хотя, конечно, это не так — достаточно было сходить в ритейловский war room в любой из этих дней). При том, что у нас в ритейле была одна из наиболее нагруженных систем.

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

А для API?

На какой уровень идешь?

Будет видно ближе к собеседованию

Не забудь отменить месячную LC Premium подписку после получения офера.

Пока не платил за премиум подписку.

Будет видно ближе к собеседованию

Сколько у тебя yoe?

в телеге Сергей Сема создал канал для уезжанов — там как раз

локальное комьюнити тру задротов

только пока что не работающих в фаангах
Кому тема интересна- найдет ссылку на канал в его статье на доу.
Можно даже сказать — клуб выдающихся джентельменов- все культурные и вежливые.
И что не свойственно украинской культуре- помогают друг другу.
Вообще гордость берёт за тот канал

Как и обещал, буду оставлять апдейты по подготовке
1. За неделю прошел 15 задач на литкоде
2. Поучаствовал в контесте на литкоде. Смог решить 3 задачи из 4 за полтора часа. Одну easy, две medium, hard не решил. Одна из медиум получилась из «говна и палок», много if-else и ненужного кода плюс не совсем оптимально. Понимаю, что на интервью надо дойти до более-менее оптимального решения за отведенное время и написать нормальный, а не говнокод (Написание коротких аббревиатур или букв вместо длинных названий переменных во время интервью на доске считается нормальным)
3. Глянул Cracking the coding interview. Не сильно понравилась. Мне кажется, что она уже немного морально устарела. 5-10 лет назад это было хорошим чтивом, но сегодня многие концепции misleading at best. Часто предлагается начинать с брут-форса, или накодить неоптимальное, а потом улучшать походу дела. За последние 5-10 лет в индустрии требования и ожидания от лидеров рынка по задачам становились все выше и выше и выше.
Если я хорошо натренировал динамическое программирование и услышав задачу понимаю как ее решить, то не вижу смысла углублятся в брут форс, потом через рекурсию, потом с мемоизацией и опосля приходить к оптимальному решению. Вывести рекурретное уравнение не помешает, а потом можно переходить непосредственно к оптимальному решению, объяснив ход своих мыслей.
Изложенное в книге можно уместить в 200-250 стр, ане 700
4. Programming interviews exposed — краткое описание и освещение основных структур данных (списки, деревья, графы и т.д.), без углубления. Если едешь в метро или автобусе, можно читать по дороге на работу. Не стал времени тратить на книгу и использовал как легкое чтиво.
5. Elements of Programming Interviews in Java — офердоф*га задач (как для книги) сгрупированным по типу пример-объяснение-решение, рассчитанных на задротство. Не рекомендовал бы начинать с нее. Гораздо лучше пройти и иметь хорошее понимание основ, структур данных, основных алгоритмов + литкод для закрепления метериала и набить руку на задачах (практический опыт решения задач). Рекомендовал Elements of Programming Interviews для
— заглядывать, если не подошло объяснение на литкоде или на geeksforgeeks (на последнем часто ж*пские объяснения с ошибками или не учитывают многие вещи).
— поставить себе цель, читать и разбирать по одной задаче в день помимо литкода и теории. Грубо говоря, з*ебал литкод — переключись на что-то другое, начни читать книгу.

план на слудующую неделю +30 задач

Под сухое винишко задачки почему-то хорошо решаются)

Не всегда, правда, тесты проходят, под винишко то :D
Но решаются да, хорошо

2 изи, медиум и хард прошли)

1. За неделю прошел 15 задач на литкоде

Молодец. Уважаю целеустремленность.

Один совет — главное не впасть в типичную ошибку начинающих — дебажить и фигачить кейс за кейсом пока не пройдет (паттерн — видно дофига сабмитов). В идеале после исправления первых ошибок компиляции решение должно быть через 2-3 сабмита, без всяких time out exceeded.

3. Глянул Cracking the coding interview. Не сильно понравилась. Мне кажется, что она уже немного морально устарела. 5-10 лет назад это было хорошим чтивом, но сегодня многие концепции misleading at best.

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

5. Elements of Programming Interviews in Java —

Моя любимая. У меня есть 2 издания — первое, которое біло еще на C++, и джавовское тоже есть, настолько она мне нравится. Хотя там тоже есть разборы задач и решения, которые я, как интервьюер, мог бы на собеседовании и не оценить.

Грубо говоря, з*ебал литкод — переключись на что-то другое, начни читать книгу.

Или просто на этот день хватит. От выгорания себя тоже защищать надо.

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

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

це персонально, я до 10-11 вечора рішав у період підготовок

вот я не понимаю — кому на*** нужна эта алгоритмика? ну спрашивайте что-то нормальное: линал, численные методы, исследование операций, дискретная оптимизация.

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

за очередное красно-чёрное дерево хочется взять и у##ать прямо на месте.

На яких робочих задачах особисто ви використовували лінійку та числаки?
Навіть на Data Scientist дещо інші речі питають. Власне Data Science питають, що є close, but not quite.

Отвечу как Иисус, вопросом на вопрос: а красно-чёрные или AVL вы часто используете на работе?

просьбы зафигачить по памяти AVL или Red-black балансировку это исключение, задачи где нужно суметь применить BST — нет.

чтобы реализовать базовый bst надо просто не быть дебилом

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

ну я не совсем программист, у меня линал everyday

Ну а там — зовсім програмістів наймають. Ну і по числакам хотілося б приклад.

пример чего? любая декомпозиция — хош SVD, хош LDL. положительно определенные матрицы — наше все. даже еще проще — поиск собственного базиса — вычметоды.

что еще? чувствительность к выбросам во входных данных (число обусловленности), гауссовский процесс для нелинейной интерполяции/регрессии, согласование альтернатив (и вообще спектральные задачи), тысячи их. любимые всеми в ML и не только градиентные методы = линал + вычметоды (ну и капелька векторного анализа).

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

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

пример чего?

Робочої задачі, за останній півроку-рік, де ви особисто їх використали. Зауважу, що чисельні методи, це як чисельно рахувати оті

хош SVD, хош LDL...

а не використати метод з бібліотеки, бо доки, звичайно, описують, як правильно ними користуватись.

конечно этого никто не пишет

Як і червоно-чорні дерева. Але як вони реалізовні — теж, загалом, знають.
А взагалі там на позицію DataScience подібне питають, тільки рівнем дещо вище. Так що у вас цілком є шанс це продемонструвати. Ну тільки алгоритми підтягнути теж, боюсь, доведеться.

зовсім програмістів

это сферический Computer science ? вряд ли там он вообще кому-то нужен за пределами университетов. это как алгебраическая топология — хорошо, но безумно далеко от станка.

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

линал, численные методы, исследование операций, дискретная оптимизация

делать нечего.

мне кажется нужны либо кодеры, которые умеют во фреймворк N

у FAANG-ах на таких начхати, там будуть вчити внутряні фреймворки, або пиляти фреймворки назовні
(наприклад, якщо про JavaScript — React, Typescript, Angular — запиляно у FMG)

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

такі да — ембеддерство, kernel, і мобайл-девелопмент

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

Если бинарные деревья вызывают такую адскую попоболь, какие там исследования операций, проснетесь!

А неплохо бы)) Зря я что ли это учу в универе к экзамену ILP всякие (знаю-знаю, что зря)

Які матриці в компаніях, що продають рекламу і профілі користувачів ? Задачі — конвертувати xml зі статистикою від Uber в JSON для загрузки в гугль.

Не передергивай.

Например, у ф окулус, в a пилят аркит, в н — хм.. не знаю, но тоже всякие видео, в г — аркор, тензорфлоу и овердохрена вообще всего. Так что если где и умножают матрицы, то это как раз в фангах.

киньте ссылку, как называется тот онлайн курс по систем дизайн который маст хев для собеседований?
за 80 баксов вроде

Одна мудра людина писала колись
dou.ua/...​rums/topic/28593/#1691187
кеши з лоад балансерами покриває безкоштовний hiredintech

а grokking system design — гівно, я уже писав нижче в комментах

на співбесідах мені попадалися в‘їдливі інтерв‘юери, яких оце рукомахання не задовільняло
===
переконатися безкоштовно можна тут (там і інші part є)
coursehunters.online/...​sign-interview-part-1/579

кращий ресурс
github.com/...​rtin/system-design-primer

new graduat’у системний дизайн при співбесіді не потрібен, якщо нульовий попередній досвід роботи?

new graduat’у системний дизайн при співбесіді не потрібен, якщо нульовий попередній досвід роботи?

я new grad не наймав тут, тому не скажу
порийтеся на форумах leetcode.com, як там народ описує своє працевлаштування

але, зокрема у універах бувають отакі бомбезні лекції, які покривають дуже багато інфи з того, що питаються і в тих, хто уже мав роботу
тому після таких лекцій можна і новачків ганяти
www.hiredintech.com/...​s/system-design/lesson/60

Можете мне написать — я тоже из Cиэтла. Относительно собеседований в FANG и все, что с ними связанное. Выскажу свое humble opinion.

-1: Резюме: делайте его не более чем на 2 страницы. Рекрутер часто вообще не читает ваще резюме и если видит, что вы подходите — спросит все по телефону. Вообщем по статистики он тратит на просмотр резюме 6 секунд — так что сделайте его работу проще.

0: Телефонное собеседование: напишите текст. В целом вопросы будут по опыту и так далее. Над чем работали, ваша роль, технологии. Что вам интересно, какой процесс интервьюирования. Ничего сложного. Google меня очень впечатлил организаций — они всегда перезванивали в точно назначенное время, всегда переносили если нужно было — я бы сказал, что лучше я еще никого в рекрутинге не встречал.

0+: Телефонное собеседование: было пару разу. В целом обычный кодинг — уровня leet-code. От простого до среднего. Старт-апы вообще иногда заморачиваются. Я проходил в Cruise Automation и мы решили задачу где-то минут за 25, и за 10 минут он дает другую задачу. Я писал на Go для алгоритма подходила MinHeap как наиболее оптимальная структура данных, а ее нет в Go — пришлось писать по памяти и я завалился, потому что не помнил как лучше сделать перестановку. Иногда просят реализовать Binary Search Tree, LRU, Stack/Queue итд. Когда-то два молодых русских программиста меня как-то попросил реализовать Red-Black Tree, на что я сразу сказал, что мы просто не успеем это сделать за час, тогда они попросили реализовать меня конечный автомат... вообщем мы друг друга не поняли.
В Uber была задача я бы сказал уровня middle-hard, я решил ее брут-форсом, но нужно было что-то за время O(n) и в целом с помощью интервьюэра я ее решил тоже и прошел на on-site interview.
Google просят писать код в google-doc, как по мне эта самая жесть — больше тратишь времени, чтобы правильно все расставить, чем думать над задачей. Почему не использовать какой-то codepad.io для таких целей, я не понимаю.

0++: Иногда просят сделать домашнее задании и что-то написать. Amazon просил написать эссе о самом инновационном, что я сделал. Мне было сложно, но я сделал — было полезно и потратил два дня. Иногда дают задачи — не сложные, но интересные — я тоже всегда делаю, полезно для прокачки мозгов и навыков кодирования/алгоритмики. Amazon вас сразу отправить на свой сайт — там 2 задачи на 90 минут, одна простая, другая сложная. Решить можно — но нужно четко знать алгоритмы.

1. Первое — это все-таки английский язык. Вы настолько умный, насколько вы можете об этом рассказать :)) И тут вы сразу на пару ступенек ниже местных кандидатов, поэтому нужно очень хорошо готовить behavioral questions. Также у вас может быть Team match или скажем lunch interview, где вы тоже можете показать себя или хорошо или плохо. В Amazon на позицию Solution Architect я 7 часов говорил только про leadership principles — реально было тяжело, вышел после интервью и чувствую, что у меня в голове каша. В несколько start-up было больше конекретики — как делал вот это, а как вот это, а если вот так. Тоже сложно — особенно в сжатые сроки. Нужно явно готовить истории, прорабатывать их и уже потом с той или иной степенью вариативности их рассказывать.

2. Что касается coding-interview: он будет, но в зависимости от позиции. Скажем на позицию Architect этой части может не быть вообще, а на позицию SDE будет скорее всего на каждом интервью. Leetcode помогает наработать паттерны решений и набить руку, как решать такие задачи — сначала вы решаете ее не эффективно, потому подбираете уже более разумный алгоритм. Кстати, leetcode задача в чистом виде попалась только раз в Amazon. У меня где-то 220-250 решенных задач — делаю часто в свободное время или на работе, когда скучно.
Никогда не спрашивали конкретно по технологиям — т.е. всем все равно, только в Microsoft я писал все задачи на Go, а они все дальше C# не ушли. Я так понял, что они и код мой на доске слабо понимали — я отказался, потому что чисто индуская команда.

3. System-Design: тоже в зависимости от позиции, будет либо много, либо очень поверхностно. Тут реально нужно проходить курсы и запоминать. И самое главное тут — это понять, что от вас вообще хотят, либо просто общий дизайн, либо проработку требований, либо как вы подходите к решению нестандартный вещей, либо как можно это масштабировать. В целом лучше собрать требование сначала, а потом уже начать предлагать какой-то наиболее просто дизайн.
Пройдите курсы — очень помогает с подходом. Мне пока это дает с трудом.

4. Bar raiser: это вообще часто «жесть». Тут вообще что угодно могут спросить — меня просили когда-то придумать алгоритм, как Shazam распознает музыку, и я примерно пришел к тому же решению, что и делает Shazam — а оказалось, что они хотели услышать от меня решение на базе обхода графа, я тогда не сильно спорил — потому что не знал, как они распознают музыку. Где-то меня просили задизайнить поисковый индекс. Всякие SOLID спросили только раз — я ответил, а потом спросил каким из принципов они следуют в своих проектах и сказали, что следуем в зависимости от проекта. Откровенно говоря полная фигня.

5. Интервью с менеджером: Тут больше bla-bla-bla. Иногда мне просто нравилось поговорить и я обычно отказывают от ланча, потому что говорить с набитым ртом не очень удобно. Да и когда поешь, потом мозг вообще не работает.

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

моя лічна нєнавість до цих тіпажів на телефонках/онсайтах

для алгоритма подходила MinHeap как наиболее оптимальная структура данных, а ее нет в Go

MinHeap в задачках практично завжди можна замінити на Balanced BST (такі, як те саме red-black tree). Тільки їх наче нема стандартних в Go так само. Тому може це проблема Go була? Я б не брав взагалі для таких задачок мову, де нема цього.

скорей всего речь идет о priority queue, min heap это один из эффективных способов ее имплементации.

Ну так про це і пишу — запросто на літкоді будь-яка задачка на С++ з priority_queue переписується на multiset і запихується, можу продемонструвати. Бо в multiset по біг-О така сама складність для таких самих задач (практично у pqueue є переваги, але вона зайде).

Я описал просто процесс. Вы берете на собеседование тот язык, который вы знаете больше всего. Я не люблю ни C#, ни Java для собеседований, потому что они часто скрывают сложность. Но это тема отдельного топика — «какой язык лучше выбрать для прохождения собеседований». И как вы сказали, нет

Balanced BST

в Go. Это не проблема языка — можно найти сторонние реализации, но если вы не понимаете, какую структуру тут использовать — чем вам это поможет ? MinHeap/MaxHeap это как пример — было собеседовании, где меня утром усадили на комп и сказали написать небольшой сервис, но с помощью написанного ими кодо-генератора. Я конечно сделал c помощью документации ( как оказалось все написано поверх grpc), но зачем — я все время делал и думал, что где-то тут должен быть подкол, какая-то сложность — а все оказалось просто.

К чему я веду — все извращаются как хотят.

Круто розписано! аби ще хто розписав так про речі, які питають в FAANG і в дрібніших конторах на позицію QA Automation mid-senior level

наверное, будет сложно, потому что QA позиций в фаангах нет. В MSFT довольно долго были SDET, это похоже прямой аналог QA automation, но тоже уже год как все.

скорей всего, кодинг такой же как и на SDE позиции, на системном дизайне вместо вопросов как задизайнить твиттер, вопросы как протестировать твиттер. Но я на самом деле не в курсе, в MSFT интервью SDE и SDET не отличались.

ну я теж читав, що на qa automation потрібно готувати кодинг/алгоритми.
все ж цікаво, на скільки відрізняєтья рівень складності завдань і чи відрізняється взагалі (в порівнянні з sde)/

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

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

Их нет в фангах.
Выльем в продакшон, там пользователей больше.

В Amazon на позицию Solution Architect я 7 часов говорил только про leadership principles

А что обычно еще спрашивают на позицию Solution Architect(не только в амазон)?

Оу, моя тема :-)

Вітаю з почином, підписався на комменти.
Будуть питання — задавай.
Про «нінужність літкоду» я навіть сперечатися не буду, у моїй темі та й тут у комментах народ не може прошибити унікума.

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

Мой главный совет неизменен — учите CS а не отдельные задачки по сайтам.

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

Ні, до тебе не доходить, бо ти не налаштований (!) сприймати інфу, яка відрізняється від твого досвіду. Таке враження, що ти не розумієш про що люди говорять, сайту в очі не бачив, живеш у уявному світі і безапеляційно заявляєш інфу із вашого тренінгу, хоча у реальному світі той же ж Blind переповнений інфою про задачки і проходження тої мороки. Якась невідома фігня/бар‘єр у твоїй голові це все відсікає.

В іншій гілці у тебе уже було віляніє і ти не відповів «про ази компьютеров»
dou.ua/...​rums/topic/28593/#1690682

тобі уже говорили докладно інші юзери

Задрачивать литкод — не нужно. Решать литкод — нужно.
Чтобы сразу отсеять разговоры об эффективности — эффективность онсайтов в этом году у меня 75%, у меня в этом году есть сеньорские оферы из поисковика и апельсина (из больших). И по результатам могу смело сказать что литкод нужен. в Лицокнигу (хотя я туда и не прошел) литкод тоже нужен (одна задача реально была с литкода, я ее решал во время освежения памяти перед гуглом). Я точно также проходил тренинги making great hiring decisions и hiring software engineers у нас в «Днепровских паутинных служениях».
Можно провести такую аналогию. Когда я поступал в КПИ то у нас были отдельные вступительные экзамены (не ЗНО как сейчас). На этих экзаменах были свои задачки, которые в обычной школе проходили мельком (классика — задачи с параметрами). Если ты не знаешь техники решения таких классов задач, то ты пролетишь в 90% случаев. Люди о них знали и готовили их специально. Литкод, при правильном подходе, дает технику и паттерны решения + возможность самоконтроля.
Пример — динамическое программирование, чтоб его. Скиена пишет, что когда ты понял подход, то алгоритмы решения задач на ДП проще каждый раз придумывать чем вспоминать. Но для понимания подхода нужно решить достаточное количество задач.
Есть еще один вариант — возможно тебе просто везло на определенный стиль интервью. Я встречал уже несколько раз ситуации когда вместо какого-нибудь «найдите точку начала цикла в связном цикле» были задачи чисто на cs и применение правильных структур в духе: «сделайте хеш-таблицу где элементы могут экспайриться», тот же lru кеш или partitioning. Т.е. не головоломки а именно cs задачи. Если это твоя сильная сторона то есть шанс что ты вывозил чисто на этом, хотя это гадание по фотографии уже

dou.ua/...​rums/topic/28593/#1691256

на ось цей коммент ти не відповів
я там підкинув задачок і запитався

Я завжди радий дивитися, як чуваки складну проблему розкладають на дуже просту математичними абстракціями. Хочеться подивитися і повчитися на прикладі застосування CompSci у всіх(!) цих задачках.

dou.ua/...​rums/topic/28593/#1690707

Може спустишся до нас, простих людей, і такі пройдешся по тим задачкам, розкажеш, як там CS допоможе?

Ещё раз — где я сказал что я умею литкодить? Мне это не надо. И сортировать красно-чёрные деревья меня не заставляют и trie я еле помню.

Системой найма персонала компании довольны — иначе они бы ее поменяли. Ею не довольны те, who didn’t make the cut. И я бы на их месте задался бы вопросом, в литкодинге ли дело.

Ещё раз — где я сказал что я умею литкодить? Мне это не надо. И сортировать красно-чёрные деревья меня не заставляют и trie я еле помню.

Системой найма персонала компании довольны — иначе они бы ее поменяли. Ею не довольны те, who didn’t make the cut. И я бы на их месте задался бы вопросом, в литкодинге ли дело.

Ти так відповів на питання, які ніхто не задавав, що я в шоці. Що у тебе було за читання і переказ у школі? Я би міг тут закінчити розмову, поставити тавро балабола, і просити всіх залінковувати цей коммент, коли ти ще раз скажеш, що літкод не потрібен... Але продовживо розваги.

Ще раз
1. ти вихваляєшся підготовкою по CS, і кажеш, що її достатньо, щоб пройти типові задачки, що задають на інтерв’ю (але щойно прозвучало вище «И сортировать красно-чёрные деревья меня не заставляют и trie я еле помню.», бггг)

Мені не ліньки повторити ще раз

Я завжди радий дивитися, як чуваки складну проблему розкладають на дуже просту математичними абстракціями. Хочеться подивитися і повчитися на прикладі застосування CompSci у всіх(!) цих задачках.

там по лінку 8 типових задачок, що трапляються на інтерв’ю
dou.ua/...​rums/topic/28593/#1690707

2. ти згадав

Cracking the Coding Interview (перед каждым собеседованием просматриваю по диагонали).

dou.ua/...​rums/topic/29440/#1756777

Питання — які є схожості і розбіжності у функціях та призначенні книжки «Cracking the Coding Interview» і веб-сайту leetcode.com ?

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

Но. Я сам был на собеседованиях. И я знаю что на тренингах говорят надо спрашивать и что не надо спрашивать. Поэтому когда рассказывают про зубодробительные задачи — то явно что-то не то. Подозреваю — дополнительные вопросы. Если есть подозрение что человек зазубрил задачу — то всегда положено ему задавать дополнительные вопросы. Вот тут и вылазит что человек зазубрил задачи а CS особо и не знает.

Я сказал что литкодинговые задачи имеют мало общего с реальным CS

Эмм, имеют. Или у тебя какое-то особое понятия о computer science, никому больше неизвестное. Вот пример задачи, имеет она что-то общее с computer science или нет? leetcode.com/...​s/search-insert-position

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

Чувак, т.е. ты даже не понимаешь о чем говоришь. Может зайдешь и посмотришь что там на сайтах есть?

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

прорив терапії, запишіть у протокол, я уже й не сподівався.

Но. Я сам был на собеседованиях.

мало був

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

ласкаво просимо до реального світу, це те, про що толкують на leetcode, на teamblind, і на ДОУ всі проти тебе одного
Тонни блогів, hiring is broken, карго-культ «How to move mount Fuji» головоломок замінився на кодінгові інтерв’ю із замороченими задачками.

Подозреваю — дополнительные вопросы.

ні, не вгадав — це типові задачки

Если есть подозрение что человек зазубрил задачу — то всегда положено ему задавать дополнительные вопросы. Вот тут и вылазит что человек зазубрил задачи а CS особо и не знает.

це у вашому тренінгу і вашому світі так
якщо роззути очі — то реальність інакша

мало був

Именно. Про. Это. Я. И. Говорю. <матюк>

Есть я, который был на паре собеседований. Я на работах годами окружен специалистами которые по собеседованиям не ходят. И никаких литкодов, «hiring is broken» и т.д.

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

ласкаво просимо до реального світу,

И чем мой реальный мир от вашего отличается? Только тем, что мы с разной стороны забора.

це у вашому тренінгу і вашому світі так
якщо роззути очі — то реальність інакша

Это тот же тренинг, который прошел тот человек, который вас так обидел.

Есть я, который был на паре собеседований. Я на работах годами окружен специалистами которые по собеседованиям не ходят. И никаких литкодов, «hiring is broken» и т.д.

Ти читаєш, що ти пишеш?
Ти щойно розписався у незнанні навколишнього світу на пару із своїми колегами.

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

А тут ти, як типовий програміст, вдаєшся у крайнощі і ад абсурдум. Також, не заставляй мене шукати твій коммент, як ти до того, як потрапив на Гугл, фиркав у сторону Гугла. Нічого ж, потім прорвався.

И чем мой реальный мир от вашего отличается?

Тим що ти у маня-міркє.

Это тот же тренинг, который прошел тот человек, который вас так обидел.

Бггг, я теж був на тренінгах, найголовніше там упор був на тому — щоб кандидата не ображати.

Але ми віддаляємся від основного прориву

Я догадываюсь что на этих сайтах есть замороченные задачи, которые никакой нормальный человек не решит сходу.

От ці задачі і задають

це у вашому тренінгу і вашому світі так
якщо роззути очі — то реальність інакша

i.kym-cdn.com/...​ginal/001/477/329/0ed.jpg

Cracking the Coding Interview особо замороченные задачи, вроде, не приводит.

Cracking the Coding Interview особо замороченные задачи, вроде, не приводит.

Погортав щойно — якщо не звертати увагу на дерева/графи (ну бо можна CS і практику нащолкати), то особо заморочені мені реально ліньки там шукати.
А от реальні інтерв’ю давно переплюнули Cracking the Coding Interview, лінки я скидав.

Интересно, а сама работа такой же раш или потом «передвинуть инпут поближе к кнопке» или же «143 параметр в методе 100500 класса работает со сбоями при полной луне»?

А от реальні інтерв’ю давно переплюнули Cracking the Coding Interview, лінки я скидав.

Т.е. это книга уже трата времени или профит от нее уже не велик ?

Интересно, а сама работа такой же раш или потом «передвинуть инпут поближе к кнопке» или же «143 параметр в методе 100500 класса работает со сбоями при полной луне»?

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

Т.е. это книга уже трата времени или профит от нее уже не велик ?

Десь третина співбесід мені траплялась, де народ любитель задачок на CS, типу recreate perfect tree from inorder traversal, чи щось типу такого.
Для такого типу співбесід книжка підходить, або на leetcode є розділ з CS — leetcode.com/explore

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

И да, когда я писал сообщение, которое ты процитировал, я был еще в AWS, сейчас я в Гугле, и могу сказать что мне литкод помог пройти. На собеседовании не было копи-пасты задач с литкода (по крайней мере я с ними не сталкивался), но задачи _подобные_ литкоду были. Я не удивлюсь, что если просмотреть последние 200-300 задач на литкоде то задачи, заданные мне, могли уже и появились.

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

у кожного має бути свій мотоцикліст, бггг

Гугле, и могу сказать что мне литкод помог пройти. На собеседовании не было копи-пасты задач с литкода (по крайней мере я с ними не сталкивался), но задачи _подобные_ литкоду были. Я не удивлюсь, что если просмотреть последние 200-300 задач на литкоде то задачи, заданные мне, могли уже и появились.

коли я інтерв’ювався, задачки не було, через кілька місяців докинули

А на мою поточну контору на прескрінінгу мені потрапилася задачка із першої сотні на leetcode, рейтинг hard (для тих хто понімає... телефонка і hard). Мені повезло, цю задачку я робив раніше (ну як повезло — я ж працював над задачками).

у кожного має бути свій мотоцикліст, бггг

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

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

«доброе слово и кошке приятно»

ну я бы делал все так — пересмотрел книгу по алгоритмам что бы понять где пробелы, полюбому попросят оценить О(н) предложенного решения. После прочтения книги станет понятно где пробелы — сортировки, графы, динамическое програмирование, структуры данных или еще чтото. Вместо книги можна пойти вот сюда: runestone.academy/...​onds/Trees/ParseTree.html , там все на питоне, но питон — он как английский язык, так что проблем быть не должно. После этого можна идти на литкод и закреплять полученные знания. Там гдето 700 задач, даже если по 5 в день решать — то гдето пол года нада, поэтому я бы заплатил кому то знает как это делать более еффективно.

Та курсов с книгами «как войти в фанг» в онлайне тоже немеряно.

тут основная проблема в силе желания, чел говорит что хочет в фанг, у чела нет знаний как туда попасть, или он продолжает хотеть или он пишет тому кто предлагает помочь. Ведь большинство людей из фанга не откажутся дать совет как начать и куда смотреть. Особенно те люди которым точно так же кто то помог советом или менторством. Но вот переступит эту черту — тут нужна сила желания. Как тут писал парень с гогла — пока не получу работу в гогле никуда не поеду — вот сила желания. Своим комментом я пытаюсь «подуть на искру»

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

Без этих данных, твой пост это классический:

Несіть мені усі по три рубля
І мудрості вам дам я дох#я.

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

ниша не занята, спрос есть, че ждать ?

1000+

станом на зараз — 1322 задач (причому 2 останні під замком)

я на бесплатном аккаунте вижу 1216

Премиум акаунт на литкоде дает постоянные бафы:

* +5% к интеллекту при прохождении интервью
* +3% шанс получить задачу на интервью, которую уже решал
* −5% time and space complexity к решению, написанному на доске

Всего 35 баксов в месяц — стоит того.

Та потом, я не хочу проходить интервью прям завтра

Всего 35 баксов в месяц — стоит того.

луччє за рік оплатити
$159 за рік (а по акції на Thanksgiving — $129) — це менше 1/1000 від будущої з.п.

Навіщо платити ? Чому б просто не вирішувати задачки, собі в Visual Studio, самому ж ясно яка комплексіті твого алгоритму, додумався ти чи ні, потім звірятися з каментами, ну там де «100% work O(1) Java one-line solution»

Шоб було! Прикро, коли деякі задачи закриті. Ну і норм ресурс підтримати. Most used подивитись (хоч most liked є доволі близьким). Це не є обов’язковим, most liked та контестів вистача (ще б контести у норм. час були, щоб на стати дрочити).

Навіщо платити ?

доступ до закритих задач, доступ до тегів на котрій конторі це зустрічається, доступ до сортування по частоті питання задач на конкретній конторі за весь час/останній рік/останні 6 місяців (скажімо, цілеспрямовано проробити 10-20 задач під контору)
швидше виконання тестових запусків, вони роблять це повільнішим для неплатників

Чому б просто не вирішувати задачки, собі в Visual Studio, самому ж ясно яка комплексіті твого алгоритму, додумався ти чи ні, потім звірятися з каментами, ну там де «100% work O(1) Java one-line solution»

тому що це самообман, усі 20-100 тесткейсів, які поламають твоє рішення — ти не придумаєш

можна зробити рішення локально (я звик редагувати у Vim з плагінами, потім у консольці запускати/дебажити, потім копіювати у вікно редактора leetcode і тиснути submit, і обламуватися на тестах, заставляє не поспішати наступного разу)

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

>

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

здесь это точно никому не вс***лось. вам сюда — www.reddit.com/r/cscareerquestions

Тебе же вс***лось, чтобы зайти и оставить здесь комментарий ))

1. Страна проживания США

Далі не цікаво (

та лана тут у них активных перспективных самое гнездо! ))

А где живешь? Если в долине, то тут есть локальное комьюнити тру задротов, работающих в фаангах, живо на интервью натаскают

это что за покемон?

Готовлю за дорого к интервью в фангах, способ работает процентов на 90. Если есть цс образование — то месяца за 4-6, если цс нету — гдето год-полтора.

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

(Если не пройдёт — значит, мало стоял)

Моя процедура подготовки:

1. Cracking the Coding Interview (перед каждым собеседованием просматриваю по диагонали).
2. Несколько лет назад прочитал Кормена и «Advanced Programming in Unix Environment» — вторую _очень_ рекомендую если вы хоть что-то делаете депозите на сервер, хоть Нода хоть Питон — позволяет очень хорошо понять что на самом деле там происходит.
3. Опять же, один раз несколько лет назад — MIT CS 101 или что-то такое на YouTube.

Ни разу не делал литкод.

Намного меньше времени занимает чем задр@&$@вание литкода — и позволяет намного лучше впечатление на интервьюера произвести.

Намного меньше времени занимает чем задр@&$@вание литкода — и позволяет намного лучше впечатление на интервьюера произвести.

Часто ли тот же литкод является предварительным фильтром кандидатов, чтоб не тратить время интервьюера ?

Фильтром кандидатов являются рекрутеры и телефонный этап. Ни то ни другое не требует «литкода» — если под ним понимать олимпиадные задачи на сообразительность.

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

Ни то ни другое не требует «литкода» — если под ним понимать олимпиадные задачи на сообразительность.

— олимпиадники не задр@&$@вают задачи в школе
— олимпиадники не задр@&$@вают задачи в университете
— олимпиадники не задр@&$@вают задачи на городских/обласных/всеукраинских сборах, в лагерях и спецшколах
— олимпиадники не решают один и тот же алгоритм по 10-20 раз, доводя это до уровня инстинкта. Благодаря чему, пока нуб только успел дочитать условие задачи до середины олимпиадник уже засабмитил решение
— олимпиадники не используют кучу самописанных библиотек и макросов по типу FOR(i,k,n)
— олимпиадники не ставят костыли и страшный говнокод (иногда) только, чтобы решение работало и проходило все тесты, тогда как на собеседование будут смотреть и на стиль кода.

Олимпиадные задачи решают чисто на сообразительность.

Я не очень понимаю о чем вы с собой беседу ведёте.

на самом деле последние 2 пункта лишние. всякое случается.

А у вас есть опыт, я так погляжу.
Особенно ностальгию вызвал

FOR(i,k,n)

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

Логично. Я (Ну и не только я, как бы есть с кем это посудить) не маньячил литкод — и случайно попал. Табуны маньячки — и не попадают (или попадают после пары десятков интервью).

С таким уровнем понимания статистики начинаю догадываться почему одна надежда — на литкод.

судя по линкедину, не случайно, а за список компаний в резюме

Опыт появляется _после_ прохождения собеседований — а не до.

Намного меньше времени занимает чем задр@&$@вание литкода — и позволяет намного лучше впечатление на интервьюера произвести.
Реальность: если кандидат их «знает», то очень хорошо. Индусы с китайцами так и делают, задротят сотни задач и шарят между собой.
Даже после сотен решенных задач на литкоде, не каждый раз сходу получается решить медиум, не говоря уже про хард, где можно тупить, потратить несколько часов, так ни до чего не додуматься или решить неоптимально и посмотрев в решения, понять на сколько же натупил. Иначе я не знаю, как за отведенные 40-45 минут сходу решить 2-3 задачи, одна из которых может быть хард. Исключение олимпиадники, постоянно выступающие в контестах, так они задротили поболее и задачи посложнее)))
«Знает» подразумевает, что я видел эту же или похожую задачу и знаю основной алгоритм ее решения.

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

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

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

Раунд интервью 45-60 минут. Привет, пока, как дела, расскажи почему ... и на собственно задачи остается 40-50 минут. Пусть будет 18 минут на более легкую задачу и 27 на более сложную. Итого за это время:
Несколько минут интервьюер объясняет суть задачи, которую надо «вкурить», понять, задать наводящие вопросы, если сразу не «вкурил», задать уточняющие вопросы, а не сразу рваться в бой; предолжить решение, если оно неоптимальное подумать над улучшениями, сходу закодить без или почти без ошибок; продумать тест кейсы и прогнать их с интервьюером подтвердив корректность либо же найти и исправить допущенную ошибку. При этом во время написания кода ты:
1. думаешь над решением и следишь, чтобы не сделать ошибок
2. рассказываешь интервьюеру ход решения и что ты делаешь в коде
3. так как времени впритык, параллельно думаешь над тест кейсами.

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

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

А тебя в гугле спрашивали именно задачи решать?

Да, но не замороченные. Как и всех остальных.

А ты точно в фаанге работаешь? Фаанг это если что гугл, фейсбук, амазон, эпл и нэтфликс. А то мне кажется, что ты здесь про другие фаанги пишешь. Потому что тут leetcode.com/...​uss/interview-experience людям дают медиумы и харды с литкода. Причем всем.

>зазбурил задачи
Ну это уже твои проблемы. Адекватные люди не задачи зубрят, а вникают в концепции

Фаанг это если что гугл, фейсбук, амазон, эпл и нэтфликс.

еще и гугл, как я понимаю
мне интересно, а чего майкрософт так стороной обходят?
ЗЫ вопрос не только к вам, если что :)

Это термин из фондового рынка, обозначал быстро растущие технологические компании на тот момент.

zzhou вот ты пи3дишь как дышишь. Если тебя лично такого крутого, не спрашивали задачи уровня medium /hard- то ты просто Систематическая ошибка выжившего.
В гугл, амазон, убер, микрософт, спотифай, граб и много много других компаний- на этапе отбора и на онсайте спращивают и задачки уровня medium и hard. Это из личного опыта в прошлом году.

Много лет я считал что «литкодом» пугают курсы по попаданию в фаанги и прочие платные вебсайты. Теперь я начинаю догадываться что «литкод хард» — это банальная некомпетентность многих кандидатов, которые не могут пройти собеседование. Начинаю подозревать что и я, в свою очередь, кого-то спрашивал такие задачки — когда я в отчете писал на отсутствие банального понимания программирования, кто-то на форуме ныл как его беспощадно валили...

zzhou

Возможно тебе как живущему в штатах и имеющему выдающиеся публикации в авторитетных журналах или как автору фундаментальных алгоритмов в обработке информации- особое отношение. И как в старые добрые времена- тебя пообщали за чашкой в кофе в старбаксе и тут же предложили позицию фелоу инжинера в гугле микрософте, 2сигма и тд. Есть такие личности выдающиеся- нет смысла спорить.
Но утверждать, что такие отношение ко всем кандидатам- это ошибка
Обычно, для того чтобы просто попасть на онсайт интерью требуется пройти отборочный раунд где тебе дают 2-3 задачи разного уровня сложности с тест кейсами- и ожидают от тебя оптимального решения для каждой задачи.
И никого не волнует что ты не сообразил что задачка на префиксное дерево и что её можно решить за NLogN вместо N^2 решения которая ты нацарапал за отведенное время.
а вот это задачка так вообще простецкая на резделяй и властвуй. Ну то что ты не смог мигом свети задачу к этому алгоритмы- это твоя проблема.
Ну а третья задачка так это вообще на динамическое программирование- подумаешь что описания на пол А4 (как амазон любит делать)- надо быстро вникнуть и написать оптимальное решение- которое оптимальное по времени, проходит все корнер тест кейсы и включая большие входные данные. и всё это обычно надо сделать за 20 минут на кодилити или еще каком нить вебсайте. Ну и тот же гугл недаром придумал foobar секретную игру где надо решать всё теже 5 задачек?
И после этого ты хочешь сказать что это не дрочество а просто

отсутствие банального понимания программирования,

???
Если так- то хочу тебе сказать иди ты в }|{oпу со своим самомнением.
Потому что вот вся эта тема с задачками задрачивать на интревью и придумывания все новых и более каверзных- это бесконечная игра в щит и меч.
А потом бывшие гугловоды кичатся на всяких реддитах как они валили каверзными математическими решениями для которых существует одно лишь верное решение. И если ты его не видел раньше- то шанс решить его стремится в 0.

Може, коли через вендора продають непрацевлаштованого «контрактора», то і задачі не рівня medium/hard ? Як мінімум, в Microsoft.

Grokking the system design interview — тоже крайне полезный материал. Пройти интервью само по себе не поможет, но сторговать более высокий грейд и компенсацию — очень даже.
www.educative.io/...​e-system-design-interview

Про литкод... ну не знаю
Мб на L5(в случае гугла) уже и не стоит задр""""вать, но на L3-L4 это наверное самое важное, ибо большая часть собеседований это кодинг

Кодинг и литкод — это как поход в магазин и олимпийская спортивная ходьба.

такое впечатление что интервью и реальная работа — это вообще не связанные вещи
oh wait~

Я бы еще добавил в стартовые условия

8. Ожидаемый левел
9. Опыт работы

давай, удачи!
Думаю над тем же для ПМ позиции, но пока что не решился

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

К стартовым условиям стоит добавить — если вы уже побывали на интервью в FAANG-ах.

И давайте уже видеоблог, так модлодежней)

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

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

К стартовым условиям стоит добавить — если вы уже побывали на интервью в FAANG-ах.

G — пролетел, как фанера над Парижем. Есть много статей, где рассказывают, что надо ходить на 100500 интервью, чтобы натренироваться и тогда ты пройдешь в гугл. Можно пойти на 20 интервью и не получить ни одного офера, а можно на 5 и получить 2-3 офера. Понял, что чем пытаться в 100500 контор необходимо хорошо подготовиться. Условно говоря, если меня дают задачу на trie, а я не знаю что это такое или плаваю в теме, то шансов у меня мало. Я могу решить задачу неоптимально, но кто-то решит задачу оптимально и возьут его (или diversity candidates).

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

6. Время на подготовку к телефонным интервью 2.5-3 месяца (ориентировочно 1 апреля)

Nice timing

4. Раньше решено около 100 задач на литкоде

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

5. Цель офер FAANG

Я конечно могу ошибаться, но мне почему-то кажется, что как таковой офер получить не так уже и трудно учитывая количество работающих в FAANG людей. Если мы берем стартовые позиции
1. Страна проживания США

Вдохновением послужила тема dou.ua/forums/topic/28593

Как я понял автор этой темы устроился то как раз и не в FAANG

Почему литкод кстати ? Я уже который раз замечают, что те кто говорят о поиске работы в сша упоминают его

Наиболее удобный, распиаренный и используемый на данный момент
1. В leetcode у тебя сразу дается метод с параметрами (вход) и результат метода (выход) и ты можешь сконцетрироваться на основной цели — решении задачи. На hackerrank, по крайней мере раньше, надо было заморачиваться с вводом/выводом, а это лишний boilerplate code на каждую задачу
2. Большая база задач
3. Из-за популярности даже если у тебя нет премиум аккаунта (не можешь смотреть решения многих задач), то к каждой задачи есть дискуссия, где юзеры сами создают топики и обсуждают решение предложенной задачи. Часто решения даже лучше авторских.

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

Легче в плане попасть на интервью, а дальше тот же interview loop, задачи, систем дизайн и т.д.

В leetcode у тебя сразу дается метод с параметрами (вход) и результат метода (выход) и ты можешь сконцетрироваться на основной цели — решении задачи.

Эдитор слабоват по сравнению с codility или hackerrank, но пожалуй самое понятное описание задач.

На hackerrank, по крайней мере раньше, надо было заморачиваться с вводом/выводом, а это лишний boilerplate code на каждую задачу

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

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

А какой в том смысл если все задачи публично доступны для работодателя ? Грубо говоря если дать такой тест онлайн, что помешает скопипастить решения ? Ведь на тест дают явно не меньше 90-120 минут и сомневаюсь, что кто-то будет смотреть все это время скриншеринг.

Легче в плане попасть на интервью, а дальше тот же interview loop, задачи, систем дизайн и т.д.

Я к тому, что разброс зарплат и задачи могут быть очень разными и имея ворк пермит/гринку/гражданство попадание в FAANG не должно быть чем-то уже совсем экстраординарным если до этого не говнокодил на коленке. Вот если поставить планку ЗП как упомянутый вами автор топика про 24 онсайт. Вот тогда дело играет совершенно иными красками и челендж понятен.

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

Надо смотреть не количество работающий — а количество желающих там работать. Например, на бодишопных жертв, вроде Епама.

количество желающих там работать. Например, на бодишопных жертв, вроде Епама.

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

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

Чет думаю что зависит сильно от позиции. Если принципал-архитектар на 650к с соотвецтвующими знаниями, то думаю страна проживания неважна. А если гребцом грести обычную разработку, то ща оч неохотно заморачиваються с визами итд.

Собеседующие не знают какая виза у того, кого собеседуют. Этого не знает никто, кроме HR.

Так ХР и не начнет процедуру собесодования, если гребец не местный.

Что в нем такого ?

Орієнтованість на співбесіди, а не на олімпіади, в першу чергу. На літкоді є інфа по тому, наскільки часто задача на співбесідах буває. Там є обговорення задач, що були в когось ітп. Не ідеально з цим, звичайно, але набагато краще, ніж в інших. Плюс рейтинги задач — дуже допомагають, насправді. На хакерранку — от тобі задача і все. Що вона тобі дасть у порівнянні із іншими — хз.

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

Знайомий мав нещодавно на прескріні в гугол задачу, підзадачею якої є якраз звідти задача. При чому хард рівня.

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

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

так это одна из фишек, причем там можна потом подцепить еще две или три на туже тему и набить на них руку

Насчет «не сложно получить оффер»
Где-то читал, что вероятность 0.2% примерно. 1 к 500)
Оно то конечно может и не сложно эти задачи научится решать, но читал, что есть много нюансов. Ошибся в анализе времени/памяти на интервью? Провал. Решил задачу наполовину оптимально? Провал(не всегда). Не чистый код с кучей ифов(на алгоритмических такое частенько бывает)? Провал.
Плюс нервишки и ограничения по времени... Плюс элемент рандома с самими задачами

Где-то читал, что вероятность 0.2% примерно. 1 к 500)

фаанги сейчас нанимают с универов всех подряд, часто даже без phone screen. Инфа соточка.

То-то вой стоит что ниже L5 никто не берет.

То-то вой стоит что ниже L5 никто не берет.

Можете уточнить что за L5 ?

в смысле сразу на принципалов?

Не очень охотно выпускников набирают.

Амазон упрощал процесс хайринга фреш градов до полного идиотизма, так что те, кто воют, видимо куда-то не туда смотрят.

>инфа соточка
А где пруфы?
Ну, я знаю, что у Амазона сейчас появились «New grad» вакансии, куда в принципе не трудно пройти(но энивей труднее, чем на любой украинский бодишоп), но в других компаниях такого не видел

фаанги сейчас нанимают с универов всех подряд

В универах люди 5 лет задротили эти алгоритмы. И я так понимаю, в американских универах особо проплатить сессию не прокатит. То есть, чувак с дипломом норм вуза там уже прошёл несколько десятков подобных интервью в стенах Альма матер. Смысл тратить с ним время на интервью, если можно просто посмотреть оценки?)

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

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

Смысл тратить с ним время на интервью, если можно просто посмотреть оценки?)

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

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

Хз. Ты ж сам сказал, что нанимают всех подряд из универа. Я лишь привёл возможное объяснение.

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

Туда, где я работаю, выпускники топовых американских универов не докатываются)))

да ща вообще все иначе. Коллега бывший из Сербии проинтерншипил весь ФААНГ почти без американского образования, но тоже говнокодил по мере сил и способностей)

Где-то читал, что вероятность 0.2% примерно. 1 к 500)

Вот есть курсы от крупных оутсорс контор и там из 300 человек часто до офера доходит 3 это что показатель того, что в них прям так сложно попасть ? Это говорит лишь о уровне тех кто подается на вакансию.

Насчет «не сложно получить оффер»

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

Вариант того анекдоту «навіщо нам невдахи...» Просто з десяти, тих, хто має достатньо розуму, щоб розв’язати, треба ж відібрати одного, ну, того, кому пощастить саме цю задачу, за 20 хвилин, без помилок, і т.п.

Стартовые условия:
1. Страна проживания США

Читер :)

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

шанс пожить и поработать в восточной европе? не ну почему нет живут же ж люди!

ЗЫ: романия объявила что у неё демографический кризис «как в сирии» и это только в рамках городов а за пределами так вообще п.ц ))

Гастроли были с релокейтом в Канаду/США, если что

Подписаться на комментарии