Рубрики

Как подготовиться к лучшим ТНК?

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

Ну, следующие причины заставили меня сделать это:

  1. Будучи модератором GFG, я получал много запросов от читателей через различные социальные сети (FB, LinkedIn, Quora, InstaGuide) и различные почтовые клиенты с просьбой о наставничестве и руководстве о том, как подготовиться к лучшим MNC, таким как Microsoft, Amazon, Google и т. Д.
  2. Пройдя через подобное путешествие и увидев успех многих моих друзей, я чувствую, что знаниями нужно делиться. Мой опыт может быть полезен для новых поколений, которые преследуют ту же цель, что когда-то была моей

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

язык

Язык был предметом споров между претендентами на протяжении многих лет. Всегда хорошо овладеть одним языком, зная все входы и выходы, а не переходить с одного языка на другой. Почему? Потому что иногда с вами может случиться так, что, когда у вас возникнут проблемы, вы начинаете задаваться вопросом, какой язык вам следует выбрать, и ваше внимание подвергается риску. Когда вы действительно должны сосредоточиться на решении проблем, реализация приходит позже. Затем, пока вы кодируете, вы планируете менять язык между ними. Это не поможет вам в интервью. Если вы можете решить проблему на языке «X», в конечном итоге вы также решите ее на языке «Y». Изучение нового языка — это вопрос времени. Язык может не так широко использоваться через 5 лет, как сейчас. Ваша способность решить проблему будет иметь значение в долгосрочной перспективе.

Я обычно переключаюсь между C и C ++. Если время в самом разгаре, я предпочитаю использовать STL (стандартные функции библиотеки) вместо написания собственной версии Linked List. Если я хочу разработать проект, например, приложение для Android, я выбираю управляемый язык, потому что он проще. Если я хочу автоматизировать что-то, чтобы сэкономить свое время, например, отвечать на мои пожелания по поводу дня рождения и удовлетворять их, сценарий на python — это спасительная грация. Вы поняли, верно? Овладеть одним языком и выучить другие в соответствии с требованиями.

Структуры данных и алгоритмы

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

Для начинающих хорошо подойдет Основы структур данных в Си от Сахни Горовиц. Прочитав его, вы сможете понять базовые структуры данных, как они реализованы и меньше примеров, где их можно использовать. Не ждите, чтобы изучать продвинутый DS через это. После того, как ваши основные понятия ясны, и вы освоите их на выбранном вами языке, вы сможете приступить к изучению алгоритмов и решению задач.

Многие сайты (в том числе GeeksforGeeks) представляют проблемы очень быстро, без порядка уровней сложности. Это усложняет задачу для начинающих, потому что они не знают уровень сложности проблемы, которую они пытаются. Структуры данных и алгоритмы, упрощенные Нарасимхой Каруманчи, хорошо читаются после того, как вы освоитесь с основами. Он имеет довольно хорошую коллекцию задач, организованных по уровню сложности. Просто постарайтесь решить проблемы самостоятельно, а не торопиться с решением. Как только вы хорошо разберетесь в DS и обретете уверенность в решении проблем, переходите на онлайн-порталы и начинайте решать проблемы из выбранной вами темы. GeeksforGeeks хорош для начала.

Для Алгоритмов, Введение в Алгоритмы по Cormen является обязательным для прочтения.

Усовершенствованные структуры данных

Иногда базовые DS не служат для решения проблем, и вам необходимо знать продвинутые DS. Для повседневных задач, таких как поиск по телефонному списку контактов по префиксу или поиск словарного слова из перемешанной последовательности символов, требуется специальный тип DS. Их много — TST, Trie, Суффикс-дерево, Суффикс-массив, Куча Фибоначчи, Сегментное дерево, Гэп-буфер, Веревка, Пропуск, K-образное дерево и так далее. Хотя хорошо знать реализацию этих DS, я бы посоветовал также знать, когда их использовать.

Решение проблем

Итак, у вас есть пистолет, вы понимаете, как его использовать, возможно, использовали его раньше. Если вы собираетесь вести войну, вам не понравится ваш любительский опыт. Вы бы предпочли потренироваться, чтобы спасти свою задницу. Теперь попробуйте думать об этом в перспективе решения проблемы. Вы знаете, что такое DS. Но вам также нужно знать, когда его использовать. Добро пожаловать в мир решения проблем. Вам дана проблема, и вас просят ее решить. Эта проблема может быть чем угодно, начиная от простой головоломки и заканчивая реализацией пользовательского сценария. Вы, должно быть, заметили степень соединения в LinkedIn. Как вы будете это реализовывать? Ваш подход заботится о масштабируемости? Будет ли ваш код разрушаться, когда пользовательская база увеличится в десять раз? Это самый важный навык, который обычно ищут лучшие MNC. Как вы подходите к проблеме? Как вы делите это на модули? Как вы решаете каждый из них, а затем объединяете их?

Динамическое программирование

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

Конкурентное программирование

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

Дизайн и тестирование

Так что вы хороши в DS и Algos. Вы, вероятно, также хороши в решении проблем, и у вас есть разные подходы с различной сложностью во времени и пространстве. Проблема, которую вы решаете в конкурентном программировании, хорошо определена и должна работать в среде, которую никто, вероятно, не будет использовать. Что делать, если вас попросят реализовать пользовательский сценарий. Постановка проблемы обычно расплывчата, и вам нужно много обсуждать, чтобы устранить неясности. Здесь дизайн входит в картину. Как вы будете создавать функцию повторного удаления? Какие структуры данных вы будете использовать для хранения истории в веб-браузере? Как вы будете реализовывать функцию автозаполнения в адресной строке? Допустим, Amazon хочет создать функцию, которая возобновляет видео, хранящееся в облаке, с любого устройства. Какие структуры данных вы будете использовать? Как вы будете масштабировать вещи? Ваш дизайн заботится о проблемах параллелизма? Как насчет производительности? Что если вы и ваша подруга используете одну и ту же облачную учетную запись и пытаетесь воспроизводить одно и то же видео с разных устройств?

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

Прежде чем функция будет запущена, она должна быть хорошо протестирована. Хорошо также попрактиковаться в некоторых тестовых вопросах. Как вы будете тестировать функцию вставки изображения в MS Word? А как насчет функции вырезать-копировать-вставить? Как вы будете тестировать игру Temple Run? Попробуйте написать все возможные тестовые случаи и то, как вы собираетесь справиться с этим в своем коде. Написание надежного кода очень важно. Если вы позаботитесь об этом на более раннем этапе, вы можете избежать глупых ошибок (и повысить свои шансы быть отобранными на собеседованиях).

Что еще?

Иметь хорошее понимание операционной системы. Книга о динозаврах Гальвина хорошо читается. Знать, как работает сеть и иметь представление о СУБД.

Возобновить строительство

Первое впечатление лучшее. Резюме — это первое, что HR использует, чтобы решить, будет ли вам звонить на собеседование или нет. И у них их сотни. Поэтому они обычно сканируют его в течение от 20 секунд до 2 минут. Он должен быть чистым, лаконичным и элегантным. Каждое упомянутое слово должно стоить места, которое оно ест. Основное правило: если у вас есть опыт работы менее одного года, размер резюме не должен превышать страницу (за некоторыми исключениями).

Несколько замечаний:

  • Сохраните заголовок, чтобы соответствовать информации, такой как имя, идентификатор электронной почты, адрес и контактный номер
  • Укажите уровень знаний, соответствующий каждому языку. Пример: опытный в C и хороший в Java
  • Если вы упоминаете проект, напишите ваш ключевой опыт, влияние в команде и. Если этот проект онлайн (приложение), не забудьте указать ссылку. Это покажет, что вы создали что-то, что используется людьми. Угадайте, что именно это делают компании, создавая продукт, стабилизируя его в соответствии с отзывами пользователей, принимая новые запросы функций и так далее.

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

Как подать заявку в Microsoft?

Я получаю много сообщений, в которых просят об одолжении, чтобы отослать их Когда я спрашиваю их, насколько им комфортно с DS и Algos, они отвечают достаточно хорошо. Затем я перефразирую свой вопрос о том, что они чувствуют, когда решают вопросы интервью на GeeksforGeeks. Либо они не слышали о GeeksforGeeks, либо они никогда не читали. Это не удивительно. GeeksforGeeks все еще растет. Но когда я задаю им проблему с DS, настраивая уже существующих известных, все, что они говорят, это то, что они не решили эту проблему раньше. Пожалуйста, не делай этого. Мечтать хорошо, но оно сбудется только тогда, когда ты будешь работать над тем, чтобы воплотить его в жизнь.

Если вы не можете пройти собеседование, вам придется ждать еще 6-12 месяцев в зависимости от политики компании, прежде чем вы сможете снова подать заявку. Теперь, подойдя к делу, вы можете подать заявку на вакансию в Microsoft либо через страницу «Карьера», либо через направление. Направление обычно увеличивает шансы на получение собеседования, потому что ваше резюме попадает в систему через человека, которому Microsoft доверяет, чтобы быть хорошим инженером. Как вы запрашиваете направление? Это просто. Перешлите свое резюме кому-то, кого вы знаете, работаете там. Никто не скажет НЕТ, если ваше резюме не заполнено чем-то, что не соответствует требованиям компании. Эмпирическое правило: мы верим в решение проблем, и если вы хорошо это делаете, мы будем рады видеть вас здесь. Помните, что все хотят работать с умным человеком. И это обычно справедливо для любой компании, а не только для Microsoft.

Делай и не делай

  • Практика, практика и практика
  • Заведите привычку писать чистый и читаемый код (избегайте имен переменных, таких как i, j)
  • Удостоверьтесь, чтобы обращаться со всеми угловыми случаями
  • Используйте ручку и бумагу, чтобы практиковать код. В интервью у вас нет доступа к компилятору
  • Не путайте решения. Попробуйте решить самостоятельно
  • Подумайте о разных способах решения проблемы и подумайте о том, почему один должен быть предпочтительнее другого

Ресурсы

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

Ресурсы (о которых я не говорил):

  • Взломать кодовое интервью Гейл Лакманн: перед интервью нужно прочитать один раз. Он охватывает такие аспекты, как то, что интервьюеры ожидают от вас, как решать поведенческие вопросы и несколько интересных проблем. Это изменит ваши мысли о дизайне и проблемы тестирования навсегда
  • GeeksforGeeks : Библия проблем (с хорошо объясненными решениями). Убедитесь, что вы не спешите с решениями. Попробуйте решить проблемы самостоятельно, независимо от того, сколько времени это займет. Со временем и честной практикой вы должны стать лучше
  • CareerCup : огромная коллекция проблем. Хотя вы не можете полагаться на решения, оно предоставляет богатое сообщество для обсуждения проблем. Я нашел это хорошим для обсуждения проблем дизайна
  • Проект Эйлера : рай для любителей математики. Вы решаете проблемы, используя некоторые формулы на бумаге, а затем пишете код, чтобы получить окончательное решение. Решите как минимум 40 задач с этого сайта.

Эта статья предоставлена Aashish Barnwal . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Рекомендуемые посты:

Как подготовиться к лучшим ТНК?

0.00 (0%) 0 votes