¿Cómo debo prepararme para las entrevistas de Google, Facebook y Microsoft con CLRS considerando que realmente no soy bueno en Data Structures?

Estos 2 libros son excelentes recursos, y el tiempo que tiene para prepararse lo hace aún mejor. Centraré mi respuesta en las estructuras de datos, aunque le recomiendo que también use estos libros para aprender / revisar la clasificación, la búsqueda y la manipulación de cadenas para sus entrevistas. Aquí hay una de las muchas formas de abordar esto:

  1. Aprenda / revise y realmente comprenda el análisis Big-O en el capítulo “I Fundamentos” de CLRS. Asegúrese de que esto esté fuera de su camino, luego proceda
  2. Aprenda y revise las estructuras de datos en el capítulo “III Estructuras de datos” de CLRS. Tome buenas notas y asegúrese de comprender su implementación. Impleméntelos en su idioma preferido (uno que sería posible usar en una entrevista). Es probable que no se le pida que implemente las estructuras de datos que se encuentran en el capítulo “Estructuras de datos avanzadas V”, pero léalas si tiene tiempo
  3. Lea la sección “Algoritmos de gráficos elementales” del capítulo “Algoritmos de gráficos IV”. Los problemas gráficos son aparentemente muy populares en estas entrevistas
  4. Practique escribir código para problemas en “Cómo descifrar la entrevista de codificación” en una pizarra. Intenta resolver los problemas por tu cuenta antes de buscar las soluciones / explicaciones. Haz que un amigo te entreviste con algunos de esos problemas y no te saltes los difíciles. Con tiempo en tus manos, resuelve 2-3 problemas todos los días

Recuerde que no hay una respuesta única para esto, así que asegúrese de utilizar los recursos que tiene para resolver sus debilidades según sea necesario (es decir, vuelva a visitar las secciones sobre temas que podrían no estar claros cuando se atasca). Te darás cuenta de que CLRS es impresionante como referencia, y que CTCI es un gran recurso para prepararte para problemas muy similares a los que recibirás en entrevistas técnicas. Al final, no solo estará más preparado, sino que probablemente disfrutará aprendiendo / revisando los temas a medida que mejore en la resolución de problemas y la programación.

Finalmente, es importante saber que aunque tenga grandes recursos en sus manos, saber cómo usar las API en el idioma de su elección (especialmente en una pizarra) y comprender cómo se implementan es definitivamente tan importante, junto con otros temas cubiertos en CTCI (por ejemplo, recursividad, programación dinámica, hilos, diseño de sistemas).

Use estos recursos con tiempo y disciplina.

¡Buena suerte!

Si desea prepararse para cualquier entrevista, el primer paso es dominar un idioma.

Elija el idioma que prefiera (C / C ++, Java, Python)

Aprende OOP . Es muy importante. No solo lo básico, sino profundizar en los conceptos. Elige un concepto y correlaciona con el ejemplo de la vida real. Stackoverflow, probablemente obtendrá la mejor respuesta y nunca lo olvidará.

Aprenda cómo implemento pilas, colas, listas vinculadas y otras estructuras de datos. No use bibliotecas. Impleméntate tú mismo.

Ir a HackerRank

Resuelva todos los problemas relacionados con la estructura de datos, incluso si son muy fáciles. Las habilidades de codificación rápida en las entrevistas ayudan mucho. Piense en casos extremos mientras ejecuta su código.

Después de codificar sus estructuras de datos, suba un nivel. Use clases incorporadas. (Al igual que Java tiene Stack, Queue, LinkedList (Colecciones en Java) (STL en C ++) (Tuples, Dict en Python)) Sepa cómo lo han implementado. También llamado como trabajo interno.

Por ejemplo, debes conocer HashTable

  1. Trabajo interno utilizado por los desarrolladores de Java.
  2. Su propia implementación

Ahora vienen los algoritmos:

Aprender paradigmas: programación dinámica, dividir y conquistar, codiciosos, algoritmos de clasificación

Elige cualquier libro y sigue el índice. Puede ser CLRS o Cracking the coding Interview (CTCI), Algorithm Design: 9780321295354: Computer Science Books @ Amazon.com

Comience un capítulo de CTCI, lea de CLRS. Resuelve ejercicios. Omita algún contenido matemático si no lo sigue.

Ir al juez en línea de LeetCode

Es similar a la programación competitiva, pero centrada en las preguntas de la entrevista.

No se preocupe si no ha realizado una programación competitiva. Siempre puedes comenzar. Practica en hackerrank, codechef, leetcode.

No hay pautas específicas a seguir.

La única regla es: aprender algo nuevo, codificar algo nuevo, descubrir algo nuevo.

Espero que esto ayude.

Gracias.

Un año es mucho para estar en buena forma para las entrevistas, incluso desde la posición en la que se encuentra.

Probablemente tenga 8 meses más antes de comenzar a entrevistar. Sugeriría tomar las cosas con calma y no saltar de inmediato a la “preparación para la entrevista”. Dedique los primeros 2 meses a clavar sus estructuras de datos. Siga un curso de DS en línea de una de las mejores universidades, codifique sus tareas y asegúrese de implementar todas las principales estructuras de datos desde cero. Una vez que hayas hecho esto, serás realmente bueno en Data Structures y literalmente los conocerás al revés. Debe asegurarse de que sus conceptos de DS sean sólidos como una roca ya que no podrá impresionar al entrevistador sin ellos. 2 de cada 4 puntos en una entrevista de Google son para “Habilidades analíticas” y “Conocimiento de algoritmos y estructuras de datos”. Sería realmente difícil (si no imposible) superarlo sin resolver estos puntos.

Todavía le quedarían 6 meses, esto es cuando puede pasar a las preguntas de estilo de entrevista y es tiempo más que suficiente para resolverlas. Personalmente, me tomé 2 meses para prepararme y obtuve todas estas ofertas de tiempo completo sin ninguna buena experiencia de pasantía. Aquí hay una guía que escribí para resumir cómo prepararse para las entrevistas después de este punto.

Ambos libros que mencionó, CLRS y CTCI, son excelentes libros, pero alguna preparación adicional podría ayudarlo enormemente, especialmente si está mal con las estructuras de datos en este momento.

Primero, considere tomar un curso en línea .

MIT OCW tiene muchos cursos excelentes.

Aquí hay uno para comenzar: Introducción a los algoritmos (también cubre estructuras de datos).

Para ser realmente bueno con algoritmos y estructuras de datos, necesitará mucha práctica.

Asegúrese de revisar GeeksForGeeks y su colección de problemas de práctica tomados de entrevistas reales.

Tenga en cuenta que, además de los algoritmos, puede obtener algunas preguntas de diseño del sistema.

Grokking the System Design Interview es su recurso de referencia cuando se trata de esto.

Finalmente, asegúrese de hacer entrevistas simuladas .

Puede usar Refdash ( descargo de responsabilidad : soy parte del equipo) para practicar entrevistas con ingenieros de Google, Facebook, Palantir y otras grandes compañías tecnológicas.

Le darán comentarios detallados sobre sus fortalezas y debilidades y le dirán qué puede mejorar. Incluso pueden ayudarlo a encontrar un trabajo de acuerdo con sus habilidades e intereses si se desempeña bien.

Los recursos / procedimientos mencionados a continuación son para Técnico / Programación Entrevistas, aplicables a la mayoría de las empresas basadas en productos / Startups tecnológicas (Google y los 4 grandes)

  1. Codificación competitiva: –
  • Topcoder:
  • Div. 2 – 250, 500.
  • Div 1 – 250.

Nota : Div 2 500 y Div 1 250 son casi equivalentes.

  • Fuerzas de código:
  • Div 2 – A, B, C.
  • Div 1 – A.

Nota : Div 2 C y Div 1 A son casi equivalentes.

  • CodeChef :
  • Principiante
  • Fácil
  • Medio

Nota :

  • Topcoder – Div 2 250 = CodeForces – Div 2 A, B = Codechef – Principiante, Fácil . (Respectivamente)
  • Topcoder – Div 2 500 = CodeForces – Div 2 C = Codechef – Medio .
  • Topcoder – Div 1 250 = CodeForces – Div 1 A = Codechef – Medio .

2. Libros: –

  • Cracking The Coding Interview (CtCI) – Compre el libro de entrevistas Cracking the Coding en línea a precios bajos en India
  • Entrevista de programación expuesta (PIE) – Compre entrevistas de programación expuestas: secretos para conseguir su próximo trabajo, libro 3ed (WROX) en línea a precios bajos en India
  • Elementos de entrevistas de programación (EPI) – Compre en línea el libro Elementos de entrevistas de programación a precios bajos en India
  • Estructuras de datos y algoritmos de forma fácil – Compre estructuras de datos y algoritmos de manera fácil: estructuras de datos y rompecabezas de algoritmos Reserve en línea a precios bajos en India

3. Sitios web: –

  • Bit de entrevista – Cursos de InterviewBit – InterviewBit
  • Código Leet – Juez en línea LeetCode
  • Career Cup – Preguntas de la entrevista de programación | CareerCup
  • Geeks para Geeks – GeeksforGeeks | Un portal informático para geeks
  • Hacker Rank – HackerRank
  • Hacker Earth – HackerEarth – Desafíos de programación y trabajo de desarrollador

Tienes suficiente tiempo, pero tendrás que estar muy concentrado y no perder el tiempo. No tiene tanto tiempo como cree, especialmente si tiene serias deficiencias teóricas y prácticas que deben corregirse. Otras actividades también pueden debilitar su camino, así que sea considerado.

Primero lo primero, le sugiero que lea la introducción de Cracking the Coding Interview (CtCI). Comprende en lo que te estás metiendo. Asegúrese de comprender cómo funciona el proceso de contratación de las principales empresas y cuánto tiempo lleva. Te ayudará a saber qué esperar y a lidiar con tu ansiedad.
Te sugiero que no vayas a la parte tecnológica de CtCI antes de estudiar suficiente teoría.

En segundo lugar, es realmente importante conocer bien uno de los idiomas principales. Sugeriría C ++ o Java. Aquí hay espacio para elegir, pero no demasiado. Asegúrese de saber cómo usar cómodamente estructuras de datos como Array, Vector, Hash Table, Mapas, Conjuntos y algoritmos como ordenar y otros. Tenga en cuenta que probablemente necesitará implementar algunos de esos algoritmos y estructuras de datos (o parte de ellos) en sus entrevistas.

Tercero, sumérjase en CLRS o un libro similar (algunas personas prefieren el libro Algoritmo de Sedgewich, pero depende de usted). Me gusta CLRS, aunque creo que con frecuencia es silencioso y detallado. No puedo enfatizarlo lo suficiente, lea este libro y conozca muy bien su contenido.

Probablemente (esta palabra es muy importante) no necesitará conocer todo el libro en detalles, por lo que puede omitir secciones demasiado detalladas como Matrix Multiplication (entiéndalo al menos) y secciones demasiado teóricas como los métodos del Árbol de recursión para resolver las recurrencias o incluso Master Theorem (no ignoraría este). Pero tenga en cuenta que conocer el análisis de tiempo de ejecución y espacio es imprescindible. Le sugiero que se familiarice con ellos si aún no lo ha hecho, pero tenga en cuenta que no necesita ser un experto.
No pasaría mucho tiempo entendiendo los detalles menores sobre variables aleatorias o análisis probabilístico, sin embargo, necesita saber por qué ese análisis está allí y los resultados del mismo. También puede omitir algunos análisis del caso más desfavorable si se vuelve demasiado detallado, implementar punteros y objetos, así como funciones hash, búsqueda binaria aleatoriamente construida. Me mantendría bastante alejado del funcionamiento interno de Red-Black Trees, pero me familiarizaré con la estructura de datos.
La sección de programación dinámica puede ser un poco abrumadora, pero no subestimes su importancia. Debes desarrollar un sentido para detectar cuándo las cosas se están poniendo demasiado exageradas aquí.
También omitiría el Análisis Amortizado, pero debes conocer las conclusiones de este capítulo. Quizás lo lea en general. La sección de estructuras de datos avanzadas también es muy detallada, aunque debe saber para qué se utilizan y tal vez algunos detalles de alto nivel al respecto. No pases demasiado tiempo con ellos.
Me saltaría los capítulos de rutas más cortas y de flujo máximo de todos los pares. Difícilmente necesitarías algo así en una entrevista.
Temas seleccionados: Bueno, si llegaste hasta aquí, probablemente ya tengas la sensación de “leer o no leer”.

Le sugiero encarecidamente que implemente de manera eficiente y hermosa todos los algoritmos principales en este libro desde cero, especialmente la clasificación, los relacionados con el árbol, los gráficos (especialmente los de Dijkstra). Probablemente me daré cuenta de que Dijkstra requerirá que modifique algunas estructuras de datos enviadas previamente para que pueda corregirlo (especialmente en C ++). Una palabra de sabiduría aquí: no implica que ya sabes cómo hacerlo. Si, solo no! Se sorprendería de cómo un simple cálculo de índice podría causarle muchos problemas. No quiere que suceda durante ninguna de sus entrevistas.

También pasaba mucho tiempo en sitios web como SPOJ, TopCoder y otros como ellos. El aspecto más importante aquí es poder identificar lo que es adecuado para resolver problemas e implementarlos con gracia.

Esos libros le darán muchos consejos, pero algunos libros podrían ayudarlo a mejorar un poco. Personalmente, me gustan mucho las Perlas de programación (por Jon Bentley). Es un libro bastante antiguo, pero te enseñaría algunos trucos geniales que pueden ser realmente útiles. Viejo pero dorado, diría.

Luego volvería a los problemas de CtCI. Son útiles como una doble verificación de tus habilidades. Intente implementar esos problemas antes de verificar la solución. Si no pudo hacerlo bien, comprenda por qué y quizás vuelva a visitar la teoría involucrada.

Muy importante: la codificación en una PC puede no ser la mejor estrategia. Me quedaría con lápiz y papel o una pizarra blanca (mejor). Este será su entorno de entrevista, por lo que debería sentirse cómodo con eso. Asegúrese de saber cómo usar el espacio de manera eficiente y escribir de manera clara y organizada.

Cuando las soluciones son buenas en la pizarra, codifíquelas en su PC y asegúrese de que su código sea correcto y esté libre de errores. Recuerde que la sintaxis no es despreciable.

Le sugiero encarecidamente que tenga un compañero de estudio. Las entrevistas simuladas cruzadas todo el tiempo (una vez a la semana más o menos es una buena medida). Sea abierto sobre lo que cree que su pareja está haciendo mal, lo que no está muy claro en la explicación, si la comunicación es clara (¡especialmente si no es un hablante nativo de inglés como yo!), Pero hágalo después de que termine la simulación – envuelva después de que haya terminado. De lo que se trata es de retroalimentación constructiva y de acostumbrarse al escenario de la entrevista.

Estoy de acuerdo con otra respuesta en que deberías tener una buena idea sobre OOP. Te ayudaría mucho en la organización del código. También es muy necesario para las preguntas de diseño del sistema.

Palabras finales: no hay mejor lugar para estar que allí. Siéntete seguro, pero no seas arrogante. ¡Haz un poco de Hero Posing antes de la entrevista y patea algunos b ** ts! Jajaja

Si tiene debilidades en las estructuras de datos, le sugiero que se concentre en listas vinculadas, árboles de búsqueda binarios y tablas hash. Si puede dominar estas estructuras de datos (le sugiero que las codifique desde cero, para que pueda estar realmente seguro), entonces debería ser bueno en lo que respecta a las entrevistas. Para las entrevistas, casi nadie esperará que conozca estructuras de datos más sofisticadas. Por supuesto, debe pasar por muchos problemas de entrevista como práctica para asegurarse de que puede aplicar esas estructuras de datos de manera adecuada.

En cuanto a consejos más detallados, no tengo mucho que agregar a las otras respuestas.

“Estructuras de datos y algoritmos” es el tema favorito de las empresas entrevistadas.

Cuando su experiencia aumenta, más de 4 años, entonces el Diseño del sistema se vuelve importante.

Si buscas preparación para la entrevista. Puede comenzar con “ Resolución de problemas en estructuras de datos y algoritmos ” escrito en varios lenguajes como C, C ++, Java, C #, Python, etc. Estos libros son fáciles de seguir y están escritos para el punto de vista de la entrevista . Además, estos libros tienen el último capítulo sobre Diseño de sistemas , que también se requiere en las entrevistas.

Los enlaces de los libros en Amazon están abajo:

1. Resolución de problemas en estructuras de datos y algoritmos utilizando C

2. Resolución de problemas en estructuras de datos y algoritmos usando C ++

3. Resolución de problemas en estructuras de datos y algoritmos utilizando Java

4. Resolución de problemas en estructuras de datos y algoritmos utilizando C #

5. Resolución de problemas en estructuras de datos y algoritmos usando Python

6. Estructuras de datos y algoritmos en Go

Descargo de responsabilidad: soy autor de todos los libros anteriores.

Prepárese para alguna pregunta capciosa que con frecuencia formula Google

Aquí hay algunas preguntas difíciles hechas por las principales compañías que lo ayudarán a prepararse para sus entrevistas. Siga nuestra página de Instagram para más preguntas de entrevistas.

1– Resuelve la secuencia lógica:

8080 = 6

1452 = 0

1999 = 3

6666 =?

Por Facebook al analista de mercado.

2– ¿Escribe una fórmula de probabilidad para decir cuántos bits se cambiarán cuando se agregue 1 a un número binario de 32 bits?

Por Apple al ingeniero de software senior.

(Un ingeniero de fondo no informático también puede resolverlo)

3 – Reemplace el? comprar símbolos matemáticos correctos para hacer que la expresión sea verdadera

18? 12? 4? 5 = 59.

Por Apple al ingeniero de software senior.

4 – Al usar los números 7,3,7,3 y con cualquier símbolo matemático, ¿puedes hacer el número como 24?

Por Microsoft al gerente de producto.

5– ¿Encuentra el número positivo más pequeño que está escrito en orden alfabético?

Resuelve en 60 segundos.

Adiós Google al analista de mercado de proyectos.

Entonces, los gigantes de TI intentan probar su aplicación y sus habilidades de razonamiento lógico en lugar de probar más sobre el conocimiento técnico.

Qué tan bien puede aplicar sus conocimientos básicos, es lo que quieren.

No naces con esas habilidades que has adquirido por práctica.

¡Así que no te preocupes!

Aquí en brainheaters , hemos tomado la iniciativa de publicar preguntas de entrevistas a diario (en Instagram) por las principales empresas.

Aquí puede escribir sus respuestas a una pregunta dada dentro de un período de tiempo determinado.

Esto no solo lo ayudará a mejorar, sino que también lo equipará con la capacidad de abordar una pregunta determinada y en qué dirección debería funcionar su proceso de pensamiento.

Síganos en Instagram y no dude en decirnos cómo podemos ayudarlo y sobre cualquier mejora que sea necesaria.

Gracias por leer.

Como los otros mencionaron, CLRS y Cracking the Coding Interview son excelentes recursos y definitivamente puedes aprender mucho de ellos. Desde mi propia experiencia, CLRS no es un libro que debería leer de principio a fin. En cambio, trate de enfocarse en los capítulos que ocurren con mayor frecuencia en las preguntas de la entrevista y resuelva todos los ejercicios dados. Los capítulos en CLRS son bastante independientes, por lo que no debe preocuparse demasiado por los requisitos previos. Si le interesan los algoritmos de cadena, no necesita saber acerca de los árboles rojo-negros.

También recomiendo la colección de lecciones interactivas de CS Academy. A veces es mucho más fácil comprender todos los detalles de un algoritmo si realmente lo ves ejecutándose en un ejemplo.

Pero el aprendizaje es solo una parte de la ecuación, ya que también debe comenzar a codificar algunos problemas reales de la entrevista. Aquí puede encontrar una colección genial de tareas que puede resolver utilizando el editor en línea integrado. Si tiene alguna pregunta, puede dejarla en la sección de comentarios de cada problema y alguien seguramente lo ayudará.

Te sugeriré los siguientes libros:

  1. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: Amazon.es: Tienda Kindle
  2. Compre Cracking the Coding Interview Book en línea a precios bajos en India
  3. Compre programación dinámica para entrevistas de codificación (un enfoque ascendente para la resolución de problemas) Reserve en línea a precios bajos en India

Aparte de estos, debería sentirse muy cómodo en al menos un lenguaje de programación (por ejemplo, Java).

Si tiene experiencia (especialmente con más de 5 años de experiencia laboral), entonces también debe prepararse para al menos una ronda de entrevista de diseño del Sistema.

Sugeriría comenzar a practicar sus habilidades de codificación. Puede comenzar leyendo Entrevista de descifrado del código (pero hágase las preguntas de codificación y verifique la respuesta después de tener una solución). Un gran sitio para practicar es LeetCode. Tienen muchos problemas y también, si paga una suscripción, puede tener acceso a las preguntas de la entrevista de una empresa en particular.

Además, algo que realmente me ayudó mucho fue hacer entrevistas simuladas. Es realmente importante recibir comentarios y alguien que le enseñe cómo comportarse y pensar en una entrevista. Puede consultar las entrevistas simuladas. Tenemos ingenieros con experiencia en empresas como Google, Facebook, Twitter que están listos para ayudarlo a dominar sus entrevistas.

Mi recomendación sería comenzar con un curso práctico dirigido por un instructor sobre estructuras de datos discutiendo y analizando varios enfoques para resolver problemas de programación. Una de esas oportunidades de aprendizaje está disponible aquí http://beingzero.in/syllabus/dat … (puede optar por la capacitación en línea)

Luego, inicie CLRS y combínelo con algunas preguntas de codificación reales de GeeksForGeeks para tener un plan de preparación efectivo.

Algoritmos: Diseño y Análisis, Parte 1

Stanford tiene una gran cantidad de material gratuito y mazos en línea, desde allí puede vincular a libros de texto gratuitos.

Mi programa de posgrado en Ciencia de Datos toma mucho de los materiales MOOC de Stanford, es una pena pagar por todo esto cuando hay tanta información disponible de forma gratuita.

Por último, aquí hay una buena hoja de trucos: esta es la hoja de trucos de mi entrevista técnica. Siéntase libre de bifurcarlo o hacer lo que quiera con él. POR FAVOR, avíseme si hay algún error o si falta algo crucial. Agregaré más enlaces pronto.

Primero Conozca todo acerca de la Compañía. Usted dijo que es bueno en las Estructuras de Datos, así que trate de averiguar qué tipo de Estructura de Datos usa en esas compañías. Y conozca más sobre el Proceso de Entrevista Aquí [1].

Todo lo mejor para tu carrera

Notas al pie

[1] Preguntas de la entrevista del ingeniero de software de Google

More Interesting

¿Cómo abordaría este problema de visualización de 7 segmentos en la ronda A de la prueba Google APAC 2015?

Dado un puntero a cualquier nodo, ¿cuál es el número óptimo de nodos que necesita atravesar para encontrar el orden de clasificación en una lista ordenada de forma circular?

Dada una serie de enteros, ¿pueden la consulta media y la actualización ser tiempo sublogarítmico?

¿Cuál es la mejor manera de preparar la estructura de datos para programar entrevistas en un corto período de tiempo, como 3 meses?

¿Cuál es el mejor libro de algoritmos para descifrar entrevistas?

¿Cuál debería ser mi plan y enfoque si quiero trabajar con gigantes de alta tecnología como Facebook, Google, Oracle, etc.?

¿Cuáles son algunas preguntas importantes de programación en C que se hacen en las entrevistas?

¿Cuánto tiempo lleva trabajar para descifrar la entrevista de codificación si no tengo una buena idea sobre la estructura de datos y el algoritmo?

Dado su enfoque en estructuras de datos y algoritmos escalables, ¿es subóptimo elegir R sobre Python para la entrevista técnica en grandes empresas tecnológicas?

¿Qué tipo de preguntas de codificación se hacen en las entrevistas para Docker, Inc.?

¿Por qué las entrevistas tecnológicas se centran en problemas o algoritmos complicados de la estructura de datos cuando la mayoría de las empresas no requieren esto en el trabajo diario?

¿Qué tan difícil es conseguir un trabajo en C ++ o desarrollo Java para alguien que tiene más de 5 años de experiencia en la industria con C?

¿Por qué las empresas tecnológicas hacen preguntas sobre algoritmos difíciles en la entrevista técnica?

¿Cuáles son algunas cosas interesantes sobre Python?

¿Cómo encontrarías la línea que contiene el mayor número de puntos dispersos en una cuadrícula 2D?