La temida prueba de entrevista de programación C #: ¿algún consejo? [cerrado]

21

Tengo un posible trabajo de desarrollo de C #, pero antes de poder entrevistarme, necesito pasar un examen con la agencia de empleo.

Ahora, aunque soy un desarrollador senior con más de 10 años de experiencia en programación y más de 3 de estos años con c #, realmente no estoy deseando que llegue esta prueba y creo que hay una buena posibilidad de que falle.

En mi experiencia, estas pruebas son impredecibles y te preguntan cosas que rara vez usas en situaciones laborales cotidianas.

Necesito su mejor consejo sobre lo que debería revisar, por ejemplo, un buen libro o sitio web. Tengo menos de 1 semana para prepararme y es esencial que pase esto.

Gracias por adelantado.

EDITAR: Para justificar aún más mis preocupaciones de escribir tales pruebas, considere la siguiente pregunta:

12) Un evento es:

   a) The result of a users action - correct answer
   b) The esult of a party
   c) code to force users action

La respuesta correcta según la prueba es A, pero dado que he estado haciendo desarrollo SOA (a menudo cuando los eventos pueden basarse en eventos del sistema (no acciones del usuario), estoy 100% seguro de que un evento no tiene que ser impulsado por una acción del usuario. Esta también fue una pregunta de C # (no una pregunta de ASP.net). Según tengo entendido, realmente no pude encontrar una respuesta correcta, pero B parece ser la mejor de todas (si la definición de la parte es: alguna entidad que puede desencadenar un evento. Este tipo de preguntas me asustan.

JL01
fuente
44
Si es un "desarrollador senior" y ha estado usando C # día a día durante tres años, debería estar bien. Estas pruebas normalmente están destinadas a eliminar a aquellas personas que no conocen el idioma o sus usos. Si lo ha estado usando día a día durante 3 años, entonces debería haberse encontrado con casi todos los escollos en una prueba determinada.
George Stocker el
11
@GeorgeStocker: en realidad, tuve que tomar algunas de estas pruebas (dirigidas más al marco completo de .NET) y fueron muy detalladas. Los encontré bastante difíciles porque primero entraron en áreas del marco (como WCF) donde simplemente no tenía mucha experiencia, además de que tenía que saber cosas como qué opción de configuración usaría en un archivo .config para activar alguna oscura opción Era algo que rara vez molestaría memorizar porque probablemente solo lo usaría una vez y lo buscaría en Google. La experiencia me pareció un poco frustrante.
Scott Whitlock, el
77
Ah, y una de las preguntas que me equivoqué fue: "en VB.NET, ¿cuál es la palabra clave utilizada para declarar una estructura? A) struct b) Struct c) estructura d) Estructura". Estaba pensando "¡Intellisense lo sabe así que no tengo que hacerlo!" Ahora, por supuesto, la respuesta está grabada en mi memoria.
Scott Whitlock, el
17
@ScottWhitlock: No hay forma de que pueda prepararse adecuadamente para una entrevista mal diseñada. En algún momento, debe confiar en que son lo suficientemente competentes como para preguntar y juzgar en función de las áreas en las que realmente afirma especializarse, así como de alguna capacidad conceptual. Si no lo son, entonces de todos modos probablemente pasaría un tiempo miserable trabajando para ellos.
Aaronaught
2
¿Es esta una prueba de lenguaje C # o una prueba de .NET Framework?
Hormigas el

Respuestas:

24

Aunque algo viejo, tal vez esta publicación de blog sea útil para usted: lo que los grandes desarrolladores de .NET deben saber (más preguntas de la entrevista de .NET)

Todos los que escriben código

  • ¿Describe la diferencia entre un hilo y un proceso?
  • ¿Qué es un servicio de Windows y cómo difiere su ciclo de vida de un EXE "estándar"?
  • ¿Cuál es la cantidad máxima de memoria que cualquier proceso individual en Windows puede abordar? ¿Es esto diferente de la memoria virtual máxima para el sistema? ¿Cómo afectaría esto al diseño de un sistema?
  • ¿Cuál es la diferencia entre un EXE y un DLL?
  • ¿Qué es la escritura fuerte frente a la escritura débil? ¿Cuál es el preferido? ¿Por qué?
  • El producto de Corillian es un "contenedor de componentes". Nombre al menos 3 contenedores de componentes que se envían ahora con la familia de servidores de Windows.
  • ¿Qué es un PID? ¿Cómo es útil al solucionar problemas de un sistema?
  • ¿Cuántos procesos pueden escuchar en un solo puerto TCP / IP?
  • ¿Qué es el GAC? ¿Qué problema soluciona?

Desarrollador .NET de nivel medio

  • Describa la diferencia entre programación orientada a interfaz, orientada a objetos y orientada a aspectos.
  • Describa qué es una interfaz y cómo es diferente de una clase.
  • ¿Qué es la reflexión?
  • ¿Cuál es la diferencia entre los servicios web XML que usan ASMX y .NET Remoting usando SOAP?
  • ¿El sistema de tipos está representado por XmlSchema y el CLS isomorfo?
  • Conceptualmente, ¿cuál es la diferencia entre la unión temprana y la unión tardía?
  • ¿Está usando Assembly.Load una referencia estática o una referencia dinámica?
  • ¿Cuándo sería apropiado usar Assembly.LoadFrom o Assembly.LoadFile?
  • ¿Qué es un nombre calificado de ensamblaje? ¿Es un nombre de archivo? ¿Como es diferente?
  • ¿Es esto válido? Assembly.Load ("foo.dll");
  • ¿En qué se diferencia un ensamblado con un nombre fuerte de uno que no tiene un nombre fuerte?
  • ¿Puede DateTimes ser nulo?
  • ¿Qué es el JIT? ¿Qué es el NGEN? ¿Cuáles son las limitaciones y los beneficios de cada uno?
  • ¿Cómo gestiona el recolector de basura generacional en .NET CLR la vida útil de los objetos? ¿Qué es la finalización no determinista?
  • ¿Cuál es la diferencia entre Finalize () y Dispose ()?
  • ¿Cómo es útil el patrón using ()? ¿Qué es IDisposable? ¿Cómo apoya la finalización determinista?
  • ¿Qué hace esta útil línea de comando? lista de tareas / m "mscor *"
  • ¿Cuál es la diferencia entre in-proc y out-of-proc?
  • ¿Qué tecnología permite la comunicación fuera de proceso en .NET?
  • Cuando ejecuta un componente dentro de ASP.NET, ¿en qué proceso se ejecuta en Windows XP? Windows 2000? Windows 2003?

Desarrolladores Senior / Arquitectos

  • ¿Qué tiene de malo una línea como esta? DateTime.Parse (myString);
  • ¿Qué son los PDB? ¿Dónde deben ubicarse para que la depuración funcione?
  • ¿Qué es la complejidad ciclomática y por qué es importante?
  • Escriba un bloqueo estándar () más "doble verificación" para crear una sección crítica alrededor de un acceso variable.
  • ¿Qué es FullTrust? ¿Los ensamblajes GAC tienen FullTrust?
  • ¿Qué beneficio recibe su código si lo decora con atributos que exigen permisos de seguridad específicos?
  • Que hace esto? gacutil / l | encontrar / i "Corillian"
  • Que hace esto? sn -t foo.dll
  • ¿Qué puertos deben estar abiertos para DCOM a través de un firewall? ¿Cuál es el propósito del puerto 135?
  • Contraste OOP y SOA. ¿Cuáles son los principios de cada uno?
  • ¿Cómo funciona el XmlSerializer? ¿Qué permisos de ACL requiere un proceso que lo usa?
  • ¿Por qué la captura (excepción) casi siempre es una mala idea?
  • ¿Cuál es la diferencia entre Debug.Write y Trace.Write? ¿Cuándo se debe usar cada uno?
  • ¿Cuál es la diferencia entre una compilación de depuración y lanzamiento? ¿Hay una diferencia de velocidad significativa? ¿Por qué o por qué no?
  • ¿JITting ocurre por ensamblaje o por método? ¿Cómo afecta esto al conjunto de trabajo?
  • ¿Contrastar el uso de una clase base abstracta con una interfaz?
  • ¿Cuál es la diferencia entre a.Equals (b) y a == b?
  • En el contexto de una comparación, ¿qué es la identidad del objeto versus la equivalencia del objeto?
  • ¿Cómo se haría una copia profunda en .NET?
  • Explicar el pensamiento actual sobre IClonable.
  • ¿Qué es el boxeo?
  • ¿Es la cadena un tipo de valor o un tipo de referencia?
  • ¿Cuál es el significado del patrón "PropertySpecified" utilizado por XmlSerializer? ¿Qué problema intenta resolver?
  • ¿Por qué nuestros parámetros son una mala idea en .NET? ¿Son ellos?
  • ¿Se pueden colocar atributos en parámetros específicos de un método? ¿Por qué es útil esto?

Desarrolladores de componentes de C #

  • Yuxtaponer el uso de anulación con nuevo. ¿Qué es el sombreado?
  • Explicar el uso de virtual, sellado, anulación y resumen.
  • Explique la importancia y el uso de cada componente de esta cadena: Foo.Bar, Version = 2.0.205.0, Culture = neutral, PublicKeyToken = 593777ae2d274679d
  • Explicar las diferencias entre público, protegido, privado e interno.
  • ¿Qué beneficio obtiene al usar un ensamblaje de interoperabilidad primario (PIA)?
  • ¿Por qué mecanismo NUnit sabe qué métodos probar?
  • ¿Cuál es la diferencia entre: catch (Exception e) {throw e;} y catch (Exception e) {throw;}
  • ¿Cuál es la diferencia entre typeof (foo) y myFoo.GetType ()?
  • Explique lo que sucede en el primer constructor: public class c {public c (string a): this () {;}; public c () {;}} ¿Cómo es útil esta construcción?
  • ¿Qué es esto ? ¿Se puede usar esto dentro de un método estático?

Desarrolladores ASP.NET (UI)

  • Describa cómo un POST de formulario basado en navegador se convierte en un evento del lado del servidor como Button1_OnClick ...
Konamiman
fuente
1
Todas las respuestas enumeradas aquí fueron útiles y buenas, sin embargo, revisé todas las preguntas de su lista (me tomó 4 horas), escribí una prueba de muestra en línea y la pasé. Animaría a cualquier desarrollador de .net a que revise esas preguntas al menos una vez y se asegure de que comprende las respuestas, y asegúrese de obtener la segunda y la tercera opinión. Muchas personas responden las preguntas (que se encuentran en Google), pero muchas de las respuestas no son concisas, a veces incluso incorrectas. Así que ten cuidado. Verifique las respuestas que encuentre.
JL01
2
Buen enlace! Me sorprende cuántos de los que conocía. this.Ego ++;
Justin Self
@justnS: Lo mismo me sucedió cuando descubrí la publicación. :-)
Konamiman
Fui a una entrevista hace un par de semanas, y me lo imprimieron para que respondiera. que para mí, reflexionó sobre el entrevistador.
dbones
1
¿Cuándo agregarás las respuestas? ;)
Thijs van Dien
10

Solo vete, Renee

He tomado pruebas como esta un par de veces. Ahora solo me alejo. Las pruebas miden los bits más triviales de conocimiento de programación. ¿Quieres trabajar para alguien que piense que estas pruebas son una buena forma de evaluar a los programadores? Yo no.

Kevin Cline
fuente
1
Son una buena manera como estándar mínimo , es decir, una condición necesaria , pero no una condición suficiente .
Sklivvz
44
@Sklivvz: tal vez, si fueran buenas pruebas. La mayoría de las pruebas comerciales son ejercicios tontos en trivia: "¿Qué clase usarías para leer un archivo de texto?" Un buen desarrollador puede hablar durante diez minutos sobre las diferencias entre las secuencias de bytes y las secuencias de caracteres, y los detalles de las codificaciones UTF, y aún así perder esta pregunta. Cuando la información es fácilmente accesible, no tiene sentido memorizarla.
Kevin Cline
2
Estoy de acuerdo con Kevin Hay demasiada información irrelevante para su trabajo que puede estar en las pruebas. Es por eso que inventaron Google e IntelliSense: cuando necesitamos respuestas, las encontramos, según la necesidad de usarlas
ADNow
2
Depende de la prueba. Hay pruebas de las que me alejaría, pero luego hay pruebas que son buenas. Tenemos una simple prueba de 3 preguntas de programación. La primera pregunta es escribir una aplicación simple de C #. El segundo pide escribir 5 consultas SQL simples. La tercera es una pregunta que no se puede responder sin que el examinado solicite más información. La primera y segunda preguntas descartan programadores completamente incompetentes. Eso nos ahorra tiempo de entrevistar a personas que no valen la pena. La tercera pregunta nos da una idea de cómo un programador aborda la resolución de problemas. Cosas muy valiosas.
Pete
8

Estuve en una situación como la tuya el año pasado. Había pasado tanto tiempo que estuve en una entrevista que temía. Hice una búsqueda de preguntas de la entrevista de C # y encontré varios sitios (muchos de ellos enumerados en los otros carteles) y los estudié. Para mi sorpresa, el 90% de las entrevistas fueron de esos mismos sitios, textualmente . Supongo que los entrevistadores también usan Google para encontrar preguntas :)

Se cayó el sistema
fuente
6

Estoy totalmente de acuerdo contigo en:

Las pruebas son impredecibles y le preguntan cosas que rara vez usa en situaciones de trabajo cotidianas.

... pero son parte del proceso, por lo que no hay nada que podamos hacer al respecto. Soy algo así como usted con aproximadamente 10 años de experiencia, de los cuales aproximadamente 5 en .NET C #. Encontré estos que estos dos libros MUY buenos:

C # en profundidad

C # en pocas palabras

debe cubrir todo lo que necesita saber sobre C #. El resto son sus propias habilidades y habilidades que adquiere en tecnologías específicas basadas en C # como ASP.NET, etc.

TheBoyan
fuente
3
pero son parte del proceso, por lo que no hay nada que podamos hacer al respecto. ¿Qué tal abogar por no tener pruebas de programación tontas en su lugar de trabajo como parte del proceso de contratación? Los procesos de contratación deben mostrar su competencia, no que pueda memorizar trivialidades oscuras.
joshin4colours 03 de
@ joshin4colours - es por eso que creo en la buena conversación larga en la entrevista ... sin embargo, son buenos para la eliminación
TheBoyan
2
De hecho, entrevisté al autor de uno de los libros y lo
rechacé
3

Estas pruebas se han convertido cada vez más en parte de los solicitantes de preselección por parte de firmas profesionales de reclutamiento y algunas compañías. Están diseñados para dar a los entrevistadores no técnicos una forma de evaluar las habilidades técnicas de alguien. Sin embargo, son esencialmente pruebas de trivia que no dicen nada significativo sobre las habilidades de un programador que no sea eliminar a aquellos que realmente no saben nada. Desafortunadamente, algunas compañías / reclutadores ponen demasiado peso en estos resultados.

La forma de estudiar para ellos es encontrar sitios de preguntas de entrevistas, sitios legítimos y no aquellos que intentan venderle las respuestas, repletos de anuncios emergentes u otras tonterías, y concentrarse en las respuestas. De esa manera obtendrás un puntaje decente y saltarás el obstáculo. Si la compañía está poniendo demasiado peso en estos resultados, probablemente no sean la mejor compañía para trabajar de todos modos.

jfrankcarr
fuente
2

Si se trata de una prueba de agencia de empleo, no debería ser tan difícil. No es que tengan especialistas en idiomas para desarrollar la prueba. Lo más probable es que todo lo que hagan sea copiar / pegar preguntas de un sitio web.

Siempre que sepa cómo funciona el marco en general, y los espacios de nombres / bibliotecas más comunes para las tareas, qué cosas debe usar para ciertas tareas, debería ser bueno.

silverCORE
fuente
2

Con las pruebas de entrevista, mucho depende de la cultura corporativa y del creador de la prueba. Si tienen la intención de hacer preguntas oscuras y tratar de hacerte tropezar, pasaría a otra empresa o agencia que esté más interesada en personas de alta calidad que sean inteligentes y puedan hacer el trabajo.

Dicho esto, a medida que usa c # en su trabajo diario, concentraría sus esfuerzos de resolución de problemas y lógica y menos en el lado del aprendizaje de libros.

Project Euler es un gran lugar para practicar y perfeccionar habilidades que muy probablemente se han vuelto un poco oxidadas.

SetiSeeker
fuente