¿Cómo debo prepararme para una entrevista de Dropbox?

El proceso de entrevista del ingeniero de software en Dropbox es similar a otras compañías como Facebook, Google, etc. y es relativamente estándar y general. Como puede esperar, el enfoque principal siempre es la estructura / algoritmo de datos y definitivamente se le pedirá que escriba un código sólido durante la entrevista.

Aquí están mis sugerencias:
1. Estar familiarizado con la estructura de datos y algoritmos.
La razón por la que primero debe prepararse bien para la estructura de datos y los algoritmos es que realmente son la base de la mayoría de las entrevistas con ingenieros de software. Una pregunta de entrevista real es como pedirle que resuelva un problema con la combinación de habilidades que aprendió de estos conocimientos básicos. Libros como Cracking the Coding Interview, Introduction to Algorithms y su libro de texto en la escuela son los mejores recursos. También puede consultar la hoja de trucos de la entrevista técnica y la hoja de trucos de Big-O.

2. Estar familiarizado con las preguntas generales de codificación.
En este paso, debe estar bastante familiarizado con los conocimientos básicos y los conceptos de informática, es mejor practicar con algunas preguntas de codificación reales. La idea de este paso es enseñarle a usar lo que aprendió de esos libros para resolver una pregunta real y darle algunas ideas sobre qué tipo de preguntas se hacen en una entrevista general.

3. Aproveche las preguntas anteriores de la entrevista de Dropbox.
No será difícil recibir preguntas de entrevistas pasadas de Dropbox como Preguntas de entrevista de Dropbox. Dado que diferentes compañías tienen diferentes estilos y enfoques, este enfoque lo ayudará a estar más familiarizado y preparado para la entrevista de Dropbox. No intente memorizar preguntas y respuestas, ya que estas empresas generalmente evitan hacer preguntas filtradas al público, por lo que es muy poco probable que vuelva a encontrar la misma pregunta.

4. Sigue practicando.
La entrevista técnica no solo evalúa su capacidad de codificación, sino una variedad de habilidades y habilidades como habilidades de comunicación, análisis, etc. Además, muchas personas se sentirán nerviosas al resolver un problema cuando alguien mira por encima del hombro, por lo que incluso puede fallar En las preguntas más simples.

Mucha gente también quiere recibir comentarios de buena calidad de entrevistadores experimentados. Con eso en mente, trabajamos en la construcción de http://www.gainlo.co/, que permite a los candidatos realizar entrevistas simuladas con entrevistadores experimentados de las principales empresas como Dropbox, Google, etc. y obtendremos comentarios reales para ayudarlos a mejorar.

Conclusión

El mejor consejo es siempre practicar tanto como puedas, y otra cosa que debes tener en cuenta es mostrar tu pasión por la empresa. Prepárate para la pregunta de por qué quieres unirte a Dropbox.
En resumen, no hay mejor manera que seguir practicando y eventualmente vas a romper la entrevista.

Para Dropbox u otras compañías tecnológicas importantes, definitivamente hay algunos patrones que pueden hacer que su preparación sea menos dolorosa.

  • Si ya está bastante familiarizado con la estructura de datos y el algoritmo, puede omitir este punto. De lo contrario, dedique suficiente tiempo a esto. No puedo enfatizar más sobre este punto, ya que es lo más fundamental para una entrevista de ingeniero de software. Si no logras comprender bien esas estructuras de datos básicas que aprendiste en la escuela, simplemente fallaste en toda la entrevista. No estoy exagerando, una vez que haya pasado por varias entrevistas técnicas, se dará cuenta de lo importante que es. Los libros sobre la estructura de datos y el algoritmo están en todas partes, asegúrese de tener muy claros los elementos básicos como el árbol binario, la cola, la pila, la lista vinculada, etc.
  • Después del primer punto, espero que le queden al menos 4 meses. Sumérgete en las preguntas de la entrevista real tanto como puedas. Hay toneladas de recursos en línea, como http://www.glassdoor.com, donde puede acceder a innumerables preguntas de entrevistas reales de empresas. Dado que se dirige a Dropbox, dedique la mayor parte de su tiempo a preguntas de entrevistas reales de estas dos compañías. No espere tener la misma pregunta de entrevista que preparó (aunque es posible), pero practicar con preguntas de entrevista reales lo ayudará a ser consciente de la dificultad, el estilo de cada empresa y lo que realmente les importa.
  • Practica escribir código en la pizarra. Esto es lo que la mayoría de la gente ignora. Parece bastante simple a primera vista, ¿verdad? Pero no es una vez que lo intentas. Echarás mucho de menos esos atajos sofisticados en tus editores de texto e IDE favoritos y, lo que es más, es muy inconveniente modificar el código como insertar otra pieza de código en el medio. Pero debe superarlo, ya que la mayoría de las entrevistas reales le pedirán que escriba un código SOLIDO en la pizarra. No necesita ser compilado, pero debería estar casi allí. ¡Sin pseudocódigo!
  • Practica con entrevistas simuladas . Es una gran experiencia para ti practicar de una manera en la que no puedes fallar. Puedes hacer esto con tus amigos y volver a entrevistarlos. También obtuve mi entrevista simulada de http://www.gainlo.co cuyos entrevistadores están trabajando en Google, Facebook, etc. y me dieron toneladas de comentarios.

La entrevista simulada personal es el enfoque más efectivo que he tenido porque tendrás sentimientos totalmente diferentes al pensar y resolver problemas frente a una persona. Estarás nervioso y puedes fallar incluso ante la pregunta más simple.

Además, los entrevistadores de una entrevista real no le darán ningún comentario auténtico, solo pueden decirle la respuesta oficial, que no es otra que una mierda. Sin embargo, un entrevistador simulado lo ayudará a mejorar en todos los aspectos, especialmente si tiene experiencia.

En resumen, la práctica hace la perfección. Gaste lo suficiente para prepararse para la entrevista, sin importar si se trata de una entrevista telefónica o in situ.

Para Dropbox o una de las principales empresas, puede proceder de esta manera.
El entrevistador le dará una o tres preguntas (suficientes para completar 30-60 minutos), cada una de las cuales generalmente se divide en una de tres categorías:

  1. Codificación. Este tipo de desafío pone a prueba su capacidad para escribir código limpio, legible y correcto (generalmente en el lenguaje de programación que elija) para responder las preguntas. Además, a menudo necesitará idear un algoritmo (generalmente basado en algoritmos y estructuras de datos conocidos) para resolver el problema antes de codificarlo.
  2. Descomposición. Este tipo de desafío pone a prueba su capacidad para dividir un gran problema en subproblemas más pequeños que son más fáciles de resolver.
  3. Explicación no técnica. Este tipo de desafío pone a prueba sus habilidades de comunicación y su capacidad para explicar un concepto técnico a alguien sin antecedentes relevantes.

Lo que realmente necesitas hacer

Revisar los fundamentos de la informática.

Tener una sólida comprensión de los temas comunes de las entrevistas, que generalmente se encuentran en el ámbito de las estructuras de datos, el lenguaje y los algoritmos. Sin embargo, en mi experiencia, estos temas aparecen con más frecuencia que otros:

  • Programación orientada a objetos : clases, interfaces, constructores, métodos, herencia, polimorfismo.
  • Pensamiento algorítmico : fuerza bruta, codicia, divide y vencerás, relaciones de recurrencia y recurrencia, programación dinámica.
  • Clasificación : burbuja, selección, inserción, fusión, rápida, montón, cubo, conteo, raíz
  • Complejidad computacional ( tiempo y espacio) y notación Big O
  • Tablas hash: funciones hash, ventajas de hash, colisiones
  • Árboles / gráficos : búsqueda binaria, búsqueda de amplitud, búsqueda de profundidad, recorrido en / pre / post-orden
  • Pilas y colas : implementación, LIFO vs FIFO
  • Listas vinculadas : implementación, aplicaciones
  • Manipulación de cadenas : expresiones regulares, invertir una cadena, obtener una subcadena
  • Manipulación de bits : AND, NOT, OR, XOR..etc

También revise estas cosas

  1. Programación orientada a objetos (p. Ej., Java, C ++)
  2. Scripting (p. Ej., Python, Perl)
  3. Programación funcional (p. Ej., Haskell, Scala)

Y sí, aprenda “c” o “Python” según su idoneidad.

Habrá tres tipos de entrevistas en un bucle:

  1. Entrevista de codificación: ya sea ​​en una pizarra o en una computadora real. Esto se ha convertido en un requisito previo para obtener una oferta. Si no puede codificar / resolver el problema (o tiene algunos errores graves en su código), es bastante difícil obtener una oferta. Buen recurso para prepararse para este tipo de entrevista: Coderust 2.0
  2. Entrevista de diseño del sistema: prueba sus habilidades de diseño y su capacidad para trabajar con servicios complejos y escalables. Su desempeño en estas entrevistas determina qué puesto y salario se le ofrecerá. Si tiene habilidades de diseño encomiables, obtendrá una oferta más alta. Un buen recurso para prepararse para esta entrevista: Grokking the System Design Interview
  3. Entrevista cultural en forma . Durante esta entrevista, las empresas ven si un candidato sería un buen candidato para su cultura. El candidato no debe mostrar ninguna bandera roja.

Además, a todas estas compañías les gustan los candidatos que están familiarizados con los conceptos de sistemas distribuidos como Hashing consistente, Particionamiento de datos, Equilibrio de carga, Redundancia y Replicación, Teorema CAP, etc.

Algunos problemas de diseño de muestra son:

  • Diseño de un servicio de acortamiento de URL como TinyURL
  • Diseñando Instagram
  • Diseñando Twitter
  • Diseñando Youtube
  • Diseñando Facebook Messenger
  • Diseñando Dropbox
  • Diseño de sugerencia Typeahead
  • Diseño de noticias de Facebook
  • Diseñando Yelp
  • Diseñando Uber

Espero que esto haya ayudado.

Hay tres cosas que creo que vale la pena practicar antes de hacer una entrevista de Dropbox.

  1. Tenga en cuenta y justifique sus elecciones: la mayoría de las preguntas formuladas en las entrevistas tienen muchas formas diferentes de abordarlas. Aprenda a ser consciente de sus elecciones y aprenda a justificarlas. Algún ejemplo de tales opciones:
  • Escriba un código que se ejecute rápidamente VS escriba un código que sea fácil de leer: “este código generalmente espera que los datos se lean desde el disco duro, por lo que es seguro escribir una solución más lenta”
  • Elección de una estructura de datos para usar: “Usar un árbol binario equilibrado en lugar de una matriz reducirá la complejidad de mi solución a O (n lg n)”.
  • Elección de API para exponer para programadores que usarán su sistema – piense en diferentes casos de uso – “Al agregar un método para traducir una cadena de diferentes idiomas, vale la pena agregar una variable de comentario que le dirá al traductor un poco sobre un contexto en el que esto la cadena aparece en el sitio web ”

2. Pula su estilo de codificación: una vez que haga todas las elecciones y decida un enfoque particular, deberá implementarlo. Nuevamente, hay muchas formas en que puede implementar un problema en particular. Pensar:

  • “¿Realmente necesito 4 niveles de sangría para que este código funcione?”
  • “Si volviera a este código en 6 meses, ¿lo entendería?”
  • “¿Puedo simplificar mi código con la función de mapa (Python)?”

3. Piense en cómo transmitir el mensaje “Me apasiona lo que estoy haciendo”. – Dropbox está lleno de personas que aman las ciencias de la computación: hacen muchos proyectos paralelos, asisten a varias conferencias, están al día con las últimas noticias sobre tecnologías. Algunas formas posibles de expresar este punto son

  • Durante el tiempo de preguntas, pregunte: “¿Utiliza Dropbox la tecnología X para lograr Y?”
  • Habla sobre tu proyecto paralelo
  • Cuando el entrevistador habla sobre lo que hacen en Dropbox, pregunta “¿Pero no podrías resolver este problema usando X?” – No te preocupes si la respuesta es no. A menos que haya dicho algo totalmente irrelevante, muestra que está enfocado y comprende lo que se dijo.

Tenga en cuenta que todas las observaciones anteriores se dividen en dos categorías: atención al detalle y pasión por la informática, características definitorias para el equipo de Dropbox Engineering.

Mi entrevista telefónica duró una hora y fue bastante estándar en las preguntas formuladas:

  1. Conversación de 10 minutos sobre un proyecto pasado durante una pasantía previa
  2. Porción técnica de 40 minutos en una sola pregunta

Personalmente, pensé que la pregunta que recibí durante mi entrevista telefónica interna de SDE fue un poco más difícil que algunas de las otras compañías tecnológicas que he estado entrevistando este año. Hubo más capas de complejidad en la pregunta que me hicieron y una mayor variedad de casos extremos que no eran inmediatamente obvios.

Deberían haber compartido un documento de Dropbox que detalla algunos de los temas generales con los que debería estar familiarizado; algunos de esos temas incluyen temas de sistemas, y le piden explícitamente que esté familiarizado con el funcionamiento de las primitivas de concurrencia en el idioma de su elección. Aunque no tuve una pregunta de sistemas, sugeriría revisar esos temas nuevamente antes de su próxima entrevista, no quisiera que lo pillaran desprevenido porque parece que Dropbox es más explícito que otras compañías cuando describen lo que usted hace. debería estar familiarizado con

Creo que las entrevistas de Dropbox son una de las más difíciles.

Para la pantalla del teléfono, practicar en LeetCode, GeekForGeeks, la entrevista de Cracking the Code debería hacerlo.

Para el sitio, debe estar preparado para recibir preguntas de estructura de datos y algoritmos, diseño de sistemas y preguntas de sistemas distribuidos. Por ejemplo, “Cómo diseñaría la primera versión de Dropbox”.

Sugeriría hacer una entrevista simulada de antemano, para tener una idea de cómo se llevará a cabo la entrevista. Echa un vistazo a las entrevistas simuladas. Ingenieros con experiencia lo prepararán para la entrevista real. Posteriormente recibirá comentarios con detalles sobre lo que salió bien y qué necesita mejorar.

Este ensayo de Steve Yegge (Google, Amazon) tiene 5 años pero sigue siendo un excelente consejo: consigue ese trabajo en Google.

En resumen:
1. estudio
2. Practica entrevistas

Posiblemente lo siguiente puede ayudarlo:

¿Por qué Google no te contratará?

Aquí Google no se refiere a Google, se refiere a cualquier empresa que sea muy creativa para introducir productos relacionados con la informática, por ejemplo, Google, Microsoft, Apple, Amazon, Facebook, … o cualquier otra que considere adecuada.

Consulte el ppt adjunto, que proporciona algunos puntos que pueden ser útiles para planificar las cosas que faltan a su alrededor.

¿Por qué Google no te contratará?