2009-10-22 16 views
8

Un entrevistador me argumentó "Genrics no son completamente Genrics",C# genéricos - Entrevista pregunta extraña

Él dio el ejemplo (Parámetros int k, int d no son genéricos)

public static void PrintThis<T>(T a, T b, T c, int k,int d) 
{ 

} 

Él me preguntó si yo demuestro que es todavía genéricos, se me permitirá tomar hasta la siguiente ronda. no sabía lo que se esperaba de mí, y lo que realmente quiere decir, mostrando como ejemplo.

Guía mí cómo afrontar una entrevista con inteligencia tan extraña?.

Gracias de antemano.

+14

Otra pregunta de entrevista tonta, diseñada solo para medir su capacidad para reprimir la risa. –

+1

No estoy seguro de que esta sea una pregunta contestable sin saber qué respuesta estaba buscando el entrevistador. Todos podemos adivinar, pero lo más probable es que todos estemos equivocados sin mucha más información. – Lee

+0

Tal vez se perdió información en la traducción porque, como me preguntaron, no entiendo esta pregunta. – snarf

Respuesta

3

Todo lo que una es genérico es un tipo parametrizado. No sé a qué se dirige su entrevistador. ¿Se afirma que el método no es totalmente genérico porque no todos los parámetros del método tienen un tipo genérico?

Usted no está obligado a utilizar el mismo tipo de parámetro para todos los parámetros, ni todos los tipos de parámetros tienen que ser genéricos.

23

Algunas personas son una locura. Deberías sonreír y asentir.

+10

Aw, vamos. ¿Estás obteniendo un representante por esto? –

+1

Como Larry Niven escribió una vez, "Nunca arrojes al hombre con el láser". – Lee

+0

esto podría ser incorrecto si lo escribió la gente equivocada – Letterman

2

En lo que a mí respecta, este es un método genérico, en virtud del hecho de que tiene un parámetro de tipo. Que no todos los parámetros son del tipo genérico no importa.

11

El hecho de que kd y son siempre int no hace que el método sea menos genérica, sólo significa que estos parámetros son siempre int independientemente del tipo de a, bc &.

3

Quizás quiso decir que a, b y c deben ser del mismo tipo, pero eso es estúpido.

+0

Si este es el caso, simplemente responda que la firma del método puede ser: 'public static void TestMethod (T1 a, T2 b, T3 c, int k, int d)' – jasonh

4

Suponiendo que la pregunta de la entrevista es una de verdad, busqué en Google "Los genéricos no son" + C#, y tiene los siguientes:

  • los genéricos no son plantillas de C++
  • los genéricos no son sólo compilador magia
  • los genéricos no son covariantes
  • genéricos no son solamente una construcción de el lenguaje C#; genéricos se definen con el CLR.
  • genéricos no se limitan a la función definiciones
  • genéricos no sólo son utilizadas para colecciones
  • genéricos no se limitan a las clases
  • C# hace una especie de borrado pero es no tan grave como Java, y la razón es porque los genéricos no son una característica específica de # C, sino más bien una característica que deben trabajar a través de .NET, que soporta múltiples idiomas.

No recibí ninguna coincidencia para "Los genéricos no son completamente genéricos" o "Los genéricos no siempre son genéricos".

Así que allí. Que te diviertas.

+0

¿Qué divertido? Él hizo una pregunta más por qué el constructor no puede ser genérico. ¿Qué es el darwback allí? ¿Cómo enfrentar a un tipo así? La Recesión Hmm juega bien. – udana

+0

Enjoy Enjoy Everybody enjoy well. Me olvidaré de todo si asisto a dicha entrevista. – udana

13

los días ... soñando ... ... en equipo ....

"¿Le diste la pregunta?"

"Sí"

"¿Le dijo que era BS?"

"No"

"¿Lo encontró en StackOverflow preguntando cómo responder a la pregunta?"

"Sí"

"Bueno, ahora sabemos. Obtener el siguiente tipo aquí"

"Bwah ... ja ... ja ..." repetir ...

2

Me preguntó si aún pruebo que es genérico, se me permitirá tomar la próxima ronda. No sabía lo que esperaba de mí, y lo que realmente quiere decir es mostrar ese ejemplo.

Parece que este entrevistador está buscando las respuestas dadas aquí - si su redacción de la pregunta capta su intención, entonces no es el argumento de que los genéricos no son de carácter genérico, que está pidiendo si se puede discutir con conocimiento de la "generalidad "del método especificado.

Como han señalado otros, este es un método genérico en virtud de que permite al usuario especificar un atributo visible de la función (en este caso, el tipo de los primeros 3 parámetros) en un momento posterior . El hecho de que kyd sean parámetros no genéricos parecería simplemente ser una pista falsa.

Ser capaz de afirmar que la respuesta sería más o menos probar que usted no tiene una idea distorsionada de lo "genérico" significa - en este caso, una especialización en tiempo de llamada de una función genérica.

0

@Udana, ¿podría ser que el entrevistador intentara evaluar su respuesta haciéndole una pregunta que no tiene sentido?

Una vez tuve una entrevista en la que la pregunta de la prueba preguntó "¿cuál es el tamaño de margen predeterminado de una forma de ganar". Respondí "No sé y no me importa, ya que puedo establecer cualquier valor que desee en el constructor"

Al final de la entrevista, el entrevistador me dijo que la pregunta era un truco para ver quién adivinaría y quién Sería honesto cuando no supieran algo.

1

Hmmm, publicación tardía, pero es mejor tarde que nunca! :-)

Asumiendo que su entrevistador sabe lo que hace, esto es realmente el tipo de pregunta que un entrevistador le pregunta con el fin de hacer lo siguiente:

  1. prueba su conocimiento.
  2. Ponerle a prueba una afirmación que él sepa que es incorrecta para ver cómo reaccionará ante ella y cómo se acercará a responderla.
  3. Involúcrese en un debate para que se relaje y hable libremente sobre un tema con el que, con suerte, se haya familiarizado.

Un buen entrevistador logrará los tres, mientras que el entrevistador no tan bueno puede simplemente estar buscando formas de intentar y atraparlo porque se le pide que entreviste a demasiados candidatos.

Al final del día, si no sabes la respuesta o no entiendes la pregunta, será mejor que lo diga en la entrevista, y si no estás de acuerdo con una afirmación, mírala como una oportunidad para relajarte y participar en una discusión en lugar de simplemente responder preguntas durante la entrevista.

Y por lo que vale, la respuesta es que el método descrito ES un método genérico, independientemente de si algunos parámetros son de tipo fijo o no. La prueba está en la declaración en sí misma, donde la sintaxis genérica ordena efectivamente al compilador que tenga en cuenta los argumentos genéricos.

0

Tomando literalmente la pregunta:

  1. mostrarle puede llamar con T como cadena, int y decir un botón.
  2. Muéstrele el código genérico compilado, creo que es con ILDASM, puede ver el método genérico para los tipos de referencia. También puede ver las versiones ajustadas del método genérico para los tipos de valores, pero no recuerdo cómo. Tal vez alguien más pueda.
0

hey es una buena pregunta que hace cosquillas en generics. el entrevistador solo quería saber su familiarización con los genéricos. el nombre de método utilizado es solo para especificar el tipo cuando llama al método. esto puede o no ser especificado durante la llamada. como

PrintThis("a","b", "c", int k,int d) // to specify <T> as string. 

esto se tomará solo durante la compilación. entonces los 3 parámetros en los que se especifica serán del mismo tipo solamente.

PrintThis<string> ("a","b", "c", int k,int d) // explicitly specifying the type when you call the method. 

así que por todos los medios solo especificamos que está fuertemente tipado.

0

¡Prefiero estar interesado en saber la pregunta que hizo o la respuesta que me dio justo ANTES de que esta pregunta fuera hecha por usted!

En general, el entrevistador dispara estas preguntas (extrañas/vagas) si el entrevistado muestra incomodidad en algún tema o si da alguna respuesta errática. Eso obliga al entrevistador a tomar al entrevistado mediante preguntas cruzadas o haciendo preguntas sorprendentes.

Cuestiones relacionadas