He estado entrevistando a muchos programadores .NET últimamente y no he conocido uno que sepa qué IDisposable es o para qué se usa. ¿Es realmente irrazonable esperar que alguien con 4-6 años de experiencia lo sepa?Preguntas de la entrevista: ¿Es difícil de entender?
Respuesta
No, lo siento. Si no conocen IDisposable
, no entienden la duración del objeto en .NET, por lo que es seguro suponer que no tienen idea de cómo funciona GC
. Para alguien que dice tener entre 4 y 6 años de experiencia, es un desarrollador de "arrastrar y soltar" o un mentiroso. De cualquier manera, no contratar.
Bueno, podría tener la misma experiencia de primer año 4-6 veces :) – kemiller2002
@Kevin: le pegaste al clavo en la cabeza. Muchos programadores pasan muchos años sin aprender nada más de lo que necesitan saber para escribir un software que funcione (pero mal escrito). –
-1, esta respuesta solo asume que si el desarrollador no sabe que es IDisponible, no puede ser productivo – RollRoll
No lo creo. Si no comprende qué IDisposable es, ¿cómo puede comprender adecuadamente cuándo utilizar una declaración using
?
Mi conjetura sería que mucha gente sabe que poner cierto código en el uso de declaraciones, pero no sé por qué lo cual es bastante miedo.
La programación de culto a la carga sucede en todas partes. En realidad, no debería sorprendernos que ocurra con .NET también. – Oded
Oh, no me malinterpreten, no me sorprende. Simplemente se pone un poco angustioso a veces cuando miras el código y tienes que preguntarte: "¿Realmente querían hacer esto, o se hizo esto, porque no sabían que no lo hacían?" – kemiller2002
@Oded, tuve que jajarte: no mucha gente sabe lo que es un culto a la carga ... – code4life
estoy bastante sorprendido de que el conocimiento de IDisposable es demasiado baja. Siempre que tenga un recurso que deba cerrarse y no use la instrucción using, debe usar IDisposable.
En realidad, debe usar una clase que * implementa * IDisposable. Y como la mayoría de los desechables que he visto o usado se disponen en su finalizador, es posible olvidarse de tirarlos(), nunca notarlos y no tener ningún problema. – cHao
acabar de tener una entrevista de trabajo hoy deseo me había pedido una pregunta como esa! Todos los programadores deben saber sobre IDisposable. Podría decirse que es la interfaz más importante para entender debido a la declaración using
.
Me resulta impensable que un programador con 4-6 años de experiencia no sabe nada de esto.
Yo esperaría que los desarrolladores con ese nivel de experiencia para saber IDisposable. Sin embargo, es un tema complejo, si desea profundizar en todos los detalles. Joe Duffy wrote a rather elaborate post on the subject some years ago. No esperaría que todos los desarrolladores puedan cubrir todos los detalles sangrientos en esa publicación.
Solo estoy hablando de un entendimiento básico, estoy de acuerdo en que no necesariamente deberías poder hablar sobre la publicación de Duffy en el contexto de una entrevista. –
Sí, no es razonable. Pocos programadores de nivel universitario + 3 a 5 años (el candidato preferido) han escrito código Win32 puro para saber cómo es un "recurso no administrado". Normalmente no aparece en sus años universitarios, Java es el idioma de enseñanza en la actualidad, un idioma 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 alguna vez eliminando nada. Recomendaría otras preguntas de la entrevista:
- ¿Por qué Java no necesita el patrón IDisposable?
- ¿Por qué los programadores de .NET se salen con la suya sin deshacerse nunca de nada?
que las pruebas de visión en lugar de la programación de memoria. ¿Quizás más apropiado para la segunda entrevista?
Otorgo que un desarrollador cuya experiencia primaria provenga de otros idiomas no se haya topado con IDisposable, pero eso también significa que ** no ** (todavía) es un desarrollador .NET competente. Si eso se debe usar o no como criterios de contratación es un tema totalmente diferente. Cualquier persona que afirme tener "años" de experiencia con .NET que no entiende los conceptos básicos de la recolección de basura, especialmente cuando solicita trabajos de .NET, tiene una comprensión muy superficial de .NET. Por lo tanto, exageran su experiencia o probablemente no sea el desarrollador de calidad que busca Jonathan. – hemp
Yo contrato candidatos que tienen el sentido del caballo innato para saber cómo traducir un problema de la vida real en un algoritmo. El conocimiento de la contabilidad nunca es un problema, fácilmente cubierto por una revisión del código. El sentido y la experiencia del caballo están débilmente conectados. –
Un programador de .NET que nunca ha usado dispose también sería un programador que nunca se ha ocupado de la base de datos o el acceso a archivos. Ambos son definitivamente sin contrato donde trabajo. –
No es razonable esperar que alguien para entender IDisposable
, pero también me he dado cuenta de que aquí en desbordamiento de pila, IDisposable
preguntas con temas de sólo son superadas por las preguntas de Linq en términos de su frecuencia de aparición. Es obvio que muy pocos programadores realmente entienden todo lo que deberían sobre esto, y honestamente no estoy seguro de por qué; que no puede ser que son todos sin reservas, creo que es sólo que hay muy poca educación sobre el mismo.
Para aquellos de nosotros que vinieron de Delphi o C++ y han tenido que hacer la gestión de recursos manual en el pasado, esto es cegador obvio, pero para las personas que aprendieron en Java o Python o incluso VB, no tanto. Y nunca recibirá una advertencia del compilador si olvida Dispose
un objeto; si eres autodidacta en lo que respecta a la programación de .NET, podrías pasar años sin darte cuenta de que realmente es un problema.
Así que con esto en mente, yo no inmediatamente dejar a alguien en una entrevista si no entienden el significado y el uso adecuado de IDisposable
, pero yo lo consideraría una señal de alerta, 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 antes la hubiera escuchado, probablemente le daría una explicación muy rápida y luego haría una pregunta de seguimiento: ".NET Garbage Collector solo puede administrar memory. IDisposable
le permite liberar explícitamente otros tipos de recursos. ¿Puede pensar en algún recurso que caiga dentro de esta categoría? " Si no pueden responder a esa pregunta tampoco, luego Me preocuparía, porque indicaría ignorancia no solo de una interfaz específica en .NET Framework, sino de la administración de recursos en general. Incluso si le enseñaron Java en la escuela, debe comprender que debe cerrar los archivos y las conexiones que abre.
Otra bandera roja, quizás incluso más grande, es si alguien dice que necesita poner cada IDisposable
en un bloque pero no puede explicar por qué ni enumerar ninguna excepción a la regla (es decir, métodos de fábrica). Eso es peor para mí porque podría ser una indicación de las tendencias de programación de culto de carga.
Así que sigue haciendo la pregunta, pero quizás atempere tus respuestas. No finalice la entrevista de inmediato si alguien no puede responderla. Considere que un programador de .NET en realidad nunca tiene para aprender esto a fin de escribir el software que funciona (aunque con errores).
- 1. ¿Qué preguntas de la entrevista Hibernate preguntas?
- 2. Preguntas de la entrevista MySQL
- 3. ASP.net preguntas de la entrevista
- 4. C preguntas de la entrevista
- 5. GWT preguntas de la entrevista
- 6. C# Potencial Pregunta de entrevista ... ¿Demasiado difícil?
- 7. Preguntas de la entrevista de Lucene
- 8. preguntas de la entrevista de SSAS
- 9. Preguntas de la entrevista: WPF Developer
- 10. Good Architecture Entrevista Preguntas
- 11. Preguntas de entrevista de desarrollador front-end
- 12. Preguntas de la entrevista sobre la Programación CUDA?
- 13. Dar a los candidatos preguntas para la entrevista antes de la entrevista
- 14. Preguntas de la entrevista para desarrolladores de Flash
- 15. Java: preguntas de la entrevista para el probador de software?
- 16. preguntas de la entrevista de TSQL que hace
- 17. Preguntas de la entrevista relacionadas con Hashtable y el diccionario
- 18. Algoritmo/Estructura de datos Preguntas de entrevista de diseño
- 19. difícil de entender print_r/var_dump para el objeto
- 20. ¿Qué es más difícil, sincronizar 2 hilos o 1000 hilos?
- 21. ¿Cuál es el código de C++ más difícil de entender que conoces?
- 22. Entrevista: ¿Qué es la expresión lambda?
- 23. La programación de Clojure GUI es difícil
- 24. ¿Soy el único que encuentra que std :: move es demasiado difícil de entender?
- 25. preguntas de la entrevista en el zócalo de programación y Multi-Threading
- 26. ¿Algún buen recurso para las preguntas de la entrevista de Java?
- 27. Preguntas de la entrevista para el programador de ActionScript 3/Flex
- 28. ¿cuál es la referencia difícil en java?
- 29. pregunta de la entrevista de Microsoft ASM?
- 30. ¿Es difícil personalizar el administrador de Django?
En una nota relacionada, pero ligeramente diferente, a menudo escucho en entrevistas que un candidato describe "el patrón de eliminación". Si bien conozco y he usado el patrón de disposición, me parece que el conocimiento de este no es un indicador útil de la calidad o profundidad de un desarrollador. En parte porque es algo que solo necesitas si estás * implementando * IDisposable (versus * usando * it - juego de palabras intencionado), y en parte porque de todos modos no es un gran patrón. – hemp