10 проектов, которыми должен заняться каждый разработчик

Опубликовано: 28 Июня, 2021

Освоения DSA и знания всех теорий недостаточно, и это не может гарантировать вам надежную работу. Без сомнения, работодатель ищет программиста, который знает как теорию, так и практические аспекты, но если работодатель должен выбирать между одним, то он выберет того, кто является практичным, а не теоретического! Многие работодатели так заинтересованы в вашем «профиле» на GitHub и в проектах, которые вы реализовали за последние годы. В этой статье мы рассмотрим проекты - вопросы реализации которых задаются во многих интервью (в частности, собеседования по проектированию систем) и к которым должен приложить руку каждый разработчик.

1. Текстовый редактор

Текстовые редакторы субкультур, имеющие отношение к любому программированию, возглавляют список, поскольку текстовый редактор является основным инструментом, который использует каждый программист, и он должен быть знаком с тем, как работает текстовый редактор. Такие компании, как Flipkart, Microsoft и т. Д., Постоянно задают вопросы, связанные с текстовыми редакторами, в своих интервью - вопросы, связанные с двухстековой моделью, операциями отмены-повтора (с неограниченным размером стека, в отличие от Блокнота, который допускает только однократные операции отмены / повтора), поиск и замена текста с использованием trie-структуры данных (для масштабирования текстового редактора до текстового процессора), поиск на основе шаблонов (с использованием регулярных выражений), стилизация текста (как в редакторах кода) и т. д. Так что стоит попробовать проект текстового редактора.

Ниже приведены некоторые соответствующие статьи, которые вы можете найти, чтобы узнать, как создать свой текстовый редактор:

  • Java Swing | Создайте простой текстовый редактор
  • Сделайте NotePad с помощью Tkinter

2. Графический калькулятор

Калькулятор - это простое приложение, но графический калькулятор интересен в основном компактным пользовательским интерфейсом (не отображающим сразу все функции). Есть много вещей, которые могут быть расширены до него, например, разрешение сложных выражений в текстовом поле (в качестве ввода - которое может включать деревья выражений), разрешение пользовательских функций (аналогично калькулятору GNOME) и так далее! Сложность проекта не следует недооценивать, и нужно стараться, чтобы пользовательский интерфейс был как можно более компактным. Все и все, даже если интервьюеры не задают столько вопросов, связанных с деревьями выражений, тем не менее создание графического калькулятора может быть хорошим упражнением с графическим интерфейсом и проектом, который должен получить каждый разработчик!

Статьи по Теме:

  • Простой калькулятор с Javascript
  • Простой калькулятор Java Swing
  • Научный калькулятор HTML
  • Простой графический калькулятор Python с использованием Tkinter
  • Оценка выражений
  • Деревья выражений

3. Змейка

Snake Game - определенно проект, к которому должен приложить руку каждый разработчик! В создании игры «Змейка» интересно то, что есть бесконечное множество способов сделать это! Некоторые мелочи в Snake могут сбить с толку кого угодно, поэтому такие компании, как Amazon и т. Д., Задают вопросы, связанные с дизайном игр Snake. Такие вопросы, как « Как бы вы переделали игру так, чтобы вместо перезапуска игры, когда змея кусает себя, она разрезала бы сегменты змеи и уменьшила бы ее жизнь на единицу»? или Что делать, если яблоко появляется у змеи или одного из ее сегментов? и какой алгоритм вы бы использовали, чтобы этого не произошло? , Как бы вы сделали анимированную игру «Змея» - такую, в которой бы использовались разные спрайты для головы, хвоста и тела змеи? . Последний вопрос очень актуален, и я сильно подозреваю, что интервьюеры перейдут к последнему вопросу, поскольку создание игры-змейки на основе спрайтов (похожей на Google Snake) не так тривиально, как просто создание игры-змейки! Техника рендеринга - вот что действительно усложняет задачу.

Статьи по Теме:

  • Создай игру со змеей
  • Создание игры-змейки с использованием холста HTML5

4. TicTacToe / Connect 4 с ИИ

Звучит просто, правда? Мы говорим о непревзойденном ИИ - тот, который требует минимаксного алгоритма и обрезки альфа-бета! Как создать ИИ для настольной игры - этот вопрос задают во многих собеседованиях по проектированию систем, и интервьюеры будут продолжать задавать этот вопрос, пока он не станет тривиальным для всех! Создать непревзойденный ИИ TicTacToe довольно просто, и похвастаться нечем, но ИИ для других настольных игр, таких как Connect 4 и особенно Chess, может быть довольно сложным (поскольку он включает в себя обрезку альфа-бета и обработку с множеством угловых случаев).

Статьи по Теме:

  • Алгоритм MiniMax в теории игр
  • Альфа-бета обрезка

5. Терминальная оболочка

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

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

  • Разработка оболочки на базе Linux
  • Создайте свою собственную оболочку Linux на C

6. Судоку (с ИИ)

Судоку - это математическая головоломка, разработанная великим швейцарским математиком Леонардом Эйлером. Некоторые говорят, что изначально это была японская логическая головоломка, но мы не будем вдаваться в подробности. Мы займемся только проектом - который касается создания генератора судоку, а также решателя (решение будет выполняться AI-агентом) Судоку может быть довольно сложным, особенно если головоломка должна генерироваться в зависимости от сложности, как это потребует использования Лас-Вегаса, а также высокого уровня обобщения! Часть AI довольно тривиальна, но в зависимости от вашей реализации и структуры данных, которую вы используете, это может быть сложно .
Например, это может быть сложно, если вы определите сетку как матрицу, а не как массив! Обратите внимание, что мы не поместили судоку в указанную выше категорию - это потому, что судоку - это настольная игра для одного игрока. Игрок играет в судоку сам с собой, и в игре нет второго игрока - это означает, что на каждом этапе не нужно генерировать возможность. Есть много способов сделать ИИ - вы можете просто использовать отслеживание с возвратом или вы можете использовать расширенные методы ИИ, такие как распространение ограничений, и использовать структуры данных, такие как BST.

Статьи по Теме:

  • Судоку с возвратом
  • Генератор Судоку
  • Проверьте, действительна ли заданная конфигурация доски для судоку.

7. Узел-редактор

В настоящее время во многих приложениях с графическим интерфейсом есть что-то, что называется редактором узлов . В настоящее время ожидается, что в каждом продуктивном программном обеспечении есть редактор узлов! Программное обеспечение для 3D-моделирования, такое как Houdini и Blender, игровые движки, такие как Unity и Unreal, и программы для рассказывания историй, такие как Twine - все они имеют редактор узлов. Редактор узлов может быть всех видов, но фундаментальный принцип заключается в том, что существуют базовые объекты, называемые узлами , в которых есть вывод, который необходимо соединить с другим выводом других узлов! А узлы соединены проводами, которые в основном представлены кривыми Безье, но некоторые представляют их в виде эллиптических кривых (Twine) или простых линий (Blender 1.8). Я рекомендую вам использовать в своем проекте кривые Безье, так как они сейчас в моде ! Ниже приведены некоторые соответствующие статьи, которые помогут вам создать свой редактор узлов: -

Статьи по Теме:

  • Кривая Безье в HTML5 CanvasCube Кривая Безье в SDL / CB Кривая Безье в p5.js
Если вы используете Javascript, попробуйте Rete.js8. Веб-сканер Веб-сканеры могут быть загадочными, и не многие люди знают секрет создания масштабируемого веб-сканера, и именно так интервьюеры выбирают лучших кандидатов! Google задает этот вопрос о внедрении веб-сканера во многих интервью по разработке систем, и было бы трудно ответить, если бы кто-то никогда не создавал свой веб-сканер! Ниже приведены некоторые соответствующие статьи, которые вы можете прочитать, чтобы узнать, как создать свой веб-сканер: Как создать робота-паука на PHP? Как создать веб-сканер на PHP? Как обнаружить роботов-пауков с помощью PHP? Nodejs | Веб-парсинг с использованием CheerioPython | Программа для сканирования веб-страницы для получения наиболее часто встречающихся словPython | Реализация парсинга веб-страниц в Python с помощью ScrapyPython | Инструменты в мире парсинга веб-страниц Реализация парсинга веб-страниц в Python с помощью BeautifulSoupРазвертывание паука Scrapy на ScrapingHub 9. Косынка Клондайк / Паук Существуют сотни различных разновидностей пасьянсов, таких как Гольф, Трипикс, Игра Пекарей, Тринадцать и так далее, но, вероятно, самые сложные из них - Клондайк и Пасьянс Паук! В пасьянсе «Клондайк» (который многие называют просто пасьянсом) можно использовать различные структуры данных, от стека до развернутых деревьев! Также в пасьянсах можно использовать алгоритм Fisher-Yates Shuffle! Статьи по теме: Перемешайте заданный массив с помощью алгоритма Fisher-Yates Shuffle Перемешайте колоду карт 10. Шахматная игра Шахматная игра всегда будет проектом, к которому каждый разработчик должен приложить свои руки (по крайней мере, каждый разработчик, который хочет быть инженером-программистом)! В шахматной игре есть множество движущихся частей и множество угловых ситуаций, которые необходимо учитывать! Это включает в себя много теории графов, и даже на сегодняшний день создание непревзойденного ИИ для шахмат - не детская игра! Даже с помощью минимаксного алгоритма может быть очень сложно создать непревзойденный AI для шахмат (так как количество комбинаций очень велико), и нужно применить некоторые методы оптимизации производительности, чтобы уменьшить накладные расходы на память! Игра в шахматы также может проверить ваши дизайнерские навыки, например: Реализуете ли вы повторяющееся поведение или используете ли вы концепцию наследования и т. Д.? Статьи по теме: Проверка правильности заданной шахматной доски Минимальное количество ходов, необходимых для достижения цели королем на шахматной доске Разработка шахматной игры Задача N-ферзей Мои личные заметки arrow_drop_upSave