ventas una trabajo respuestas recursos qué que programador principales preguntas periodistica para net humanos escolar entrevista ejemplos desarrollador curso banco .net

.net - una - Preguntas de la entrevista: ¿Es difícil de entender el ID?



programador.net que es (7)

He estado entrevistando a muchos programadores .NET últimamente y no he encontrado uno que sepa qué IDisposable es o para qué se utiliza. ¿Es realmente irrazonable esperar que alguien con 4-6 años de experiencia lo sepa?


¡Acabo de tener una entrevista de trabajo hoy, desearía que me hubieran hecho una pregunta como esa! Todos los programadores deben saber acerca de IDisposable. Podría decirse que es la interfaz más importante de entender debido a la declaración de using .

Me parece impensable que un programador con 4-6 años de experiencia no sepa sobre esto.



Estoy bastante sorprendido de que el conocimiento de IDisposable sea demasiado bajo. Siempre que tenga un recurso que deba cerrarse y no use la instrucción using, debe usar IDisposable.


No es irrazonable esperar que alguien entienda IDisposable , pero también me he dado cuenta de que aquí, en el Desbordamiento de pila, las preguntas de IDisposable -supuestamente son superadas por las preguntas de Linq en cuanto a la frecuencia de ocurrencia. Es obvio que muy pocos programadores entienden realmente todo lo que deberían sobre esto, y honestamente no estoy seguro de por qué; no puede ser que todos estén descalificados, creo que es solo que hay muy poca educación al respecto.

Para aquellos de nosotros que venimos de Delphi o C ++ y hemos tenido que hacer una administración manual de recursos en el pasado, esto es muy obvio, pero para las personas que aprendieron en Java o Python o incluso en VB, no tanto. Y nunca recibirá una advertencia del compilador si olvida Dispose un objeto; Si usted es autodidacta en lo que respecta a la programación .NET, podría pasar años sin darse cuenta de que en realidad es un problema.

Así que con eso en mente, no fallaría de inmediato a alguien en una entrevista si no entendieran el significado y el uso correcto de IDisposable , pero lo consideraría una bandera roja, como tantas otras cosas. No es tan malo como (por ejemplo) no saber cómo atravesar una estructura de árbol o no poder escribir FizzBuzz.

Creo que es una buena pregunta, y si alguien nunca hubiera oído hablar de ella, probablemente daría una explicación muy rápida y luego haría una pregunta de seguimiento: " IDisposable recolector de basura .NET solo puede administrar la memoria . IDisposable permite libere explícitamente otros tipos de recursos. ¿Puede pensar en algún recurso que caiga en esta categoría? " Si tampoco pueden responder a esa pregunta, entonces me preocuparía, ya que indicaría ignorancia no solo de una interfaz específica en .NET Framework sino de la administración de recursos en general. Incluso si te enseñaron Java en la escuela, debes comprender que debes cerrar los archivos y las conexiones que abres.

Otra IDisposable de IDisposable , tal vez aún más grande, es si alguien dice que debe colocar todos los IDisposable en un bloque de using , pero no puede explicar por qué o enumerar excepciones a la regla (es decir, métodos de fábrica). Eso es peor para mí porque podría ser un indicio de tendencias en la programación del culto de la carga.

Así que sigue haciendo la pregunta, pero tal vez modera tus respuestas. No termine la entrevista inmediatamente si alguien no puede contestarla. Tenga en cuenta que un programador .NET nunca tiene que aprender esto para escribir un software que funcione (aunque tenga errores).


Sí, es irrazonable. Pocos programadores que tienen un nivel universitario de + 3 a 5 años (el candidato siempre preferido) han escrito código Win32 puro para saber cómo es un "recurso no administrado". Normalmente, nunca aparece en sus años universitarios, Java es el lenguaje de enseñanza hoy en día, un lenguaje que no tiene el mismo patrón.

Hay un gran número de programadores .NET que han escrito código .NET durante años y han enviado código de producción sin desechar nada. Recomiendo otras preguntas de la entrevista:

  • ¿Por qué Java no necesita el patrón IDisponible?
  • ¿Por qué los programadores .NET se salen con la suya sin deshacerse de nada?

Eso prueba para el insight en lugar de la programación de memoria. ¿Quizás más apropiado para la segunda entrevista?


Yo no lo creo. Si no entiende qué es IDisponible, ¿cómo puede entender adecuadamente cuándo usar una declaración de using ?

Supongo que mucha gente sabe poner cierto código en el uso de declaraciones, pero no sabe por qué es bastante aterrador.


No, lo siento. Si no saben IDisposable , no entienden la vida útil de los objetos en .NET, por lo que es seguro asumir que no tienen idea de cómo funciona GC . Para alguien que afirma tener una experiencia de 4 a 6 años, es un desarrollador de "arrastrar y soltar" o un mentiroso. De cualquier manera, no se contrata.