Pożyczył następujący artykuł z http://get-that-job-at-google.blogspot.in/
Znajomość kodowania C / C ++ i Java są preferowanymi językami programowania dla Google Interviewers. Musisz znać przynajmniej jeden z nich naprawdę dobrze. Oczekuje się, że napiszesz kod w wywiadach na ekranie telefonu, a także w wywiadach na miejscu.
Polecane książki do wywiadów z CS : Wprowadzenie do algorytmów - autor: Cormen
Wywiady programistyczne ujawnione
Cracking the Coding Interviews
Algorytmy wywiadów
Polecane strony do praktyki kodowania : InterviewStreet, Topcoder
Big-O To powinien być punkt wyjścia do przygotowania się do wywiadu algorytmicznego. Nie możesz walczyć z podstawową analizą złożoności, ponieważ zagwarantuje to, że nie zostaniesz zatrudniony. Powinieneś być zaznajomiony i rozumieć notacje O, Θ i Ω. Polecam przeczytanie sekcji poświęconej analizie złożoności z książki Struktury i algorytmy danych.
Sortowanie Powinieneś być w stanie z łatwością pisać algorytmy O (n * lgn), takie jak QuickSort i MergeSort. Porównaj i zrozum najlepsze, najgorsze i średnie zawiłości spraw. Uważam, że ten stół na wiki jest bardzo przydatny; zawiera listę ważnych właściwości wszystkich algorytmów sortowania. Nie zaniedbuj podstawowych algorytmów O (n ^ 2), takich jak sortowanie bąbelkowe lub sortowanie wstawiane, ponieważ inne algorytmy poprawiają je. Wywiady dotyczą bardziej ulepszenia podstawowego pomysłu, algorytmy sortowania pomogą w tym procesie.
Tabele skrótów W razie wątpliwości pomyśl o tabelach skrótów. Są przydatne w większości problemów i często pomagają nam poprawić złożoność czasową niektórych problemów poprzez buforowanie wyników.
Drzewa Przejdź przez podstawowe algorytmy budowy drzewa, przejścia i manipulacji. Powinieneś być w stanie zaimplementować algorytmy oparte na drzewach wyszukiwania binarnego. Powinieneś być zaznajomiony ze zrównoważonymi drzewami, chociaż nie oczekuje się, że napiszesz dla nich kod w wywiadzie: drzewa AVL, drzewa czerwono-czarne, drzewa Trie, drzewa n-ary itp. Niezbędna jest dogłębna wiedza na temat przemierzania zleceń, zleceń i zamówień w przedsprzedaży, ponieważ możemy rozwiązać wiele problemów związanych z drzewem, wykonując proste modyfikacje jednego z tych przejść.
Wykresy
Wykresy to bardzo ważna koncepcja w informatyce. Przećwicz trzy podstawowe reprezentacje wykresów (obiekty i wskaźniki, macierz i listę przyległości) i zapoznaj się z ich zaletami i wadami. Podczas rozmowy nie ma dużo czasu, więc nie należy oczekiwać czegoś bardzo złożonego. Jednak podstawowe algorytmy przechodzenia przez graf (DFS i BFS) są koniecznością, należy je wdrożyć we wszystkich podstawowych reprezentacjach. Powinieneś być w stanie zaimplementować algorytmy Dijkstra lub Floyd-Warshall, a także algorytmy minimalnego drzewa opinającego (Kruskal i Prim). Dowiedz się więcej o sortowaniu topologicznym, ponieważ jest on zaskakująco bardzo przydatny w wielu problemach z porządkowaniem.
Programowanie dynamiczne Jest to prawdopodobnie najważniejszy temat, ponieważ wdrożenia są niewielkie. Powinieneś być w stanie zaimplementować 2-3 dynamiczne algorytmy w czasie 35-40 minut. Sprawdzając zasoby na tym blogu lub w Internecie, przekonasz się, że powinieneś spodziewać się co najmniej jednego pytania dotyczącego programowania dynamicznego na wywiad.
Systemy operacyjne Dowiedz się o procesach, wątkach i zagadnieniach dotyczących współbieżności. Wiedzieć o muteksach, semaforach, monitorach i ich działaniu. Dowiedz się, czym jest impas i blokada aktywności i jak ich uniknąć. Dowiedz się więcej o przełączaniu kontekstu, planowaniu itp.
Matematyka Powinieneś zapoznać się z liczeniem, kombinatoryką i prawdopodobieństwem.
Publikacje Google Jeśli masz czas, zapoznaj się z poniższymi publikacjami Google, przełomowymi. System plików Google
Google Bigtable
Google MapReduce