10 проектов, которыми должен заняться каждый разработчик
Освоения 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