Interview algo questions preparation
Предыстория
Я не люблю алгоритмические задачи.
Мой путь в компьютерные науки и программирование начался именно с них. Я помню как сменив школу и пойдя в 10 класс, осенью я сразу же попал на олимпиаду по информатике. Олимпиада представляла собой классическое соревнование по спортивному программированию с решением алгоритмических задач на время. К тому моменту я умел программировать на PHP (бтв мой первый язык программирования) и знал синтаксис Си.
Я решил совсем несколько задач и большинство из них на 30-40 баллов из максимальных 100. К примеру, где-то я просто использовал int вместо long и вторая половина тестов не проходила из-за переполнения, оставляя меня с низким баллом. Спасибо моей учительнице информатики Рыжовой Ирине Михайловне, что заметила мой энтузиазм и всячески помогала мне расти в этом направлении. Для меня это было в новинку и притом дико нравилось, ибо я затем и менял школу, чтобы заниматься точными науками на уровне выше среднего по больнице.
Мы разбирали некоторые задачи, и параллельно на основных уроках я постигал основы информатики (что более распространено в развитом мире под термином computer science). Я стал участвовать и в других городских олимпиадах, изучая особенности и специфику олимпиадного программирования: использование правильных числовых типов, встроенных структур данных (с определенного момента я пересел на Python); узнал основы асимптотической оценки затрат по времени и ресурсам.
Хоть я и не имел особых успехов на олимпиадах, сей опыт помог мне сформировать более зрелое понимание области в целом, к моменту поступления в университет (привет всем из ЛЭТИ). В университете я продолжил изучать алгоритмы и структуры данных, а также поучаствовал в составе команды в ACM ICPC (привет Андрей и Паша, вы крутые), но полноценно я не мог этим заниматься, так как учеба в вузе сама по себе отнимает много времени, сил и нервов. Чего только стоил математический анализ или линейная алгебра, по которой я параллельно проходил курс на stepik, смотрел плейлист 3blue1brown, и читал несколько книг. Все это в довесок к лекциям, домашним заданиям и прочим временным вампирам.
Уже в университете тема спортивного программирования начала мне надоедать. Как и в любом спорте высоких достижений, ты либо тратишь на это большую часть своего времени, либо ты просто лох и даже не лезь туда. В мире, и в области информатики и программирования в частности, так много интересных тем. Например, я помню как меня захватила тема паттернов ООП и SOLID, особенно в разрезе практического применения.
Тем не менее жизнь штука интересная и бумеранг спортивного программирования вернулся ко мне в момент подготовки к собеседованиям. В этой связи я бы хотел попытаться частично рассказать о подготовке в своем блоге. В первую очередь это освежит знания в моей голове, а во-вторых, если затея получится, это может послужить хорошим планом для очередной подготовки через несколько лет XD.