Ngân hàng đề — Microsoft Azure Developer
Tìm thấy 409 câu.
You are developing an application that requires temporary access to a blob in an Azure Storage account for a client application. You decide to implement a Shared Access Signature (SAS) to allow this temporary access. Which of the following options correctly describes a scenario that would require the use of a SAS token?
-
A
To allow an application to upload files to a specific container in a storage account for a limited time.
-
B
To enable a third-party service to read all the tables in an Azure Cosmos DB account for a duration of one month.
-
C
To provide full administrative access to the Azure Storage account for a specific user without any expiration.
-
D
To grant unrestricted access to all blobs within a storage account for an indefinite period.
Xem giải thích
Đáp án
A — Cho phép ứng dụng tải tệp lên một container cụ thể
Vì sao đúng
Đây là mô tả đúng phạm vi của SAS: cấp quyền hạn chế, có thời hạn, tới tài nguyên cụ thể. Bạn khai chính xác container nào, quyền gì (ở đây là ghi), hiệu lực từ lúc nào tới lúc nào, và chấp nhận từ dải IP nào.
Bên nhận không cần tài khoản Azure nào, và quyền tự hết hiệu lực khi tới hạn.
Vì sao các phương án khác sai
- C. Cấp toàn quyền quản trị tài khoản lưu trữ và D. Cấp quyền không giới hạn trên mọi blob — đi ngược hẳn tinh thần của SAS, vốn tồn tại để thu hẹp quyền chứ không mở rộng.
- **B. Cho bên thứ ba đọc bảng trong Cosmos DB — sai dịch vụ: SAS là cơ chế của Azure Storage, không áp dụng cho Cosmos DB.
Which of the following code snippets correctly passes a query to a SQL database input binding and executes it in an Azure Function?
-
A
// csharp var query = "SELECT * FROM Users"; var results = await dbContext.Users.FromSqlRaw(query).ToListAsync(); // process results
-
B
// csharp [FunctionName("GetUsers")] public static IActionResult GetUsers( [Sql("SELECT * FROM Users", ConnectionStringSetting = "SqlConnectionString")] SqlConnection connection) { // Execute the connection } -
C
// csharp using (var connection = new SqlConnection("your_connection_string")) { var command = new SqlCommand("SELECT * FROM Users", connection); connection.Open(); var reader = command.ExecuteReader(); // process results } -
D
// csharp [FunctionName("GetUsers")] public static async Task<IActionResult> GetUsers( [Sql("SELECT * FROM Users", ConnectionStringSetting = "SqlConnectionString")] SqlDataReader reader) { // process results }
Xem giải thích
Đáp án
D — Dùng thuộc tính [Sql(...)] với tham số kiểu SqlDataReader trong hàm bất đồng bộ
Vì sao đúng
Đây là cách dùng input binding đúng nghĩa: runtime của Azure Functions tự chạy truy vấn trước khi gọi hàm, rồi truyền kết quả vào qua tham số. Bạn không phải mở kết nối, không phải đóng kết nối, và chuỗi kết nối được lấy từ application setting chứ không nằm trong mã.
Vì sao các phương án khác sai
- B. Cùng dùng
[Sql(...)]nhưng tham số làSqlConnection— đây là phương án nhiễu gần nhất và nó mâu thuẫn với chính ý tưởng của binding: nhận về một kết nối nghĩa là bạn vẫn phải tự thực thi truy vấn, tức là binding chẳng làm gì cả. - C. Tự mở
SqlConnectionvới chuỗi kết nối viết cứng — bỏ qua binding hoàn toàn, và nhúng chuỗi kết nối vào mã. - A. Dùng Entity Framework
FromSqlRaw— cách hợp lệ trong ứng dụng thường, nhưng không phải input binding mà câu hỏi hỏi tới.
You are developing an Azure Function that is triggered by an HTTP request. The function should return a JSON response with a status code of 200 when the request is successfully processed. Which of the following code snippets correctly implements this functionality in C#?
-
A
// csharp public static async Task<IActionResult> Run(HttpRequest req, ILogger log) { return new ContentResult { Content = "{\"message\":\"Success\"}", ContentType = "application/json" }; } -
B
// csharp public static async Task<IActionResult> Run(HttpRequest req, ILogger log) { return new JsonResult(new { message = "Success" }) { StatusCode = 200 }; } -
C
// csharp public static async Task<IActionResult> Run(HttpRequest req, ILogger log) { return new OkObjectResult(new { message = "Success" }); } -
D
// csharp public static async Task<IActionResult> Run(HttpRequest req, ILogger log) { return new BadRequestObjectResult("An error occurred"); }
Xem giải thích
Đáp án
C — return new OkObjectResult(new { message = "Success" });
Vì sao đúng
OkObjectResult là cách gọn nhất đạt đủ hai yêu cầu: nó mặc định trả mã 200, và tự tuần tự hoá đối tượng thành JSON kèm đặt Content-Type phù hợp. Không phải khai mã trạng thái, không phải tự dựng chuỗi JSON.
Vì sao các phương án khác sai
- B.
new JsonResult(...) { StatusCode = 200 }— đây là phương án nhiễu gần nhất và nó chạy đúng; chỉ là dài dòng hơn vì phải khai mã trạng thái màOkObjectResultđã ngụ ý sẵn trong tên. - A.
ContentResultvới chuỗi JSON viết tay — chạy được nhưng tự nối chuỗi JSON là cách rất dễ sai khi dữ liệu có dấu nháy hoặc ký tự đặc biệt. - D.
BadRequestObjectResult— trả mã 400, ngược hẳn yêu cầu.
Through what method can you ensure an Azure Container Instance (ACI) is updated soon after code is committed to GitHub? Choose the approach that automates the task, reduces cost and setup complexity.
-
A
Use Azure Logic Apps to monitor the GitHub repository for changes.
-
B
Manually trigger a deployment in the Azure portal whenever code is pushed to GitHub.
-
C
Set up a Continuous Integration (CI) pipeline in Azure DevOps to deploy the ACI after a code commit to GitHub.
-
D
Configure a GitHub Actions workflow to build and push the container image to Azure Container Registry (ACR) upon code commit.
Xem giải thích
Đáp án
D — Cấu hình GitHub Actions workflow để dựng và đẩy ảnh container
Vì sao đúng
Đề nêu ba tiêu chí và GitHub Actions đạt cả ba: tự động (kích hoạt ngay khi có commit), giảm độ phức tạp (workflow nằm ngay trong kho mã, không cần dựng hệ thống CI riêng), và phản ứng nhanh.
Điểm cộng lớn nhất khi mã đã ở GitHub: không phải nối hai hệ thống với nhau và không phải quản lý thêm một bộ thông tin đăng nhập.
Vì sao các phương án khác sai
- C. Dựng pipeline CI trên Azure DevOps — hoàn toàn làm được, nhưng thêm một nền tảng nữa phải cấu hình và nối vào GitHub; đề nói rõ muốn giảm độ phức tạp.
- A. Dùng Logic Apps theo dõi kho mã — tự dựng lại cơ chế kích hoạt mà GitHub đã có sẵn.
- B. Kích hoạt thủ công trong cổng Azure — có chữ "thủ công", ngược hẳn yêu cầu.
You need to create a new Azure Web App and deploy a package to it using the Azure CLI. Which of the following commands accomplishes this task?
-
A
az webapp create --name <app_name> --resource-group <resource_group> && az webapp deployment source config-zip --name <app_name> --resource-group <resource_group> --src <path_to_package> -
B
az appservice create --name <app_name> --resource-group <resource_group> && az appservice deploy --name <app_name> --resource-group <resource_group> --src <path_to_package> -
C
az webapp new --name <app_name> --resource-group <resource_group> && az webapp deploy --name <app_name> --resource-group <resource_group> --src <path_to_package> -
D
az create webapp --name <app_name> --resource-group <resource_group> && az deploy webapp --name <app_name> --resource-group <resource_group> --src <path_to_package>
Xem giải thích
Đáp án
A — az webapp create ...
Vì sao đúng
Cú pháp Azure CLI theo khuôn az <nhóm-lệnh> <hành-động>, và nhóm lệnh cho Web App là webapp, hành động là create. Sau khi tạo xong thì triển khai gói bằng az webapp deploy hoặc az webapp deployment source config-zip.
Vì sao các phương án khác sai
- D.
az create webapp— đảo thứ tự nhóm lệnh và hành động; Azure CLI luôn đặt nhóm trước. - C.
az webapp new— đúng nhóm nhưng sai hành động; CLI dùngcreate, không dùngnew. - B.
az appservice create— nhómappservicecó thật nhưng dùng để quản lý App Service plan (tài nguyên tính toán bên dưới), không tạo web app.
Is it possible to create a function in Azure that triggers only when a blob is deleted from a storage container?
-
A
No, Azure Functions do not support triggers for blob deletion events.
-
B
Yes, using Azure Event Grid to subscribe to blob deletion events and route them to an Azure Function.
-
C
Yes, but only if the blob is deleted via an HTTP request to an Azure Function.
-
D
Yes, using Azure Functions with Blob Storage trigger and setting it to listen for deletion events.
Xem giải thích
Đáp án
B — Có, dùng Azure Event Grid đăng ký sự kiện xoá blob rồi định tuyến tới hàm
Vì sao đúng
Đây là điểm khác biệt quan trọng giữa hai cơ chế kích hoạt:
| Blob Trigger (mặc định) | Event Grid | |
|---|---|---|
| Phát hiện blob được tạo | ✓ | ✓ |
| Phát hiện blob bị xoá | ✗ | ✓ |
| Cách hoạt động | Quét log theo chu kỳ | Dịch vụ đẩy sự kiện |
| Độ trễ | Có thể vài phút | Gần như tức thì |
Blob Trigger mặc định dựa vào việc quét log của tài khoản lưu trữ để tìm blob mới hoặc được cập nhật; nó không phát hiện được thao tác xoá. Event Grid thì phát sự kiện BlobDeleted riêng.
Vì sao các phương án khác sai
- D. Dùng Blob Storage trigger và đặt nó lắng nghe sự kiện xoá — không có tuỳ chọn nào như vậy.
- A. Azure Functions không hỗ trợ kích hoạt khi xoá blob — sai, vì Event Grid làm được.
- C. Chỉ được nếu blob bị xoá qua một yêu cầu HTTP tới hàm — không có ràng buộc nào như thế.
You are developing a new API that needs to be managed through Azure API Management. You want to ensure that only authenticated users can access your API and that usage is tracked effectively. Which of the following policies can you implement to achieve this?
-
A
Rate Limit by Subscription
-
B
Require Subscription Key
-
C
Set CORS Policy
-
D
Validate JWT Token
Xem giải thích
Đáp án
D — Validate JWT Token
Vì sao đúng
Đề có hai yêu cầu, và JWT validation lo yêu cầu quan trọng hơn: chỉ người dùng đã xác thực mới truy cập được. Chính sách này kiểm tra token trước khi API Management chuyển tiếp yêu cầu — kiểm chữ ký, hạn dùng, issuer, audience, và cả các claim cụ thể như vai hay phạm vi.
Nhờ vậy backend không phải tự cài đặt phần kiểm token, vốn là nơi rất dễ sai.
Vì sao các phương án khác sai
- B. Require Subscription Key — đây là phương án nhiễu gần nhất và nó có theo dõi được mức dùng, nhưng subscription key chỉ định danh ứng dụng gọi, không định danh người dùng; ai cầm được khoá là gọi được.
- A. Rate Limit by Subscription — giới hạn tần suất, không xác thực gì.
- C. Set CORS Policy — cho phép trình duyệt ở tên miền khác gọi API; không liên quan tới xác thực.
In Azure Container Apps, which of the following statements correctly describes the role of KEDA (Kubernetes Event-driven Autoscaling) in managing application scaling?
-
A
KEDA allows for scaling based on external metrics, such as messages in a queue or events in a stream.
-
B
KEDA is used exclusively for scaling applications deployed on Azure Kubernetes Service (AKS).
-
C
KEDA automatically scales the number of containers based on the CPU usage of the application.
-
D
KEDA is responsible for managing the lifecycle of the underlying virtual machines in Azure Container Apps.
Xem giải thích
Đáp án
A — KEDA cho co giãn dựa trên chỉ số bên ngoài, ví dụ số thông điệp trong hàng đợi
Vì sao đúng
Đây chính là điều làm KEDA khác với co giãn truyền thống. Co giãn theo CPU chỉ phản ứng sau khi ứng dụng đã bận; KEDA nhìn vào nguồn công việc — độ dài hàng đợi, số yêu cầu HTTP đang chờ, độ trễ của Kafka — nên nó biết có việc trước khi việc kịp làm ứng dụng quá tải.
Hệ quả quan trọng: KEDA co được về 0. Không có thông điệp nào thì không có bản chạy nào, và bạn không trả tiền.
Vì sao các phương án khác sai
- C. KEDA tự co giãn dựa trên mức dùng CPU — CPU chỉ là một trong nhiều nguồn chỉ số; nói vậy là thu hẹp KEDA về đúng thứ nó sinh ra để vượt qua.
- B. KEDA chỉ dùng cho ứng dụng trên AKS — sai: Container Apps dùng KEDA bên dưới mà bạn không cần đụng tới Kubernetes.
- D. KEDA quản lý vòng đời máy ảo bên dưới — đó là việc của nền tảng, không phải của KEDA.
What is the command line Docker command to package code in the current directory into an image?
-
A
docker build -t myimage . -
B
docker package myimage . -
C
docker create myimage . -
D
docker image create myimage .
Xem giải thích
Đáp án
A — docker build -t myimage .
Vì sao đúng
docker build là lệnh dựng ảnh từ Dockerfile. Hai phần đi kèm:
-t myimage— gắn thẻ (tên) cho ảnh, để về sau gọi được bằng tên thay vì mã băm..— build context: thư mục chứa Dockerfile và các tệp cần chép vào ảnh. Dấu chấm rất hay bị quên, và thiếu nó thì lệnh báo lỗi.
Vì sao các phương án khác sai
- C.
docker create myimage .—createtạo container từ một ảnh đã có, không dựng ảnh. - B.
docker package— không phải lệnh có thật. - D.
docker image create— nhóm lệnhdocker imagecó thật, nhưng hành động dựng ảnh làbuildchứ không phảicreate.
What is an advantage of using an App Service Environment (ASE) in Azure?
-
A
It eliminates the need for any networking configuration when deploying applications.
-
B
It allows for unlimited scaling of web applications without any performance degradation.
-
C
It provides a fully isolated environment for running apps, ensuring enhanced security and compliance.
-
D
It automatically optimizes application performance by analyzing user traffic in real-time.
Xem giải thích
Đáp án
C — Cung cấp môi trường hoàn toàn cô lập để chạy ứng dụng
Vì sao đúng
App Service Environment triển khai hạ tầng App Service vào chính mạng ảo của bạn, trên tài nguyên tính toán dành riêng thay vì dùng chung với khách hàng khác. Hai hệ quả quan trọng:
- Cô lập mạng thật — ứng dụng truy cập tài nguyên nội bộ qua IP riêng, và bạn kiểm soát toàn bộ luồng vào ra bằng NSG.
- Tài nguyên dành riêng — không có hiện tượng bị hàng xóm ồn ào ảnh hưởng.
Đây là lý do ASE được chọn cho khối lượng công việc có yêu cầu tuân thủ nghiêm.
Vì sao các phương án khác sai
- A. Không cần cấu hình mạng nào — ngược hẳn: ASE đòi quy hoạch mạng kỹ hơn App Service thường, vì nó nằm trong subnet của bạn.
- B. Co giãn không giới hạn mà không ảnh hưởng hiệu năng — không có nền tảng nào hứa được điều đó; ASE có giới hạn về số instance.
- D. Tự tối ưu hiệu năng bằng cách phân tích lưu lượng — không phải tính năng của ASE.