asp-net-mvc

Preguntas típicas de una entrevista para desarrollador ASP.NET MVC

Todos, o al menos casi todos, hemos pasado por el trámite de la realización de una entrevista de trabajo para comenzar nuestra carrera profesional o incluso para dar un salto de una empresa a otra. En esta entrada os diremos 50 preguntas típicas de una entrevista para desarrollador ASP.NET MVC que pueden ponerte en apuros y que usan a menudo los entrevistadores técnicos en una entrevista para desarrollador ASP.NET MVC con cierta experiencia.

Pondremos las posibles preguntas en grande un justo a continuación una respuesta tipo que puedes darles. Sólo con leer esta entrada un par de veces, conseguirás quedarte con nociones que posiblemente dudaras sobre conceptos relacionados con ASP.NET MVC.

Comenzamos con una pregunta muy típica para cualquier entrevista para desarrollador ASP.NET MVC si el proyecto para el que requieren está desarrollado con este patrón.

1.- ¿Que es ASP.NET MVC?

Es un patrón de desarrollo de aplicaciones de Microsoft muy ligero que separa la arquitectura de esta en tres capas o componentes. El acceso a los datos de una aplicación y su lógica (Modelo), la interfaz de usuario (Vista) y  la lógica de control (Controlador).

2.- ¿Sabes explicar que es el Modelo?

Es la capa de la arquitectura que se encarga de trabajar con todos los datos que maneja la aplicación, así como la persistencia de estos y toda la lógica de negocio del sistema.

3.- ¿Sabes explicar que es la Vista?

Es la capa de la arquitectura que se encarga de la presentación de la aplicación. Se trata de la capa que muestra la interfaz de usuario

4.- ¿Sabes explicar que es el Controlador?

Es a capa que conecta la Vista con el Modelo, haciendo de intermediario entre la información que se pasa de una capa a la otra y transformando la información para que la Vista y el Modelo se entiendan.

5.- ¿Conoces el ciclo de vida de una página en MVC?

Inicialización de la aplicación -> Routing (enrutado) -> Instancia y ejecución del controlador -> LLamada a la acción del controlador -> Instanciar y renderizar la vista.

6.- ¿Qué mejora MVC a Web Forms?

Un desarrollo mucho más limpio al tener todo separado en diferentes capas. Estructuración de una aplicación. Facilidad de creación de pruebas unitarias.  Ayuda a simplificar el código y a reutilizarlo.

7.- ¿Qué puedes decirme acerca de Razor?

Razor es la es el lenguaje de programación que tiene el patrón MVC de renderizar el código HTML. La forma de escribir es igual a HTML, pero su extensión es .cshtml. Una de las principales características de razor el el hecho de poder utilizar código C# en este gracias al símbolo @.

8.- ¿Sabes que es JavaScript no intrusivo?

La metodología por la que no se mezcla código JavaScript en tu página. Esto significa dejar de usas eventos propios de JavaScript como onEvent, onClick, onSubmmit…. Para pasar a utilizar los elementos a partir de su Id o su clase en función de los atributos de datos HTML5.

9.- ¿Para que se usa el viewModel en MVC?

El ViewModel es una clase propia de MVC con propiedades, que se usa para vincularlo a una vista fuertemente tipada. ViewModel puede tener las reglas de validación definidas para sus propiedades usando anotaciones de datos.

10.- ¿Qué conoces del enrutamiento en MVC?

El enrutamiento en MVC es un mecanismo de coincidencia de patrones que se establece en una clase propia que contiene toda la tabla de rutas llamada UrlRoutingModule.

11.- Explica qué es una acción en MVC

Las acciones son los métodos del Controller encargados de devolver los datos a la vista. La acción por defecto de los métodos de los controladores es “ActionResult”

12.- ¿Qué es el enrutamiento de atributos en MVC?

ASP.NET Web API admite este tipo de enrutamiento desde la versión de MVC5. En este tipo de enrutamiento, los atributos se utilizan para definir las rutas. Este tipo de enrutamiento proporciona más control sobre el enrutamiento clásico. El enrutamiento de atributos se puede definir a nivel de controlador o a nivel de acción, como:

[Route(“{action = EstaEsMiAccion}”)]
[Route(“curso/{IdCurso:int:max(1)}”)]

13.- ¿Cómo se activa el enrutamiento de atributos?

Añadiendo un método llamado — “MapMvcAttributeRoutes()” :

public static void RegisterRoutes(RouteCollection routes)
{
routes.MapMvcAttributeRoutes();
}

15.- Qué es la resolución de dependencias

La resolución de dependencias simplifica enormemente  la inyección de dependencias. Ayuda a desacoplar los componentes de la aplicación haciéndola mucho más configurable y fácil de probar.

16.- Para que sirve el fichero bundle.Config

En este fichero de configuración se registran todos los Bundles que son agrupaciones o paquetes de librerías. Algunos paquetes ya son introducidos por defecto como algunos paquetes de jQuery o Modernizr.

17.- Cómo se crea la tabla de enrutamientos en ASP.NET MVC?

Se crea gracias al método RegisterRoutes() que se registra en el Application_Start() del global.asax que es el primer archivo que se carga en la aplicación,

18.- ¿Sabes cuales son los namespaces más importantes de MVC?

Estos son los namespaces más importantes para toda aplicación construida en ASP.NET MVC:

System.Web.Mvc
System.Web.Mvc.Ajax
System.Web.Mvc.Html
System.Web.Mvc.Async

19.- ¿Qués es un ViewData?

El ViewData se utiliza en MVC para mandar los datos del controller a la vista, ya que su duración no sobrepasa al actual request, y que es borrado una ver termina la petición. El ViewData contiene una clave que se almacena en el ViewDataDictionary y que se recupara a partir del encasillamiento.

20.- ¿Cuál es la diferencia entre ViewData y ViewBag en ASP.NET MVC?

El ViewBag es un wraper o una cubierta alrededor de ViewData que permite crear propiedades dinámicas. Una de las ventajas del ViewBag sobre el ViewData es que no tiene necesidad de encasillar sus objetos, sin embargo es más lento de utilizar.

21.- Qué es TempData en MVC

TempData se usa, al igual que ViewData y ViewBag para el movimiento de datos, pero la diferencia de estos era que su duración era de un Request, mientras que TempData se usa para mover datos de dos Request consecutivos. Se utiliza por tanto para traspasar datos en diferentes acciones o controladores.

22.- ¿Para que se usan los helpers de HTML?

Los helpers de HTML en MVC se utilizan para renderizar el código HTML de la vista. Los helpers devuelven un string con el código HTML a mostrar por lo que son mucho más ligeros que los controladores. Los helpers no pueden contener ViewStates y eventos.

23.- ¿Qué son los AJAX Helpers?

Los AJAX Helpers funcionan de un modo similar a los Html Helpres y se utilizan para crear formularios o enlaces que apunten a una acción de un controlador que se carga de manera asíncrona.

24) ¿Qué opciones se pueden configurar en los AJAX Helpers?

  • Confirm: se utiliza para especificar el mensaje del cuadro de confirmación.
  • OnBegin: nombre del método de Javascript que se dará aquí y se llamará antes de la solicitud AJAX.
  • OnComplete: el nombre del método de Javascript se dará aquí y se llamará al acabar de la solicitud de AJAX.
  • OnSuccess: el nombre del método de Javascript se dará aquí y se llamará cuando la solicitud AJAX se completa.
  • OnFailure: el nombre del método Javascript que se dará aquí y se llamará cuando la solicitud AJAX da algún tipo de error.
  • UpdateTargetId: elemento de destino que se rellena a partir de la acción que devuelve HTML.

25.- ¿Qué son los Layout en MVC?

Un layout en MVC es lo que veníamos conociendo en WebForms como una Máster o Página Maestra. Se utilizan para tener un look&feel en la aplicación utilizando el layout como plantilla común para todas (o algunas) de las páginas que utiliza tu aplicación.

@{
Layout = “~/Views/Layouts/MiPrimerLayout.cshtml”;
}

26) ¿Qué son las secciones en  MVC?

Las secciones de razor están codificadas en lenguaje HTML y se renderiza en el layout de de nuestra página.

@RenderSection(“TestSection”)

27) Explica RenderBody y RenderPage en MVC

RederBody fnciona del mismo modo que lo hacen los PlaceHolder con las anteriores MasterPage. Los RenderBody  se utilizan en los Layouts de MVC y sólo puede haber uno. Sin embargo los RenderPage  funcionan con páginas y los Layouts pueden contener más de uno.

28) ¿Qué es la página ViewStart en MVC?

La página ViewStart se utiliza para asegurarse de que la página de diseño común se utilizará para múltiples vistas. El código escrito en este archivo se ejecutará primero cuando se cargue la aplicación.

29) ¿Cómo se utilizan los métodos que renderizan las vistas en MVC?

Estos son los métodos utilizados:

  • View() — Para devolver la vista desde la acción.
  • PartialView() —  Para devolver la vista parcial desde la acción.
  • RedirectToAction() — Para redireccionar una acción diferente. Puede estar en su propio controlador o en otro diferente.
  • Redirect() — Similar al que conocíamos de web forms “Response.Redirect()” que redirige a una URL específica.
  • RedirectToRoute() — Redirecciona a la acción desde la URL especificada en la tabla de rutas de la aplicación.

30) ¿Qué subtipos tenemos en MVC de ActionResult ?

ActionResult se utiliza para representar el resultado del método de una acción. A continuación se muestran los subtipos que tenemos en MVC .NET:

  • ViewResult
  • PartialViewResult
  • RedirectToRouteResult
  • RedirectResult
  • JavascriptResult
  • JSONResult
  • FileResult
  • HTTPStatusCodeResult

31) ¿Cuáles son los métodos Non Action de MVC?

En MVC, todos los métodos públicos se tratan como acciones. Por tato, si un método creado no deseas que funcione como un acción, sólo necesitas añadir el atributo [NonAction] para indicar al programa que dicho método no actúa como acción. Una prueba de código sería de la siguiente forma:

[NonAction]
public void MetodoNonAction()
{
     // Method logic
} 

32) How to change the action name in MVC?

“ActionName” attribute can be used for changing the action name. Below is the sample code snippet to demonstrate more –

[ActionName(“TestActionNew”)]
public ActionResult TestAction()
{
    return View();
}  

So in the above code snippet “TestAction” is the original action name and in “ActionName” attribute, name — “TestActionNew” is given. So the caller of this action method will use the name “TestActionNew” to call this action.

33) What are Code Blocks in Views?

Unlike code expressions that are evaluated and sent to the response, it is the blocks of code that are executed. This is useful for declaring variables which we may be required to be used later.

@{
    int num = 1;
    string let = “A”;
 } 

34.- ¿Para qué sirve la propiedad “HelperPage.IsAjax”?

La propiedad HelperPage.IsAjax devuelve un valor booleano (True/False) para indicarnos si la recarga de la página web está utilizando Ajax.

35.- ¿Cómo podemos llamar a una función de JavaScript en el cambio de una Lista desplegable en MVC?

Creando un método JavaScript e invocándolo:

<%:Html.DropDownListFor(x => x.PaisSeleccionado, new SelectList(Model.Paises, “Value”, “Text”), “Por favor seleccione un país”, new { id = “ddlPasies”, onchange=” DropIndexChanged ()” })%>

36.- ¿Qué son las Validation Annotations?

Las Data annotations o Validation Annotations son atributos que se encuentran en el namespace “System.ComponentModel.DataAnnotations”.

Estos atributos pueden ser usados por el servidor para realizar validaciones en cliente. Tienen predefinidos muchos tipos de validaciones y permiten además el uso de expresiones regulares y usar validaciones para diferentes escenarios. Un ejemplo:

[Required]         
[StringLength(100)]        
public string Nombre{ get; set; }         

[Required]
[DisplayName("Altura")]         
[RegularExpression(@"^\$?\d+(\.(\d{2}))?$")]         
public decimal Altura{ get; set; } 

37.- Para qué se utiliza Html.Partial en MVC?

Este método se utiliza para representar la vista parcial especificada como una cadena HTML. Este método no depende de ningún método de acción. El siguiente trozo de código es un ejemplo de su utilización:

@Html.Partial(“ MiVistaParcial ”)

38.- ¿Para qué se usa Html.RenderPartial?

El método “RenderPartial” devuelve código que renderiza una vista parcial y se “pinta” directamente en el código HTML. Este método no devuelve nada (nulo). Este método tampoco depende de los métodos de acción. Este sería un ejemplo de cómo utilizar Html.RenderPartial en código razor:

@ {Html.RenderPartial ("MiVistaParcial"); }

39.- ¿Sabes la función de la clase RouteConfig.cs?

“RouteConfig.cs” contiene la configuración del enrutado de URLs de MVC. Este fichero se inicializará en el evento Application_Start registrado en Global.asax de nuestra aplicación.

40.- ¿Qué son las plantillas Scaffolding en MVC?

El scaffolding en ASP.NET MVC se usa para generar los Controladores, el Modelo y las Vistas. Permiten crear, leer, actualizar y eliminar la funcionalidad (CRUD) en una aplicación. Además va a conocer todos los convenios de nomenclatura utilizadas para vistas, modelos y controladores.

41.- ¿Cuáles son los tipos de Scaffoldings?

  • Empty
  • Create
  • Delete
  • Details
  • Edit
  • List

42.- ¿Se puede compartir una vista entre múltiples controladores?

Sí, una única vista puede compartirse con varios  controladores. Podemos poner la vista en la carpeta “Compartida”. Al crear un nuevo proyecto MVC, podemos ver que la página de diseño se agregará a la carpeta compartida, y podrá ser utilizada por el resto de páginas.

43.- ¿Cuáles son los componentes necesarios para crear una ruta en MVC?

  • Name: que será el nombre de la ruta.
  • Patrón de URL: se asignarán marcadores de posición para que coincidan con el patrón de URL de solicitud.
  • Valores predeterminados: al cargar la aplicación, qué controlador, acción que se cargará junto con el parámetro.

44.- ¿Por qué usar “{resource} .axd / {* pathInfo}” en el enrutamiento en MVC?

Al utilizar el patrón: {resource} .axd / {* pathInfo}, evitamos que las solicitudes de los archivos de recursos web como – WebResource.axd o ScriptResource.axd pasen a un controlador.

45.- ¿Se pueden añadir restricciones al enrutamiento?

Sí que se pueden añadir restricciones. tenemos dos formas de hacer:

  1. Usando expresiones regulares
  2. Implementando las modificaciones a través dela siguiente interfaz: IRouteConstraint.

46.- ¿Cuáles son las posibles extensiones de Razor?

Tenemos dos posibles extensiones dependiendo del lenguaje BackEnd que estemos utilizando.

.cshtml — Para C# (el más utilizado con diferencia)
.vbhtml — Para Visual Basic .NET

47.- Dime lo que sepas de las PartialView

Las Vistas Parciales (o PartialView) son los antiguos Controles de Usuario (o UserControl). Lo que hacen estas vistas es facilitar la reutilización de código pudiendo llamar en muchas vistas a una vista parcial. De ese modo, codificando una sola vez, puedes utilizando un muchos lugares de tu aplicación. Hay dos formas de enlazarlas en una vista:

Html.Partial()
Html.RenderPartial()

48.- ¿Cómo se añaden los ficheros CSS en MVC?

Del mismo modo que lo hemos referenciado siempre, pero utilizando Razor.

49.- ¿Qué componentes son necesarios para crear una ruta en MVC?

  • Name — This is the name of the route.
  • URL Pattern — Placeholders will be given to match the request URL pattern.Defaults –When loading the application which controller, action to be loaded along with the parameter.

50.- Para que se usa “{resource}.axd/{*pathInfo}” en enrutado de MVC?

Con esta ruta predeterminada: {resource} .axd / {* pathInfo}, podemos evitar que las solicitudes de los archivos de recursos web como – WebResource.axd o ScriptResource.axd pasen a un controlador.

LLegó el momento de tu entrevista para desarrollador ASP.NET MVC

Seguramente ya hayas pasado una o más entrevistas para el puesto de trabajo para el que estás optando. Si llegas a la entrevista técnica, lo más normal es que la persona de Recursos Humanos con la que tuviste contacto en un primer momento tuviera buen feedback tuyo para la que suele ser la primera entrevista de RRHH.

Llegado el momento de la entrevista técnica, lo normal es que el responsable de dicha entrevista sea un técnico con buenos conocimientos de MVC, pero también puede darse el caso que la entrevista la realiza el Jefe de Proyecto y puede (o no) tener muchos conocimientos. Pero como en esto no se puede saber, lo mejor es que vayas preparado y si te lees este artículo completo, es posible que puedas salir de algún apunto con las preguntas del entrevistador.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *