Boa maneira de aprender a resolver perguntas no InterviewStreet [fechado]

10

Possível duplicado:
como me adaptar às perguntas prévias ao desafio?

O InterviewStreet é uma nova empresa que atua essencialmente como um filtro para as empresas encontrarem programadores que podem codificar. Meu problema é que minha matemática é bastante fraca e eu gostaria de estudá-la, mesmo que seja do zero, para poder resolver perguntas como essa, encontradas em seu 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

Agora, NÃO poste a resposta para essa pergunta, ela é tirada diretamente do InterviewStreet e não deve ser postada aqui. Não é a resposta que estou procurando neste tópico. O que estou fazendo é uma pergunta mais fundamental que provavelmente pode ser respondida por alguns dos hackers da comunidade SO.

Como alguém se prepara para essa pergunta? Quais recursos estão disponíveis para eu estudar / aprender a resolver esse tipo de problema? Isso é coberto nos cursos abertos do MIT? Khan Academy? Algum livro em particular? Não sei ao certo por onde começar a resolver o problema acima e gostaria de aprender quais etapas posso tomar para fazer isso.

imaginativo
fonte
não me entenda mal - eu gosto muito desse tipo de pergunta (pequenos quebra-cabeças para o fim de semana) - mas eu realmente não acho que você encontrará bons programas com eles - você encontrará nerds de matemática (que podem ser bons em programmig) - e todos sabemos que essas pessoas fazem código, mas a pessoa ao lado delas nunca será capaz de ler seu código :) ... quer saber se alguém é bom? Sente-se para baixo e para 2hr programação em pares com essa pessoa e você vai aprender muito mais do que se ele acontece a como Gardner-puzzles
Carsten

Respostas:

9

Muitas vezes, as perguntas da entrevista são projetadas para testar suas habilidades de resolução de problemas sem a necessidade de nenhum conhecimento especializado. Mas, para sua pergunta, algum conhecimento matemático ajudaria definitivamente. No mínimo, você precisará entender as definições de 'integral positivo' e 'módulo'. Um curso introdutório em teoria dos números pode ser útil, talvez este da OCW .

Também recomendo o Project Euler para problemas de amostra - é uma ótima maneira de desenvolver seu conhecimento matemático e de programação. Escolha um idioma e comece a trabalhar com os exercícios.


fonte
6

Você não pode se preparar para esse tipo de problema simplesmente memorizando um livro. A única maneira de ser bom na solução de problemas é fazendo muitos e muitos problemas. Eu sugiro que você obtenha um livro de algoritmos e estruturas de dados e leia-o. Isso acelerará significativamente o processo.

Lembro-me de alguns anos atrás, passei um verão inteiro (mais de 5 horas por dia) praticando a solução desses tipos de problemas apenas por diversão.

Existem vários lugares onde você pode fazer isso. O Projeto Euler é um bom ponto de partida. O UVa Online Judge também tem muitos problemas.

tskuzzy
fonte
Isso é algum compromisso. Você achou que isso o ajudou em sua capacidade de programação geral?
Darren Young
3
Absolutamente. Eu participei da Olimpíada de Computação dos EUA no ensino médio e fui de ninguém para o top 20 nos EUA. Em termos de programação do "mundo real", acho que posso dizer com a máxima confiança que minhas habilidades foram significativamente aprimoradas. Agora não estou dizendo que todos deveriam sair e fazer o que eu fiz, mas acho que vale a pena gastar algum tempo aprimorando suas habilidades de resolução de problemas. Você pode realmente aprender muito e é definitivamente aplicável ao desenvolvimento de software.
tskuzzy
0

Esse problema específico exige que você conheça a teoria básica dos números, especificamente idéias como fatorar números compostos, algumas propriedades dos números primos e uma compreensão dos pares de números relativamente primos.

Os outros problemas no site exigem uma grande notação O, estruturas de dados simples, algoritmos básicos como classificação e combinatória. Eu passei por 3 dos 5 problemas e estou quase terminando o meu 4º, e não usei nenhum conhecimento específico depois do meu primeiro ano de aulas de ciências na faculdade. Dito isto, são problemas difíceis. Alguns deles exigem uma quantidade surpreendente de intuição matemática.

Para se preparar para esse tipo de coisa, você deve ser bom em resolver problemas matemáticos. Examine a Olimpíada (se você estiver no ensino médio) ou o exame Putnam (se estiver na faculdade) e faça os problemas de prática que encontrar. Eles são difíceis, mas você fica melhor com eles eventualmente.

Além disso, não faça a pergunta dos 30 pontos - Consultas do quadrante - primeiro. É o mais difícil de longe.

lionel b
fonte