¿Es malo usar funciones de lenguaje integradas en entrevistas técnicas?

Depende de cuán central sea esa biblioteca integrada en la esencia de la pregunta.

En general, no debe reemplazar la esencia de la pregunta de la entrevista con una biblioteca incorporada. Entonces, escribir array.sort () cuando le pido que ordene una matriz sería derrotar el punto del problema (que es ver qué tan elegante es su código).

Pero, si su solución simplemente se basó en que se ordenó la matriz, pero en realidad no era el punto de la pregunta, entonces utilice la biblioteca incorporada.

Dicho esto, es una especie de pregunta irrelevante. Si aborda las preguntas de la manera correcta, entonces esto realmente no es un problema.

Primero, debe discutir el problema con su entrevistador antes de comenzar a codificar. No debe simplemente codificar tan pronto como crea que tiene una solución al problema. Este sería el punto de mencionar que hay una biblioteca integrada que maneja el problema.

En segundo lugar, cuando codifica, debe abordarlo de arriba hacia abajo, no de abajo hacia arriba. Comience con la función de más alto nivel y luego complete los detalles a medida que avanza. Esto asegura que usted obtenga primero las partes algorítmicas más importantes. Si hace las cosas de esta manera, realmente no importará si puede o no usar las funciones de biblioteca incorporadas. Úselos y cree sus propias funciones según lo necesite. Puede completar los detalles a medida que tenga tiempo.

En una entrevista, la mitad es sobre la química entre usted y el entrevistador.

Cuando haces lo que acabas de decir, un entrevistador puede sentir una combinación de lo siguiente:
1. Te estás burlando de la pregunta de la entrevista y, por lo tanto, indirectamente te estás burlando de mí y de la empresa en la que trabajo.
2. Eres arrogante / infantil. Probablemente ya sabías lo que se suponía que debías hacer, pero aún no lo estás haciendo.
3. No eres una persona muy curiosa. No tenía la curiosidad de aprender cómo funciona algo tan básico como eso, ni siquiera de leer cómo funciona la entrevista.

Ahora, si consigue un entrevistador experimentado, superará estos sentimientos y lo empujará cortésmente para que implemente el algoritmo (por ejemplo, “¡Tiene razón! ¿Podría decirme cómo funciona el reverso? ¿Lo ha buscado antes? Sí? Genial; por favor explicar. ¿No? ¡Está bien! ¡Intentemos implementarlo ahora! “).

Si no obtiene un entrevistador experimentado, no importará si tiene razón o no. Ya te habrán rechazado mentalmente. Al menos, su puntaje caería en sus ojos.

Una pregunta más profunda que puede estar haciendo es: ¿por qué esperan que profundice más con tales preguntas? Algunas razones para eso:

1. La necesidad de sumergirse más allá del nivel de la superficie es un fuerte indicador de su interés en la carrera que ha elegido seguir. Cuantas menos cajas negras tenga mentalmente, mejor será su éxito en esa área.

2. Si simplemente quisieran a alguien que pudiera improvisar funciones y API juntos, contratarían un par de manos para hacer C ++ a bajo costo (hay muchas vías para hacerlo). No saben qué. Quieren una mente que venga con ese par de manos. Una mente que está emocionada de profundizar para comprender mejor las cosas.

3. Si es una empresa para la que vale la pena trabajar, entonces simplemente están obteniendo muchos solicitantes calificados para el mismo puesto. Por lo tanto, tienen que encontrar alguna forma de filtrar a los candidatos. Si deja de escribir funciones incorporadas, puede hacerlo, pero apuesto a que conseguirán a alguien que no cuestione su juicio, escriba lo que se esperaba de ellos y obtenga ese trabajo.

Si escribió “std :: reverse ()” en la pizarra, se lo vería burlándose de la pregunta de la entrevista, que es una práctica arriesgada en una entrevista.

La mejor manera de responder es decir “bueno, existe la función inversa en la biblioteca estándar, pero supongo que está buscando un algoritmo, ¿sí?”

Eso te permite presumir que sabes acerca de esta función sin parecer desagradable. El entrevistador le pedirá que escriba un algoritmo o dirá “¿cómo supone que funciona la función inversa y cuánta memoria necesita?”

En general, las funciones integradas a menudo anulan el propósito de la entrevista, pero al mismo tiempo, el propósito de la entrevista es demostrar competencia para resolver problemas de programación, lo que puede incluir centrarse en las partes interesantes del problema y usar en funciones para las otras partes.

“Pedir”.

Permítanme aclarar, pregúntele al entrevistador si tiene permiso para usar las funciones de la biblioteca para la tarea dada, ya que puede haberle dado el problema para verificar su razonamiento lógico y sus habilidades algorítmicas.
Si usa una función de biblioteca, entonces vence el objetivo principal de probar su competencia.

Por otro lado, no se recomienda reinventar la rueda y, en general, está mal visto. En este caso, el entrevistador está verificando su conocimiento sobre las funciones de la biblioteca.

En cuanto a su pregunta, ya que aclaró que “hacerlo en la menor cantidad de espacio” significa que no debe usar la función de biblioteca.

Realmente depende de cómo lo entregues. Puede aprovechar esta oportunidad para mostrar tanto su pensamiento algorítmico como habilidades más prácticas como el conocimiento de las herramientas existentes.

Por ejemplo, podría decir algo como “Bueno, ciertamente la solución más simple con una complejidad espacial constante sería utilizar la función inversa estándar. Sin embargo, supongo que probablemente quiera que desarrolle el algoritmo que utiliza”.

Esto demuestra que comprende lo que pregunta el entrevistador sin ser desdeñoso o sarcástico, se expande en algunos de los aspectos informáticos (que seguramente están buscando), muestra conciencia de las herramientas existentes y una preferencia en contra de reinventar la rueda.

Fui un buscador de trabajo a tiempo completo durante las últimas 6 semanas y vi casi esta pregunta exacta al menos media docena de veces. Este enfoque siempre pareció tener un impacto positivo.

Depende del entrevistador.

Si estuvieras entrevistando conmigo, hubieras pasado con gran éxito. Si escribiste tu propio algoritmo inverso, habrías fallado.

No me importa si sabes cómo resolver problemas que ya se han resuelto. Me importa que sepa que se ha resuelto un problema, dónde encontrar la biblioteca / herramienta que implementa esa solución y cómo usar esa biblioteca / herramienta para resolver un problema que no se ha resuelto.

Cuando contrato a un programador, no busco a alguien que pueda reinventar la rueda, busco a alguien que pueda recoger piezas del estante y pegarlas en algo que haga el trabajo que necesita hacer.

Esta pregunta de Quora es una pregunta perfectamente razonable para hacerle al entrevistador en ese punto de la entrevista. “Bueno, si tuviera que invertir una cadena en un programa que estaba escribiendo, usaría std :: reverse (). ¿Estás buscando que implemente (algo así) eso? Esto demuestra que tomas decisiones razonables como programador (y que conoces bien al menos un idioma, qué idioma no debería importar mucho), y que estás tomando el entrevista en serio. Si el entrevistador está de acuerdo en que es lo que estaban preguntando, eso significa que ha acordado rápidamente una especificación precisa, que demuestra la competencia técnica de comunicación.

(El principio detrás de esta respuesta podría generalizarse a otras situaciones de entrevista y tal vez a la vida en general. Comunique sus inquietudes).

Me hicieron una pregunta como esa en una entrevista. Era para un trabajo donde el rubí era el lenguaje más común utilizado, y el entrevistador me preguntó cómo escribiría una función para devolver el segundo elemento más grande de una matriz. Dije “Bueno, si el tamaño de la matriz fuera relativamente pequeño y la eficiencia no fuera realmente importante, escribiría algo como”:

def second_biggest array
array.sort [-2]
fin

Él se rió entre dientes y me preguntó cómo lo escribiría si la eficiencia fuera importante. Entonces escribí un método que resolvió el problema en tiempo lineal con una cantidad constante de espacio requerido.

Personalmente, creo que esa es la respuesta correcta, porque en los casos en que la eficiencia no es crítica, es genial tener un código que sea realmente simple y que sea poco probable que tenga errores. Pero también pude demostrar que también podía escribir un algoritmo que fuera eficiente en tiempo / espacio, y entendiera las compensaciones entre los dos.

Y sí, recibí una oferta de trabajo después de esa entrevista.

La forma de manejar esto es decir “Normalmente usaría std :: reverse, pero supongo que preferiría que lo implementara yo mismo”. Conmigo, obtendrás puntos de bonificación marginales por reconocer que el problema en realidad no requiere inteligencia. Pero si no procedes de inmediato a responder la pregunta, se te considerará arrogante (“esta pregunta está por debajo de mí, no necesito saber cosas tan simples”) o totalmente ignorante de lo que crees que realmente sería Una respuesta aceptable.

La respuesta real es que depende totalmente del entrevistador.

Dada la pregunta de ejemplo que hizo, lo más probable es que haya escrito el algoritmo debido a la parte de “usar la menor memoria posible”. Sé que el STL es normalmente el más optimizado, pero me pregunta si quieren que comprenda cómo hacerlo. Si la pregunta fuera simplemente invertir una cadena, usaría el STL.

Hace unos años, me entrevisté en algún lugar y tuve una pregunta como esta (no recuerdo la pregunta exacta) Me di la vuelta y escribí la respuesta como si usara STL, la entrevista tenía el aspecto de su rostro que es correcto pero no Lo que quería, me preguntó si podía hacerlo sin STL, a lo que simplemente me di vuelta y unos minutos después había escrito el algoritmo correcto. Pasé esa ronda de entrevistas por cierto.

Si lo estoy entrevistando y sale con esto, obtiene crédito adicional y luego se le pide que complete la respuesta sin usar STL.

Para el ejemplo particular, no sugeriría usar una función integrada. En general, la regla que seguí cuando me preparaba para las entrevistas y las pruebas fue un nivel más bajo . Lo que significa es que utilicé todas las características del lenguaje que resolvieron partes del problema. Por ejemplo, si me pidieran que ordenara algo, escribiría la función para ordenar rápidamente, por otro lado, si me preguntaran cuál de los pasos estaba ordenando, usaría la ordenación de biblioteca estándar.

Muchos dirán que corre el riesgo de que lo vean como “burlándose” del entrevistador o de la pregunta, o que está “perdiendo la esencia” de la pregunta.

El hecho es que, si puede defender las propiedades de std :: reverse () a la luz de la pregunta (¿funciona en la memoria O (n), por ejemplo), es una respuesta perfectamente válida.

Si al entrevistador no le gusta una respuesta correcta, seguramente aprenderá a comunicar mejor el requisito y la intención en una pregunta de seguimiento.

He pasado por esto muchas veces (preguntas diferentes, el mismo tipo de supuestos de entrevistador). Dependiendo de cómo procedió la entrevista, ocasionalmente he utilizado el proceso de la entrevista para hacer determinaciones sobre mis futuros compañeros de trabajo, jefes y la cultura de la empresa (¿son todos tan malos en la comunicación?) En ocasiones, la incapacidad de la gerencia y el personal se comunican durante El proceso de la entrevista ha formado un punto de trato para mí.

Escuche la pregunta : “memoria menos posible”

Si respondes “std :: reverse ()”, la siguiente pregunta será: “¿Sabes cuánta memoria se necesita?”, Que no sabrás y parecerás tonto. Así que evite la función y haga el trabajo de la manera difícil, que es lo que quieren que haga. Pero termina diciendo …

“Ya sabes, los compiladores se están volviendo tan buenos en estos días, me pregunto si std :: reverse () no sería tan eficiente o incluso mejor”.

En mi entrevista en Google me pidieron que escribiera un código.

Para la primera parte del problema dije “Apuesto a que hay una función para hacer eso. ¿Puedo buscarlo en Google y usarlo?

El entrevistador dijo “no”.

Todavía tengo una oferta.

More Interesting

¿Cuáles son algunos acertijos interesantes que se hacen en las entrevistas técnicas de programación informática?

¿Cuáles son las preguntas frecuentes de la entrevista para los ingenieros de Java?

¿El archivo objeto producido por C está escrito en lenguaje máquina?

¿Cuál es la mejor manera de prepararse para las entrevistas con desarrolladores de iOS? (Rápido)

Si menciona en su currículum que tiene un nivel principiante de competencia en un lenguaje de programación en particular, ¿cuánto se espera que sepa?

Cómo hackear una entrevista de codificación

¿Cómo debo prepararme para las entrevistas de codificación en el campus?

¿Cómo se puede mejorar sus habilidades de optimización de código?

¿Cuáles son algunas preguntas de la entrevista en las listas vinculadas?

¿Cuáles son algunas preguntas sobre C que solo los programadores expertos de C pueden responder?

¿Qué debo aprender para las entrevistas de programación Java? ¿Qué se necesita para obtener una entrevista?

He estado trabajando en preguntas de programación por un tiempo. A veces, las preguntas fáciles parecen una lucha cuesta arriba. ¿Es una señal de agotamiento?

Cómo prepararse para una entrevista de servicios web de Amazon

¿Cuáles son los acertijos estándar que se preguntan en las entrevistas de programación?

Seré entrevistado para una empresa de seguridad de software de inicio. Tengo experiencia en Java y un reclutador me pidió que mejorara mis habilidades técnicas. Además de seguir el geeksforgeeks.org común, ¿de qué otra manera debo prepararme?