#OneYearCodingPlan: месяц 2
В этой статье мы обсудим связанные списки для собеседований по программированию.
Лента новостей:
Понимание узлов в списке, как они связаны друг с другом, а также односвязных, двойных и кольцевых связанных списков - 1 неделя
Выполнение указанного ниже проекта + решение простых вопросов - 1 неделя
Вопросы Easy + Medium - 1 неделя
Сложные вопросы - 1 неделя
Опять же, 1 месяц - это наихудший крайний срок, пропустите первые две недели работы, если вы не любитель, и попробуйте вместо этого завершить эту тему за 2 недели.
Что такое связанные списки:
В некоторых статьях, объясняющих связанные списки, старайтесь не просто просматривать вопросы, а вместо этого кодировать их позже. Сосредоточьтесь на понимании концепций:
Идея небольшого проекта (для любителей):
Чтобы понять и легко использовать связанный список, я бы предложил определить свой собственный класс связанного списка и добавить к нему функции:
Узел - это отдельный элемент в связанном списке, и здесь мы храним int в каждом узле.
- Определите класс узла для двусвязного списка (Подсказка: он должен иметь данные Node previous, next и int)
- Определите класс связанного списка, который создаст пустой список с нулевым заголовком и хвостом.
- Определите метод insert_to_start (int element), insert_to_end (int element).
- Определите метод insert_at_position (int p, int element), который будет вставлять элемент в позицию p, и если p больше, чем длина связанного списка, он добавляет элемент в конец.
- Определите insert_after_element (int target, int element), который будет искать первый экземпляр цели и добавлять после него элемент. Точно так же определите insert_before_element (int target, int element). Оба выдают ошибку, если элемент не существует.
- Определите print_list (), который печатает все элементы, size () возвращает длину списка и reverse (), который меняет текущий список на противоположный.
- Определите remove_element (int element), который удаляет первый экземпляр элемента (будьте осторожны, если удаленный элемент находится в позиции головы или хвоста).
- Наконец, определите remove_duplicates (), который удалит все повторяющиеся элементы. Например, если ваш список (2- ›3-› 22- ›4-› 2- ›3-› 5), он станет (2- ›3-› 22- ›4-› 5).
Завершив этот проект, вы должны быть достаточно уверены, и я уверяю вас, что вы сможете легко решать вопросы о конкурсе / собеседовании относительно связанных списков.
Вопросы по практике:
- GeeksForGeek s - Замечательный ресурс с массой проблем, этого может быть достаточно.
- DZone - Если вы выполнили проект, вы найдете несколько тривиальных вопросов.
- Leetcode
- HackerEarth
Когда вы думаете, что готовы, попробуйте эти 5 вопросов на доске. Если вы попросите меня дать один из самых важных приемов взлома кодирования на собеседовании, это будет практика на доске.
Советы по собеседованию:
Вопрос о связном списке на собеседовании задается сравнительно редко (массивы, строки, деревья и графики задаются намного чаще), но понимание их важно, потому что они супер базовые, и они сделают понимание деревьев, графиков или другие конструкции, включающие узловые элементы, соединенные друг с другом сравнительно проще. Многие интервьюеры задают устные вопросы относительно связанных списков чаще, чем кодирования, например, в чем преимущество / недостаток связанных списков по сравнению с массивами, временная сложность вставки и поиска элемента в связанном списке и т. д.
Вот и все! Сообщите мне, если у вас есть какая-либо конструктивная критика в мой адрес и напишите мне в социальных сетях, я всегда с нетерпением жду возможности улучшить свои тексты в соответствии с отзывами!
Спасибо,
Анджали Вирамгама.
Стажер-разработчик программного обеспечения в Facebook
Если вы новичок в моих блогах, это для вас:
Обзорный блог Годового плана - вводный блог
Месяц 1 - массивы и жало.
Формат моих блогов:
- Обзор темы и график обучения, которых необходимо придерживаться.
- Ресурсы для понимания темы и практических вопросов.
- Советы по собеседованию по теме.
Уровень кодирования
Спасибо, что стали частью нашего сообщества! Подпишитесь на наш канал YouTube или присоединитесь к Интервью по программированию Skilled.dev.