Привет, читатели!

Меня зовут Свапнил Кант, я из Технологического института Бирла Месра, Ранчи. Со второго года обучения в колледже я всегда интересовался программированием и создавал что-то, связанное с технологиями, всякий раз, когда у меня появлялось свободное время. Хотя я никогда не особо разбирался в соревновательном программировании. У меня есть интерес к этому, и хотя я привык писать код, мне это очень нравится, но я не настолько разбираюсь в этом, чтобы участвовать в ICPC или любых национальных или международных соревнованиях по кодированию, а также я никогда не кодировал на таких платформах, как CodeChef, SPOJ, и CodeForces.

В поисках летней стажировки 2020 года (за пределами кампуса) я провел собеседование примерно с 10-20 стартапами, отправив многим из них более 50 писем.

Наконец, в марте 2020 года я получил два предложения от за пределами кампуса через Linkedin о моей летней стажировке 2020 года в ixigo.com и Grappus, но, к сожалению, из-за covid-19 этого не могло произойти.

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

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

Конкретно говоря о программировании, так как можно узнать, что он / она на самом деле очень заинтересован в этом, задайте себе вопросы, упомянутые ниже, у скольких из них есть ответ «Да»?

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

ii. Вы любите писать базовые коды или сценарии для автоматизации?

Ваши ответы на поставленные выше вопросы «Да»? Если да, то вы можете заняться программированием, если нет, и вам все еще интересно, не волнуйтесь, дайте ему время, и вы обязательно сделаете это! все возможно, если хочешь учиться.

Теперь самый первый шаг - изучить основы.

ШАГ 1. Овладейте языком программирования

Теперь, обсуждая первый шаг, который заключается в изучении основ, возникает вопрос: как узнать, что такое основы и с чего начать? Ответ прост: для программирования вам необходимо хорошо владеть любым из объектно-ориентированных языков программирования, таких как C ++ или Java (рекомендуется).

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

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

я. C ++ Полный справочник, 4-е издание программирования Херба Шильдта.

Скачать здесь

Если вы собираетесь использовать язык C ++, убедитесь, что вы очень хорошо знакомы со знаниями указателей, структур и объединений.

Для java вы можете следовать:

ii. Head First Java, Кэти Сьерра и Берт Бейтс.

Скачать здесь

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

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

i . Отслеживание пандемии

ii . Система управления ссудой

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

Тогда следующим шагом будет продолжение практики некоторых базовых вопросов по вводу / выводу языков программирования, которые задают многие компании во время размещения здесь:

i . Для C ++

ii . Для Java

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

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

ШАГ 2. Концепции решения проблем (структуры данных)

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

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

я. Структуры данных и алгоритмы: концепции - методы и приложения. Автор: ГАВ Пай.

Купить здесь

ii. Упрощение структур данных и алгоритмов: структуры данных и алгоритмические головоломки Нарасимха Каруманчи.

Купить здесь

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

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

Теперь в начале, пожалуйста, ответьте на только простые вопросы, как указано в уровне сложности, а затем прочтите некоторые из наиболее важных статей о концепциях этих структур данных в GeeksForGeeks и прочтите несколько стандартных вопросов, основанных на этих структурах данных:

i . Массивы

ii . Связанный список

iii . Стеки

iv . Очереди

v . Двоичные деревья

vi . Деревья двоичного поиска

vii . Хеширование

viii . Строки

ix . Матрица

После того, как вы прочитаете две вышеупомянутые книги и статьи, перейдите к кодированию проблем со структурами данных и сначала попробуйте решить проблемы, связанные с прямым использованием структуры данных на Hackerrank Platform:

i . Массивы

ii . Связанный список

iii . Стеки

iv . Очереди

v . Деревья

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

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

ШАГ 3. Разработка и анализ алгоритмов

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

Студенты, пожалуйста, сначала начните с основных алгоритмов, а затем - с сложных!

начните с изучения анализа временной сложности алгоритмов. Полная статья прекрасно написана на веб-сайте GeeksForGeeks. Перейдите на панель навигации, где написано Учебники - ›Алгоритмы -› Анализ Алгоритмы и прочтите все упомянутые там статьи, однако на шаге 2 книгу (Упрощенные структуры данных и алгоритмы: структуры данных и алгоритмические головоломки, автор Нарасимха Каруманчи) также даст вам базовое понимание анализа временной сложности различных стандартов, а также поможет вам проанализировать временную сложность кодов, которые вы написали самостоятельно !! Однако прежде чем приступить к разработке алгоритмов, вы также можете воспользоваться YouTube-видео Абдула Бари Сэра (рекомендуется для новичков), в нем есть отличный контент для лучшего понимания алгоритмов для начинающих, alt Хотя вы можете поискать в Google больше видео на YouTube в соответствии с вашим уровнем понимания, я думаю, этого должно быть достаточно для начала, после того как вы достаточно хорошо разбираетесь в концепциях, которые вы можете перейти к сложным алгоритмам и задачам.

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

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

ii. Сортировка : и здесь нет необходимости использовать все типы алгоритмов сортировки, лучше освоить некоторые важные алгоритмы, такие как быстрая сортировка, сортировка слиянием, сортировка по выбору. , и сортировка вставки вместе с их сложностями времени выполнения. Однако, если у вас есть достаточно свободного времени и вы хотите узнать больше, вы можете продолжить изучение и других алгоритмов сортировки!

iii. Поиск по шаблонам : Здесь снова нет необходимости использовать все типы алгоритмов поиска по шаблонам, лучше освоить некоторые важные алгоритмы, такие как Rabin-carp, KMP, Алгоритм Z и алгоритм Манакера вместе с их сложностями времени выполнения. Однако, если у вас есть достаточно свободного времени и вы хотите узнать больше, вы можете продолжить изучение и других алгоритмов сортировки!

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

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

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

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

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

После того, как вы выполнили все шаги, упомянутые выше, теперь можно переходить к практике кодирования вопросов с некоторых хороших веб-сайтов по подготовке к собеседованию, таких как:

i . Leetcode

ii . GeeksForGeeks

о вопросах, заданных в различных интервью, читайте здесь:

i . Leetcode

ii . GeeksForGeeks

iii . CarrerCup

конечно, вы можете поискать больше в поиске google!

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

Чтобы узнать о пазлах, обратитесь к разделу Пазлы для компьютерных фанатов.

ШАГ 4. Основы информатики

Теперь я предполагаю, что к настоящему времени вы хорошо разбираетесь в языке программирования и концепциях структур данных и алгоритмов и понимаете их, так что пора двигаться вперед!

Основы предметов информатики включают концепции компьютерных сетей, операционных систем, СУБД (систем управления базами данных) и программной инженерии. Все эти предметы в основном теоретические и обычно входят в учебные программы колледжей определенных округов (CSE, ECE), поэтому убедитесь, что вы хорошо усвоили концепции и знать, как использовать эти концепции, когда вы работаете над живым проектом либо на стажировке, либо на проектах, которые вы назначаете самостоятельно. Если эти предметы не входят в ваш курс, не волнуйтесь, я поделился некоторыми ресурсами, чтобы начать! Хотя эти предметы включают в себя множество рабочих алгоритмов, и они фактически используются многими компаниями, поэтому они задают большинство вопросов из этих предметов в II или III раунде технического собеседования на основе компании.

Убедитесь, что вы не пропустите ни один из алгоритмов, представленных в этих предметах, и не пропустите ни одного контента, поскольку все они важны. Обязательно записывайте все темы в своем экземпляре и держите его при себе, чтобы быстро взглянуть на него до 4–5 дней собеседования.

Вот некоторые важные и базовые учебные пособия по этим предметам:

i . Операционные системы

ii . Компьютерные сети

iii . СУБД

iv . Разработка программного обеспечения

ШАГ 5. Сохраняйте несколько простых и хороших проектов!

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

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

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

Наконец-то оставайтесь мотивированными, много работайте и наберитесь терпения! потому что для хороших вещей нужно время!

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

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

Продолжайте учиться и расти, а также продолжайте узнавать больше!

Всего наилучшего!

За более интересными и информативными статьями и советами следите за мной на Medium и Linkedin.