Bueno, he estado golpeando los libros donde puedo. Tengo una entrevista próxima, la primera por teléfono, para un puesto de ingeniero de software. He leído todas las publicaciones del blog, he leído todas las cuentas de entrevistas (algunas bastante antiguas), y Google mismo incluso sugirió una lista de libros de lectura, ninguno de los cuales sorprendería a nadie aquí. Aún así, después de un tiempo de preparación, no puedo sacudir esa sensación de que hay un terreno tan grande que cubrir, y nunca estoy seguro de si ir con profundidad o amplitud. Me he encontrado re-aprendiendo un área completa de compsci, solo para olvidar la mayoría de los detalles esenciales a medida que avanzo hacia otro.
Por lo tanto, no sé si hay una buena respuesta a esta pregunta, pero estoy buscando algún consejo práctico sobre cómo abordar las semanas restantes antes de la entrevista. Parte de mi cerebro está cansada por el hacinamiento y, por supuesto, el resto tiene que ser utilizado para algunos problemas difíciles en mi lugar de trabajo actual.
fuente
Respuestas:
Cosas que deberías saber
¡Google quiere contratarte!
La sangre vital de cualquier compañía de software son sus empleados y Google no es diferente. Está buscando contratar a los mejores y más brillantes, y las personas que realizan las entrevistas quieren que tenga éxito tanto como usted.
Google hará lo mejor para evaluarlo con la mayor precisión posible. Es su trabajo.
Google es una empresa basada en datos. Las decisiones de contratación no son decididas por el gerente fiat. En cambio, cada entrevistador toma notas extensas durante la entrevista que se combinan en un paquete. Ese paquete será revisado por un comité separado , que finalmente tomará la decisión. Así que si no estabas 'gelificando' con uno de tus entrevistadores, ¡no te preocupes! Lo que importa es qué tan bien se desempeña en la entrevista.
Habilidades que deberías tener
Asegúrese de repasar las siguientes habilidades / técnicas antes de su entrevista. Incluso si no se le hace una pregunta sobre estos directamente, revisarlos ciertamente puede ayudarlo a tener la mentalidad correcta.
Estructuras de datos
¿Cuál es la diferencia entre una matriz y una lista vinculada? ¿Un árbol y un gráfico? ¿Cuándo usarías uno sobre el otro? ¿Cómo afectaría eso las compensaciones de velocidad / memoria?
Una pregunta de entrevista no termina en una solución que funcione. Sea capaz de explicar el tiempo de ejecución de su enfoque y qué tipo de compensaciones podría hacer. Por ejemplo, "si almacenara en caché todo, tomaría X gigas de RAM pero funcionaría más rápido porque ...". O "si mantenía el árbol binario ordenado mientras realizaba las operaciones, X sería más lento, Y sería más rápido, etc."
Algoritmos
Algoritmos básicos de recorrido de gráficos, algoritmos de recorrido de árboles y dos buenos enfoques para ordenar números.
Asegúrese de practicar la resolución de un problema no trivial utilizando la programación dinámica. ¡Ese es tu as en el hoyo cuando se trata de preguntas difíciles para la entrevista!
Tablas hash
Esto es enorme Conozca todo lo que hay que saber sobre las tablas hash, desde poder implementar una usted mismo, hasta conocer las funciones hash, y por qué la cantidad de depósitos debe ser un número primo. Los conceptos relacionados con las tablas hash son relevantes para casi todas las áreas de la informática.
Puntos de conversación sobre ti
Los primeros minutos de conversación con el entrevistador es un momento importante para explicar cualquier tipo de experiencia que lo distinga. Proyectos relevantes, logros técnicos significativos y similares. Recuerde, la persona que realizó la entrevista ha entrevistado a docenas, si no a cientos de personas inteligentes como usted. Entonces, ¿qué puedes decir que los sorprenda?
Por ejemplo, en una entrevista hablé con el entrevistador sobre un programa que escribí para jugar Go en la universidad. Es muy difícil escribir una IA para el juego de Go, ¡y tengo un horrible Go-bot para probarlo! La conclusión es ser usted mismo, y no solo una persona inteligente que sabe programar.
No te estreses demasiado, es solo una entrevista como cualquier otra. Tenga la seguridad de que nadie le hará preguntas estúpidas sobre tapas de alcantarillas o Mt. Fuji
fuente
Relajarse
Si su entrevista es como la mía, el entrevistador no está allí para enviarlo a la parrilla, él está allí para ver cómo piensa .
EDITAR: esta fue solo la entrevista telefónica inicial, no sé nada más que eso ... y si lo hiciera, ¡probablemente no podría decírtelo de todos modos!
fuente
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
fuente
Si ha pasado los últimos meses en la carrera, puede darse el lujo de relajarse. Lo que sucede en ese momento en la entrevista no se puede planificar, pero es mejor estar relajado y tener la energía para durar las rondas.
fuente