246 votos

Preguntas toda buena desarrollador NET debe ser capaz de responder?

Mi empresa está a punto de contratar a .NET desarrolladores. Trabajamos en una variedad de .NET plataformas: ASP.NET, Compact Framework, Windowsforms, los Servicios Web. Me gustaría compilar una lista/catálogo de buenas preguntas, una especie de estándar mínimo para ver si los solicitantes son experimentados. Así, mi pregunta es:

¿Qué preguntas crees que debe un buen .NET programador de ser capaz de responder?

También me gustaría ver como lista de comprobación para mí mismo, con el fin de ver mis propios déficits son (hay muchos...).

alt text

*ACTUALIZACIÓN: quiero dejar en claro que no estamos de pruebas sólo para .NET conocimiento, y que el problema de la resolución de las capacidades y habilidades de programación generales son incluso más importantes para nosotros.

171voto

Juliet Puntos 40758

Las preguntas básicas son:

Creo que por lo general ayuda a pedir a sus candidatos para completar un sencillo de codificación de ejercicio, tales como:

  • Escribir su propia lista enlazada de la clase sin el uso de la incorporada en las clases.
  • Escribir su propia clase hashtable sin el uso de la incorporada en las clases.
  • Escribir una clase que representa un árbol binario. Escribir un método que recorre todos los nodos del árbol.
  • Escribir un método para realizar una búsqueda binaria en un conjunto sin el uso de métodos integrados.
  • Dibujar un esquema de base de datos para un blog. Cada usuario sólo dispone de un blog, cada blog tiene muchas categorías, cada categoría tiene muchos puestos, y cada mensaje puede pertenecer a más de una categoría. Pregunte a su solicitante para escribir consultas para extracción de información específica.

Luego, busque técnicas específicas saber-cómo:

  • (Gestores de eventos) Crear una clase con un controlador de eventos personalizado, crear otra clase que se engancha a la costumbre de controlador de eventos.
  • (XML) de la Carga de un documento XML y seleccionar todos los nodos con las propiedades x, y, y z.
  • (Programación funcional) Crear una función que acepta otra función como parámetro. Un Mapa o en función de Plegado funciona muy bien para esto.
  • (Reflexión) Escribir una función que determina si una clase tiene un atributo en particular.
  • (Regex) Escribir una expresión regular que elimina todas las etiquetas de bloque de HTML.

Ninguno de estos son particularmente difíciles de preguntas para un experto programador de C# para responder, y se debe dar una buena idea de sus candidatos fortalezas particulares. Puede que también desee trabajar en un par de preguntas/ejemplo de código que hacen uso de patrones de diseño específicos.

[Editar aclaración]:

Parece que muchas personas no entienden por qué les pediría a estos tipos de preguntas. Déjame tocar en un par de pueblos de comentarios (no estoy citando directamente, pero parafraseando):


P: ¿Cuándo fue la última vez que alguien utiliza volátiles o referencias débiles?

R: Cuando doy entrevistas técnicas, miro para ver si una persona entiende el alto nivel y características de bajo nivel de .NET. Los volátiles y referencias débiles son dos características de bajo nivel proporcionados por .NET -- incluso si estas características no se utiliza a menudo en la práctica, las respuestas a estas preguntas son muy reveladoras:

  • Una buena comprensión de los volátiles demuestra que una persona entiende cómo las optimizaciones del compilador cambiar la corrección de código, cómo los hilos de mantener copias locales de un estado compartido que puede estar fuera de sincronización en cualquier momento dado, y es mínimamente conscientes de algunas de las complejidades de multiproceso código.

  • Una buena comprensión de las referencias débiles demuestra que una persona sabe sobre los detalles íntimos de la recolector de elementos no utilizados y cómo se decide el momento para liberar memoria. Seguro, usted podría pedir a los candidatos "¿cómo un recolector de basura de trabajo", pero preguntando acerca de las referencias débiles obtiene una mucho mejor, más atenta respuesta.

.NET es bastante un lenguaje abstracto, pero la estrella de los desarrolladores, casi siempre tienen una profunda comprensión de la CLR y los detalles de bajo nivel de .NET del tiempo de ejecución.


P: ¿por Qué alguien necesita para implementar su propia tabla hash o lista enlazada?

R: yo no soy lo que implica que el Diccionario de la clase es inferior o que la gente debe rodar su propia tabla de hashing. Esta es la pregunta básica que se comprueba si una persona tiene una mínima comprensión de datastructures. Eso es lo que estas preguntas de prueba para: mínimo entendimiento.

Aprenda sobre estas tablas hash y listas enlazadas en el primer día de Estructuras de Datos 101. Si alguien no puede escribir en una tabla hash o una lista enlazada desde cero, entonces ellos tienen una enorme brecha en su conocimiento técnico.


P: ¿por Qué estas preguntas tan crud orientado?

R: Debido a que el título de este hilo es "las preguntas que todo buen .NET desarrollador debería conocer". Cada .NET el promotor comienza su carrera escribiendo aplicaciones crud, y el 90% de todas las aplicaciones de desarrollo de las personas que hacemos en la vida es cuestión de la línea de aplicaciones de negocio.

Creo que las preguntas de las pruebas de las personas, el conocimiento de la línea de negocio de aplicaciones son adecuadas en la mayoría de los casos, a menos que usted está buscando desarrolladores en muy nichos específicos, tales como el compilador de desarrollo del juego en el desarrollo de motores, teorema demuestra, procesamiento de imágenes, etc.

135voto

splattne Puntos 48126

He encontrado estas listas de Scott Hanselman's blog:

Aquí está lo que creo que son las preguntas más importantes de estos puestos se dividen en categorías. He editado y re-acomodando. Afortunadamente, para la mayoría de estas preguntas ya hay una buena respuesta en Stack Overflow. Siga los enlaces (voy a actualizar todos ellos ASAP).

Independiente de la plataforma .NET preguntas

ASP.NET

94voto

Brian MacKay Puntos 10483

Esto podría no ser lo que usted quiere oír, pero yo recomendaría que no se centran en estrecha tecnologías, pero en general, la programación y la resolución de problemas. Sólido los desarrolladores pueden aprender todo lo que queramos rápidamente.

Yo, por ejemplo, no soy un Compact Framework hombre, por lo que puede fallar a su cita si usted fue esa dirección. Pero si me necesarios para el uso que yo podía hacer un poco de investigación y de saltar a la derecha.

Joel del libro, Inteligente y se Pone a Hacer Cosas, tiene un gran consejo para la contratación de desarrolladores, y hay grandes jugosa secciones sobre el tipo de preguntas a formular. Se los recomiendo.

66voto

Jon Skeet Puntos 692016

Yo creo que si me estaban entrevistando a alguien que había LINQ experiencia, me gustaría posiblemente sólo pida que expliquen LINQ. Si se puede explicar la ejecución diferida, la transmisión, el IEnumerable/interfaces IEnumerator, foreach, iterator bloques, árboles de expresión (para puntos de bonificación, de todos modos), a continuación, es probable que pueda lidiar con el resto. (Es cierto que podrían ser "aceptar" a los desarrolladores y no de "obtener" LINQ sin embargo - estoy realmente pensando en el caso donde se ha reclamado a saber lo suficiente de LINQ para hacer una pregunta justa.)

En el pasado he preguntado a varias de las preguntas ya mencionados, y algunos otros:

  • La diferencia entre la referencia y el valor de los tipos de
  • Paso por referencia vs paso por valor
  • IDisposable y los finalizadores
  • Cadenas, la inmutabilidad, la codificación de caracteres
  • De punto flotante
  • Delegados
  • Los medicamentos genéricos
  • Tipos que aceptan valores null

42voto

ChrisA Puntos 2991

Estoy con los chicos que están en busca de habilidades de resolución de problemas, más que el tipo de cosa que usted puede buscar y memorizar de '101 parte superior .NET entrevista Qs y Como".

Sólo para citar a mí mismo como ejemplo, tiendo a " conocer " las cosas que necesito para utilizar de día a día. Tiendo a olvidar (y que más tarde volver a mirar hacia arriba) cosas que uso en raras ocasiones.

Si usted quería hacerme tropezar en una entrevista, sería muy fácil.

Sin embargo, he diseñado y codificado por gran parte de la infraestructura para un sistema que utiliza Negocios idénticos Objetos y capas de Datos para su WinForms y ASP.NET encarnaciones, y nuestra base de código es robusto y reutilizable suficiente para nosotros ser capaces de apoyar y desarrollar 20+ configurados versiones del sitio web, así como un creciente número (actualmente 5) de la aplicación de WinForms...

... con un equipo de desarrollo de dos.

Yo solía trabajar en un equipo como en tecnología, y mi trabajo involucrado un buen montón de reclutamiento y entrevistas. Mi más espectaculares error fue contratar a un tipo que sabía más acerca de la tecnología que estamos usando de todo el resto de nosotros juntos, incluyéndome a mí, y he considerado a mí mismo como un experto. Él lo sabía todo...

... excepto cómo escribir código que cumplían con los requisitos, o que pudiera ser entendido por cualquier persona, excepto a sí mismo. Cuando finalmente me persuadió de que el PM no renovar su contrato, cada cosa que escribió tuvo que ser reescrito.

La estructura de sus entrevistas con prudencia...

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X