55 câu hỏi và câu trả lời phỏng vấn MVC hàng đầu (PDF)
Câu hỏi và câu trả lời phỏng vấn MVC dành cho người mới
1) Model-View-Controller là gì?
MVC là một mô hình kiến trúc phần mềm để phát triển các ứng dụng web. Nó được xử lý bởi ba đối tượng, Model, View và Controller.
👉 Tải xuống bản PDF miễn phí: Câu hỏi và trả lời phỏng vấn MVC
2) Model-View-Controller thể hiện điều gì trong ứng dụng MVC?
Trong mô hình MVC,
- Mẫu– Nó đại diện cho miền dữ liệu ứng dụng. Nói cách khác, logic nghiệp vụ của ứng dụng được chứa trong mô hình và chịu trách nhiệm duy trì dữ liệu.
- Xem– Nó đại diện cho giao diện người dùng mà người dùng cuối giao tiếp. Nói tóm lại, tất cả logic giao diện người dùng đều được chứa trong View.
- Bộ điều khiển- Bộ điều khiển sẽ trả lời các hành động của người dùng. Dựa trên hành động của người dùng, bộ điều khiển tương ứng sẽ phản hồi trong mô hình và chọn chế độ xem để hiển thị giao diện người dùng. Logic đầu vào của người dùng được chứa trong bộ điều khiển.
3) Đặt tên cho hội để xác định MVC
Khung MVC được định nghĩa trong tập hợp System.Web.Mvc.
4) Các kiểu trả về khác nhau của phương thức hành động của bộ điều khiển là gì
Dưới đây là các kiểu trả về khác nhau của phương thức hành động của bộ điều khiển:
- Xem kết quả
- JavaKết quả tập lệnh
- Kết quả chuyển hướng
- Kết quả JSON
- Kết quả nội dung
5) Sự khác biệt giữa việc thêm tuyến đường vào ứng dụng biểu mẫu web và ứng dụng MVC là gì?
Để thêm tuyến vào ứng dụng biểu mẫu web, chúng tôi sử dụng phương thức MapPageRoute() của lớp RouteCollection, trong khi để thêm tuyến vào ứng dụng MVC, chúng tôi sử dụng phương thức MapRoute().
6) Hai cách để thêm các ràng buộc vào một tuyến đường là gì?
Hai phương pháp để thêm các ràng buộc vào một tuyến đường là
- Sử dụng biểu thức chính quy
- Sử dụng một đối tượng triển khai Giao diện IRouteConstraint
7) Ưu điểm của MVC là gì?
- MVC tách dự án của bạn thành một phân khúc khác và giúp các nhà phát triển dễ dàng làm việc hơn
- Thật dễ dàng để chỉnh sửa hoặc thay đổi một số phần trong dự án của bạn, điều này mang lại lợi ích với chi phí phát triển và bảo trì dự án ít hơn
- MVC làm cho dự án của bạn có hệ thống hơn
- Nó thể hiện sự tách biệt rõ ràng giữa logic nghiệp vụ và logic trình bày.
- Mỗi đối tượng MVC có trách nhiệm khác nhau
- Sự phát triển diễn ra song song
- Dễ dàng quản lý và bảo trì
- Tất cả các lớp và đối tượng đều độc lập với nhau
8) Các hàm “BeforeFilter()”, “BeforeRender” và “afterFilter” làm gì trong Controller?
- beforeFilter(): Hàm này chạy trước mọi hành động trong bộ điều khiển. Đây là nơi thích hợp để kiểm tra phiên hoạt động hoặc kiểm tra quyền của người dùng.
- beforeRender(): Hàm này được gọi sau logic hành động của bộ điều khiển, nhưng trước khi chế độ xem được hiển thị. Hàm này không được sử dụng thường xuyên nhưng có thể cần thiết nếu bạn gọi hàm render() theo cách thủ công trước khi kết thúc một hành động nhất định.
- afterFilter(): Hàm này được gọi sau mỗi hành động của bộ điều khiển và sau khi kết xuất xong. Đây là phương pháp điều khiển cuối cùng để chạy.
9) Vai trò của các thành phần Trình bày, Trừu tượng và Kiểm soát trong MVC là gì?
Đây là vai trò của các thành phần Trình bày, Trừu tượng và Kiểm soát trong MVC:
- Trình bày: Nó là sự thể hiện trực quan của một sự trừu tượng cụ thể trong ứng dụng
- Tóm tắt: Đây là chức năng miền doanh nghiệp trong ứng dụng
- Điều khiển: Nó là một thành phần duy trì tính nhất quán giữa tính trừu tượng trong hệ thống và cách trình bày của chúng với người dùng bên cạnh việc giao tiếp với các điều khiển khác trong hệ thống
10) Hạn chế của mô hình MVC là gì?
Dưới đây là một số nhược điểm quan trọng của mô hình MVC:
- Mẫu mô hình có phần phức tạp.
- Sự kém hiệu quả của việc truy cập dữ liệu trong chế độ xem.
- Với giao diện người dùng hiện đại, rất khó để sử dụng MVC.
- Bạn cần nhiều lập trình viên để phát triển song song.
- Cần có nhiều kiến thức công nghệ.
11) Vai trò của “ActionFilters” trong MVC là gì?
Trong MVC, “ActionFilters” giúp bạn thực thi logic trong khi hành động MVC được thực thi hoặc đang thực thi.
12) Các bước thực hiện một dự án MVC là gì?
Các bước thực hiện một dự án MVC bao gồm:
- Nhận yêu cầu đầu tiên cho ứng dụng
- Thực hiện định tuyến
- Tạo trình xử lý yêu cầu MVC
- Tạo bộ điều khiển
- Bộ điều khiển thực thi
- Gọi hành động
- Thực hiện kết quả
13) Định tuyến và ba phân đoạn là gì?
Định tuyến giúp bạn quyết định cấu trúc URL và ánh xạ URL bằng Bộ điều khiển.
Ba phân đoạn quan trọng cho việc định tuyến là:
- Tên bộ điều khiển
- Tên phương thức hành động
- Tham số
14) Việc định tuyến được thực hiện như thế nào trong mẫu MVC?
Có một nhóm tuyến đường được gọi là RouteCollection, bao gồm các tuyến đường đã đăng ký trong ứng dụng. Phương thức RegisterRoutes ghi lại các tuyến đường trong bộ sưu tập này. Tuyến đường xác định mẫu URL và trình xử lý để sử dụng nếu yêu cầu khớp với mẫu đó.
Tham số đầu tiên của phương thức MapRoute là tên của tuyến đường. Tham số thứ hai sẽ là mẫu mà URL khớp với. Tham số thứ ba có thể là giá trị mặc định cho phần giữ chỗ nếu chúng không được xác định.
15) Làm cách nào bạn có thể điều hướng từ chế độ xem này sang chế độ xem khác bằng siêu liên kết?
Bằng cách sử dụng phương thức “ActionLink” như trong đoạn mã dưới đây. Đoạn mã bên dưới sẽ tạo một URL đơn giản giúp điều hướng đến bộ điều khiển “Home” và gọi hành động “GotoHome”.
Thu gọn/Sao chép mã
<%= Html.ActionLink("Home", "Gotohome") %>
Câu hỏi và câu trả lời phỏng vấn MVC dành cho người có kinh nghiệm
16) Phiên được duy trì trong MVC như thế nào?
Phiên có thể được duy trì trong MVC theo ba cách: tempdata, viewdata và viewbag.
17) Sự khác biệt giữa dữ liệu tạm thời, dữ liệu xem và túi xem là gì?
- Dữ liệu nhiệt độ: Nó giúp duy trì dữ liệu khi bạn chuyển từ bộ điều khiển này sang bộ điều khiển khác.
- Xem dữ liệu: Nó giúp duy trì dữ liệu khi bạn chuyển từ bộ điều khiển sang chế độ xem.
- Xem túi: Đó là một trình bao bọc động xung quanh dữ liệu xem.
18) Chế độ xem một phần trong MVC là gì?
Chế độ xem một phần trong MVC hiển thị một phần nội dung chế độ xem. Nó rất hữu ích trong việc giảm sự trùng lặp mã. Nói một cách đơn giản, chế độ xem một phần cho phép hiển thị chế độ xem trong chế độ xem gốc.
19) Bạn có thể triển khai Ajax trong MVC như thế nào?
Trong MVC, Ajax có thể được triển khai theo hai cách
- Thư viện Ajax
- jquery
20) Sự khác biệt giữa “ActionResult” và “ViewResult” là gì?
“ActionResult” là một lớp trừu tượng trong khi “ViewResult” có nguồn gốc từ lớp “AbstractResult”. “ActionResult” có một số lớp dẫn xuất như “JsonResult”, “FileStreamResult” và “ViewResult”.
“ActionResult” là tốt nhất nếu bạn đang thu được các loại chế độ xem khác nhau một cách linh hoạt.
21) Làm cách nào bạn có thể gửi lại kết quả ở định dạng JSON trong MVC?
Để gửi lại kết quả ở định dạng JSON trong MVC, bạn có thể sử dụng lớp “JSONRESULT”.
22) Sự khác biệt giữa Chế độ xem và Chế độ xem một phần là gì?
Đây là sự khác biệt giữa Chế độ xem và Chế độ xem một phần
Xem | Tầm nhìn hạn chế |
---|---|
Nó chứa trang bố trí | Nó không chứa trang bố cục |
Trước khi bất kỳ chế độ xem nào được hiển thị, trang bắt đầu xem được hiển thị | Chế độ xem một phần không xác minh cho viewstart.cshtml. Chúng tôi không thể đặt mã chung cho chế độ xem một phần trong viewStart.cshtml.page |
Chế độ xem có thể có các thẻ đánh dấu như nội dung, html, phần đầu, tiêu đề, meta, v.v. | Chế độ xem một phần được thiết kế đặc biệt để hiển thị trong chế độ xem và do đó nó không bao gồm bất kỳ đánh dấu nào |
Chế độ xem không nhẹ so với Chế độ xem một phần | Chúng ta có thể chuyển chế độ xem thông thường sang phương thức RenderPartial |
23) Các loại kết quả trong MVC là gì?
Trong MVC, có 11 loại kết quả trong đó lớp “ActionResult” là lớp chính trong khi XNUMX loại là loại phụ:
- Xem kết quả
- Xem một phầnKết quả
- Kết quả trống
- Chuyển hướngKết quả
- Chuyển hướng tới RouteResult
- JsonKết quả
- JavaKết quả tập lệnh
- Nội dungKết quả
- Nội dung tệpKết quả
- TệpStreamKết quả
- Đường dẫn tệpKết quả
24) Tầm quan trọng của NonActionAttribution là gì?
Tất cả các phương thức công khai của một lớp trình điều khiển đều được coi là phương thức hành động nếu bạn muốn ngăn phương thức mặc định này thì bạn phải gán phương thức công khai với NonActionAttribution.
25) Việc sử dụng tuyến đường mặc định {resource}.axd/{*pathinfo} là gì?
Tuyến mặc định ngăn không cho các yêu cầu đối với tệp tài nguyên web như Webresource.axd hoặc ScriptResource.axd được chuyển tới bộ điều khiển.
26) Thứ tự các bộ lọc được thực thi là gì nếu nhiều bộ lọc được triển khai?
Thứ tự lọc sẽ như sau:
- Bộ lọc ủy quyền
- Bộ lọc hành động
- Bộ lọc phản hồi
- Bộ lọc ngoại lệ
27) Cuối cùng thì bộ lọc ASP.NET nào được thực thi?
Cuối cùng, “Bộ lọc ngoại lệ” được thực thi.
28) Phần mở rộng tệp cho chế độ xem dao cạo là gì?
Đối với chế độ xem dao cạo, phần mở rộng tệp là
- .cshtml: Nếu C# là ngôn ngữ lập trình
- .vbhtml: Nếu VB là ngôn ngữ lập trình
29) Hai cách để thêm các ràng buộc vào một tuyến đường là gì?
Hai phương pháp để thêm các ràng buộc vào tuyến đường là:
- Sử dụng biểu thức chính quy
- Sử dụng một đối tượng triển khai giao diện IRouteConstraint
30) Hai trường hợp mà việc định tuyến không được thực hiện hoặc bắt buộc là gì?
Hai trường hợp không cần định tuyến là
- Khi tìm thấy tệp vật lý phù hợp với mẫu URL
- Khi định tuyến bị vô hiệu hóa đối với mẫu URL
Câu hỏi phỏng vấn MVC cho 5 năm kinh nghiệm
31) Các tính năng của MVC là gì?
Dưới đây là các tính năng của MVC:
- Khả năng kiểm tra dễ dàng và không ma sát. Khung có khả năng kiểm tra cao, mở rộng và có thể cắm được.
- Cung cấp toàn quyền kiểm soát HTML cũng như URL của bạn
- Tận dụng các tính năng hiện có được cung cấp bởi ASP.NET, JSP, Django, v.v.
- Phân tách logic rõ ràng: Model, View, Controller. Tách các tác vụ ứng dụng thông qua logic nghiệp vụ, logic Ul và logic đầu vào.
- Định tuyến URL cho các URL thân thiện với SEO. Ánh xạ URL mạnh mẽ cho các URL dễ hiểu và có thể tìm kiếm được.
- Hỗ trợ phát triển dựa trên thử nghiệm (TDD).
32) Ví dụ thực tế của MVC là gì?
Đây là một ví dụ thực tế của MVC:
- Giả sử bạn đi đến một nhà hàng. Bạn sẽ không vào bếp và chuẩn bị đồ ăn mà bạn chắc chắn có thể làm ở nhà. Thay vào đó, bạn chỉ cần đến đó và đợi người phục vụ tới.
- Bây giờ người phục vụ đến chỗ bạn và bạn chỉ cần gọi đồ ăn. Người phục vụ không biết bạn là ai và bạn muốn gì, anh ta chỉ viết ra chi tiết món ăn của bạn.
- Sau đó, người phục vụ di chuyển vào bếp. Trong bếp, người phục vụ không chuẩn bị thức ăn cho bạn.
- Đầu bếp sẽ chuẩn bị đồ ăn cho bạn. Người phục vụ sẽ nhận được đơn đặt hàng của bạn cùng với số bàn của bạn.
- Sau đó, đầu bếp chuẩn bị thức ăn cho bạn. Anh ta sử dụng các nguyên liệu để nấu thức ăn. Giả sử bạn gọi một chiếc bánh sandwich rau. Sau đó, anh ta cần bánh mì, cà chua, khoai tây, ớt chuông, hành tây, một chút, phô mai, v.v., những thứ có nguồn gốc từ tủ lạnh
- Cuối cùng Cook giao thức ăn cho người phục vụ. Bây giờ công việc của người phục vụ là chuyển thức ăn này ra ngoài bếp.
- Bây giờ người phục vụ biết bạn đã gọi món gì và phục vụ như thế nào.
Trong trường hợp này,
View= You Waiter= Controller Cook= Model Refrigerator= Data
33) Sự khác biệt giữa 3 tầng là gì? Archikiến trúc và MVC Archikiến trúc?
Đây là sự khác biệt giữa 3 tầng Archikiến trúc và MVC Archikiến trúc:
Tham số | 3-Cấp Archikiến trúc | VMC Archikiến trúc |
---|---|---|
Giao tiếp | Kiểu kiến trúc này không bao giờ giao tiếp trực tiếp với lớp dữ liệu. | Tất cả các lớp giao tiếp trực tiếp bằng cấu trúc liên kết tam giác. |
Sử dụng | 3 tầng: được sử dụng rộng rãi trong các ứng dụng web trong đó máy khách, tầng dữ liệu và phần mềm trung gian chạy trên các nền tảng vật lý riêng biệt. | Thường được sử dụng trên các ứng dụng chạy trên một máy trạm đồ họa. |
34) Làm thế nào để sử dụng kiến trúc MVC trong JSP?
Ví dụ sau đây cho thấy việc sử dụng kiến trúc MVC trong JSP:
- Chúng tôi lấy ví dụ về một biểu mẫu có hai biến, “email” và “password”, đây là lớp xem của chúng tôi.
- Khi người dùng nhập email, mật khẩu và nhấp vào gửi, thì hành động sẽ được truyền vào mvc_servlet, trong đó email và mật khẩu được truyền vào.
- Mvc_servlet này là lớp điều khiển. Ở đây trong mvc_servlet, yêu cầu được gửi đến đối tượng Bean, đối tượng này hoạt động như một lớp mô hình.
- Giá trị email và mật khẩu được thiết lập vào bean và lưu trữ cho các mục đích sau này.
- Từ đậu, giá trị được tìm nạp và hiển thị trong lớp xem.
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) MVC hoạt động như thế nào trong Spring?
Đây là cách MVC hoạt động trong Spring:
- DispatcherServlet nhận được yêu cầu.
- Sau đó, DispatcherServlet giao tiếp với HandlerMapping. Nó cũng thu hồi bộ điều khiển liên quan đến yêu cầu cụ thể đó.
- Bộ điều khiển xử lý yêu cầu này bằng cách gọi các phương thức dịch vụ và đối tượng ModelAndView được DispatcherServlet trả về.
- Tên chế độ xem được gửi đến ViewResolver để tìm Chế độ xem thực tế cần gọi.
- Sau đó, DispatcherServlet được chuyển tới View để hiển thị kết quả.
- Bằng cách sử dụng dữ liệu mô hình, Chế độ xem sẽ hiển thị và gửi lại kết quả cho người dùng.
36) Những điểm quan trọng cần nhớ khi tạo ứng dụng MVC là gì?
Dưới đây là một số điểm quan trọng cần nhớ khi tạo ứng dụng MVC:
- Bạn cần nhớ rằng ASP.net MVC không phải là sự thay thế cho các ứng dụng dựa trên biểu mẫu web ASP.Net
- Cách tiếp cận phát triển ứng dụng MVC phải được quyết định dựa trên các yêu cầu và tính năng ứng dụng do ASP.net MVC cung cấp để phù hợp với nhu cầu phát triển cụ thể.
- Quá trình phát triển ứng dụng với ASP.NET MVC phức tạp hơn so với các ứng dụng dựa trên biểu mẫu web.
- Khả năng bảo trì ứng dụng luôn cao hơn với việc phân tách các tác vụ ứng dụng.
37) Sự khác biệt giữa Biểu mẫu web và MVC là gì?
Đây là điểm khác biệt giữa Biểu mẫu web và MVC:
Thông số Kỹ thuật | Mẫu Web | VMC |
---|---|---|
Mẫu | Biểu mẫu web Asp.Net tuân theo mô hình phát triển theo hướng sự kiện. | Asp.Net MVC sử dụng mô hình phát triển dựa trên mẫu MVC. |
Được sử dụng từ | Đã tồn tại từ năm 2002 | Nó được phát hành lần đầu tiên vào năm 2009 |
Hỗ trợ trạng thái Xem | Asp.Net Web Forms hỗ trợ trạng thái xem để quản lý trạng thái ở phía máy khách. | .Net MVC không hỗ trợ trạng thái xem. |
loại URL | Biểu mẫu web Asp.Net có URL dựa trên tệp. Điều đó có nghĩa là tên tệp tồn tại trong URL và chúng phải tồn tại về mặt vật lý. | Asp.Net MVC có các URL dựa trên tuyến đường có nghĩa là các URL được chuyển hướng đến bộ điều khiển và hành động. |
cú pháp | Asp.Net MVC tuân theo Cú pháp biểu mẫu web. | Asp.Net MVC tuân theo cú pháp có thể tùy chỉnh. |
Kiểu xem | Các chế độ xem Biểu mẫu web được liên kết chặt chẽ với Mã phía sau (ASPX-CS), tức là logic. | Chế độ xem và logic MVC luôn được giữ riêng biệt. |
Cái nhìn và cảm nhận nhất quán | Nó có các trang chính để có cái nhìn nhất quán. | Asp.Net MVC có bố cục để có giao diện nhất quán. |
Khả năng tái sử dụng mã | Biểu mẫu web cung cấp các quyền kiểm soát của Người dùng để có thể sử dụng lại mã. | Asp.Net MVC cung cấp chế độ xem một phần để có thể sử dụng lại mã. |
Kiểm soát HTML | Less kiểm soát HTML được hiển thị. | Kiểm soát hoàn toàn HTML |
Quản lý nhà nước | Quản lý trạng thái tự động của các điều khiển. | Quản lý trạng thái thủ công. |
Hỗ trợ TDD | Yêu cầu TDD yếu hoặc tùy chỉnh. | Khuyến khích và bao gồm TDD! |
38) Làm cách nào bạn có thể hiển thị nội dung nào đó trong CodeIgniter?
Đây là đoạn mã để hiển thị nội dung nào đó trong 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) Viết mã để minh họa Model, View và Controller trong CodeIgniter.
Đây là đoạn mã để minh hoạ Model, View và Controller trong CodeIgniter:
Mở file Bộ điều khiển Welcome.php nằm trong ứng dụng/bộ điều khiển:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Welcome extends CI_Controller { public function index() { $this->load->view('welcome_message'); } }
Cập nhật chỉ mục như sau:
public function index() { $this->load->model('customers_model'); $data['customer'] = $this->customers_model->get_customer(3); $this->load->view('welcome_message',$data); }
Viết mã sau vào customer_model.php trong application/models.
<?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; } }
Mở Welcome_message.php nằm ở
application/views/welcome_message.php
Thay thế mã bằng mã sau
<!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) Bạn có thể tạo một ứng dụng web với cả biểu mẫu web và MVC không?
Đúng. Bạn cần đưa các tham chiếu tập hợp MVC bên dưới vào ứng dụng biểu mẫu web để tạo ứng dụng kết hợp.
System.Web.Mvc System.Web.Razor System.ComponentModel.DataAnnotations
41) Làm cách nào bạn có thể gán tên bí danh cho Hành động API Web ASP.NET?
Chúng ta có thể đặt tên bí danh cho hành động API Web giống như trong trường hợp ASP.NET MVC bằng cách sử dụng thuộc tính “ActionName” như sau:
[HttpPost] [ActionName("SaveStudentInfo")] public void UpdateStudent(Student aStudent) { StudentRepository.AddStudent(aStudent); }
42) Sự khác biệt chính giữa MVC và WebAPI là gì?
Đây là điểm khác biệt chính giữa MVC và WebAPI:
Khung MVC được sử dụng để phát triển các ứng dụng có Giao diện người dùng. Vì thế, các khung nhìn có thể được sử dụng để xây dựng giao diện người dùng.
WebAPI được sử dụng để phát triển các dịch vụ HTTP. Các ứng dụng khác cũng có thể được gọi là phương thức WebAPI để tìm nạp dữ liệu đó.
43) Làm cách nào bạn có thể đảm bảo rằng API Web chỉ trả về dữ liệu JSON?
Để Web API tuần tự hóa đối tượng trả về thành định dạng JSON và chỉ trả về dữ liệu JSON. Để làm được điều đó, bạn nên thêm mã sau vào lớp WebApiConfig.cs trong bất kỳ Dự án MVC Web API nào:
//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) Sự khác biệt giữa MVVM và MVC là gì?
Dưới đây là những khác biệt quan trọng giữa MVVM và MVC:
VMC | MVVM |
---|---|
Bộ điều khiển là điểm vào Ứng dụng. | Chế độ xem là điểm vào Ứng dụng. |
Một đến nhiều mối quan hệ giữa Bộ điều khiển & Chế độ xem. | Một đến nhiều mối quan hệ giữa View & View Model. |
Chế độ xem không có tham chiếu đến Bộ điều khiển | Chế độ xem có tham chiếu đến Mô hình xem. |
MVC là mô hình cũ | MVVM là một Mô hình tương đối mới. |
Khó đọc, thay đổi, kiểm tra đơn vị và sử dụng lại Mô hình này | Quá trình gỡ lỗi sẽ trở nên phức tạp khi chúng ta có các ràng buộc dữ liệu phức tạp. |
Thành phần Mô hình MVC có thể được kiểm tra riêng biệt với người dùng | Dễ dàng kiểm tra đơn vị riêng biệt và mã được điều khiển theo sự kiện. |
45) MVC trong AngularJS là gì?
Angular.js tuân theo kiến trúc MVC, sơ đồ của khung MVC được hiển thị bên dưới.
- Bộ điều khiển đại diện cho lớp có logic nghiệp vụ. Sự kiện của người dùng sẽ kích hoạt các chức năng được lưu trữ bên trong bộ điều khiển của bạn. Các sự kiện của người dùng là một phần của bộ điều khiển.
- Chế độ xem được sử dụng để thể hiện lớp trình bày được cung cấp cho người dùng cuối.
- Các mô hình được sử dụng để biểu diễn dữ liệu của bạn. Dữ liệu trong mô hình của bạn có thể đơn giản như chỉ có các khai báo nguyên thủy. Ví dụ, nếu bạn đang duy trì một ứng dụng sinh viên, mô hình dữ liệu của bạn có thể chỉ có một id sinh viên và một tên. Hoặc nó cũng có thể phức tạp bằng cách có một mô hình dữ liệu có cấu trúc. Nếu bạn đang duy trì một ứng dụng sở hữu ô tô, bạn có thể có các cấu trúc để xác định chính chiếc xe theo dung tích động cơ, sức chứa chỗ ngồi, v.v.
46) Vai trò của MVC trong AngularJS là gì?
Sau đây là định nghĩa đơn giản về cách hoạt động của AngularJS Controller.
- Trách nhiệm chính của bộ điều khiển là kiểm soát dữ liệu được chuyển đến chế độ xem. Phạm vi và quan điểm có giao tiếp hai chiều.
- Các thuộc tính của khung nhìn có thể gọi các “hàm” trên phạm vi. Hơn nữa, các sự kiện trên khung nhìn có thể gọi các “phương thức” trên phạm vi. Đoạn mã dưới đây đưa ra một ví dụ đơn giản về hàm.
- Hàm($scope) được xác định khi xác định bộ điều khiển và hàm bên trong được sử dụng để trả về kết nối của $scope.firstName và $scope.lastName.
- Trong AngularJS khi bạn định nghĩa một hàm là một biến, nó được gọi là Phương thức.
- Dữ liệu theo cách này truyền từ bộ điều khiển đến phạm vi và sau đó dữ liệu chuyển qua lại từ phạm vi đến dạng xem.
- Phạm vi được sử dụng để hiển thị mô hình cho khung nhìn. Mô hình có thể được sửa đổi thông qua các phương thức được xác định trong phạm vi, có thể được kích hoạt thông qua các sự kiện từ chế độ xem. Chúng ta có thể định nghĩa ràng buộc mô hình hai chiều từ phạm vi đến mô hình.
- Bộ điều khiển không nên được sử dụng lý tưởng để thao tác DOM. Điều này nên được thực hiện bằng các chỉ thị, mà chúng ta sẽ thấy sau.
- Cách thực hành tốt nhất là có bộ điều khiển dựa trên chức năng. Ví dụ: nếu bạn có một biểu mẫu để nhập liệu và bạn cần một bộ điều khiển cho việc đó, hãy tạo một bộ điều khiển có tên là “bộ điều khiển biểu mẫu”.
47) Cách xây dựng Bộ điều khiển cơ bản trong AngularJS
Đoạn mã dưới đây là một trang HTML đơn giản có tiêu đề “Đăng ký sự kiện” và có tham chiếu đến các thư viện quan trọng như Bootstrap, jquery và Angular.
- Chúng tôi đang thêm các tham chiếu đến các bảng định kiểu CSS bootstrap, sẽ được sử dụng cùng với các thư viện bootstrap.
- Chúng tôi đang thêm tài liệu tham khảo vào thư viện AngularJS. Vì vậy, bây giờ, bất cứ điều gì chúng ta làm với Angular.js trong tương lai sẽ được tham chiếu từ thư viện này.
- Chúng tôi đang thêm các tham chiếu vào thư viện bootstrap để làm cho trang web của chúng tôi phản ứng nhanh hơn với một số điều khiển nhất định.
- Chúng tôi đã thêm các tham chiếu đến thư viện jquery sẽ được sử dụng để thao tác DOM. Điều này được Angular yêu cầu vì một số chức năng trong Angular phụ thuộc vào thư viện này.
Theo mặc định, đoạn mã trên sẽ có trong tất cả các ví dụ của chúng tôi để chúng tôi có thể chỉ hiển thị mã AngularJS cụ thể trong các phần tiếp theo.
Thứ hai, hãy xem các tệp và cấu trúc tệp mà chúng ta sẽ bắt đầu với khóa học của mình:
- Đầu tiên, chúng tôi tách các tệp của mình thành 2 thư mục như được thực hiện với bất kỳ ứng dụng web thông thường nào. Chúng tôi có thư mục CSS CSS. Nó sẽ chứa tất cả các tệp biểu định kiểu xếp tầng của chúng tôi và sau đó chúng tôi sẽ có thư mục “lib”, thư mục này sẽ có tất cả JavaScript các tập tin.
- Tệp bootstrap.css được đặt trong thư mục CSS và nó được sử dụng để thêm giao diện đẹp mắt cho trang web của chúng tôi.
- Angular.js là tệp chính của chúng tôi được tải xuống từ trang AngularJS và được lưu trong thư mục lib của chúng tôi.
- Tệp app.js sẽ chứa mã của chúng tôi dành cho bộ điều khiển.
- Tệp bootstrap.js được sử dụng để bổ sung tệp bootstrap.cs nhằm thêm chức năng bootstrap vào ứng dụng web của chúng tôi.
- Tệp jquery sẽ được sử dụng để thêm chức năng thao tác DOM vào trang web của chúng tôi.
Ví dụ về việc sử dụng Angular.js:
Những gì chúng ta muốn làm ở đây chỉ là hiển thị dòng chữ “AngularJS” ở cả định dạng văn bản và trong hộp văn bản khi trang được xem trên trình duyệt.
<!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) Việc sử dụng ng-controller trong các tệp bên ngoài trong AngularJS là gì
Thực hiện các bước sau để sử dụng ng-controller trong External Files trong AngularJS
Bước 1) Trong tệp app.js, hãy thêm mã sau cho bộ điều khiển của bạn
angular.module('app',[]).controller('HelloWorldCtrl',function($scope) { $scope.message = "Hello World" });
Bước 2) Bây giờ, trong tệp Sample.html của bạn, hãy thêm một lớp div sẽ chứa lệnh ng-controller, sau đó thêm một tham chiếu đến biến thành viên “thông báo”.
<!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) Viết code định nghĩa các phương thức trong AngularJS Controller?
Đây là mã để xác định các phương thức trong Bộ điều khiển AngularJS:
<!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) Viết mã bằng ng-model để hiển thị điều khiển đầu vào nhiều dòng trong AngularJS.
Đây là mã sử dụng ng-model để hiển thị điều khiển đầu vào nhiều dòng trong 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> Topic Description:<br> <br> <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) Viết mã để chứng minh việc sử dụng các phần tử đầu vào.
Đây là một ví dụ mã sử dụng các phần tử đầu vào của 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> Topic Description:<br> <br> Name : <input type="text" ng-model="pname"><br> Topic : <br> <input type="checkbox" ng-model="Topic.Controller">Controller<br> <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) Làm thế nào bạn có thể tạo một mô hình trong PHP?
Đây là đoạn mã để tạo mô hình trong 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) Tại sao nên sử dụng PHP MVC Framework?
Bạn nên sử dụng PHP MVC Framework vì nó giúp đơn giản hóa việc làm việc với các công nghệ phức tạp bằng cách:
- Ẩn tất cả các chi tiết triển khai phức tạp
- Cung cấp các phương pháp tiêu chuẩn mà chúng tôi có thể sử dụng để xây dựng các ứng dụng của mình.
- Tăng năng suất của nhà phát triển, điều này là do việc triển khai cơ bản các hoạt động như kết nối với cơ sở dữ liệu, vệ sinh đầu vào của người dùng, v.v., đã được triển khai một phần.
- Tuân thủ các tiêu chuẩn mã hóa chuyên nghiệp
54) Các framework PHP MVC phổ biến là gì?
Dưới đây là các khung công tác PHP MVC phổ biến:
CodeIgniter: Đây là một trong những framework PHP MVC phổ biến nhất. Nó nhẹ và có thời gian học tập ngắn. Nó có một bộ thư viện phong phú giúp xây dựng trang web và ứng dụng một cách nhanh chóng. Người dùng có kiến thức hạn chế về lập trình OOP cũng có thể sử dụng nó.
Kohana: Đây là Bộ điều khiển chế độ xem mô hình phân cấp HMVC, một khuôn khổ an toàn và nhẹ. Nó có một bộ thành phần phong phú để phát triển ứng dụng nhanh chóng.
BánhPHP: Nó được mô phỏng theo Ruby on Rails. Nó được biết đến với các khái niệm như mẫu thiết kế phần mềm, quy ước về cấu hình, ActiveRecord, v.v.
Zend: Đó là một khuôn khổ mạnh mẽ;
- An toàn, đáng tin cậy, nhanh chóng và có thể mở rộng
- Hỗ trợ Web 2.0 và tạo các dịch vụ web.
Nó có tính năng API từ các nhà cung cấp như Amazon, Google, Flickr, Yahoo, v.v. Thật lý tưởng để phát triển các ứng dụng kinh doanh.
55) Làm cách nào bạn có thể tạo chế độ xem trong PHP?
Đây là đoạn mã để tạo chế độ xem trong 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>
Bây giờ hãy tạo trang kết quả 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>
Những câu hỏi phỏng vấn này cũng sẽ giúp ích cho bài thi viva(orals) của bạn