Советы для экзаменов по компьютерному кодированию

Я изучаю информатику в техническом колледже. На некоторых курсах мы проводим экзамены по программированию в реальном времени, т. е. мы загружаем код и имеем определенное количество времени для решения экзамена, затем мы должны отправить код на сервер, где он оценивается. (Доступ в Интернет не разрешен)

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

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

Ответы (2)

Выполняйте тесты на время, используя условия, максимально приближенные к экзамену. В идеале используйте ту же платформу, которую вы используете в курсе. Но вы можете найти платформы, похожие на ту, которую вы описываете, в Интернете, такие как HackerRank и LeetCode , которые также имеют банки вопросов по разным темам на разных уровнях сложности, которые вы можете использовать для практики.

Обычно такие платформы имеют возможность тестировать ваш код на введенных пользователем данных или на готовых примерах. Всегдапроверяйте свой код по мере его написания, особенно на такого рода экзаменах. Проверяйте свой код каждый раз, когда добавляете новую логическую функцию. Тест может быть таким же простым, как ввод простого набора входных данных и добавление строк печати, чтобы проверить, получаете ли вы ожидаемый результат на каждом этапе — это то, что вы можете сделать быстро, чтобы проверить себя во время работы. Когда у вас есть полное решение вопроса, убедитесь, что ваш код работает на простых тестах и ​​дает правильные результаты. Когда это произойдет, попробуйте подумать о пограничных случаях, и если вас оценивают по эффективности, попробуйте создать огромный набор тестов. Вы должны уметь быстро генерировать тестовые данные (если нет, потренируйтесь). Вам также следует потренироваться думать о хороших тестовых примерах — простых, которые проверяют правильность на «разумном и маленьком» вводе, и более сложных, которые могут находить пограничные случаи и являются большими.

Изучите методы, чтобы успокоиться в экзаменационной комнате. Убедитесь, что вы хорошо поели и выспались перед экзаменом. Не зубрите — изучайте и практикуйтесь заранее, и используйте время перед экзаменом, чтобы успокоить свой ум. Сделайте глубокий вдох. Если вы обнаружите, что карабкаетесь во время экзамена, найдите минутку, чтобы сосредоточиться. Представьте, что вы находитесь в удобном месте, где вы проходите пробные тесты. Попробуйте разбить свою задачу на более мелкие, управляемые подзадачи, которые вы можете протестировать, и проложить свой путь к решению, а не пытаться решить все сразу. Не будь умным. Будьте систематичны.

Спасибо за подсказку об ограничении времени. Думаю, это может помочь.

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

Помните свои ошибки, потому что вы знаете, что можете решить упражнения. Сосредоточьтесь на подмножестве шаблонов, которые вы знаете наизусть (например, функции с вектором на входе и строкой на выходе), и постройте на этих небольших блоках свое решение.

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

Я думаю, что комментарий Эндрю об ограничении времени действительно является моим приоритетом №1... Обычно я не напрягаюсь во время кодирования, потому что это приводит к плохому качеству кода. Но я думаю, что мне следует практиковать скоростное кодирование, даже если это только ради экзаменов.
@Rubus Я согласен не напрягаться, но я весьма скептически отношусь к части «плохого кода»: первый код всегда плохой. Но это должен быть работающий код, и он будет работать, если это подразделение больших задач на маленькие задачи. Он может даже работать, но не давать правильного решения. Не так важно. Ошибки легче найти в небольших задачах, нежели в монолите. Выполните все мелкие задачи, что означает, что все мелкие задачи будут работать правильно, тогда вы сможете потратить оставшееся время на создание хорошего кода (с некоторыми плохими частями).