Presenté mi solicitud a través del sitio web de carreras de Qualcomm (portal de jornada laboral). Mi currículum fue preseleccionado para el puesto de ingeniero de software integrado de RF y recibí una llamada de uno de los miembros del equipo.
Ronda telefónica: Después de la presentación formal de mí mismo, le expuse mi currículum. Me preguntaron sobre punteros, estructuras, uniones, estructuras de datos y proyectos en el currículum. También se me preguntó sobre conceptos básicos de electrónica, ya que tengo experiencia en electrónica. Fue una llamada rápida de 30 minutos. Al final de la llamada, se me informó que se programará una entrevista a conveniencia de los entrevistadores.
Se programó una entrevista en línea de un día completo (en la plataforma Microsoft Teams) que constaba de 4 rondas técnicas.
La ronda 1:
Una breve explicación del puesto de trabajo y responsabilidades.
Se proporcionaron fragmentos de código y se deben determinar los resultados. Los códigos estaban relacionados con
- apuntador referenciando, desreferenciando e incrementando
- tamaño y asignaciones de memoria de estructura y uniones
- función de conjunto de miembros
- puntero constante y puntero a una constante.
- ejecutar variables volátiles en funciones
Las preguntas que no sean fragmentos de código fueron
- Acolchado y embalaje de la estructura
- ¿Cómo se almacenan las variables de una unión? Si la unión contiene un número entero (4 bytes) y un solo carácter (1 byte). ¿El carácter apuntará al MSB o al LSB? La pregunta se centra en cómo se apuntan las variables de la unión en el bloque de memoria asignado a la variable de unión. [Concepto de sistemas little-endian y big-endian]
- Implemente su propia función sizeof [Puntero de tipificación]
- Escriba un programa para encontrar si la pila aumenta hacia arriba o hacia abajo. [Crear dos variables locales. Las variables locales se almacenan en una pila.]
- ¿Cuál es la palabra clave volátil? ¿Cómo cambia una variable volátil?
- Hay dos registros de temporizador HW de 32 bits: TIMER_L, TIMER_H, que forman un temporizador de 64 bits (TIMER_L: 32 bits inferiores, TIMER_H: 32 bits superiores). Para diseñar una API para determinar un temporizador de 64 bits, ¿cuántas lecturas de registro se requieren en el mejor y el peor de los casos?
La ronda 2:
Preguntas relacionadas con los conceptos de gestión de procesos y gestión de memoria en sistemas operativos.
- Supongamos que un programa se ejecuta en 5 subprocesos. Si se debe agregar un hilo adicional, ¿qué factores se deben considerar? [requisitos relacionados con el hardware y la gestión de subprocesos]
- ¿La eficiencia del sistema aumentará con seguridad si se agrega un hilo adicional? Si sí/no, ¿por qué?
- ¿Qué es un fallo de segmentación y cómo evitarlo?
- ¿Qué son las fugas de memoria y cómo recuperarse de una fuga de memoria en un programa? [ No podemos recuperar dentro de un programa. Se debe tener cuidado para evitar pérdidas de memoria, es decir, liberando variables no utilizadas. ]
- Si va a asignar el bloque de memoria a una variable diferente, ¿cómo lo hará? [asignación, desasignación, reasignación de la memoria principal. No se requería una respuesta exacta. El entrevistador quiere saber cómo encontraría una solución. ]
- Si está escribiendo un programa para asignar memoria a las variables, ¿cómo evitará la corrupción de la memoria debido a la asignación de memoria preasignada?
- Supongamos que en un programa normal si una variable o una ubicación de memoria está dañada, ¿cómo identificar qué parte está dañada?
Ronda 3:
- punteros dobles
- Escriba un fragmento de código para la asignación de memoria dinámica a arrays unidimensionales y bidimensionales.
- Se le proporciona una array ordenada A de m enteros y otra array B del tamaño de (m+n) e inicialmente llena con n elementos en orden ordenado. ¿Cómo insertará los elementos de A en B y finalmente ordenará la array B? [Complejidad de tiempo: O(m+n), complejidad de espacio: O(1)]
- Encuentre el K-ésimo Node desde el final en una lista enlazada.
- Una versión modificada del algoritmo de detección del ciclo de Floyd. ¿Es posible encontrar el bucle en una lista enlazada si el puntero rápido se mueve tres pasos adelante en lugar de mover 2 pasos… Si es sí o no, por qué?
- Rompecabezas: 10 máquinas están fabricando pelotas. La primera máquina produce pelotas de 1 unidad de peso, la segunda máquina produce pelotas de 2 unidades de peso, y así sucesivamente hasta llegar a la décima máquina que produce pelotas de 10 unidades de peso. Una de las 10 máquinas falla y comienza a producir pelotas defectuosas de diferentes tamaños que difieren x unidades del peso inicial. Dada una balanza electrónica que puede medir el peso de cualquier número de bolas en una sola instancia, ¿cuántas veces se debe usar la balanza para encontrar la máquina defectuosa?
- Escriba una función que tome la raíz de un árbol binario como argumento, cree un espejo del árbol binario y devuelva la raíz del árbol reflejado.
Ronda 4:
- ¿Qué es un RTOS (sistema operativo en tiempo real)? ¿Dónde se usan?
- ¿En qué se diferencia un RTOS de un sistema operativo ordinario?
- Es Android o Windows un RTOS. Si no, ¿por qué?
- ¿Qué son los punteros de función y por qué los necesitamos si podemos llamar a una función desde cualquier otra función?
- Función en línea vs macro. ¿Por qué necesitamos en línea cuando podemos usar una macro? Excluya los escenarios donde se ejecutará en línea como una función normal y explique.
- ¿Por qué la depuración es más rápida cuando se usa la función en línea?
- Si tiene la opción de elegir entre semáforo binario y mutex, ¿qué elegirá y por qué?
- ¿Por qué necesitamos una unión si la memoria no es una restricción?
- ¿Qué hace que la rutina de servicio de interrupción (ISR) sea diferente de una función normal?
- ¿Cómo se altera el valor de las variables volátiles?
- También se hicieron algunas preguntas casuales como cómo fue la interacción con los entrevistadores hasta esa ronda, objetivos profesionales, interés en la educación superior, etc.
Se hicieron algunas preguntas más relacionadas con RTOS.
Recibí una llamada telefónica de recursos humanos después de 6 días. Solo una conversación informal sobre el puesto de trabajo, la ubicación del trabajo, el paquete y todo.
Publicación traducida automáticamente
Artículo escrito por saitejagampala y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA