Mientras codifica problemas algorítmicos durante una entrevista usando C, ¿está bien asumir funciones de biblioteca?

La respuesta es siempre preguntar.

La forma en que prefiero responder a este tipo de preguntas de la entrevista es comenzar con una exposición que incluya mis suposiciones sobre las funciones de la biblioteca que puedo usar, y el propósito principal de hacerlo es asegurarme de que estamos en la misma página.

En el caso de su pregunta, generalmente escribiré algunos encabezados de función y diré algo como,
“Entonces digamos que ya tenemos funciones como estas disponibles …”
[whiteboard] void hash_put(hash_t hash, char *key, void *value)
[pizarra] void *hash_get(hash_t hash, char *key)
“Puedo implementar esto por ti, si quieres”.

Por lo general, el entrevistador me dice que no me preocupe por su implementación.
A veces, dicen algo como “no escribas la implementación, sino que me digas aproximadamente cómo se vería la implementación”.
Y si se le pide que implemente esas funciones, esa es solo otra oportunidad para presumir.

Si su entrevistador le pide que escriba una función en ‘C’, quiere que C no C + extras y usted es alguien que no escucha o no sigue las instrucciones, lo cual no es algo que quieran en conjunto. trabajador o empleado.

No recuerdo haber tenido una pregunta de entrevista de codificación ‘C’ en la que el uso de dicha funcionalidad sería un beneficio real y no preguntaría dónde algún tipo de encapsulación de estructura de datos genérica proporcionaría una solución apreciablemente más simple u óptima porque eso no es lo que yo ‘ Estoy buscando. Cuando le pido a un candidato una función en ‘C’, quiero

1. Una comprobación de la cordura de que pueden pensar lógicamente, no olvidar para qué están usando variables en un bucle de 10 líneas, comprender la indirección básica, contemplar las condiciones de borde, comprender lo que están haciendo antes de escribir código y corregir cualquier error que cometan quizás con algunas sugerencias sobre lo que realmente podría hacer el código.

2. Validación de que no estaban mintiendo sobre la programación en ‘C’ en su currículum

donde es extremadamente conveniente hacer ambas cosas en una sola pregunta. Por el contrario, al entrevistar a candidatos para puestos como ingeniero de software en pruebas en las que no afirman saber ‘C’ y no se debe esperar que deje la opción de idioma abierta, aunque la pregunta podría ser la misma.

Si le piden que escriba una función en algún otro idioma en el que se incorpore dicha funcionalidad (los idiomas más populares tienen algún tipo de mapa desordenado) o deje abierta la opción de idioma, debe usar lo que sea estándar y útil, ya que es sensato al escribir software profesionalmente y puede ser parte de la prueba

Las preguntas básicas de procesamiento de texto en las que dicha funcionalidad simplifica el problema no son muy poco comunes, ya que es probable que lo haga como parte de su trabajo (arrastrarse programáticamente a través de registros) y todos los ingenieros de software decentes deberían haber elegido al menos un conjunto de herramientas ( perl, python, incluso awk) para el procesamiento de texto. Cuando elige algo menos apropiado como ‘C’ para tales problemas, está sugiriendo que no caiga en la clasificación decente.

Si eso viola el espíritu de la pregunta (por ejemplo, una función integrada que invierte una cadena donde esa es la pregunta), se lo informarán.

Los problemas que requieren el conocimiento de las estructuras de datos, sus operaciones básicas (inserción, eliminación, iteración, etc.) y la complejidad computacional correspondiente para resolver generalmente no se formulan como preguntas de codificación porque pasan más tiempo en la implementación que averiguar el nivel de conocimiento del candidato No sería un uso eficiente del tiempo.