Previous Entry Share Next Entry
подготовка к программерским собеседованиям
ens_a_se
Задача - подготовиться к программерскомму собеседования примерно за 4-6месяцев, параллельно работая фултайм. Как и следовало ожидать, я нахожусь в той же точке, что до PhD - никаких преимуществ PhD не даст.
Я структурировал подготовку в 3 этапа:
1) Цель - вспомнить классические алгоритмы и базовую теорию, научиться относительно быстро решать стандартные задачи, научиться решать неизвестные мне задачи в сжатые сроки, изучить лучшие практики решения подобных задач
1.1) Изучаю тему в Cormen, решаю некоторые задачи на понимание материала
1.2) Параллельно решаю все задачи без ниньдз из Elements of Programming Interview по соответствующей теме
1.3) Раз в неделю участвую в codeforces, где я стараюсь решить 3ую и/или 4ую, пропуская первые 2.

2) Цель - научиться обьяснять в слух решение в процессе придумывания решения, ускорить кодирование подобных задач, натренировать интуицию для решения различных задач, улучшить время затрачиваемое на решение, быть уверенным в битовых задачах
2.1) Решаю в день 1 сложную задачу с leetcode не в слух
2.2) 2 задачи в день объясняю в слух пока решаю
2.3) Читаю первые несколько глав Hackers Delight и играю с битовыми операциями
2.4) Раз неделю участвую в codeforces, стараясь как можно эффективнее использовать выделенные 2ч.

3) Цель - быть готовым к реальному интервью, учесть различные не алгоритмические вопросы, не нервничать на собеседовании, чувствовать себя комфортно в решении классических многопоточных задачах
3.1) Каждую неделю - mock up interviews with friends
3.2) Повторение классических алгоритмов (сортировки, медианы и тп) с обьяснением в слух алгоритма и подготовки ответов к возможным доп вопросам (например, как лучше выбирать pivot в qsort)
3.3) Задачи на Multithreading из Elements of Programming Interview
3.4) Задачи на системное программирование с различных интервью - не знаю какие пока что, но вроде как спрашивают
3.5) Раз в неделю codeforces - к этому моменту я должен решать 4 задачи с высокой вероятностью во втором дивизионе

Один забытый вид вопросов - System Design. Это кто-то спрашивает? Сколько на этот топик выделять?

Все таски в одной группе решаются параллельно.
Считаете ли вы эту схему подготовки практичной/реалистичной или избыточной? Может я упустил какие-то essential topics?

  • 1

Чо такое codeforces? Меня спрашивали Design Patterns


Кодефорсес это такой ресурс для competitive prigramming. Доуольно неплохие задачи.
А систем дезайн это несколтко более высокий уровень абстракции - например, как бы вы спроектировали дропбокс?

(Deleted comment)
Да математику как то не спрашивают судя по моим данным. Только если на quant . Но на кванта я буду во вторую очередь собеседоваться.
Что такое ctf? Гугл только про какие то флаги пишет.
Пока я не собеседуюсь с друзьями, а в будущем планирую просто всех подряд просить. Плюс есть такой сайт где случайный пользователь собеседует. Только не помню название

(Deleted comment)
Ну и да - я могу сделать мок ап интервью в ответ на ту же услугу.

(Deleted comment)
Я бы порекомендовал cracking the coding interview в качестве книжки. В виде pdf скачивается старое 4-е издание, последнее 6-е (сильно толще 4-го) заказывается только в бумажном виде. Ну и вообще careercup.com.

У меня есть в бумаге последняя версия. Окей, посмотрю ее тоже. Она во многом пересекается с Elements of Programming Interview. В последней больше задач, но менее подробно разобраны решения.
Careercup - не решал пока что. Там тонны вопросов, конечно. Надеюсь, что они пересекаются с теми, что встречаются в книжках.

А в общем, ты не находишь какие-то пункты в моем плане избыточными? Скажем я вот думаю - есть ли необходимость решать все 300 задач из elements of programming interview, Или, скажем, читать hackers delight.
И другой вопрос - решать ли задачи по одной теме подряд или решать задачи по 2м темам по очереди, чтобы не надоедало.

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

Вообще я сам никак к собеседованиям не готовился и в итоге третий по счёту онсайт прошёл успешно — уж что-что, а писать код на доске я за девять лет преподавания научился :) Возможно, если бы почитал книжку заранее, прошёл бы не третий, а первый или второй, хз. Но среди коллег cracking считается фаворитом. Я её листал — мне кажется, всё адекватно.

В каком порядке решать задачи — не знаю, сам не решал :)

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

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

Когда читал про сортировки, вспомнилось, что ты у меня на экзамене квиксорт спросил рассказать в ВКИ. 2003 год, методы программирования. Жалею, что не стал потом заниматься олимпиадным программированием по воскресеньям в НГУ. Вроде и времени было вагон и мозг быстрее соображал.

можно пару вопросов от непонимания изза длительного пребывания на той стороне?
1. куда хочешь попасть? 2. сколько лет думаешь работать "на резюме"? 3. Что собираешься отвечать на вопрос про "опыт работы"?
я полгода как избавился от повинности проводить интервью =) поэтому могу спокойно на эту тему рассуждать =)

1) Идеально - в гугл. Затем другие "модные" и большие компании (майкрасофт, фейсбук)
2) Думаю, лет 10
3) Не уверен как тут лучше быть, Так как я заканчиваю PhD, то я надеюсь идти как недавний выпускник. Хотя до PhD я работал около 4х лет программистом.

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

У нас другие интервью. Как в том легендарном анекдоте из жизни, "мы бы тоже проводили такие крутые интервью, но никто из тех, кто мог бы их пройти, не придет" =)

Окей, спасибо, буду иметь ввиду.
Да я не думаю, что алгоритмические интервью прям уж хороши. Они не особенно корелируют с характером типичной программисткой работы и создают впечатление челенджа, а наверняка на месте оказывается, что вместо алгоритмов решаешь вполне техническую рутину.
В ресерсч отдел оказывается и с PhD не попасть - надо быть состоявшимся ученым в конкретной области (например, PhD по ML и высокая цитируемость). А если PhD о том как раковые клетки бороздят просторы кровотока - то с этим только на постдока.

>Они не особенно корелируют с характером типичной программисткой работы
вообще не коррелируют. (с) капитан очевидность

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

Что ты имеешь ввиду под тулингом? Например, VTK/Paraview или там Comsol/ANSYS? То есть конторы, выпускают софт для ученых и инженеров. Я пока не нашел среди них тех, кто так же жирно мажет маслом как фейсбук и тп. Это по крайней мере то что касается около HPC. Точнее есть одна - D.E.Show Research - там и HPC самый крутой и 250+ зп и почти все сотрудники звезды в своих областях.
Есть еще Computer Graphics софт, там вроде тоже интересно в плане методов и физики и они вкурсе про векторизацию и CUDA, но снова - не модная тема, сложно уйти потом в другую область. И на хорошую позицию, скажем в disney research, без публикации хотя бы на siggraph asia - ноу вей.

Это не HPC, это какие фуфловики. Я говорю про ребят которые продают DARPA, BMW, KPMG, Schlumberger и всей вот этой рожи. Какой там D.E.Show Research самый крутой HPC? Это же еще одни фуфловики местечковые, не сделали ничего путевого. 250+ это извините для балбесов рукожопых. 150+ это минимум который мне предлагали сразу после постдока, это ковыряя в носу. В дисней рисеч у меня были чуваки с моей самой стремной конфы за всю карьеру. Ты давай это завязывай, ты с какими-то отщепенцами от науки там общаешься в своей деревне. Давай уже в гугл :)

Зависит от метрики - DE Show R делают статьи в Nature/Science (правда не читал), а Disney - каждый год на SIGGRAPH. Первые бабла вообще не генерируют, правда, поэтому я не заинтересован совсем. Хорошо если дисней ресерч не так круты как я думаю - ничего не потеряю от того, что туда мне не попасть. Да и статьи я не хочу писать, думаю эта форма распространения результата исследований должна исчезнуть.

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

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

Спасибо, напишу тебе насчет Майкрасофт через полгода. А там работает именно по вакансиям в конкретную группу или есть еще опция "Software Engineer rank X"? Например, я так понимаю, в гугл просто собеседуешься на инженера, а уже потом выбираешь команду.

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

Если ты хочешь попасть в США по H-1B, учти, что там жёсткие сроки (лотерея в апреле, выход на работу в октябре, т.е. надо начинать процесс в декабре-январе, чтобы всё успеть).

Говорят в Azure ниче так :)

Мы тут, кстати, вам продукта отсыпали на нормально так, ну и яблочко мнем все больше и больше с их айоблачком :)

молодец,все так основательно
(искренне,если что)

устрайвайся в гугл,потом меня возьмешь к себе в команду )))

Edited at 2016-06-22 02:03 am (UTC)

Спасибо, стараюсь выработать systematic approach ко всему, что делаю.

Так-то норм всё. А можно сделать вменяемый open source и продать себя на remote. Жить сегодня на Бали, завтра в Бердске, послезавтра в Москве ;)

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

Ну так чо, переезжаешь в хорошую страну. Идешь в ФМС РФ, подаешь заявку на РВП, потом на гражданство ну и все такое. fms-nso.ru

Систематический подход! Спасибо за пример.

А эулер не подходит для подготовки?

Может на quant только если. Вроде как правила игры таковы, что необходимо сходу решать любую задачу с cracking the coding interview и знать первые 3 раздела кормена. А достаточного условия не существует, так что если по фану решать на Эйлере - то может и надо.

Edited at 2016-06-24 08:56 am (UTC)

> Вроде как правила игры таковы, что необходимо сходу решать любую задачу с cracking the coding interview и знать первые 3 раздела кормена

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

Вот где и какие брать - не понятно, спасибо за наводку на cracking и на Кормена.

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

  • 1
?

Log in

No account? Create an account