Возможный дубликат:
Как мне адаптироваться к контрольным вопросам перед собеседованием?
InterviewStreet - это новая компания, которая, по сути, выступает в качестве фильтра для компаний, которые ищут программистов, способных писать код. Моя проблема в том, что моя математика довольно слабая, и я хотел бы изучить ее, даже если она с нуля, чтобы иметь возможность решать такие вопросы, как этот, который можно найти на их сайте:
Find the no of positive integral solutions for the equations (1/x) + (1/y) = 1/N! (read 1 by n factorial) Print a single integer which is the no of positive integral solutions modulo 1000007
Теперь, пожалуйста, НЕ публикуйте ответ на этот вопрос, он взят непосредственно из InterviewStreet и не должен быть размещен здесь. Это не тот ответ, который я ищу в этой теме. Я задаю более фундаментальный вопрос, на который, вероятно, могут ответить некоторые хакеры из SO-сообщества.
Как подготовиться к такому вопросу? Какие ресурсы доступны для меня, чтобы изучить / узнать, как решить этот тип проблемы? Охвачено ли это в открытой учебной программе MIT? Ханская академия? Какие-то конкретные книги? Я даже не уверен, с чего начать решение вышеуказанной проблемы, и я хотел бы узнать, какие шаги я могу предпринять для этого.
источник
Ответы:
Часто вопросы интервью предназначены для проверки ваших навыков решения проблем без каких-либо специальных знаний. Но по твоему вопросу некоторые математические знания определенно помогут. По крайней мере, вам нужно понять определения «положительный интеграл» и «по модулю». Может быть полезен вводный курс по теории чисел, возможно, от OCW .
Я бы также порекомендовал Project Euler для типовых задач - это отличный способ развить свои знания в области математики и программирования. Выберите язык и начните работать с упражнениями.
источник
Вы не можете подготовиться к такого рода проблемам, просто запоминая книгу. Единственный способ быть хорошим при решении задач, делая много и много проблем. Я советую взять книгу по алгоритмам и структурам данных и прочитать ее. Это значительно ускорит процесс.
Я помню, как несколько лет назад я провел целое лето (5+ часов в день), занимаясь решением этих проблем просто для удовольствия.
Есть ряд мест, где вы можете сделать это. Проект Эйлера - хорошая отправная точка. У UVa Online Judge также есть куча проблем.
источник
Эта конкретная проблема требует, чтобы вы знали основы теории чисел, в частности, такие как факторинг составных чисел, некоторые свойства простых чисел и понимание относительно простых пар чисел.
Другие проблемы на сайте требуют понимания больших O-нотаций, простых структур данных, базовых алгоритмов, таких как сортировка и комбинаторика. Я прошел 3 из 5 задач, и я почти закончил с 4-м, и я не использовал никаких специальных знаний после первого года занятий по CS в колледже. Тем не менее, это сложные проблемы. Некоторые из них требуют удивительного количества математической интуиции.
Чтобы подготовиться к такого рода вещам, вы должны уметь решать математические задачи. Посмотрите на олимпиаду (если вы учитесь в старшей школе) или экзамен Putnam (если вы учитесь в колледже) и решите проблемы с практикой, которые вы найдете. Они тяжелые, но ты в конце концов становишься лучше.
Кроме того, не делайте вопрос из 30 пунктов - Quadrant Queries - сначала. Это самый сложный на сегодняшний день.
источник