En las últimas semanas, una ola de artículos sobre Habril sobre cómo se realizan las entrevistas se ha vuelto más frecuente.

Google busca constantemente ingenieros. Como SRE, puedo decir con certeza que te
necesitan en nuestras filas . Las galletas en la cocina y el café en las cafeteras te están esperando. Todo lo que necesitas hacer es obtener una entrevista. Esto es difícil, pero real: una vez que ya
describí mi historia como un buscador de trabajo, y ahora, entre otras cosas, también estoy realizando entrevistas. Así que ahora contaré cómo llevamos a cabo entrevistas con ingenieros.
No, no me convertí en reclutador.
El proceso de entrevista implica primero una conversación con un reclutador. Esta es una conversación general de "qué-dónde-por qué" (es decir, una descripción del proceso para su caso específico) y la misma
evaluación realizada por todos desde el cuestionario con varias opciones de respuesta. La evaluación en ese momento me pareció muy básica, sospecho que ya ha respondido esas preguntas cientos de veces. Luego, las entrevistas serán realizadas por ingenieros, sus futuros colegas (cercanos o lejanos, así es como funciona, nuestro planeta es muy pequeño).
(Importante: describo el proceso como lo sé, en el puesto de ingeniero (Ingeniero de software (SWE) e Ingeniero de confiabilidad del sitio (SRE)). Para los pasantes, el proceso cambia; así como el proceso puede ser diferente en principio, ya que el departamento de recursos humanos adapta el proceso para lograr Utilice la información proporcionada aquí solo para representar aproximadamente qué esperar, ¡pero no una oferta pública! La información exacta sobre cómo se llevará a cabo el proceso personalmente será exclusiva y exclusivamente información de su reclutador. La información también puede estar desactualizada. - mirar Consulte la sección Cómo contratamos para obtener información actualizada al momento de leer este artículo).Primero, habrá algunas entrevistas a través de
lugares de reunión / reunión . Esta es una entrevista completa, como dije anteriormente: los ingenieros entrevistarán, y se supone que el candidato "pensará en voz alta" en el proceso + escribirá una docena o dos líneas en cualquier lenguaje de programación (sí, desafortunadamente, hasta ahora en Google).
Mi entrevista está diseñada para ~ 45 más o menos diez minutos, pero generalmente trato de encajar exactamente en 45 minutos. A partir de este momento, cinco minutos para una breve introducción e información general, 30-35 minutos para preguntas y discusión, luego cinco minutos para preguntas del candidato (si corresponde).
En general, el propósito del ingeniero entrevistador es recopilar información
sobre varios ejes de las habilidades del candidato (como habilidades de codificación, conocimiento de algoritmos y estructuras de datos, etc.). Pero lo más importante en la entrevista es averiguar cómo piensa una persona. Es decir, siempre es importante encontrar el límite cuando una persona no conoce la solución. Cada entrevistador tiene su propia técnica (especialmente para entrevistas telefónicas): alguien guarda una docena de preguntas almacenadas, desde preguntas de preparación (la solución de las cuales es literalmente escribir un ciclo de tres líneas) hasta preguntas difíciles incluso para explicar. Alguien tiene 2-3 preguntas "favoritas", cualquiera de las cuales puede ser respondida por una docena de lados y cómo simplificar y complicar, dependiendo de lo que demuestre el interlocutor. Estoy seguro de que todavía hay opciones, pero no las conozco.
Probé ambas técnicas y prefiero la última: según el currículum y la autoestima del candidato, utilizo un formulario de preguntas más apropiado. La pregunta siempre está abierta (después de todo, ¿cuándo fue la última vez que vio el enunciado exacto del problema en nuestra industria?) Y, dependiendo de lo que solicite el candidato, simplifico o complico la pregunta para que al final de los primeros 10 minutos el candidato Ya escribí una solución trivial. Esto rara vez es difícil, después de todo, la solución es trivial.
Las preguntas "¿por qué estás seguro de que funciona?" También se hacen trivialmente. (si el candidato no describió de inmediato los límites de aplicabilidad o pruebas), y cuál es la complejidad de la solución. Simplemente da información de que el candidato sabe cómo codificar y entiende lo que escribió. Pero la codificación no es suficiente: debe ser capaz de pensar, por lo que las siguientes preguntas son: ¿cómo deshacerse de las restricciones? ¿Cómo hacerlo mejor? Ya sea (qué sucede cuando el candidato es muy bueno o simplemente conoce la solución por experiencia) cómo hacer que el código funcione bajo estas u otras restricciones adicionales.
Esto proporciona un paquete de señales de inmediato, pero ¿cuánto sabe el candidato cómo adaptarse a los cambios en la tarea? ¿Y cuánto está listo para pensar en soluciones altamente alternativas? La discusión en sí misma también es interesante: la pregunta siempre se hace de la manera más abierta posible, por lo que hay docenas de formas de entenderla. ¿Se está aclarando el entorno empresarial o solo limitaciones técnicas? ¿Se tienen en cuenta las limitaciones técnicas? Por ejemplo, varias veces fue que dije "se esperan 1e12 objetos", y el candidato no evalúa cuánto es esto. Y esto es casi un terabyte, si byte por objeto. O ~ 116.5 gigabytes si es por bit. O 4.3 terabytes si int32. Bueno, entiendes el punto. No, recordar esto no es necesario: no en el examen, nadie quitó la calculadora. El teléfono es, sí, incluso en la búsqueda. Y por cierto, puedes preguntar.
Y así es como aumentaré la dificultad o simplemente modificaré la tarea para todo el tiempo de entrevista disponible. Sí, es posible que para el entrevistado este sea el principal pan de trabajo, y él come tales tareas para el desayuno, el almuerzo y la cena. Bueno, para este caso
, mi tarjeta de viaje tiene una pregunta completamente diferente. Por ejemplo, en lugar de gráficos, para programación dinámica. O en listas. O, en general, la pregunta es dónde la solución óptima requerirá un montón. Lo principal es un entorno diferente, una tarea diferente.
Lo más importante aquí es dar al mismo tiempo una tarea muy simple para que el candidato pueda resolver y mostrar habilidades básicas, y elevar la dificultad a un nivel en el que el candidato no sepa la respuesta para que pueda mostrar cómo piensa. Si al mismo tiempo puede encontrar una solución a un problema más complejo, está bien, pero si el candidato fue capaz de resolverlo todo, entonces este es un pinchazo del entrevistado, que no preparó una pregunta de complejidad aún mayor.
¿Quieres detalles? Esta es una de las preguntas que
NO le harán simplemente porque ya se lo considera "filtrado", es decir, es probable que el candidato no piense en él, sino que recuerde. Como escribí anteriormente, es importante cómo piensa el candidato, y no cómo recuerda ... Entonces, la pregunta es:
implementar el caché LRU .
En general, la tarea es hermosa, ya que permite muchas formas de la tarea y muchas formas de interpretación. Por ejemplo, puede hacer una pregunta directamente en la frente "implementar caché LRU". Se puede formular como "imagine que nuestro servicio para procesar una solicitud verifica la existencia de un objeto externo". ¿Cómo puedo acelerar el procesamiento? - esperando una oración muy obvia "vamos a guardar el resultado". ¿Qué se puede preguntar "pero cómo?". Y "¿y si queremos controlar la memoria máxima consumida por este caché?". La pregunta queda abierta, y qué API debe proporcionar este caché. Para simplificar, siempre puede reducirlo para establecer (clave, valor) + obtener (clave); pero puedes agregar TTL. Es posible con get (key, fetch_func). En general, la evaluación de la API propuesta también puede dar una señal adicional sobre la experiencia y el estilo de pensamiento del candidato.
La solución trivial en hashmap dará O (1) en get () + O (N) en set () (esto es así, ¿verdad?). Si todos los elementos están vinculados adicionalmente (organizando un enlace doble), será posible obtener O (1) para ambas operaciones. Si necesita agregar TTL ... Creo que la idea es clara. Si lo desea, analicemos en los comentarios: imagine que le hicieron esta pregunta, ¿cómo va a pensar? ¿Qué solución propones? ..
¿Y en qué lenguaje de programación? Sí, qué te gusta, en cuál más. C ++? Maravilloso Ir? Genial Pitón Siempre eres bienvenido Perl? Ahora raro, pero sí también. Y Java sí. Y JavaScript (aunque es más complicado teniendo en cuenta la memoria de la solución).
Entonces, después de aproximadamente 40 minutos desde el comienzo de la entrevista, el vuelo de pensamiento del candidato se interrumpirá, pero esto no significa que todo esté mal. Solo significa que se acabó el tiempo.
Después de la entrevista, el entrevistador escribe un informe, a menudo con una transcripción detallada de lo que sucedió en la entrevista. Este informe se utilizará para la toma de decisiones. Personalmente reservo aproximadamente una hora inmediatamente después de la entrevista para registrar los minutos completos de la conversación con memoria fresca, algunos simplemente escriben en papel una transcripción casi completa durante la entrevista.
Después de una entrevista telefónica, sobre la base de los informes de todos los entrevistados, se toma una decisión sobre la invitación a confrontar. Será un día completo de entrevistas en una de las oficinas: varias entrevistas por la mañana, luego el almuerzo (y conocer el comedor en la oficina :) y luego un par más. Al entrevistar en SRE, estas serán entrevistas diferentes, una lista de las cuales el reclutador le dirá, incluida la codificación y
NALSD : Diseño de sistema a gran escala no abstracto. La clave es no abstracta (es decir, no las palabras generales "necesitamos una base de datos") y "gran escala" (es decir, si se necesita una base de datos, entonces bajo petabytes, por ejemplo). Puede
leer más aquí y muchos más dónde encontrar materiales en la búsqueda. Recluté varios enlaces para entrenamiento. Este es un punto muy importante en la entrevista, simplemente porque cuando trabajas para una empresa de Google, tienes que pensar y considerar los sistemas desde esas perspectivas.
En general, las entrevistas en persona no son muy diferentes de las entrevistas telefónicas: problemas similares y un proceso similar. Al mismo tiempo, intentamos organizar las preguntas para no hacer la misma pregunta dos veces.
¿Qué más puedo agregar sobre el proceso de la entrevista? Diviértete! No, en serio, ¡relájate y diviértete! ¿Una entrevista telefónica? Solo una conversación con un interesante interlocutor. Nueva información garantizada y nueva experiencia. ¿Entrevistas en persona? ¡Más diversión! Estás en un viaje de negocios a expensas del futuro empleador :) Da un paseo por la ciudad, conoce amigos. También se garantiza un día completo de entretenimiento y conversaciones interesantes.
Y después de este día de diversión, todos los que lo entrevistaron también escriben un informe, con el protocolo completo de la conversación. Todos los datos de la entrevista son reunidos y
revisados por un comité independiente . Esto es importante: ninguno de los que lo conocen personalmente participa en la decisión. Ninguno de los entrevistados también está directamente involucrado. Todo esto está dirigido a eliminar el sesgo en la decisión. La evaluación es solo para el cumplimiento del estándar requerido del estándar de contratación. Si tienes mala suerte y fallas, siempre puedes volver a intentarlo en un año. Para este año, puede sistematizar sus conocimientos y llenar los vacíos descubiertos.
Tienes alguna pregunta? Pregunta en los comentarios.
¿Hay algún interés en probar la entrevista antes de la entrevista? Hay servicios para entrevistas simuladas (por ejemplo,
una y
dos veces , pero no son de la propia empresa, por lo que no hay garantías); a veces Google ejecuta campañas similares.
Y sí, no dudes
en aplicarte . Si cree en la magia de "presentar una solicitud a un empleado", escríbame y le enviaré su solicitud. Welkam!