Experiencia de entrevista de Adobe | Informático (5 años de experiencia)

Ronda 1: Técnica F2F. (1 h)

Discusión sobre proyectos anteriores en C++.

Diseña un diccionario. Las API que admitiría y la estructura de datos para almacenar todos los datos. : Propuse una estructura de datos Trie. Me pidieron que implementara la estructura de datos y los campos de datos en un Bloc de notas. Estaba buscando código de calidad de producción. Cosas a considerar: definición múltiple de palabras, diseño de códigos de error usando enumeraciones, estructuras de clase, etc.

Luego me pidieron que implementara agregar y eliminar api para la estructura trie en el Bloc de notas, manejando todos los casos de esquina.

Ronda 2: Técnica F2F (1 hora)

Esta ronda la encontré en el lado más duro. Abajo están las cosas que me preguntó.

Características de C++ 11: funciones Lambda, punteros únicos y 1-2 características más que no recuerdo exactamente.

Luego vino Herencia: funciones virtuales, cómo se puede acceder a las funciones de clase derivadas mediante el puntero a la clase base.

Mapa de memoria de la clase derivada cuando se compila: di una explicación de vPointer y vTable. Discutió en detalle qué cosas se almacenan en vTable. Acceso a las funciones de la clase base.

Preguntó sobre los tipos incompletos en C++. Cuándo usarlos y cómo se pueden usar correctamente. Acciones discutidas del compilador en caso de tipo incompleto.

Preguntó a Forward Declaraciones en C++, cómo son útiles. Discutido en detalle patrón de espinillas y tipo incompleto. Me dio el código para Pimpl Pattern para verificar y corregir el error.

Luego vino Smart Pointers, preguntó sobre el puntero compartido, cómo se implementan. Mapa de memoria del objeto de puntero compartido en la compilación.

¿Cómo se comparte el recuento de referencias entre punteros compartidos? ¿Qué sucede cuando se llama al constructor de copias del puntero compartido?

Luego vinieron Mutex, Sempahores y Condition Variables. Propósito de esperar y notificar. Cuándo usar variables de condición.

Despertar falso en caso de espera(): esto no lo sabía. Explicó el término y sus consecuencias, y por qué la condición de espera está en el bucle while en lugar de en el control if.

Preguntó acerca de std::promise() y std::future(). Escriba código para set() de promesa y get() de futuro y sincronice entre ellos usando variables de bloqueo y condición.

En la discusión anterior, también preguntó sobre el concepto RAII y el desenrollado de la pila en caso de bloqueo cuando el mutex está bloqueado.

Ronda 3: Técnica F2F

Preguntó sobre los proyectos actuales. Me pidió que explicara la arquitectura del proyecto actual que había hecho en C++.

Luego me pidió que diseñara un SDK que pudiera manejar llamadas simultáneas desde la aplicación: propuse un diseño multiproceso para manejar llamadas simultáneas al SDK. Me pidió que dibujara estructuras de clase LLD. Expliqué el diseño de la clase de fábrica ThreadPool y cómo administraría la creación y destrucción de subprocesos y otras clases también. Pero no pudo cumplir con sus expectativas. No estoy seguro de lo que estaba buscando. Encontré al tipo muy débil en la comunicación, considerando que estaba en una de las posiciones más altas en Adobe.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *