55 个顶级 MVC 面试问题及答案 (PDF)

以下是针对初学者和有经验的候选人准备的MVC面试题,帮助他们找到心仪的工作。

 

初学者 MVC 面试题及答案

1)什么是模型-视图-控制器(MVC)?

MVC 是一种用于开发 Web 应用程序的软件架构模式。它由三个对象处理:模型 (Model)、视图 (View) 和控制器 (Controller)。

👉 免费 PDF 下载:MVC 面试题及答案


2)在 MVC 应用程序中,模型-视图-控制器 (MVC) 代表什么?

在 MVC 模型中,

  • 模型 (Model)– 它代表应用程序的数据域。换句话说,应用程序的业务逻辑包含在模型中,并负责维护数据。
  • 视图 (View)– 它代表用户与之交互的用户界面。简而言之,所有用户界面逻辑都包含在视图中。
  • 控制器 (Controller)– 控制器负责响应用户操作。根据用户操作,相应的控制器会在模型中进行响应,并选择一个视图来渲染,从而显示用户界面。用户输入逻辑包含在控制器中。

3)定义 MVC 所需的程序集是哪个?

MVC 框架定义在 System.Web.Mvc 程序集中。


4)控制器操作方法有哪些不同的返回类型?

控制器操作方法有以下不同的返回类型:

  • View Result (视图结果)
  • JavaScript Result (JavaScript 结果)
  • Redirect Result (重定向结果)
  • JSON Result (JSON 结果)
  • Content Result (内容结果)

5)在 WebForm 应用程序和 MVC 应用程序中添加路由有什么区别?

要在 WebForm 应用程序中添加路由,我们使用 RouteCollection 类的 MapPageRoute() 方法;而在 MVC 应用程序中添加路由,我们使用 MapRoute() 方法。


6)为路由添加约束的两种方法是什么?

为路由添加约束的两种方法是:

  • 使用正则表达式
  • 使用实现 IRouteConstraint 接口的对象

7)MVC 有哪些优点?

  • MVC 将项目分离到不同的部分,开发人员可以轻松地进行工作。
  • 可以轻松编辑或更改项目的某个部分,从而降低项目的开发和维护成本。
  • MVC 使您的项目更加系统化。
  • 它明确区分了业务逻辑和表示逻辑。
  • 每个 MVC 对象都有不同的职责。
  • 开发可以并行进行。
  • 易于管理和维护。
  • 所有类和对象相互独立。

8)“beforeFilter()”、“beforeRender”和“afterFilter”函数在控制器中起什么作用?

  • beforeFilter(): 此函数在控制器中的每个操作之前运行。这是检查活动会话或检查用户权限的合适位置。
  • beforeRender(): 此函数在控制器操作逻辑之后、视图渲染之前调用。此函数不常用,但如果您在给定操作结束前手动调用 render(),则可能需要它。
  • afterFilter(): 此函数在每个控制器操作和渲染完成后调用。它是最后一个运行的控制器方法。

9)MVC 中 Presentation(表示)、Abstraction(抽象)和 Control(控制)组件的作用是什么?

MVC 中 Presentation、Abstraction 和 Control 组件的作用如下:

  • 表示 (Presentation): 它是应用程序中特定抽象的可视化表示。
  • 抽象 (Abstraction): 它是应用程序中的业务领域功能。
  • 控制 (Control): 它是一个组件,用于在系统内的抽象及其向用户的表示之间保持一致性,并与系统内的其他控件进行通信。

10)MVC 模型有哪些缺点?

MVC 模型的一些重要缺点如下:

  • 模型模式有点复杂。
  • 视图中的数据访问效率不高。
  • 使用现代用户界面,使用 MVC 存在困难。
  • 您需要多位程序员进行并行开发。
  • 需要多种技术知识。

11)MVC 中的“ActionFilters”起什么作用?

在 MVC 中,“ActionFilters”可以在 MVC 操作执行时或执行过程中帮助您执行逻辑。


12)MVC 项目的执行步骤是什么?

MVC 项目的执行步骤包括:

  • 接收应用程序的第一个请求
  • 执行路由
  • 创建 MVC 请求处理程序
  • 创建控制器
  • 执行控制器
  • 调用操作
  • 执行结果

13)什么是路由及其三个段?

路由有助于您确定 URL 结构并将 URL 映射到控制器。

路由的三个重要段是:

  • ControllerName (控制器名称)
  • ActionMethodName (操作方法名称)
  • 参数

14)MVC 模式中如何进行路由?

有一组路由称为 RouteCollection,其中包含应用程序中注册的路由。RegisterRoutes 方法将路由记录在此集合中。路由定义了 URL 模式以及请求匹配该模式时要使用的处理程序。

MapRoute 方法的第一个参数是路由的名称。第二个参数是要匹配 URL 的模式。如果占位符未确定,第三个参数可以是默认值。


15)如何通过超链接从一个视图导航到另一个视图?

通过使用“ActionLink”方法,如下面的代码所示。下面的代码将创建一个简单的 URL,用于导航到“Home”控制器并调用“GotoHome”操作。

折叠/复制代码

<%= Html.ActionLink("Home", "Gotohome") %>

有经验者 MVC 面试题及答案

16)MVC 中如何维护 Session?

MVC 中的 Session 可以通过三种方式维护:TempData、ViewData 和 ViewBag。


17)TempData、ViewData 和 ViewBag 有什么区别?

  • TempData: 当您从一个控制器转移到另一个控制器时,它有助于维护数据。
  • ViewData: 当您从控制器转移到视图时,它有助于维护数据。
  • ViewBag: 它是 ViewData 的一个动态包装器。

18)MVC 中的部分视图 (Partial View) 是什么?

MVC 中的部分视图用于渲染视图的一部分内容。它有助于减少代码重复。简单来说,部分视图允许在父视图内渲染一个视图。


19)如何在 MVC 中实现 Ajax?

在 MVC 中,Ajax 可以通过两种方式实现:

  • Ajax 库
  • Jquery

20)“ActionResult” (ActionResult) 和“ViewResult” (视图结果) 有什么区别?

“ActionResult”是一个抽象类,而“ViewResult”派生自“AbstractResult”类。“ActionResult”有许多派生类,如“JsonResult”、“FileStreamResult”和“ViewResult”。

如果您动态派生不同类型的视图,“ActionResult”是最佳选择。


21)如何在 MVC 中将结果以 JSON 格式返回?

为了以 JSON 格式序列化返回对象并在 MVC 中仅返回 JSON 数据,您可以在任何 MVC Web API 项目的 WebApiConfig.cs 类中添加以下代码。


22)视图 (View) 和部分视图 (Partial View) 有什么区别?

视图和部分视图的区别如下:

查看 部分视图
它包含布局页面。 它不包含布局页面。
在渲染任何视图之前,会渲染 ViewStart 页面。 部分视图不检查 ViewStart.cshtml。我们不能在 ViewStart.cshtml 页面中放置部分视图的公共代码。
视图可能包含 body、html、head、title、meta 等标记标签。 部分视图专门用于在视图内渲染,因此它不包含任何标记。
与部分视图相比,视图不够轻量。 我们可以将常规视图传递给 RenderPartial 方法。

23)MVC 中有哪些结果类型?

在 MVC 中,有十二种结果类型,“ActionResult”类是主要类,其余 11 种是其子类型。

  • ViewResult (视图结果)
  • PartialViewResult (部分视图结果)
  • EmptyResult (空结果)
  • RedirectResult (重定向结果)
  • RedirectToRouteResult (重定向到路由结果)
  • JsonResult (JSON 结果)
  • JavaScriptResult (JavaScript 结果)
  • ContentResult (内容结果)
  • FileContentResult (文件内容结果)
  • FileStreamResult (文件流结果)
  • FilePathResult (文件路径结果)

24)NonActionAttribute 的重要性是什么?

控制器类中的所有公共方法都被视为操作方法。如果您想阻止这种情况,您必须将公共方法分配给 NonActionAttribute。


25)默认路由 {resource}.axd/{*pathinfo} 的用途是什么?

默认路由可防止将对 WebResource.axd 或 ScriptResource.axd 等 Web 资源文件的请求传递给控制器。


26)如果实现多个过滤器,过滤器的执行顺序是什么?

过滤器的顺序如下:

  • Authorization filters (授权过滤器)
  • Action filters (操作过滤器)
  • Response filters (响应过滤器)
  • Exception filters (异常过滤器)

27)ASP.NET 过滤器最后执行的是哪种?

最后执行的是“Exception Filters”(异常过滤器)。


28)Razor 视图的文件扩展名是什么?

Razor 视图的文件扩展名是:

  • .cshtml:如果编程语言是 C#
  • .vbhtml:如果编程语言是 VB

29)为路由添加约束的两种方法是什么?

为路由添加约束的两种方法是:

  • 使用正则表达式
  • 使用实现 IRouteConstraint 接口的对象

30)在哪些情况下不实现或不需要路由?

不需要路由的两种情况是:

  • 当找到匹配 URL 模式的物理文件时
  • 当对 URL 模式禁用路由时

5年经验的 MVC 面试题

31)MVC 有哪些特性?

MVC 的特性如下:

  • 易于测试,可测试性强,可扩展性强,可插拔的框架。
  • 提供对 HTML 和 URL 的完全控制。
  • 利用 ASP.NET、JSP、Django 等现有功能。
  • 清晰的逻辑分离:模型、视图、控制器。通过业务逻辑、UI 逻辑和输入逻辑分离应用程序任务。
  • URL 路由实现 SEO 友好 URL。强大的 URL 映射,实现可理解和可搜索的 URL。
  • 支持测试驱动开发 (TDD)。

32)MVC 的现实生活中的例子是什么?

以下是一个 MVC 的现实生活中的例子:

  • 假设你去一家餐厅。你不会去厨房自己做饭,虽然你可以在家做到。相反,你只是进去等待服务员过来。
  • 现在服务员过来找你,你点餐。服务员不知道你是谁,也不知道你想要什么,他只是写下你的点餐详情。
  • 然后,服务员去厨房。在厨房里,服务员不制作你的食物。
  • 厨师为你准备食物。服务员会收到你的订单以及你的桌号。
  • 厨师然后为你准备食物。他使用食材来烹饪。假设你点了一个蔬菜三明治。然后他需要面包、番茄、土豆、彩椒、洋葱、甜菜、奶酪等,这些都来自冰箱。
  • 厨师最后把食物交给服务员。现在服务员的任务是把食物拿到厨房外面。
  • 现在服务员知道你点了什么菜,以及它是如何上菜的。

在这种情况下,

View= You
Waiter= Controller
Cook= Model
Refrigerator= Data

33)3 层架构和 MVC 架构有什么区别?

3 层架构和 MVC 架构的区别如下:

参数 三层架构 MVC 架构
沟通 这种架构模式从不直接与数据层通信。 所有层都通过三角形拓扑直接通信。
用途 3 层:广泛用于 Web 应用程序,其中客户端、数据层和中间件运行在物理上分离的平台。 通常用于在单个图形工作站上运行的应用程序。

34)如何在 JSP 中使用 MVC 架构?

下面的示例展示了如何在 JSP 中使用 MVC 架构:

  • 我们以一个包含两个变量“email”和“password”的表单为例,这就是我们的视图层。
  • 用户输入 email 和 password 并点击提交后,操作会传递到 mvc_servlet,其中 email 和 password 会被传递。
  • 这个 mvc_servlet 就是控制器层。在这里,请求被发送到 bean 对象,该对象充当模型层。
  • email 和 password 的值被设置到 bean 中并保存以备将来使用。
  • 从 bean 中获取值并在视图层显示。

Mvc_example.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>MVC Guru Example</title>
</head>
<body>
<form action="Mvc_servlet" method="POST">
Email: <input type="text" name="email">
<br />
Password: <input type="text" name="password" />
<input type="submit" value="Submit" />
</form>
</body>
</html>

Mvc_servlet.java

package demotest;
  
import java.io.IOException;
  
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
  
/**
 * Servlet implementation class Mvc_servlet
 */
public class Mvc_servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
        
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Mvc_servlet() {
        super();
        // TODO Auto-generated constructor stub
    }
  
  
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String email=request.getParameter("email");  
        String password=request.getParameter("password");
         
        TestBean testobj = new TestBean();
        testobj.setEmail(email);
        testobj.setPassword(password);
        request.setAttribute("gurubean",testobj);
        RequestDispatcher rd=request.getRequestDispatcher("mvc_success.jsp");  
        rd.forward(request, response); 
    }
  
}

TestBean.java

package demotest;
  
import java.io.Serializable;
  
public class TestBean implements Serializable{
    
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    private String email="null";
    private String password="null";
}

Mvc_success.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@page import="demotest.TestBean"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Success</title>
</head>
<body>
<%  
TestBean testguru=(TestBean)request.getAttribute("gurubean");  
out.print("Welcome, "+testguru.getEmail());  
%>
</body>
</html>

35)Spring 中的 MVC 是如何工作的?

Spring 中的 MVC 工作方式如下:

  • DispatcherServlet 接收请求。
  • 之后,DispatcherServlet 与 HandlerMapping 通信。它还调用与该特定请求关联的控制器。
  • 控制器通过调用服务方法来处理此请求,DispatcherServlet 返回一个 ModelAndView 对象。
  • 将视图名称发送给 ViewResolver 以查找要调用的实际视图。
  • 之后,DispatcherServlet 将视图传递给以渲染结果。
  • 通过使用模型数据,视图渲染并将结果返回给用户。

36)创建 MVC 应用程序时需要注意的重要事项是什么?

创建 MVC 应用程序时需要注意的事项如下:

  • 您需要记住 ASP.NET MVC 并不是对 ASP.NET Web Forms 应用程序的替代。
  • MVC 应用开发的路径应根据应用程序的需求和 ASP.NET MVC 提供的功能来决定,以适应特定的开发需求。
  • 与基于 Web Forms 的应用程序相比,ASP.NET MVC 的应用程序开发过程更复杂。
  • 通过分离应用程序任务,应用程序的可维护性始终更高。

37)Web Forms 和 MVC 有什么区别?

Web Forms 和 MVC 的区别如下:

参数 Web Forms MVC
模型 Asp.Net Web Forms 遵循事件驱动的开发模型。 Asp.Net MVC 使用基于 MVC 模式的开发模型。
使用时间 自 2002 年以来一直存在。 首次发布于 2009 年。
视图状态支持 Asp.Net Web Forms 支持客户端的视图状态进行状态管理。 .Net MVC 不支持视图状态。
URL 类型 Asp.Net Web Forms 具有基于文件的 URL。这意味着 URL 中存在文件名,并且它们必须实际存在。 Asp.Net MVC 具有基于路由的 URL,这意味着 URL 会被重定向到控制器和操作。
语法 Asp.Net MVC 遵循 Web Forms 语法。 Asp.Net MVC 遵循可定制的语法。
视图类型 Web Forms 视图与 Code behind (ASPX-CS),即逻辑,紧密耦合。 MVC 视图和逻辑始终分开存放。
一致的外观和感觉 它具有主页面以提供一致的外观。 Asp.Net MVC 具有布局以提供一致的外观。
代码重用性 Web Forms 提供用户控件以实现代码重用。 Asp.Net MVC 提供部分视图以实现代码重用。
HTML 控件 对渲染的 HTML 控制较少。 完全控制 HTML。
状态管理 控件的自动状态管理。 手动状态管理。
TDD 支持 需要弱或自定义 TDD。 鼓励并包含 TDD!

38)如何在 CodeIgniter 中显示内容?

以下是 CodeIgniter 中显示内容的示例代码。

<?=$title?>
As opposed to
<?php
echo $title;
?>
Control structures are usually written as follows
<?php foreach ($customers as $customer): ?>
<li>
<p><?=$customer->first_name?><p>
</li>
<?php endforeach; ?>

39)编写代码以在 CodeIgniter 中演示模型、视图和控制器。

以下是在 CodeIgniter 中演示模型、视图和控制器的代码。

打开位于 application/controllers 的 Welcome.php 控制器文件。

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {
    public function index()
    {
        $this->load->view('welcome_message');
    }
}

按如下方式更新 index:

public function index()
    {
            $this->load->model('customers_model');

            $data['customer'] = $this->customers_model->get_customer(3);

            $this->load->view('welcome_message',$data);
    }

在 application/models 中将以下代码写入 customer_model.php。

<?php
class Customers_model extends CI_Model {
    public function get_customer($id) {
        $data['id'] = 3;
        $data['first_name'] = 'John';
        $data['last_name'] = 'Doe';
        $data['address'] = 'Kingstone';

        return $data;
    }
}

打开位于 application/views/welcome_message.php。

application/views/welcome_message.php

将代码替换为以下内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>CodeIgniter MVC Basics</title>
</head>
<body>
    <h3>Customer Details Card</h3>

    <p>Customer ID : <strong><?=$customer['id']?></strong></p>
    <p>First Name  : <strong><?=$customer['first_name']?></strong></p>
    <p>Last Name   : <strong><?=$customer['last_name']?></strong></p>
    <p>Address     : <strong><?=$customer['address']?></strong></p>
</body>
</html>

40)可以使用 WebForms 和 MVC 创建 Web 应用程序吗?

是的。您需要在 Web Forms 应用程序中包含以下 MVC 程序集引用,以创建混合应用程序。

System.Web.Mvc
System.Web.Razor
System.ComponentModel.DataAnnotations

41)如何为 ASP.NET Web API 操作分配别名?

与 ASP.NET MVC 一样,我们可以通过使用“ActionName”属性为 Web API 操作提供别名,如下所示:

[HttpPost]

[ActionName("SaveStudentInfo")]

public void UpdateStudent(Student aStudent)
{
StudentRepository.AddStudent(aStudent);
}

42)MVC 和 WebAPI 的主要区别是什么?

MVC 和 WebAPI 的主要区别如下:

MVC 框架用于开发具有用户界面的应用程序。为此,可以使用视图来构建用户界面。

WebAPI 用于开发 HTTP 服务。其他应用程序也可以调用 WebAPI 方法来获取数据。


43)如何确保 Web API 只返回 JSON 数据?

为了让 Web API 将返回的对象序列化为 JSON 格式并仅返回 JSON 数据,您应该在任何 MVC Web API 项目的 WebApiConfig.cs 类中添加以下代码。

//JsonFormatter

//MediaTypeHeaderValue

Config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));

1
2
3

//JsonFormatter

//MediaTypeHeaderValue

Config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"))

44)MVVM 和 MVC 有什么区别?

MVVM 和 MVC 的重要区别如下:

MVC MVVM
Controller 是应用程序的入口点。 View 是应用程序的入口点。
Controller 和 View 之间存在一对多关系。 View 和 ViewModel 之间存在一对多关系。
View 不引用 Controller。 View 引用 ViewModel。
MVC 是旧模型。 MVVM 是一个相对较新的模型。
难以阅读、修改、单元测试和重用此模型。 当存在复杂数据绑定时,调试过程会很复杂。
MVC 模型组件可以独立于用户进行测试 易于单独进行单元测试,并且代码是事件驱动的。

45)AngularJS 中的 MVC 是什么?

Angular.js 遵循 MVC 架构,下面显示了 MVC 框架的图示。

  • Controller 代表具有业务逻辑的层。用户事件会触发存储在控制器中的函数。用户事件是控制器的一部分。
  • Views 用于表示提供给最终用户(end-users)的表示层。
  • Models 用于表示您的数据。模型中的数据可以很简单,例如只包含原始声明。例如,如果您正在维护一个学生应用程序,则数据模型可以只包含学生 ID 和姓名。或者,它也可以很复杂,拥有结构化的数据模型。如果您正在维护一个汽车所有权应用程序,您可以拥有结构来定义车辆本身,例如其发动机容量、座位容量等。

46)MVC 在 AngularJS 中起什么作用?

以下是 AngularJS Controller 工作方式的简单定义。

  • Controller 的主要职责是控制传递给视图的数据。Scope 和 View 之间存在双向通信。
  • 视图的属性可以调用 Scope 上的“函数”。此外,视图中的事件可以调用 Scope 上的“方法”。下面的代码片段提供了一个简单的函数示例。
    • 定义控制器时定义的函数 $scope 内部函数,用于返回 $scope.firstName 和 $scope.lastName 的连接。
    • 在 AngularJS 中,当您将一个函数定义为变量时,它被称为 Method。

  • 数据以这种方式从 Controller 传递到 Scope,然后数据在 Scope 和 View 之间双向传递。
  • Scope 用于将模型公开给视图。模型可以通过 Scope 中定义的方法进行修改,这些方法可以通过来自视图的事件触发。我们可以定义从 Scope 到 Model 的双向模型绑定。
  • 理想情况下,Controller 不应用于操作 DOM。这应该由指令来完成,我们稍后会看到。
  • 最佳做法是根据功能来组织 Controller。例如,如果您有一个用于输入的表单,并且需要一个 Controller,则创建一个名为“form controller”的 Controller。

47)如何构建一个基本的 AngularJS Controller?

以下代码片段是一个简单的 HTML 页面,标题为“Event Registration”,并包含对 Bootstrap、jquery 和 Angular 等重要库的引用。

  1. 我们正在添加 Bootstrap CSS 样式表的引用,这些样式表将与 Bootstrap 库结合使用。
  2. 我们正在添加 AngularJS 库的引用。因此,从现在开始,我们对 angular.js 的任何操作都将从此库引用。
  3. 我们正在添加 Bootstrap 库的引用,以使我们的网页对于某些控件更具响应性。
  4. 我们添加了 jquery 库的引用,用于 DOM 操作。Angular 需要这个,因为 Angular 中的某些功能依赖于这个库。

默认情况下,上述代码片段将在我们所有示例中显示,以便我们可以在后续部分中仅显示特定的 angularJS 代码。

其次,我们来看看我们课程开始时要使用的文件和文件结构。

  1. 首先,我们像任何传统 Web 应用程序一样,将文件分为两个文件夹。我们有“CSS”文件夹。它将包含我们所有的级联样式表文件,然后我们将有我们的“lib”文件夹,其中将包含我们所有的JavaScript 文件。
  2. bootstrap.css 文件放置在 CSS 文件夹中,用于为我们的网站添加良好的外观和感觉。
  3. angular.js 是我们的主文件,它已从 angularJS 网站下载并保存在我们的 lib 文件夹中。
  4. app.js 文件将包含我们的 Controller 代码。
  5. bootstrap.js 文件用于补充 bootstrap.cs 文件,为我们的 Web 应用程序添加 Bootstrap 功能。
  6. jquery 文件将用于为我们的网站添加 DOM 操作功能。

Angular.js 使用示例

我们希望在这里做的是,在浏览器中查看页面时,仅显示文本格式的“AngularJS”字词和一个文本框。

<!DOCTYPE html>
<html>
<head>
    <meta chrset="UTF 8">
    <link rel="stylesheet" href="css/bootstrap.css"/>
</head>
<body>
<h3> Guru99 Global Event</h3>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="lib/angular.js"></script>
<script src="lib/bootstrap.js"></script>
<script src="lib/jquery-1.11.3.min.js"></script>

<div ng-app="DemoApp" ng-controller="DemoController">

    Tutorial Name : <input type="text" ng-model="tutorialName"><br>

    This tutorial is {{tutorialName}}
</div>
<script>
    var app = angular.module('DemoApp',[]);

    app.controller('DemoController', function($scope){
    $scope.tutorialName = "Angular JS";
    });
</script>

</body>
</html>

48)在 AngularJS 外部文件中使用 ng-controller 的用途是什么?

在 AngularJS 中使用外部文件的 ng-controller 来执行以下步骤:

步骤 1) 在 app.js 文件中,为您要使用的 Controller 添加以下代码。

angular.module('app',[]).controller('HelloWorldCtrl',function($scope)
{
    $scope.message = "Hello World"
});

步骤 2) 现在,在您的 Sample.html 文件中,添加一个包含 ng-controller 指令的 div 类,然后添加对成员变量“message”的引用。

<!DOCTYPE html>
<html ng-app="app">
<head>
    <meta chrset="UTF 8">
    <title>Event Registration</title>
    <link rel="stylesheet" href="css/bootstrap.css"/>
</head>
<body>
<h3> Guru99 Global Event</h3>
<div class="container">
    <div ng-controller="HelloWorldCtrl">{{message}}</div>
</div>

<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="lib/angular.js"></script>
<script src="lib/bootstrap.js"></script>
<script src="lib/jquery-1.11.3.min.js"></script>

<script src="app.js"></script>

</body>
</html>

49)编写代码以在 AngularJS Controller 中定义方法?

以下是在 AngularJS Controller 中定义方法的代码。

<!DOCTYPE html>
<html>
<head>
    <meta chrset="UTF 8">
    <title>Event Registration</title>
    <link rel="stylesheet" href="css/bootstrap.css"/>
</head>
<body ng-app="DemoApp">
<h3> Guru99 Global Event</h3>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="lib/angular.js"></script>
<script src="lib/bootstrap.js"></script>
<script src="lib/jquery-1.11.3.min.js"></script>

<div ng-app="DemoApp" ng-controller="DemoController">
    Tutorial Name :<input type="text" ng-model="tutorialName"><br>
    <br>
    This tutorial is {{tutorialName}}    
</div>

<script>
var app = angular.module('DemoApp', []);
app.controller('DemoController', function($scope) {
    $scope.tutorialName = "Angular JS";
    $scope.tName = function() {
        return $scope.tName;
    };
});
</script>    
</body>
</html>

50)编写代码使用 ng-model 在 AngularJS 中显示多行输入控件。

以下是使用 ng-model 在 AngularJS 中显示多行输入控件的代码。

<!DOCTYPE html>
<html>
<head>
    <meta chrset="UTF 8">
    <title>Event Registration</title>
    <link rel="stylesheet" href="css/bootstrap.css"/>
</head>
<body >
<h3> Guru99 Global Event</h3>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>

<div ng-app="DemoApp" ng-controller="DemoCtrl">
    <form>
        &nbsp;&nbsp;&nbsp;Topic Description:<br> <br>
        &nbsp;&nbsp;&nbsp;
    <textarea rows="4" cols="50" ng-model="pDescription"></textarea><br><br> 
    </form>
</div>

<script>
    var app = angular.module('DemoApp',[]);
    app.controller('DemoCtrl', function($scope){
        $scope.pDescription="This topic looks at how Angular JS works \nModels in Angular JS"});
</script>

</body>
</html>

51)编写代码演示输入元素的使用。

以下是使用 AngularJS 输入元素的代码示例。

<!DOCTYPE html>
<html>
<head>
    <meta chrset="UTF 8">
    <title>Event Registration</title>
    <link rel="stylesheet" href="css/bootstrap.css"/>
    <script src="https://code.angularjs.org/1.6.9/angular.js"></script>
</head>
<body >
<h3> Guru99 Global Event</h3>

<div ng-app="DemoApp" ng-controller="DemoCtrl">
    <form>
        &nbsp;&nbsp;&nbsp;Topic Description:<br> <br>
        &nbsp;&nbsp;&nbsp;
         
        Name : <input type="text" ng-model="pname"><br>
        &nbsp;&nbsp;&nbsp;
        Topic : <br>&nbsp;&nbsp;&nbsp;
        <input type="checkbox" ng-model="Topic.Controller">Controller<br>&nbsp;&nbsp;&nbsp;
        <input type="checkbox" ng-model="Topic.Models">Models
    </form>
    </div>

<script>
    var app = angular.module('DemoApp',[]);
    app.controller('DemoCtrl', function($scope){
        $scope.pname="Guru99";
         
        $scope.Topic =
        {
            Controller:true,
            Models:false
        };     });
</script>

</body>
</html>

52)如何在 PHP 中创建模型?

以下是 PHP 中创建模型的代码。

<?php 
class Opinion_poll_model extends CI_Model 
{ 
    public function __construct() 
    { 
        $this->load->database(); 
    } 

    public function total_votes() 
    { 
        $query = $this->db->select('COUNT(choice) as choices_count')->get('js_libraries');
        return $query->row()->choices_count; 
    } 

    public function get_results() 
    { 
        $libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow"); 
        $table_rows = ''; 

        for ($i = 1; $i < 5; $i++) 
        {
             $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries WHERE choice = $i;"; 
             $result = $model->

             select($sql_stmt); $table_rows .= "<tr><td>" . $ libraries [$i] . " Got:</td><td><b>" . $result[0] . "</b> votes</td></tr>"; 
        } 
        public function add_vote($choice) 
        { 
            $ts = date("Y-m-d H:i:s"); $data = array('choice' => $choice, 'ts' => $ts); $this->db->insert('js_libraries', $data); 
        } 
   } 
?>

53)为什么要使用 PHP MVC 框架?

您应该使用 PHP MVC 框架,因为它通过以下方式简化了处理复杂技术:

  • 隐藏所有复杂的实现细节。
  • 提供我们可以用来构建应用程序的标准方法。
  • 提高开发人员的生产力,因为像连接数据库、清理用户输入等活动的基线实现已部分实现。
  • 遵守专业编码标准。

54)流行的 PHP MVC 框架有哪些?

流行的 PHP MVC 框架有:

CodeIgniter: 它是最受欢迎的 PHP MVC 框架之一。它轻量级且学习曲线短。它拥有一套丰富的库,可帮助快速构建网站和应用程序。即使是对 OOP 编程知识有限的用户也可以使用它。

Kohana: 它是层次模型视图控制器 (HMVC),是一个安全轻量级的框架。它拥有一套丰富的组件,可用于快速开发应用程序。

CakePHP: 它模仿 Ruby on Rails。它以软件设计模式、约定优于配置、ActiveRecord 等概念而闻名。

Zend: 这是一个强大的框架,具有:

  • 安全、可靠、快速且可扩展。
  • 支持 Web 2.0 和 Web 服务的创建。

它包含来自 Amazon、Google、Flickr、Yahoo 等供应商的 API。它非常适合开发企业应用程序。


55)如何在 PHP 中创建视图?

以下是 PHP 中创建视图的代码。

opinion_poll_form.php 
<html>
<head>
    <title>
        JavaScript Libraries - Opinion Poll
    </title>
</head>

<body>
    <h3>JavaScript Libraries - Opinion Poll</h3>
    <p><b>What is your favorite JavaScript Library? </b></p>
    <form method="POST" action="index.php">
        <p>
            <input type="radio" name="vote" value="1" /> JQuery
            <br />
            <input type="radio" name="vote" value="2" /> MooTools
            <br />
            <input type="radio" name="vote" value="3" /> YUI Library
            <br />
            <input type="radio" name="vote" value="4" /> Glow </p>
        <p>
            <input type="submit" name="submitbutton" value="OK" />
        </p>
    </form>
</body>
</html>

现在让我们创建结果页面 results.php。

<html>
    <head>
        <title>JavaScript Libraries - Opinion Poll Results</title>
    </head>
    <body>

        <h3>JavaScript Libraries - Opinion Poll Results</h3>

        <p><b>What is your favorite JavaScript Library?</b></p>

        <p><b><?php echo $total_votes; ?></b> people have thus far taken part in this poll:</p>

        <p><table><tr><td>

            <?php print($rows); ?>

        </tr></td></table></p>

        <p><a href="#">Return to voting page</a></p>
</body>
</html>

这些面试问题也将有助于您的口试