Dobry sposób, aby dowiedzieć się, jak rozwiązywać pytania na InterviewStreet [zamknięte]

10

Możliwe duplikaty:
jak dostosować się do pytań kwestionujących przed rozmową kwalifikacyjną?

InterviewStreet to nowa firma, która zasadniczo działa jako filtr dla firm w celu znalezienia programistów, którzy mogą kodować. Mój problem polega na tym, że moja matematyka jest dość słaba i chciałbym ją przestudiować, nawet jeśli jest ona od podstaw, aby móc rozwiązać pytania takie jak to, które można znaleźć na ich stronie:

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

Teraz proszę NIE publikować odpowiedzi na to pytanie, pochodzi ona bezpośrednio z InterviewStreet i nie powinna być tutaj zamieszczana. To nie jest odpowiedź, której szukam w tym wątku. Zadaję bardziej podstawowe pytanie, na które prawdopodobnie mogą odpowiedzieć niektórzy hakerzy ze społeczności SO.

Jak przygotować się na takie pytanie? Jakie zasoby są dla mnie dostępne do nauki / uczenia się, jak rozwiązać ten problem? Czy dotyczy to otwartych materiałów szkoleniowych MIT? Khan academy? Jakieś szczególne książki? Nie jestem nawet pewien, od czego zacząć rozwiązywać powyższy problem i chciałbym dowiedzieć się, jakie kroki mogę w tym celu podjąć.

obdarzony wyobraźnią
źródło
nie zrozum mnie źle - bardzo lubię tego rodzaju pytania (małe łamigłówki na weekend) - ale tak naprawdę nie sądzę, że znajdziesz w nich dobre programy - znajdziesz matematyków (może być dobry w programmig) - i wszyscy wiemy, że ludzie wykonują kod, ale osoba obok niego nigdy nie będzie w stanie odczytać swojego kodu :) ... chcesz wiedzieć, czy ktoś jest dobry? Usiądź i sparuj programowanie z tą osobą przez 2 godziny, a nauczysz się dużo więcej niż wtedy, gdy polubi puzzle Gardnera
Carsten

Odpowiedzi:

9

Często pytania do wywiadu mają na celu sprawdzenie umiejętności rozwiązywania problemów bez potrzeby posiadania specjalistycznej wiedzy. Ale w przypadku twojego pytania pewna wiedza matematyczna zdecydowanie by pomogła. Przynajmniej musisz zrozumieć definicje „całki dodatniej” i „modulo”. Przydatny może być wstępny kurs teorii liczb, być może ten z OCW .

Polecam również Project Euler do przykładowych problemów - to świetny sposób na poszerzenie wiedzy matematycznej i programistycznej. Wybierz język i zacznij pracę nad ćwiczeniami.


źródło
6

Nie możesz przygotować się na tego rodzaju problemy, po prostu zapamiętując książkę. Jedynym sposobem, aby być dobry w rozwiązywaniu problemów jest wykonując wiele i wiele problemów. Sugeruję jednak, aby uzyskać książkę algorytmów i struktur danych i przeczytać ją. Znacząco przyspieszy ten proces.

Pamiętam kilka lat temu spędziłem całe lato (ponad 5 godzin dziennie) ćwicząc rozwiązywanie tego rodzaju problemów dla zabawy.

Istnieje wiele miejsc, w których możesz to zrobić. Project Euler to dobry punkt wyjścia. UVa Online Judge ma również mnóstwo problemów.

tskuzzy
źródło
To trochę zaangażowania. Czy uważasz, że pomogło ci to w ogólnej umiejętności programowania?
Darren Young,
3
Absolutnie. W szkole średniej uczestniczyłem w olimpiadzie komputerowej w USA i od nikogo do 20 najlepszych w USA. Jeśli chodzi o programowanie w „świecie rzeczywistym”, myślę, że mogę z najwyższą pewnością powiedzieć, że moje umiejętności zostały znacznie wyostrzone. Teraz nie mówię, że każdy powinien wyjść i zrobić to, co zrobiłem, ale myślę, że warto poświęcić trochę czasu na doskonalenie umiejętności rozwiązywania problemów. Możesz naprawdę wiele się nauczyć i to zdecydowanie odnosi się do rozwoju oprogramowania.
tskuzzy 08.08.11
0

Ten szczególny problem wymaga znajomości podstawowej teorii liczb, w szczególności idei takich jak faktoring liczb zespolonych, niektórych właściwości liczb pierwszych i zrozumienia względnie pierwszych par liczb.

Inne problemy na stronie wymagają zrozumienia dużej notacji O, prostych struktur danych, podstawowych algorytmów, takich jak sortowanie i kombinatoryka. Zaliczyłem 3 z 5 problemów i prawie skończyłem z czwartym i nie wykorzystałem żadnej konkretnej wiedzy po pierwszym roku zajęć CS w college'u. To powiedziawszy, są to trudne problemy. Niektóre z nich wymagają zaskakującej intuicji matematycznej.

Aby przygotować się na tego rodzaju rzeczy, musisz być dobry w rozwiązywaniu problemów matematycznych. Zajrzyj na Olimpiadę (jeśli jesteś w liceum) lub egzamin Putnam (jeśli jesteś na studiach) i wykonaj problemy praktyczne, które znajdziesz. Są trudne, ale w końcu stajesz się lepszy.

Nie rób też pytania 30-punktowego - Kwadrantowe - najpierw. Jak dotąd najtrudniej.

Lionel B.
źródło