Bon moyen d'apprendre à résoudre des questions sur InterviewStreet [fermé]

10

Duplicata possible:
Comment puis-je m'adapter aux questions du défi avant l'entrevue?

InterviewStreet est une nouvelle entreprise qui agit essentiellement comme un filtre permettant aux entreprises de trouver des programmeurs capables de coder. Mon problème est que mes mathématiques sont assez faibles et j'aimerais l'étudier, même si c'est à partir de zéro, pour pouvoir résoudre des questions comme celle-ci, que l'on trouve sur leur site:

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

Maintenant, veuillez NE PAS poster la réponse à cette question, elle est tirée directement de InterviewStreet et ne doit pas être publiée ici. Ce n'est pas la réponse que je cherche dans ce fil. Ce que je demande est une question plus fondamentale à laquelle certains hackers de la communauté SO peuvent probablement répondre.

Comment se prépare-t-on à une telle question? De quelles ressources puis-je disposer pour étudier / apprendre à résoudre ce type de problème? Est-ce couvert par les didacticiels ouverts du MIT? Khan Academy? Des livres en particulier? Je ne sais même pas par où commencer pour commencer à résoudre le problème ci-dessus et j'aimerais savoir quelles mesures je peux prendre pour le faire.

imaginatif
la source
ne vous méprenez pas - j'aime beaucoup ce genre de questions (petites énigmes pour le week-end) - mais je ne pense vraiment pas que vous trouverez de bons programmes avec ceux-ci - vous trouverez des math-geeks (qui pourraient être bons à programmig) - et nous savons tous que ces gens font du code, mais la personne à côté d'eux ne pourra jamais lire leur code :) ... vous voulez savoir si quelqu'un est bon? Asseyez-vous et faites une programmation de 2 heures avec cette personne et vous en apprendrez beaucoup plus que s'il aimait Gardner-puzzles
Carsten

Réponses:

9

Les questions d'entrevue sont souvent conçues pour tester vos compétences en résolution de problèmes sans avoir besoin de connaissances spécialisées. Mais pour votre question, certaines connaissances mathématiques seraient certainement utiles. À tout le moins, vous devrez comprendre les définitions de «intégrale positive» et de «modulo». Un cours d'introduction à la théorie des nombres pourrait être utile, peut-être celui-ci d'OCW .

Je recommanderais également Project Euler pour des exemples de problèmes - c'est un excellent moyen de développer vos connaissances mathématiques et en programmation. Choisissez une langue et commencez à travailler avec les exercices.


la source
6

Vous ne pouvez pas vous préparer à ce genre de problèmes en mémorisant simplement un livre. La seule façon d'être bon dans la résolution de problèmes est de faire beaucoup , beaucoup de problèmes. Je suggère cependant d'obtenir un livre d'algorithmes et de structures de données et de le lire. Cela accélérera considérablement le processus.

Je me souviens il y a quelques années, j'ai passé un été entier (plus de 5 heures par jour) à pratiquer la résolution de ces types de problèmes juste pour le plaisir.

Il existe plusieurs endroits où vous pouvez le faire. Le projet Euler est un bon point de départ. UVa Online Judge a également des tonnes de problèmes.

tskuzzy
la source
C'est un certain engagement. Avez-vous trouvé que cela vous a aidé dans votre capacité de programmation générale?
Darren Young
3
Absolument. J'ai participé à l'Olympiade informatique des États-Unis au lycée et je suis passé de personne au top 20 aux États-Unis. Pour ce qui est de la programmation "du monde réel", je pense pouvoir dire avec la plus grande assurance que mes compétences ont été considérablement affinées. Maintenant, je ne dis pas que tout le monde devrait sortir et faire ce que j'ai fait, mais je pense que cela vaut la peine de passer du temps à perfectionner vos compétences en résolution de problèmes. Vous pouvez vraiment apprendre beaucoup et c'est certainement applicable au développement de logiciels.
tskuzzy
0

Ce problème particulier nécessite que vous connaissiez la théorie des nombres de base, en particulier des idées comme la factorisation des nombres composites, certaines propriétés des nombres premiers et une compréhension des paires de nombres relativement premiers.

Les autres problèmes sur le site nécessitent une compréhension de la grande notation O, des structures de données simples, des algorithmes de base comme le tri et la combinatoire. J'ai passé 3 des 5 problèmes et j'ai presque fini avec mon 4ème, et je n'ai utilisé aucune connaissance spécifique après ma première année de cours de CS au collège. Cela dit, ce sont des problèmes difficiles. Certains d'entre eux nécessitent une surprenante intuition mathématique.

Pour vous préparer à ce genre de choses, vous devez être bon en résolution de problèmes mathématiques. Regardez l'Olympiade (si vous êtes au lycée) ou l'examen de Putnam (si vous êtes au collège) et faites les problèmes d'entraînement que vous trouvez. Ils sont durs, mais vous finissez par vous améliorer.

Aussi, ne faites pas d'abord la question à 30 points - Quadrant Queries. C'est de loin le plus difficile.

lionel b
la source