¿Está bien mezclar C y C ++ en una entrevista? [cerrado]


8

Si en una entrevista me piden que escriba algún código, ¿debería seguir completamente con C ++ o es aceptable "mezclar" los dos para escribir un código fácil como se me ocurre?

Lo explicaré: si se me pide que cree un tipo de datos de "pila", una clase de C ++ es perfectamente adecuada, mientras que si necesito analizar algunas cadenas, strtok / sscanf es mucho más fácil que STL. Por otro lado, si necesito un contenedor genérico, STL y plantillas son el camino a seguir.

Todo se puede hacer en C o en C ++, pero en una entrevista no puedo codificar todo ni recordar cada función estándar / STL. ¿Qué es una compensación aceptable?


1
La mayoría de los programadores de C ++ dirían que no deberías mezclar C puro sin una buena razón (que es mejor que puedas justificar).
Plataforma

2
Supongo que un "No puedo recordar la función STL para manejar la división de cadenas" no es genial, ¿verdad?
John Smith

14
Que usted sepa lo suficiente como para incluso hacer esta pregunta sería una señal positiva en mi libro si yo fuera el entrevistador. Solo pregúntales qué quieren.
GrandmasterB

2
sprintf y FILE pueden hacerme la vida más fácil a veces en el mundo C ++
Thomas Eding

Si fuera entrevistador, no me impresionaría que alguien respondiera esta pregunta diciendo qué función llamarían.
James

Respuestas:


13

Para ser realmente pedante, el C ++ ofrece apoyos para C, de forma nativa, tal vez sólo un subconjunto , pero si el tema es el C ++ al lenguaje de programación C se incluye, y esto no es una opinión, yo esperaría que no hay argumentos de que en un profesional medio ambiente.


Convenido. Además, C forma parte de C ++, ¿por qué no usarlo para beneficiarse? En mi opinión, apegarse exclusivamente a una parte del idioma y no tocar la otra no es un buen uso del idioma.
Pijusn

17

A menos que se especifique, la mayoría de las preguntas de programación le permitirán usar el lenguaje que desee al responder una pregunta específica. Es posible que desee explicar qué idioma está utilizando para responder la pregunta específica para evitar confusiones y explicar por qué lo está utilizando.

Si no está seguro de si esto va a estar bien con el entrevistador, pregunte: es absolutamente aceptable preguntar si puede responder diferentes preguntas usando diferentes idiomas (en la mayoría de las respuestas en papel, el pseudocódigo será más que aceptable).


44
Sí, eso es lo que he estado pensando: pseudocódigo. No tengo una base de conocimiento en mi mente y tiendo a memorizar técnicas y formas de usar cosas en lugar de sintaxis o declaraciones API (que pueden cambiar). Si puedo seudocodificarlo y tengo una experiencia de programación "decente" con un lenguaje, no importa cuál sea, creo que puedo codificarlo.
John Smith

2
Sería una señal positiva en mi libro si el candidato pudiera cambiar fácilmente entre C | C ++ | C ++ y STL y podría explicar por qué eligieron un camino particular.

66
@JohnPell: en mi experiencia, comprender los principios y cómo y cuándo aplicarlos supera en todo momento el conocimiento profundo del lenguaje.
Finalizado el

10

Debería preguntarle al entrevistador qué prefiere, si sabe cómo usar ambos.

Dependiendo de su respuesta puedes descubrir:

  1. si realmente conoce las diferencias entre C y C ++;
  2. si sabe acerca de la biblioteca estándar de C ++;
  3. si es importante para él

No hay una respuesta genérica a esta pregunta. Depende demasiado del trabajo y los objetivos del reclutador. Si él quiere que muestres conocimiento del idioma, será específico. Si él quiere que le muestre habilidades para resolver problemas y habilidades de comunicación, entonces realmente no le importará.


8

A menos que su entrevistador solicite explícitamente que codifique en C o C ++, simplemente usaría lo que sea apropiado para la entrevista.

Para mí, si mi candidato mezclara los dos, estaría más interesado en su estrategia o razón para mezclar los dos idiomas. Tener a alguien en mi equipo que pueda proporcionar una solución y pueda justificar la solución es extremadamente valioso.


1
+1, justificar es la clave. Diría que esta es la clave para ser un buen desarrollador en general (además de las habilidades de programación, por supuesto).
K.Steff

1

Si en una entrevista me piden que escriba algún código, ¿debería seguir completamente con C ++ o es aceptable "mezclar" los dos para escribir un código fácil como se me ocurre?

Eso depende completamente de qué tipo de trabajo está solicitando y qué idioma esperan que use. En general, si está escribiendo C ++, es mejor atenerse a C ++ en la medida de lo posible. Sin embargo, esperaría que cada programador de C ++ supiera al menos un poco de C (y viceversa).

Lo explicaré: si se me pide que cree un tipo de datos de "pila", una clase de C ++ es perfectamente adecuada, mientras que si necesito analizar algunas cadenas, strtok / sscanf es mucho más fácil que STL. Por otro lado, si necesito un contenedor genérico, STL y plantillas son el camino a seguir.

Si esperan que escriba un tipo de datos de trabajo completo durante la entrevista, debe tener cuidado. Es bueno que le pregunten sobre detalles técnicos, pero si esperan que pase horas escribiendo programas durante la entrevista, eso probablemente dice algo malo sobre el empleador.

Si usa scanf (), probablemente haya cometido un gran error sin importar si C o C ++. Es mejor que le explique al entrevistador que solo está escribiendo algo rápido y sucio y que nunca usará scanf en el código de producción. Hay muchas caídas de pozo con varias funciones de biblioteca C.

El entrevistador no debe esperar que recuerde todas las funciones de la biblioteca estándar C y C ++, pero debe esperar que sepa cuáles son evidentemente peligrosas. gets (), getchar (), scanf (), setjmp () etc.


totalmente de acuerdo, era solo para hacer un ejemplo, AL MENOS usaría scanf_s, y si pudiera, lo evitaría TOTALMENTE en el código de producción
John Smith

0

Creo que cuando se le pide explícitamente que haga una tarea corta en C ++, sería de suma importancia quedarse con C ++ y no mezclar C con él. Modern C no es un subconjunto de C ++ moderno, ya que mezclar los dos solo implicaría que no está muy familiarizado con lo que es C ++ limpio y moderno.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.