Según mis impresiones, muchas personas están interesadas en el tema de la preparación para entrevistas en las principales empresas de tecnología, por lo que decidí escribir un artículo en lugar de respuestas personales a las que me referiré en el futuro. Todos los que estén interesados en el proceso de la entrevista, las cosas a las que debe prestar atención, cómo prepararse y para qué prepararse, bienvenidos a cat.
Qué hay en este artículo
- Programa de entrenamiento
- Lista de recursos y artículos
- Consejos para la entrevista de trabajo
Antes de comenzar mi capacitación, decidí desarrollar un sistema mediante el cual me prepararé, así como una lista de recursos que utilizaré en el proceso de preparación.
El primer paso fue determinar qué se requiere para la entrevista, y para esto, en consecuencia, es necesario tener una buena idea de qué preguntas se encuentran en las entrevistas. Después de una búsqueda bastante rápida en los resultados de búsqueda de Google, me encontré con este
libro , que es una colección bastante completa de consejos útiles y ejemplos de tareas sobre temas de entrevistas.
En esta etapa, vale la pena mencionar que el código en el libro está escrito principalmente en Java / C ++, lo que lo hace bastante legible. En consecuencia, para una entrevista más cómoda, le recomiendo que resuelva todos los problemas en el idioma que planea utilizar durante la entrevista.
Después de leer este libro, pude identificar una lista de temas clave para la preparación.
Mi lista se parecía a esto:
- O grande
- Rompecabezas
- Arquitectura de la aplicación
- Algoritmos y estructuras de datos.
O grande
En realidad, no hay nada de qué hablar sobre Big-O, solo necesita saber y comprender la diferencia en la complejidad computacional de los diferentes algoritmos, comprender cómo determinar el tiempo de ejecución y el consumo de memoria de los algoritmos, conocer los pasos básicos para optimizar los algoritmos, etc.
Se han escrito innumerables artículos y libros sobre Big-O, en casi cualquier curso de entrada sobre algoritmos hay conferencias sobre este tema. En un habr también hay una serie de artículos dedicados a este tema
habr.com/post/196560Rompecabezas
Descargo de responsabilidad: personalmente no encontré acertijos en la entrevista, pero escuché que podrían encontrarse.
La forma en que vi los acertijos en términos de preparación son en realidad los mismos algoritmos, solo que sin referencia a una estructura de datos específica o paradigma algorítmico. Debido a esto, organizar la preparación para los rompecabezas es bastante difícil. La mejor solución a la que pude llegar fue simplemente "poner mis manos", resolver 40-60 rompecabezas y, en cierta medida, entender cómo abordar la solución de los rompecabezas. Con el tiempo, el cerebro comienza a comprender a qué prestar atención y cuál es simplemente el diseño de la tarea: por ejemplo, todos los números indicados en el rompecabezas generalmente no son así. Esto no es "solo 2 cuerdas" y no solo "quemarse en 25 minutos". Como regla general, los rompecabezas no contienen información cuantitativa inútil.
Arquitectura de la aplicación
Comprender la arquitectura de aplicaciones de construcción viene con una experiencia basada en el conocimiento. Es bastante difícil convertirse en un buen arquitecto solo en arquitectura y es bastante ineficiente estudiar arquitectura puramente por prueba y error. Por estas razones, es bastante difícil "prepararse" para la parte arquitectónica de la entrevista. Hasta cierto punto, la preparación para esta parte es toda su carrera. Pero sigue siendo una buena idea actualizar algunos aspectos. Por ejemplo: arquitectura de representación. Incluso aquellos que dominan UML en un momento crítico simplemente pueden olvidar algunos de los detalles de la vista o las vistas específicas de los enlaces. Otro ejemplo serían los patrones de diseño populares. A pesar del hecho de que se usan con bastante frecuencia, por regla general, no todos se usan de inmediato y no bajo demanda para proporcionar conocimiento sobre ellos aquí y ahora. Intente completar varias rondas de prueba por sí mismo e identifique las áreas problemáticas.
Algoritmos y estructuras de datos.
Uno de los momentos más importantes y problemáticos de la entrevista. Se pone cierto énfasis en resolver estos problemas y la capacidad de resolverlos de manera rápida y efectiva es muy importante.
Para la preparación, compilé una lista de estructuras de datos y algoritmos que son más comunes y resultó algo así como:
- Matrices
- Cuerdas
- Árbol binario
- Árbol de búsqueda binaria (BST)
- Gráficos
- Montones
- Lista vinculada
- Matriz
- Pila
- Cola
- Trie
- Retroceso
- Divide y vencerás
- Programación dinámica
- Clasificación
- Codicioso
En cada una de las secciones hay varios trucos que solo debes dominar. Un ejemplo clásico de esto es el control deslizante "lento" y "rápido" en la Lista vinculada. Sin conocer o no comprender este concepto, es prácticamente imposible resolver eficazmente muchos problemas en las listas vinculadas. O algoritmos de búsqueda de gráficos BFS / DFS. Como regla, muchas tareas para las entrevistas serán modificaciones de conceptos conocidos o una combinación de varios. Por lo tanto, es muy crítico aprender a resolver y reconocer las tareas básicas en cada estructura / algoritmo de datos.
Personalmente, vi algunas conferencias de la Universidad de Stanford, y después de escribirme ~ 5-10 tareas de cada categoría y simplemente llené mi mano de esta manera. Toma mucho tiempo y esfuerzo, pero como resultado vale la pena.
Aquí hay algunos recursos que usé para preparar y buscar asignaciones:
https://www.quora.com : solo una lista de ~ 500 tareas sobre diversos temas, junto con soluciones C ++. Muy conveniente, a veces hay varias soluciones donde una es más óptima que la otra.
https://www.hackerrank.com es un recurso conveniente con categorías y temas y con un compilador incorporado para más de 20 idiomas. Ayuda a llenar tu mano de manera rápida y eficiente.
https://www.glassdoor.com : contiene directamente preguntas de entrevistas y, a veces, respuestas de la comunidad.
Para mí, estos dos fueron suficientes, pero si no lo eres, estos 3 te darán una buena idea sobre dónde buscar más.
Recuerde que es muy importante tratar de llegar a una respuesta y una decisión usted mismo antes de mirar los consejos. Por lo tanto, en realidad te obligas a pensar y buscar una solución, es decir simula directamente la atmósfera de la entrevista.
No peque por usar solo una computadora para resolver problemas. Intenta practicar en un tablero o papel, como Muchas empresas realizan entrevistas de esta manera.
Puede parecerle que esto es lo mismo, pero en la práctica, la práctica en papel abrirá muchas sorpresas, comenzando por el hecho de que primero debe encontrar una solución completa antes de escribir (eliminar y retroceder no están aquí, eliminar y mover líneas es muy costoso), y terminar con que el espacio en la hoja / tablero debe guardarse correctamente, porque Es limitado.
A lo que presta atención durante la entrevista es a la confianza y el ritmo con el que resuelve los problemas, pensando en todas las opciones de entrada posibles, manejando errores y diversas condiciones. Por lo tanto, escribir solo una solución "funcional" no es suficiente.
Un buen consejo sería escribir código compilado. Sí, sin duda, lo principal es la capacidad de resolver el problema y sus variaciones, y nadie prestará demasiada atención a 1 coma faltante, pero esto no debe incluirse en la regla. Escribe código y soluciones reales, no pseudocódigo y bocetos.
Durante la entrevista, trate de no cerrar su creatividad, muchas decisiones requieren un enfoque desde un ángulo no estándar. Si está cerrado, no dude en pedir ayuda, esto no mejorará en gran medida sus posibilidades, pero tampoco debe permanecer en silencio durante 45 minutos.
Es posible que este artículo no sea una guía completa e integral, pero le ayudará a comprender en qué dirección debe moverse.
Buena suerte a todos en preparación.