Posible duplicado:
¿Cómo me adapto a las preguntas de desafío previas a la entrevista?
InterviewStreet es una nueva compañía que esencialmente actúa como un filtro para que las compañías encuentren programadores que puedan codificar. Mi problema es que mi matemática es bastante débil y me gustaría estudiarla, incluso si es desde cero, para poder resolver preguntas como esta, que se encuentran en su sitio:
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
Ahora, NO publique la respuesta a esa pregunta, está tomada directamente de InterviewStreet y no debe publicarse aquí. No es la respuesta que estoy buscando en este hilo. Lo que estoy haciendo es una pregunta más fundamental que probablemente pueda ser respondida por algunos de los piratas informáticos de la comunidad SO.
¿Cómo se prepara uno para tal pregunta? ¿Qué recursos tengo disponibles para estudiar / aprender cómo resolver este tipo de problema? ¿Está esto cubierto en el material de curso abierto MIT? ¿Academia Khan? ¿Algún libro en particular? Ni siquiera estoy seguro de dónde comenzar a resolver el problema anterior y me gustaría saber qué pasos puedo seguir para hacerlo.
fuente
Respuestas:
A menudo, las preguntas de la entrevista están diseñadas para evaluar sus habilidades de resolución de problemas sin necesidad de ningún conocimiento especializado. Pero para su pregunta, algunos conocimientos matemáticos definitivamente ayudarían. Como mínimo, deberá comprender las definiciones de 'integral positivo' y 'módulo'. Un curso introductorio en teoría de números podría ser útil, quizás este de OCW .
También recomendaría el Proyecto Euler para problemas de muestra: es una excelente manera de desarrollar sus conocimientos matemáticos y de programación. Elige un idioma y comienza a trabajar en los ejercicios.
fuente
No puedes prepararte para este tipo de problemas simplemente memorizando un libro. La única manera de ser bueno en la resolución de problemas es haciendo un montón y un montón de problemas. Sin embargo, sugiero obtener un libro de algoritmos y estructuras de datos y leerlo. Acelerará significativamente el proceso.
Recuerdo que hace unos años pasé todo un verano (más de 5 horas al día) practicando la solución de este tipo de problemas solo por diversión.
Hay varios lugares donde puedes hacer esto. El proyecto Euler es un buen punto de partida. UVa Online Judge también tiene muchos problemas.
fuente
Este problema particular requiere que conozcas la teoría básica de números, específicamente ideas como factorizar números compuestos, algunas propiedades de números primos y una comprensión de pares de números relativamente primos.
Los otros problemas en el sitio requieren una comprensión de la notación O grande, estructuras de datos simples, algoritmos básicos como la clasificación y la combinatoria. He superado 3 de los 5 problemas y casi he terminado con mi cuarto, y no he usado ningún conocimiento específico después de mi primer año de clases de CS en la universidad. Dicho esto, estos son problemas difíciles. Algunos de ellos requieren una sorprendente cantidad de intuición matemática.
Para prepararse para este tipo de cosas, debe ser bueno para resolver problemas matemáticos. Mire la Olimpiada (si está en la escuela secundaria) o el examen de Putnam (si está en la universidad) y resuelva los problemas de práctica que encuentre. Son difíciles, pero con el tiempo te vuelves mejor.
Además, no hagas primero la pregunta de 30 puntos: Consultas de cuadrante. Es el más difícil de lejos.
fuente