9/8/12

Preparando las nuevas certificaciones Microsoft (II): Programming C#



Bien empezaremos por decir que esta es una certificación doble ya que, además de contar como crédito para la certificación "MCSD: Metro Style Apps with C#" es, en si mismo una certificación, "Programming in C# Specialist". Así que interesa sacarlo por partida doble.

Empezaremos con el temario (traducido) tal y como viene en la web de microsoft, luego pasaremos a detallar cada área temática. Debo advertir (como advierte microsoft) que los porcentajes son el peso relativo dentro del examen, cuanto más peso, más preguntas es probable que caigan, no obstante las preguntas tienen un grado de dificultad que también cuenta en la valoración, así podemos tener 15 preguntas de un área con dificultad baja que sumen, por ejemplo, 150 puntos y podemos tener 4 preguntas con dificultad alta de otro área que sumen lo mismo.

Además, cada área temática incluye las competencias que se muestran, pero no se limitan a ellas, es decir, puede, perfectamente, caer una pregunta que se englobe dentro de un área temática pero que no se muestre en el temario.

El examen consta de cuatro áreas temáticas:

Gestionar el flujo del programa (25%)
Crear y Usar tipos (24%)
Depurar Aplicaciones e Implementar Seguridad (25%)
Implementar Acceso a Datos (26%)


Gestionar el flujo del programa

Este área temática incluye las siguientes subáreas:

  • Implementar el multithreading y procesamiento asincrónico.
    • Uso de la biblioteca de Tareas en Paralelo (ParallelFor, Plinq, Tasks).
    • Crear tareas de continuación.
    • Generar hilos mediante el uso de ThreadPool.
    • Desbloquear la interfaz de usuario.
    • Usar las palabras clave async  y await.
    • Gestionar los datos mediante el uso de las colecciones concurrentes
  • Gestión de múltiples hilos.
    • Sincronizar recursos.
    • Implementar bloqueo.
    • Cancelar una tarea de larga duración.
    • Implementar métodos thread-safe para controlar las condiciones de carrera.
  • Implementar el flujo del programa.
    • Recorrer los elementos de colecciones y matrices.
    • Programar decisiones mediante el uso de sentencias switch, if/then, y otros operadores.
    • Evaluar expresiones
  • Crear e implementar los eventos y las respuestas.
    • Crear controladores de eventos.
    • Suscribirse y darse de baja de los eventos.
    • Uso de los tipos integrados de delegados para crear eventos.
    • Crear delegados.
    • Expresiones lambda.
    • Métodos anónimos
  • Implementar el manejo de excepciones.
    • Manejar los tipos de excepciones (excepciones de SQL, las excepciones de la red de comunicación, las excepciones, las excepciones de la red de tiempo de espera).
    • Tipos capturados (try-catch) vs excepciones de base.
    • Poner en práctica try-catch-finally.
    • Excepciones.
    • Determinar cuando usar rethrow vs throw.
    • Crear excepciones personalizadas

Crear y usar tipos
Este área temática incluye las siguientes subáreas:
  • Crear tipos.
    • Crear los tipos de valor (estructuras, enum).
    • Tipos de referencia.
    • Tipos genéricos.
    • Constructores.
    • Variables estáticas.
    • Métodos.
    • Clases
    • Métodos de extensión.
    • Parámetros opcionales y nombrados.
    • Propiedades indexadas.
    • Sobrecargar y anular métodos.

  • Consumir tipos.
    • Encapsular o desencapsular para conversión entre tipos de valores.
    • Fundir tipos (casting).
    • Convertir los tipos.
    • Manejar tipos dinámicos.
    • Garantizar la interoperabilidad con código no administrado, p.e., claves dinámicas
  • Forzar la encapsulación.
    • Forzar la encapsulación mediante el uso de las propiedades.
    • Mediante el uso de los descriptores de acceso (público, privado, protegido), y
    • Mediante la implementación de interfaces explícitas
  • Crear e implementar una jerarquía de clases.
    • Diseñar e implementar una interfaz.
    • Heredar de una clase base.
    • Crear y poner en práctica las clases basadas en la implementación de IComparable, IDisposable IEnumerable, y las interfaces IUnknown
  • Buscar, ejecutar y crear tipos en tiempo de ejecución mediante la reflexión.
    • Crear y aplicar atributos.
    • Leer los atributos.
    • Generar código en tiempo de ejecución mediante el uso de CodeDom y las expresiones lambda.
    • Usar los tipos del espacio de nombres System.Reflection (Assembly, PropertyInfo, MethodInfo, Type)
  • Gestionar el ciclo de vida del objeto.
    • Manejo de los recursos no administrados.
    • Implementar IDisposable, incluyendo la interacción con finalización.
    • Gestionar IDisposable mediante el uso de la instrucción Using.
    • Gestionar la recolección de basura y la finalización
  • Manipular cadenas.
    • Manipular las cadenas mediante el StringBuilder, StringWriter, y las clases StringReader.
    • Buscar cadenas.
    • Métodos de enumerar cadenas.
    • Formatear cadenas.

Depuración de aplicaciones e implementar la seguridad
Este área temática incluye las siguientes subáreas:
  • Validar las entradas de la aplicación.
    • Validar los datos JSON.
    • Tipos de recolección de datos.
    • Gestionar la integridad de los datos.
    • Evaluar una expresión regular para validar el formato de entrada.
    • Usar las funciones integradas para validar el tipo de datos y el contenido fuera del ámbito.
    • Escritura de expresiones regulares
  • Realizar cifrado simétrico y asimétrico.
    • Elegir un algoritmo de cifrado adecuado.
    • Gestionar y crear certificados.
    • Poner en práctica la gestión de claves y aplicación del espacio de nombres System.Security.
    • Datos de hash.
    • Cifrado de Streams.
  • Gestión de Assemblies.
    • Versión assemblies.
    • Firmar assemblies con nombres seguros.
    • Implementar hospedaje side-by-side.
    • Poner una assembly en la caché global de assemblies.
    • Crear una assembly WinMD
  • Depurar una aplicación.
    • Crear y administrar directivas de compilador.
    • Elegir un adecuado tipo de generación.
    • Gestión de archivos de programación de bases de datos y símbolos.
  • Implementar diagnósticos en una aplicación.
    • Implementación de registro y rastreo(logging y tracing).
    • Aplicaciones de creación de perfiles.
    • Crear y supervisar los contadores de rendimiento.
    • Escribir en el registro de eventos.

Implementar el acceso a datos
Este área temática incluye las siguientes subáreas:
  • Realizar las operaciones de E / S.
    • Leer y escribir archivos y streams.
    • Leer y escribir desde la red mediante el uso de las clases en el espacio de nombres System.Net.
    • Implementar operaciones de E / S asíncronas.
  • Consumir los datos.
    • Recuperar datos de una base de datos.
    • Actualización de datos en una base de datos.
    • Consumir datos JSON y XML.
    • Recuperar los datos mediante el uso de servicios web
  • Consultar y manipular los datos y objetos mediante el uso de LINQ.
    • Datos de la consulta mediante el uso de los operadores (de proyección, se unen, el grupo, toma, vaya, global).
    • Crear consultas basadas en métodos LINQ.
    • Datos de la consulta mediante la sintaxis de la comprensión de la consulta.
    • Seleccionar los datos mediante el uso de tipos anónimos.
    • Forzar la ejecución de una consulta.
    • Leer, filtrar, crear y modificar estructuras de datos mediante el uso de LINQ a XML
  • Serializar y deserializar los datos.
    • Serializar y deserializar los datos mediante el uso de la serialización binaria.
    • Serialización personalizada.
    • Serializador XML.
    • Serializador JSON.
    • Serializador de contrato de datos
  • Guardar los datos y recuperar datos de las colecciones.
    • Almacenar y recuperar datos mediante el uso de diccionarios, matrices, listas, conjuntos, y las colas.
    • Elegir un tipo de colección.
    • Iniciar una colección.
    • Agregar y quitar elementos de una colección.
    • Usar colecciones tipadas frente a no-typadas.
    • Implementar colecciones personalizadas.
    • Implementar interfaces de la colección

Recomiendo como material de preparación los siguientes libros:
C# 5.0 Pocket Reference, Programming C# 5.0 y C# 5.0 in a Nutshell todos de O'Reilly.

Esperando que os sea de ayuda. Mañana veremos el 70-480 que son las bases para HTML, CSS, Javascript.

No hay comentarios:

Publicar un comentario