Tomó prestado el siguiente artículo de http://get-that-job-at-google.blogspot.in/
Conocimientos de codificación C / C ++ y Java son los lenguajes de programación preferidos para los entrevistadores de Google. Debe conocer al menos uno de ellos realmente bien. Se espera que escriba código en las entrevistas en la pantalla del teléfono y también en las entrevistas en el sitio.
Libros recomendados para entrevistas de CS : Introducción a los algoritmos - Por Cormen
Programación de entrevistas expuestas
Descifrando las entrevistas de codificación
Algoritmos para entrevistas
Sitios web recomendados para la práctica de codificación : InterviewStreet, Topcoder
Big-O Este debería ser el punto de partida para prepararse para una entrevista algorítmica. No debe luchar con el análisis de complejidad básica, ya que garantizará que no se lo contrate. Debe estar familiarizado y comprender las notaciones O, Θ y Ω. Recomiendo leer la sección sobre análisis de complejidad del libro de Estructuras de datos y Algoritmos.
Clasificación Debería poder escribir algoritmos O (n * lgn) como QuickSort y MergeSort con facilidad. Compare y comprenda las mejores, peores y medias complejidades de los casos. Encontré esta tabla en wiki muy útil; Enumera propiedades importantes de todos los algoritmos de clasificación. No descuides los algoritmos básicos de O (n ^ 2) como el ordenamiento de burbujas o el de inserción, ya que otros algoritmos mejoran con respecto a estos. Las entrevistas tratan más sobre cómo mejorar una idea básica, los algoritmos de clasificación ayudarán con este proceso.
Tablas hash En caso de duda, piense en tablas hash. Son útiles en la mayoría de los problemas y con frecuencia nos ayudan a mejorar la complejidad temporal de algunos problemas al almacenar en caché los resultados.
Árboles Siga los algoritmos básicos de construcción de árboles, recorrido y manipulación. Debería poder implementar algoritmos basados en árboles de búsqueda binarios. Debe estar familiarizado con los árboles equilibrados, aunque no se espera que escriba código para ellos en la entrevista: árboles AVL, árboles rojo-negros, árboles Trie, n-aries, etc. Es necesario un conocimiento exhaustivo sobre los recorridos en orden, postorder y preorder, porque Podemos resolver muchos problemas de árbol haciendo modificaciones simples a uno de estos recorridos.
Gráficos Los
gráficos son un concepto muy importante en informática. Practique las tres representaciones básicas de gráficos (objetos y punteros, matriz y lista de adyacencia) y familiarícese con sus pros y sus contras. No hay mucho tiempo durante la entrevista, por lo que no debe esperar algo muy complejo. Sin embargo, los algoritmos básicos de recorrido de gráficos (DFS y BFS) son imprescindibles, debe implementarlos en todas las representaciones básicas. Debería poder implementar los algoritmos Dijkstra o Floyd-Warshall, así como los algoritmos de árbol de expansión mínimo (Kruskal y Prim). Aprenda sobre la clasificación topológica, ya que es sorprendentemente muy útil en muchos problemas de ordenación.
Programación dinámica Este es probablemente el tema más importante ya que las implementaciones son pequeñas. Debería poder implementar 2-3 algoritmos dinámicos durante un tiempo de 35-40 minutos. A medida que revise los recursos en este blog o en la web, encontrará que debe esperar al menos una pregunta de programación dinámica por entrevista.
Sistemas operativos Aprenda sobre procesos, hilos y problemas de concurrencia Conozca mutexes, semáforos, monitores y cómo funcionan. Comprenda qué son el punto muerto y el bloqueo en vivo y cómo evitarlos. Aprenda sobre el cambio de contexto, la programación, etc.
Matemáticas Debe familiarizarse con el conteo, la combinatoria y la probabilidad.
Publicaciones de Google Lea las innovadoras publicaciones de Google que se enumeran a continuación si tiene tiempo. Sistema de archivos de Google
Google Bigtable
Google MapReduce