Здравствуйте, меня зовут Мохаммад Рабей, я студент 3-го курса факультета машиностроения ИИТ Гувахати. В этом блоге я поделился своим опытом стажировки в кампусе, путешествием и подготовкой. Надеюсь, это поможет моим джуниорам пройти стажировку в Goldman Sachs.

Введение:

В течение первого семестра я не очень хорошо разбирался в программировании и больше сосредоточился на академических кругах, надеясь на смену отрасли, но из чистого интереса я изучил основы C++. Я также решил несколько простых вопросов по Hackerrank на C++ и STL (стандартная библиотека шаблонов).

Во время второго семестра я начал соревноваться в программировании на CodeChef(CC). Я давал длинные контесты и вскоре понял, что соревновательное программирование (КП) — моя сильная сторона. Я также начал проводить конкурсы на Codeforces (CF), но я не был очень серьезным, так как все еще пытался изменить ветку (хотя и не получил).

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

Но во время моего 4-го перерыва я, наконец, стал экспертом по Codeforces и получил 5 звезд на CodeChef (мне потребовалось 6 долгих месяцев, лол). Также в это время я начал заниматься фронтенд-разработкой (хотя быстро потерял интерес).

Во время моего 4-го семестра я более или менее делал CP, но улучшаться стало немного сложнее, и я замедлил свой темп и больше сосредоточился на своих академических знаниях и развитии. Я изучил бэкэнд-разработку с помощью Node, отреагировал и сделал проект.

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

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

Подготовка:

Я был хорошо знаком с большинством тем, поэтому сразу же начал практиковать Interview-Bit. Мой Dp, графики были слабыми, поэтому я решил много задач из разных источников, таких как leetcode, Interview bit, Cses и CF. Раньше я проводил все конкурсы на Codeforces, leetcode и atcoder. Я также использовал 30-дневное руководство по собеседованию Стримера, чтобы изучать новые темы и практиковать стандартные вопросы. Я изучал ООП/СУБД из различных плейлистов ютуба и gfg.

Я бы порекомендовал сначала решить проблемы из Interview-bit, так как Leetcode кажется мне слишком обширным и сложным. Если вы находите конкретную проблему сложной, попробуйте решить ее в течение примерно 40 минут, а затем найдите идею ее решения. Лучше рассмотреть несколько решений, идей и подходов к реализации, поскольку некоторые из них очень просты для понимания (раздел обсуждения Leetcode очень хорош для этого). Попробуйте проанализировать временную сложность и сложность памяти проблемы и попытаться улучшить решение, пока оно не станет оптимальным. Кроме того, изучите вероятность и статистику от gfg, поскольку они задаются на количественных интервью и раундах кодирования.

Процедура отбора:

Раунд кодирования состоял из 5 секций.

· 2 вопроса по кодированию: первый был проблемой dp раздачи монет, второй был проблемой минимального остовного дерева. (30 минут)

· MCQ по количественным показателям: легкая математика уровня JEE из pnc, вероятности и триго (8–10 вопросов за 25 минут)

· 2 описательных вопроса о различных сценариях и о том, как бы вы справились с ними (15 мин.)

· MCQ по основам cs: на основе ООП, СУБД, сетей, ОС и DSA (7–8 вопросов за 20 минут)

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

Интервью: (Место: Лекционные залы)

75 студентов были отобраны для собеседования.

Раунд 1: (продолжительность: 40 минут)

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

Q1: учитывая сетку MxN и плитки Mx1, сколькими способами мы можем расположить плитки, чтобы заполнить всю сетку. Я дал простую математическую формулу для количества случаев с использованием PNC и разбора случаев, хотя ее также можно решить с помощью рекурсии. Поскольку я дал прямую формулу, он не попросил меня закодировать ее.

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

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

Q4: так как я закончил раньше, он задал мне дополнительный вопрос относительно деревьев. Он попросил меня найти кратчайшее расстояние между двумя узлами в дереве с заданной сетью. Я ответил, что bfs или dfs будут работать, а также предложил лучшее решение с использованием бинарного подъема. Он сказал мне, что потребуется предварительная обработка (NLogN) всей сети, и это будет дорого, поэтому bfs/dfs предпочтительнее, если запросов меньше. Я задал несколько вопросов о фирме, и первый раунд закончился.

Раунд 2: (Продолжительность: 40 минут)

Он начал обсуждать мои проекты и задал несколько вопросов, например, почему вы выбрали MongoDB, в чем разница между базами данных SQL и NoSQL, преимущества баз данных NoSQL.

Q1: Дан массив целых чисел, состоящий из 0,1 и 2, выведите все возможные перестановки в порядке возрастания.

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

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

Q3: Учитывая неупорядоченный обход дерева, найдите дерево

Подумав несколько минут, я заметил, что уникального дерева нет, так как случаев может быть несколько. Я быстро показал ему хотя случай. Затем он попросил меня напечатать все возможные деревья. Это было немного сложно, но я нашел решение с помощью рекурсии и объяснил ему. Затем он сказал, что это не та же идея, что и в первой задаче, и что примечательно, 3-й вопрос был просто 1-м вопросом, написанным немного по-другому. Он не попросил меня закодировать его, и раунд закончился.

Поскольку было очень поздно (2:30 утра), у меня не было раунда HR.

Через 2 дня я получил известие, что попал в шорт-лист. Предложение получили 14 студентов.

Заключительные замечания:

Я очень благодарен, что получил это предложение. Мои первые несколько тестов прошли не очень хорошо, как планировалось, потому что я очень нервничал. На самом деле я попал в шорт-лист только в GS в слоте 1 раунда. Но достаточно одного хорошего собеседования, чтобы найти стажера. Кроме того, старайтесь поддерживать хороший индекс цен на дюйм (по крайней мере, 8+). Начните CP как можно раньше, чтобы иметь преимущество в раундах кодирования и собеседованиях. Хорошо разбирайтесь в таких темах, как графики/dp, так как они очень важны. Старайтесь сохранять уверенность во время интервью и, если возможно, заранее попрактикуйтесь в фиктивных интервью с друзьями. И последнее, но не менее важное: не расстраивайтесь, если что-то пойдет не так, сезон стажировки очень напряженный, и часто удача не на вашей стороне. Но вместо того, чтобы падать духом, продолжайте работать.

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

- какой-то мудрый человек

— — — — — — — — — — — — — — x — — — — — — — — — — — — — — — — —