Buon modo per imparare a risolvere le domande su InterviewStreet [chiuso]


10

Possibile duplicato:
come posso adattarmi alle domande della sfida pre-colloquio?

InterviewStreet è una nuova società che funge essenzialmente da filtro per le aziende a trovare programmatori in grado di programmare. Il mio problema è che la mia matematica è abbastanza debole e mi piacerebbe studiarla, anche se da zero, per essere in grado di risolvere domande come questa, che si trovano sul loro sito:

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

Ora, per favore NON pubblicare la risposta a quella domanda, è presa direttamente da InterviewStreet e non dovrebbe essere pubblicata qui. Non è la risposta che sto cercando in questo thread. Quello che sto ponendo è una domanda più fondamentale alla quale probabilmente può essere data una risposta da alcuni hacker della comunità SO.

Come ci si prepara per una domanda del genere? Quali risorse sono disponibili per studiare / imparare a risolvere questo tipo di problema? Questo è coperto da corsi aperti del MIT? Khan Academy? Qualche libro in particolare? Non sono nemmeno sicuro da dove iniziare a risolvere il problema sopra e vorrei imparare quali passi posso fare per farlo.


non fraintendetemi - mi piacciono molto questo tipo di domande (piccoli enigmi per il fine settimana) - ma davvero non penso che troverete buoni programmi con quelli - troverete dei matematici (che potrebbero essere bravi a programmig) - e sappiamo tutti che queste persone ottengono il codice, ma la persona accanto a loro non sarà mai in grado di leggere il loro codice :) ... vuoi sapere se qualcuno è bravo? Siediti e accoppia la programmazione per 2 ore con quella persona e imparerai molto di più che se a lui piacciono i puzzle di Gardner
Carsten,

Risposte:


9

Spesso le domande di intervista sono progettate per testare le tue capacità di problem solving senza bisogno di conoscenze specialistiche. Ma per la tua domanda, alcune conoscenze matematiche sarebbero sicuramente di aiuto. Per lo meno, dovrai capire le definizioni di "integrale positivo" e "modulo". Un corso introduttivo di teoria dei numeri potrebbe essere utile, forse questo da OCW .

Consiglierei anche Project Euler per problemi di esempio: è un ottimo modo per sviluppare le tue conoscenze matematiche e di programmazione. Scegli una lingua e inizia a lavorare attraverso gli esercizi.


6

Non puoi prepararti a questo tipo di problemi semplicemente memorizzando un libro. L'unico modo per essere bravi a risolvere i problemi è fare molti e molti problemi. Suggerisco di procurarsi un libro di algoritmi e strutture di dati e di leggerlo. Accelererà in modo significativo il processo.

Ricordo che qualche anno fa ho trascorso un'intera estate (5+ ore al giorno) esercitandomi a risolvere questi tipi di problemi solo per divertimento.

Ci sono molti posti in cui puoi farlo. Il progetto Euler è un buon punto di partenza. Anche UVa Online Judge ha molti problemi.


Questo è un certo impegno. Hai trovato che ti ha aiutato nella tua capacità di programmazione generale?
Darren Young,

3
Assolutamente. Ho partecipato alle Olimpiadi del computer degli Stati Uniti al liceo e sono passato da nessuno ai primi 20 negli Stati Uniti. In termini di programmazione del "mondo reale", penso di poter dire con la massima sicurezza che le mie capacità sono state notevolmente affinate. Ora non sto dicendo che tutti dovrebbero uscire e fare quello che ho fatto, ma penso che valga la pena dedicare un po 'di tempo a perfezionare le tue capacità di problem solving. Puoi davvero imparare molto ed è sicuramente applicabile allo sviluppo del software.
tskuzzy,

0

Questo particolare problema richiede di conoscere la teoria dei numeri di base, in particolare idee come il factoring di numeri composti, alcune proprietà dei numeri primi e la comprensione di coppie di numeri relativamente primi.

Gli altri problemi sul sito richiedono una comprensione della notazione O, semplici strutture di dati, algoritmi di base come l'ordinamento e la combinatoria. Ho superato 3 dei 5 problemi e ho quasi finito con il mio quarto, e non ho usato alcuna conoscenza specifica dopo il mio primo anno di lezioni di CS al college. Detto questo, questi sono problemi difficili. Alcuni richiedono una sorprendente quantità di intuizione matematica.

Per prepararti a questo genere di cose, devi essere bravo nella risoluzione matematica dei problemi. Guarda le Olimpiadi (se sei al liceo) o l'esame Putnam (se sei al college) e fai i problemi di pratica che trovi. Sono difficili, ma alla fine riesci a migliorare.

Inoltre, non fare prima la domanda da 30 punti - Quadrant Queries. È di gran lunga il più difficile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.