Ngân hàng đề — Microsoft Azure Developer
Tìm thấy 409 câu.
You plan to use the Azure Web App continuous deployment feature.
You need to run the static generation script before the website starts serving traffic.
What are two possible ways to achieve this goal? Each correct answer presents a complete solution.
NOTE: Each correct selection is worth one point.
- A Add the path to the static content generation tool to WEBSITE_RUN_FROM_PACKAGE setting in the host.json file.
- B Add a PreBuild target in the websites csproj project file that runs the static content generation script.
- C Create a file named run.cmd in the folder /run that calls a script which generates the static content and deploys the website.
- D Create a file named .deployment in the root of the repository that calls a script which generates the static content and deploys the website.
Xem giải thích
🧩 Giải thích nội dung câu hỏi
Câu hỏi yêu cầu triển khai một website lên Azure Web App từ repository GitHub, sử dụng tính năng continuous deployment (triển khai liên tục). Website chứa nội dung tĩnh (static content) được tạo bởi một script. Mục tiêu là chạy script tạo nội dung tĩnh TRƯỚC KHI website bắt đầu phục vụ traffic (tức là trước khi ứng dụng chính thức chạy và nhận request từ người dùng).
✅ Đây là câu hỏi multiple choice với 2 đáp án đúng (mỗi đáp án đúng đáng 1 điểm), tập trung vào các cách tùy chỉnh quy trình deploy trên Azure App Service (trước đây gọi là Azure Web App). Quy trình deploy mặc định sử dụng Kudu (deployment engine) hoặc Oryx cho build tự động, nhưng cần hook để chạy script ở giai đoạn phù hợp (pre-deploy hoặc pre-build).
🛠️ Bối cảnh cập nhật 2026: Azure App Service hỗ trợ GitHub Actions/Continuous Deployment với Oryx build system (phiên bản mới nhất hỗ trợ Node.js, .NET, Python, v.v.), cho phép tùy chỉnh qua file .deployment hoặc MSBuild targets. Không thay đổi cơ bản từ 2023-2026.
✅ Đáp án đúng (2 lựa chọn)
Hai cách đúng là:
- Add a PreBuild target in the websites csproj project file that runs the static content generation script.
(Chạy script trong giai đoạn PreBuild của MSBuild, trước khi deploy chính thức.) - Create a file named .deployment in the root of the repository that calls a script which generates the static content and deploys the website.
(Tùy chỉnh toàn bộ quy trình deploy qua Kudu engine.)
Lý do chọn: Cả hai đều cho phép chạy script trước khi website serve traffic, tích hợp trực tiếp vào continuous deployment từ GitHub. PreBuild phù hợp project .NET, .deployment là universal cho mọi ngôn ngữ.
📋 Phân tích chi tiết từng phương án
Dưới đây là phân tích tất cả 4 lựa chọn, giữ nguyên văn bản gốc bằng tiếng Anh. Mỗi phương án được đánh giá ✅ (Đúng) hoặc ❌ (Sai), kèm giải thích bằng tiếng Việt:
-
Add the path to the static content generation tool to WEBSITE_RUN_FROM_PACKAGE setting in the host.json file.
❌ Sai. SettingWEBSITE_RUN_FROM_PACKAGEdùng cho chế độ run-from-package (chạy trực tiếp từ ZIP package mà không unzip), thường cho Functions hoặc Web App để tối ưu cold start. Nó không chạy script tạo static content trước serve traffic, mà chỉ mount package như read-only. Filehost.jsonchủ yếu config Functions runtime, không ảnh hưởng deploy script ở đây. -
Add a PreBuild target in the websites csproj project file that runs the static content generation script.
✅ Đúng. Trong project .NET (.csproj), target<Target Name="PreBuild" BeforeTargets="PreBuild" />chạy script trước khi build/deploy qua MSBuild (Oryx sử dụng). Static content được generate lúc này, sau đó mới zip/deploy và serve. Hoàn hảo cho continuous deployment từ GitHub, đảm bảo content sẵn sàng trước traffic. -
Create a file named run.cmd in the folder /run that calls a script which generates the static content and deploys the website.
❌ Sai. Không có folder/runchuẩn trong Azure Web App deploy.run.cmd(hoặcstartup.cmd) dùng cho custom startup command ởwwwroot(chạy KHI app start, sau deploy), không phải trước serve traffic. Nó chỉ exec lúc runtime, không generate static trước deploy, dễ gây lỗi nếu content chưa sẵn. -
Create a file named .deployment in the root of the repository that calls a script which generates the static content and deploys the website.
✅ Đúng. File.deploymentở root repo kích hoạt custom deployment script qua Kudu (Azure's deployment engine). Nội dung file gọideploy.cmdhoặc script tùy chỉnh để chạy generate static trước khi deploy chính (pre-deploy hook). Hỗ trợ đầy đủ continuous deployment GitHub, linh hoạt cho mọi stack.
📘 Tài liệu tham khảo (cập nhật mới nhất 2026)
- Azure App Service Continuous Deployment 🛤️ (Chính thức, hướng dẫn .deployment và GitHub integration).
- Customize Deployment Script 📖 (Chi tiết Kudu và .deployment).
- Oryx Build System & MSBuild Targets 🔧 (.NET PreBuild, Oryx v2.x hỗ trợ đến 2026).
- WEBSITE_RUN_FROM_PACKAGE Docs ⚠️ (Giải thích sai lầm phổ biến).
Hy vọng phân tích này giúp bạn nắm vững! 🚀 Nếu cần demo code, hỏi thêm nhé!
You need to ensure that the index is updated as items are created, updated, or deleted.
What should you do?
- A Set the indexing mode to Lazy.
- B Set the value of the automatic property of the indexing policy to False.
- C Set the value of the EnableScanInQuery option to True.
- D Set the indexing mode to Consistent.
Xem giải thích
🧩 Phân tích chi tiết câu hỏi trắc nghiệm về Azure Cosmos DB
📖 Nội dung câu hỏi:
Câu hỏi mô tả một tổ chức đang triển khai Azure Cosmos DB (dịch vụ cơ sở dữ liệu NoSQL đa mô hình của Microsoft Azure). Yêu cầu là đảm bảo chỉ mục (index) được cập nhật ngay lập tức khi các mục (items) được tạo mới, cập nhật hoặc xóa. Điều này rất quan trọng để duy trì tính nhất quán của truy vấn dữ liệu, tránh tình trạng truy vấn không chính xác do index lỗi thời. Trong Cosmos DB, chính sách lập chỉ mục (indexing policy) kiểm soát cách index được xây dựng và cập nhật, với các chế độ khác nhau ảnh hưởng đến hiệu suất đọc/ghi và độ tươi mới của dữ liệu.
✅ Đáp án đúng:
Set the indexing mode to Consistent.
🛠️ Lý do lựa chọn đáp án đúng:
Chế độ Consistent đảm bảo index được cập nhật ngay lập tức và đồng bộ với mọi thay đổi trên items (tạo, cập nhật, xóa). Đây là chế độ mặc định và phù hợp nhất để đáp ứng yêu cầu "index is updated as items are created, updated, or deleted". Theo tài liệu chính thức của Microsoft, chế độ này cung cấp strong consistency cho index, giúp truy vấn luôn chính xác mà không delay. (Kiến thức cập nhật đến 2026: Chế độ Consistent vẫn là tiêu chuẩn chính, Lazy đã bị deprecated từ 2018 và không khuyến khích sử dụng).
📘 Tài liệu tham khảo:
- Azure Cosmos DB Indexing Policy (Microsoft Docs, cập nhật 2024).
- Cosmos DB Consistency Models (liên quan gián tiếp đến index consistency).
❌ Phân tích tất cả các phương án (đúng/sai)
-
Set the indexing mode to Lazy. ❌ Sai.
Chế độ Lazy (đã bị loại bỏ trong các phiên bản mới) chỉ cập nhật index theo batch định kỳ (delay lên đến 30 phút), không đảm bảo cập nhật ngay lập tức khi items thay đổi. Điều này cải thiện hiệu suất ghi nhưng vi phạm yêu cầu tính nhất quán thời gian thực của câu hỏi. -
Set the value of the automatic property of the indexing policy to False. ❌ Sai.
Thuộc tính automatic: false tắt lập chỉ mục tự động, chỉ index các đường dẫn (paths) được chỉ định rõ ràng trong policy. Kết quả là nhiều items thay đổi có thể không được index, dẫn đến index không đầy đủ và không cập nhật toàn bộ. -
Set the value of the EnableScanInQuery option to True. ❌ Sai.
Tùy chọn EnableScanInQuery cho phép thực hiện scan toàn bộ container thay vì dùng index khi truy vấn thất bại do thiếu index. Nó không ảnh hưởng đến việc cập nhật index mà chỉ là cơ chế fallback cho query, không giải quyết yêu cầu chính. -
Set the indexing mode to Consistent. ✅ Đúng.
Như đã giải thích ở trên, đây là lựa chọn duy nhất đảm bảo index luôn đồng bộ ngay lập tức với mọi hoạt động CRUD trên items, phù hợp hoàn hảo với yêu cầu câu hỏi.
You want to implement Azure Search to allow the application to search the index by using various criteria to locate documents related to accommodation venues.
You want the application to list holiday accommodation venues that fall within a specific price range and are within a specified distance to an airport.
What should you do?
- A Configure the SearchMode property of the SearchParameters class.
- B Configure the QueryType property of the SearchParameters class.
- C Configure the Facets property of the SearchParameters class.
- D Configure the Filter property of the SearchParameters class.
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi xoay quanh việc phát triển một ứng dụng .NET Core MVC cho phép khách hàng tìm kiếm các nhà cung cấp chỗ ở độc lập (holiday accommodation providers). Ứng dụng sử dụng Azure Search (nay được gọi là Azure AI Search) để tìm kiếm chỉ mục (index) dựa trên nhiều tiêu chí. Cụ thể, yêu cầu là liệt kê các địa điểm chỗ ở thỏa mãn hai điều kiện chính:
- Phạm vi giá cụ thể (price range, ví dụ: giá từ 100-500 USD/đêm).
- Khoảng cách đến sân bay (distance to an airport, ví dụ: trong vòng 50km).
📌 Mục tiêu chính: Triển khai tìm kiếm lọc dữ liệu (filtering) trên chỉ mục Azure AI Search để trả về kết quả chính xác mà không cần tìm kiếm full-text phức tạp. Điều này đòi hỏi sử dụng SearchParameters trong SDK .NET để cấu hình truy vấn phù hợp, dựa trên phiên bản mới nhất của Azure AI Search SDK (v4.x+ đến năm 2026, hỗ trợ semantic search, vector search và OData filter nâng cao).
🛠️ Bối cảnh kỹ thuật: Trong Azure AI Search, tìm kiếm có thể kết hợp full-text search (query) và filtering (boolean logic). Yêu cầu ở đây là filter thuần túy (không phải search text), nên cần thuộc tính Filter của SearchParameters để viết biểu thức OData như price gt 100 and price lt 500 and geo.distance(location, airportPoint) le 50.
✅ Đáp án đúng và lý do lựa chọn
Configure the Filter property of the SearchParameters class.
Lý do:
- Thuộc tính Filter cho phép áp dụng bộ lọc OData (boolean expressions) trực tiếp trên chỉ mục, lý tưởng cho các điều kiện range (giá) và geospatial (khoảng cách đến sân bay sử dụng hàm
geo.distance). - Ví dụ code .NET:
var parameters = new SearchParameters() { Filter = "price gt 100 and price lt 500 and geo.distance(location, geography'POINT(long lat)') le 50000" }; var results = indexClient.Search<Accommodation>("*", parameters); - Điều này hiệu suất cao, không ảnh hưởng đến scoring full-text, và hỗ trợ composite filters (AND/OR). Phù hợp hoàn hảo với yêu cầu không tìm kiếm text mà chỉ lọc theo metadata/range/geo (cập nhật Azure AI Search 2024-2026 với geospatial index tối ưu).
❌ Giải thích tất cả các phương án (đúng/sai)
-
❌ Configure the SearchMode property of the SearchParameters class.
Sai vì: SearchMode (All hoặc Any) chỉ kiểm soát cách matching terms trong full-text search (kết hợp điều kiện OR/AND cho từ khóa). Nó không hỗ trợ range filtering hoặc geospatial distance. Dùng cho query text-based, không phù hợp với yêu cầu lọc thuần túy giá/khoảng cách. (Không liên quan đến boolean filter). -
❌ Configure the QueryType property of the SearchParameters class.
Sai vì: QueryType (SimpleQuery, FullLuceneQuery, SemanticQuery, VectorQuery) định nghĩa loại truy vấn full-text (Lucene syntax, semantic reranking, hoặc vector embeddings). Nó dành cho text similarity/relevance, không xử lý range hoặc geo.distance. Semantic/Vector mới (2024+) vẫn cần Filter riêng cho metadata. -
❌ Configure the Facets property of the SearchParameters class.
Sai vì: Facets dùng cho faceted navigation (đếm và nhóm kết quả theo category/giá range để hiển thị UI facets như slider). Nó không lọc kết quả chính mà chỉ cung cấp metadata thống kê. Kết quả search vẫn trả về tất cả documents trừ khi kết hợp Filter, không đáp ứng yêu cầu chỉ liệt kê venues trong range cụ thể. -
✅ Configure the Filter property of the SearchParameters class.
Đúng vì: Như giải thích ở trên, Filter hỗ trợ OData expressions chính xác cho price range (gt/lt) và distance (geo.distance). Hiệu suất cao với searchable/filterable fields trong index schema. (Phiên bản mới nhất hỗ trợ hybrid search + filter).
📘 Tài liệu tham khảo
- Azure AI Search .NET SDK Docs (cập nhật 2026): SearchParameters Class – Chi tiết Filter & OData.
- Geospatial Search Guide: Geospatial Functions – Hỗ trợ
geo.distance. - Filtering Best Practices: OData Filter Syntax – Range & Boolean.
- Sample Code: Azure Search .NET Samples – Demo SearchParameters với filter.
🧩 Kết luận: Sử dụng Filter là cách tối ưu nhất cho yêu cầu lọc metadata/geo trong Azure AI Search, đảm bảo scalability cho app .NET Core MVC! Nếu cần code demo đầy đủ, hãy cho tôi biết nhé! 🚀
The Azure Cosmos DB account has been created with multiple write regions enabled. The application has been deployed to the East US2 and Central US regions.
You need to update the application to support multi-region writes.
What are two possible ways to achieve this goal? Each correct answer presents part of the solution.
NOTE: Each correct selection is worth one point.
- A Update the ConnectionPolicy class for the Cosmos client and populate the PreferredLocations property based on the geo-proximity of the application.
- B Update Azure Cosmos DB to use the Strong consistency level. Add indexed properties to the container to indicate region.
- C Update the ConnectionPolicy class for the Cosmos client and set the UseMultipleWriteLocations property to true.
- D Create and deploy a custom conflict resolution policy.
- E Update Azure Cosmos DB to use the Session consistency level. Send the SessionToken property value from the FeedResponse object of the write action to the end-user by using a cookie.
Xem giải thích
🧩 Giải thích chi tiết nội dung câu hỏi
Câu hỏi này thuộc chủ đề phát triển ứng dụng .NET sử dụng Azure Cosmos DB với Core (SQL) API, tập trung vào việc hỗ trợ ghi dữ liệu đa vùng (multi-region writes).
- Ứng dụng lưu trữ dữ liệu trong Azure Cosmos DB, cần xử lý hàng triệu lượt đọc/ghi (millions of reads and writes), đòi hỏi hiệu suất cao và khả năng mở rộng.
- Tài khoản Azure Cosmos DB đã được tạo với nhiều vùng ghi (multiple write regions) được kích hoạt, nghĩa là dữ liệu có thể được ghi đồng thời vào nhiều vùng địa lý.
- Ứng dụng đã triển khai tại hai vùng: East US2 và Central US.
- Mục tiêu: Cập nhật ứng dụng để hỗ trợ ghi đa vùng, giúp tối ưu hóa độ trễ và tính sẵn sàng cao khi app chạy ở nhiều vùng.
Đây là câu hỏi trắc nghiệm chọn nhiều đáp án (multi-select), cần chọn hai cách đúng để đạt mục tiêu. Mỗi đáp án đúng chiếm 1 điểm.
📘 Tài liệu tham khảo chính (cập nhật đến 2026):
- Azure Cosmos DB SDK for .NET v3.x documentation (ConnectionPolicy).
- Multi-region writes in Azure Cosmos DB (phiên bản mới nhất hỗ trợ Core API với UseMultipleWriteLocations).
- Global distribution and multi-region writes (xác nhận yêu cầu client-side config cho multi-master).
✅ Đáp án đúng (hai lựa chọn)
Hai phương án đúng là:
- Update the ConnectionPolicy class for the Cosmos client and populate the PreferredLocations property based on the geo-proximity of the application.
- Update the ConnectionPolicy class for the Cosmos client and set the UseMultipleWriteLocations property to true.
Lý do chọn:
- Để hỗ trợ multi-region writes, client .NET phải cấu hình ConnectionPolicy trong CosmosClient.
UseMultipleWriteLocations = truekích hoạt ghi đa vùng (multi-master), cho phép ghi vào tất cả vùng write-enabled.PreferredLocationsưu tiên vùng gần app nhất (dựa trên geo-proximity), giảm độ trễ cho reads/writes.
- Đây là cách chuẩn và bắt buộc theo SDK mới nhất (v3+), không cần thay đổi account-level mà chỉ update code client-side. 🛠️
📋 Phân tích chi tiết tất cả các phương án
🟢 ✅ Đúng: Update the ConnectionPolicy class for the Cosmos client and populate the PreferredLocations property based on the geo-proximity of the application.
Phương án này hoàn toàn đúng vì PreferredLocations trong ConnectionPolicy giúp client tự động chọn vùng gần nhất (geo-proximity) cho reads/writes, tối ưu hiệu suất khi app deploy đa vùng như East US2 và Central US. Kết hợp với multi-region writes enabled trên account, nó hỗ trợ phần của giải pháp bằng cách giảm latency. 🗺️
🔴 ❌ Sai: Update Azure Cosmos DB to use the Strong consistency level. Add indexed properties to the container to indicate region.
Phương án này sai vì Strong consistency không liên quan trực tiếp đến multi-region writes (nó chỉ đảm bảo tính nhất quán toàn cục, làm tăng latency). Việc thêm indexed properties cho region chỉ hữu ích cho query, không kích hoạt ghi đa vùng. Multi-region writes yêu cầu config client-side, không phải thay đổi consistency hay indexing. 🚫
🟢 ✅ Đúng: Update the ConnectionPolicy class for the Cosmos client and set the UseMultipleWriteLocations property to true.
Phương án này hoàn toàn đúng và là yếu tố cốt lõi. Thuộc tính UseMultipleWriteLocations = true kích hoạt client ghi dữ liệu vào tất cả các vùng write-enabled (multi-master mode), hỗ trợ trực tiếp mục tiêu. Đây là yêu cầu bắt buộc theo docs AWS... à không, Azure Cosmos DB SDK mới nhất (2026), giúp xử lý millions writes đa vùng mà không cần custom code. ⚡
🔴 ❌ Sai: Create and deploy a custom conflict resolution policy.
Phương án này sai vì custom conflict resolution chỉ dùng để giải quyết xung đột khi multi-region writes gây conflict (như last-writer-wins hoặc merge logic). Nó không kích hoạt multi-region writes mà chỉ xử lý hậu quả. Account đã enable multiple writes, nên tập trung vào client config. 🔄
🔴 ❌ Sai: Update Azure Cosmos DB to use the Session consistency level. Send the SessionToken property value from the FeedResponse object of the write action to the end-user by using a cookie.
Phương án này sai vì Session consistency chỉ dành cho per-session reads (gửi SessionToken qua cookie để duy trì context), không hỗ trợ multi-region writes. Nó phù hợp cho single-region hoặc bounded-staleness, nhưng không giúp ghi đa vùng. Multi-writes cần UseMultipleWriteLocations, không phải session token. 🍪
The API must be called by an Azure App Service web app. The API must retrieve and update user profile information stored in Azure Active Directory (Azure AD).
You need to configure the API to make the updates.
Which two tools should you use? Each correct answer presents part of the solution.
NOTE: Each correct selection is worth one point.
- A Microsoft Graph API
- B Microsoft Authentication Library (MSAL)
- C Azure API Management
- D Microsoft Azure Security Center
- E Microsoft Azure Key Vault SDK
Xem giải thích
🧩 Phân tích chi tiết câu hỏi trắc nghiệm
📘 Nội dung câu hỏi:
Câu hỏi yêu cầu cấu hình một REST API được phát triển trên Azure App Service, API này sẽ được gọi bởi một Azure App Service web app. Nhiệm vụ chính của API là lấy (retrieve) và cập nhật (update) thông tin hồ sơ người dùng (user profile information) được lưu trữ trong Azure Active Directory (Azure AD) – nay còn gọi là Microsoft Entra ID. Chúng ta cần chọn hai công cụ (tools) để thực hiện việc cập nhật này. Đây là câu hỏi multiple choice với hai đáp án đúng, mỗi đáp án đúng chiếm 1 điểm.
🛠️ Bối cảnh kỹ thuật:
- Azure App Service là nền tảng PaaS để host web apps và APIs.
- Azure AD quản lý danh tính người dùng (user identities), và để tương tác với dữ liệu user profile (như tên, email, ảnh đại diện...), chúng ta cần sử dụng các API chuẩn của Microsoft để đảm bảo bảo mật và tuân thủ.
- Việc "configure the API to make the updates" nhấn mạnh vào việc tích hợp authentication và API calls để đọc/ghi dữ liệu Azure AD một cách an toàn, thường trong mô hình daemon app hoặc web app calling API với OAuth 2.0.
(Kiến thức cập nhật đến 2026: Microsoft Graph API v5.x và MSAL.NET/MSAL.js phiên bản mới nhất hỗ trợ Entra ID fully.)
✅ Đáp án đúng và lý do lựa chọn
Hai công cụ đúng là:
- Microsoft Graph API ✅: Đây là API REST chính thức của Microsoft để truy cập và cập nhật dữ liệu trong Microsoft 365 ecosystem, bao gồm Azure AD users. Nó hỗ trợ các endpoint như
/mehoặc/users/{id}để retrieve/update profile (ví dụ:PATCH /users/{id}để cập nhật displayName, jobTitle...). Không dùng Graph API thì không thể trực tiếp thao tác user data từ Azure AD. - Microsoft Authentication Library (MSAL) ✅: MSAL là thư viện authentication để lấy access token (dùng Client Credentials Flow hoặc On-Behalf-Of Flow) từ Azure AD, cần thiết để gọi Graph API. Nó xử lý OAuth 2.0/OpenID Connect, đảm bảo API của bạn authenticate đúng scopes như
User.ReadWrite.All.
Lý do chọn hai cái này: Chúng là bộ đôi chuẩn theo best practices của Microsoft cho các app Azure tích hợp Entra ID. Web app gọi API → API dùng MSAL lấy token → gọi Graph API update profile. (Tham khảo: Microsoft Docs - Use Microsoft Graph in App Service, MSAL Overview).
🔍 Giải thích tất cả các phương án (đúng/sai)
Dưới đây là phân tích từng lựa chọn, giữ nguyên văn bản gốc bằng tiếng Anh, kèm giải thích chi tiết bằng tiếng Việt với đánh giá đúng/sai:
-
Microsoft Graph API
✅ ĐÚNG: Đây là công cụ cốt lõi để thực hiện retrieve/update user profile trong Azure AD. Graph API cung cấp các REST endpoints chuẩn (như GET/PATCH /users) với scopes phù hợp. Không có nó, API của bạn không thể truy cập dữ liệu user một cách trực tiếp và an toàn. (Nguồn: Graph API Users docs). -
Microsoft Authentication Library (MSAL)
✅ ĐÚNG: MSAL dùng để authenticate app/API với Azure AD, lấy access token cần thiết cho Graph API. Hỗ trợ các flow như confidential client, tích hợp dễ dàng với .NET/Node.js trong App Service. Thiếu MSAL, bạn không thể authorize calls đến Graph. (Nguồn: MSAL for .NET). -
Azure API Management
❌ SAI: Azure API Management (APIM) là dịch vụ để quản lý, bảo mật và scale APIs (như gateway, policies), không dùng để trực tiếp retrieve/update dữ liệu Azure AD. Nó chỉ hỗ trợ expose/protect API của bạn, không liên quan đến user profile ops. (Nguồn: APIM Overview). -
Microsoft Azure Security Center
❌ SAI: Đây là công cụ bảo mật (nay là Microsoft Defender for Cloud) để monitor threats, compliance, không phải tool để update user data. Nó không cung cấp API cho profile management. (Nguồn: Defender for Cloud). -
Microsoft Azure Key Vault SDK
❌ SAI: Key Vault SDK dùng để quản lý secrets/keys/certificates, có thể lưu token nhưng không dùng để update Azure AD profiles. Nó chỉ hỗ trợ storage/retrieval secrets, không phải identity ops. (Nguồn: Key Vault SDK).
🧩 Kết luận: Bộ đôi Microsoft Graph API + MSAL là giải pháp hoàn chỉnh, tuân thủ zero-trust model của Microsoft đến năm 2026. Nếu implement, hãy dùng Managed Identity cho App Service để simplify auth! (Tài liệu tổng: Azure AD App Development).
You discover that configuration changes were made to some of the web apps.
You need to identify the configuration changes.
Which Azure Monitor log should you review?
- A AppServiceAppLogs
- B AppServiceEnvironmentPlatformlogs
- C AppServiceConsoleLogs
- D AppServiceAuditLogs
Xem giải thích
🧩 Phân tích chi tiết câu hỏi trắc nghiệm
📖 Nội dung câu hỏi:
Câu hỏi mô tả một tổ chức đang lưu trữ các ứng dụng web (web apps) trên nền tảng Azure, và họ sử dụng Azure Monitor để giám sát. Người quản trị phát hiện có những thay đổi cấu hình (configuration changes) được thực hiện trên một số web apps. Nhiệm vụ là xác định Azure Monitor log nào cần kiểm tra để identify (xác định) các thay đổi cấu hình này.
🛠️ Bối cảnh kỹ thuật: Web apps ở đây đề cập đến Azure App Service (dịch vụ lưu trữ ứng dụng web). Azure Monitor thu thập logs từ các nguồn diagnostics của App Service, lưu trữ dưới dạng các bảng (tables) trong Log Analytics workspace. Để theo dõi thay đổi cấu hình như cập nhật settings, scale, backup, hoặc admin operations, cần xem logs chuyên biệt về audit và platform activities. Kiến thức dựa trên phiên bản Azure mới nhất (2024-2026), không có thay đổi lớn trong schema logs của App Service.
✅ Đáp án đúng: AppServiceAuditLogs
Lý do lựa chọn:
Bảng AppServiceAuditLogs ghi nhận chính xác các hoạt động quản trị (administrative operations) trên App Service, bao gồm tất cả các thay đổi cấu hình như chỉnh sửa app settings, connection strings, scale settings, backup configurations, v.v. Đây là nguồn log chuẩn để audit và identify config changes theo tài liệu chính thức của Microsoft Azure. Khi kích hoạt diagnostic settings cho App Service, logs này sẽ được gửi đến Azure Monitor Logs để query.
📘 Dẫn nguồn: Azure App Service diagnostics logs và Azure Monitor Logs schema for App Service.
🔍 Giải thích tất cả các phương án (đúng/sai)
-
AppServiceAppLogs ❌ Sai
Bảng này chứa application logs (logs từ mã nguồn ứng dụng, như lỗi runtime, traces từ code của developer). Nó không ghi nhận thay đổi cấu hình từ phía platform hoặc admin, mà chỉ tập trung vào hoạt động nội bộ app. Không phù hợp để identify config changes. -
AppServiceEnvironmentPlatformlogs ❌ Sai
Bảng này dành cho platform logs của App Service Environment (ASE) – một môi trường cô lập cao cấp cho App Service. Nó ghi nhận các sự kiện platform-level của ASE như deployment ASE, scaling ASE infrastructure, hoặc maintenance ASE. Câu hỏi chỉ nói "web apps" thông thường (không đề cập ASE), nên không phải lựa chọn đúng. Chỉ dùng khi web apps chạy trong ASE. -
AppServiceConsoleLogs ❌ Sai
Bảng này lưu console logs (stdout/stderr) từ ứng dụng chạy trên App Service, thường dùng để debug startup errors hoặc output từ console app (.NET, Node.js, v.v.). Không liên quan đến thay đổi cấu hình admin/platform. -
AppServiceAuditLogs ✅ Đúng
Như đã giải thích ở trên, đây là bảng chuyên biệt cho audit logs của các thay đổi cấu hình và hoạt động quản trị trên App Service. Bạn có thể query KQL như:AppServiceAuditLogs | where OperationName == "Microsoft.Web/sites/write" | order by TimeGenerated descđể xem chi tiết config changes. Hoàn hảo cho yêu cầu identify changes.
💡 Lưu ý thực hành: Để enable logs này, vào App Service > Diagnostic settings > Add diagnostic setting, chọn AppServiceAuditLogs và gửi đến Log Analytics. Sau đó query trong Azure Monitor Logs. Nếu cần kiến thức sâu hơn, tham khảo Azure Activity Log cho bổ sung (nhưng primary là AuditLogs cho App Service).
After you answer a question in this section, you will NOT be able to return to it. As a result, these questions will not appear in the review screen.
You are developing an Azure Service application that processes queue data when it receives a message from a mobile application. Messages may not be sent to the service consistently.
You have the following requirements:
✑ Queue size must not grow larger than 80 gigabytes (GB).
✑ Use first-in-first-out (FIFO) ordering of messages.
✑ Minimize Azure costs.
You need to implement the messaging solution.
Solution: Use the .Net API to add a message to an Azure Service Bus Queue from the mobile application. Create an Azure Function App that uses an Azure
Service Bus Queue trigger.
Does the solution meet the goal?
- A Yes
- B No
Xem giải thích
🧩 Phân tích chi tiết câu hỏi trắc nghiệm
📘 Nội dung câu hỏi được giải thích rõ ràng:
Câu hỏi thuộc dạng case study (phần câu hỏi liên tiếp với cùng tình huống), thường gặp trong kỳ thi chứng chỉ Azure như AZ-204. Bạn đang phát triển một ứng dụng Azure Service xử lý dữ liệu hàng đợi (queue) khi nhận tin nhắn từ ứng dụng di động. Tin nhắn có thể không được gửi đều đặn (không consistent).
Yêu cầu cụ thể (goals):
✅ Kích thước queue không được vượt quá 80 GB (Queue size must not grow larger than 80 GB) – cần cơ chế giới hạn kích thước chính xác.
✅ Sử dụng thứ tự FIFO (first-in-first-out) cho tin nhắn – đảm bảo xử lý theo thứ tự đến trước được xử lý trước.
✅ Giảm thiểu chi phí Azure (Minimize Azure costs) – ưu tiên giải pháp rẻ nhất có thể.
Giải pháp đề xuất (Solution):
- Sử dụng .Net API để thêm tin nhắn vào Azure Service Bus Queue từ ứng dụng di động.
- Tạo Azure Function App sử dụng Service Bus Queue trigger để xử lý tin nhắn tự động.
Câu hỏi chính: Giải pháp này có đáp ứng đầy đủ các yêu cầu trên không? (Does the solution meet the goal?)
Đây là câu Yes/No, và cần đánh giá xem giải pháp có thỏa mãn tất cả 3 yêu cầu cùng lúc không.
✅ Đáp án đúng: No
Lý do lựa chọn (chi tiết bằng tiếng Việt):
Giải pháp KHÔNG đáp ứng đầy đủ vì:
🛠️ Vấn đề kích thước queue (80 GB): Azure Service Bus Queue ở tier Standard (rẻ tiền, phù hợp min cost) chỉ hỗ trợ tối đa 5 GB (5120 MB) mỗi queue. Không thể thiết lập MaxSizeInMegabytes = 80 GB (81920 MB) vì vượt giới hạn tier Standard. Tier Premium hỗ trợ kích thước lớn hơn (lên đến 100 GB+ tùy cấu hình), nhưng đắt hơn đáng kể (dựa trên throughput units), vi phạm yêu cầu "minimize costs". Giải pháp không chỉ định tier Premium, nên mặc định không đảm bảo queue ≤80 GB mà vẫn min cost.
🧩 FIFO ordering: Service Bus hỗ trợ FIFO qua message sessions (cần enable thủ công), nhưng giải pháp không đề cập, và Azure Functions trigger xử lý song song có thể phá vỡ thứ tự nếu không config sessions đúng.
📈 Minimize costs: Tier Standard rẻ, nhưng fail ở size; Premium ok size nhưng fail cost. Không có giải pháp cân bằng hoàn hảo ở đây.
Tài liệu tham khảo (cập nhật mới nhất 2024-2026):
- Azure Service Bus quotas and limits (Standard: 5 GB max; Premium: 1-100 GB+ tùy SKU).
- Azure Service Bus pricing (Premium đắt gấp 5-10x Standard cho cùng throughput).
- Azure Functions Service Bus trigger (Hỗ trợ FIFO với sessions từ v5+ runtime).
🔍 Giải thích tất cả các phương án (giữ nguyên text gốc bằng tiếng Anh)
- Yes ❌ SAI – Phương án này sai vì giải pháp không đáp ứng kích thước 80 GB ở tier rẻ tiền (Standard chỉ 5 GB max, không set được MaxSizeInMegabytes cao hơn). Dù FIFO có thể config qua sessions và Functions trigger hoạt động tốt, nhưng fail ở size + cost (Premium cần thiết nhưng đắt). Không "meet the goal" toàn bộ.
- No ✅ ĐÚNG – Phương án này đúng vì giải pháp KHÔNG thỏa mãn tất cả yêu cầu đồng thời. Cụ thể: Standard tier min cost nhưng queue max 5 GB < 80 GB; Premium fix size nhưng tăng cost cao. FIFO cần sessions bổ sung (không đề cập), và không có cách tự động enforce ≤80 GB mà vẫn rẻ nhất. Trong series câu hỏi, đây là solution sai, thường so sánh với alternatives như Azure Storage Queue (size lớn nhưng no FIFO) hoặc Event Hubs.
You need to edit the workflows for an existing Logic App.
What should you use?
- A the Enterprise Integration Pack (EIP)
- B the Logic App Code View
- C the API Connections
- D the Logic Apps Designer
Xem giải thích
🧩 Phân tích chi tiết câu hỏi
Câu hỏi này thuộc lĩnh vực Microsoft Azure Logic Apps, một dịch vụ serverless dùng để xây dựng và tự động hóa các workflow (luồng công việc) tích hợp giữa các ứng dụng, dịch vụ đám mây và hệ thống on-premises.
Nội dung câu hỏi:
Bạn là một lập trình viên tại công ty. Bạn cần chỉnh sửa (edit) các workflows cho một Logic App hiện có. Câu hỏi yêu cầu xác định công cụ phù hợp nhất để thực hiện nhiệm vụ này.
- Logic App là nơi chứa các workflow được định nghĩa dưới dạng JSON, nhưng chỉnh sửa thường qua giao diện trực quan.
- Nhiệm vụ tập trung vào edit workflows hiện có, không phải tạo mới, tích hợp doanh nghiệp hay quản lý kết nối.
(Lưu ý: Mặc dù người dùng đề cập "liên quan đến AWS", nhưng đây rõ ràng là câu hỏi về Azure Logic Apps – dịch vụ tương đương AWS Step Functions. Tôi sử dụng kiến thức Azure cập nhật đến 2026, với Logic Apps Standard v2 và Consumption mode mới nhất từ Microsoft Docs).
✅ Đáp án đúng: the Logic Apps Designer
Lý do lựa chọn:
🛠️ Logic Apps Designer là giao diện đồ họa trực quan (visual designer) chính thức và được khuyến nghị nhất để chỉnh sửa workflows cho Logic App hiện có. Nó cho phép kéo-thả các hành động (actions), triggers, điều kiện mà không cần viết code JSON thủ công.
- Hỗ trợ real-time preview, validation và debug trực tiếp.
- Áp dụng cho cả Logic Apps Consumption (multi-tenant) và Standard (single-tenant) ở phiên bản mới nhất (2026), với tích hợp AI Builder và custom connectors.
- Khi mở Logic App trong Azure Portal, Designer tự động load workflow để edit.
📘 Tài liệu tham khảo:
- Microsoft Docs: Edit Logic App workflows with Designer (cập nhật 2025-2026).
- Azure Portal: Logic Apps Designer.
📋 Giải thích tất cả các phương án
-
❌ the Enterprise Integration Pack (EIP):
Phương án này sai vì EIP (nay là Integration Service Environment - ISE hoặc Enterprise connectors) chỉ dùng để tích hợp B2B/EDI (như X12, AS2) với các connector doanh nghiệp cao cấp, không phải công cụ chỉnh sửa workflows. Nó bổ trợ cho Designer chứ không thay thế. Trong phiên bản mới (2026), ISE đã deprecated, chuyển sang Standard Logic Apps. -
❌ the Logic App Code View:
Phương án này sai vì Code View chỉ là chế độ xem và chỉnh sửa JSON thô (underlying definition), không phải công cụ chính để edit workflows. Nó hữu ích cho advanced scripting nhưng dễ lỗi, thiếu validation trực quan và không khuyến nghị cho edit thông thường. Designer mới hỗ trợ chuyển đổi seamless sang Code View (2026 updates). -
❌ the API Connections:
Phương án này sai vì API Connections dùng để quản lý và tạo kết nối (managed connectors) đến các dịch vụ như Office 365, Salesforce, không phải để edit workflows. Chúng là thành phần bên trong workflow, được thiết lập qua Designer.
Kết luận: 🏆 Sử dụng Logic Apps Designer là cách nhanh chóng, an toàn và chuẩn best practice cho developer Azure! Nếu cần thực hành, hãy thử trên Azure Portal miễn phí. 🚀
The token is compromised.
You need to revoke the token.
What are two possible ways to achieve this goal? Each correct answer presents a complete solution.
NOTE: Each correct selection is worth one point.
- A Revoke the delegation key.
- B Delete the stored access policy.
- C Regenerate the account key.
- D Remove the role assignment for the security principle.
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi thuộc lĩnh vực Azure Blob Storage (không phải AWS như đề cập ban đầu, có thể là nhầm lẫn), tập trung vào User Delegation SAS token – một loại Shared Access Signature (SAS) được tạo dựa trên thông tin xác thực Azure Active Directory (Azure AD, nay là Microsoft Entra ID).
- Bối cảnh: Bạn đang phát triển một REST API sử dụng User Delegation SAS token để giao tiếp với Azure Blob Storage. Token này bị compromised (bị lộ, bị đánh cắp).
- Yêu cầu: Cần revoke (thu hồi/hủy hiệu lực) token ngay lập tức. Câu hỏi là trắc nghiệm đa lựa chọn, yêu cầu chọn hai cách có thể đạt được mục tiêu này (mỗi đáp án đúng đáng 1 điểm).
- Đặc điểm của User Delegation SAS: Không giống SAS thông thường (dùng account key), loại này sử dụng user delegation key (dựa trên OAuth token từ Azure AD của user hoặc service principal). Thời hạn SAS có thể dài, nhưng để revoke, cần can thiệp vào nguồn gốc xác thực (delegation key hoặc quyền Azure RBAC).
Mục tiêu chính: Tìm hai phương pháp hoàn chỉnh để vô hiệu hóa token ngay mà không ảnh hưởng toàn bộ storage account. (Kiến thức cập nhật đến 2026: Theo Azure Storage docs phiên bản mới nhất, User Delegation SAS hỗ trợ revocation qua delegation key và RBAC roles – không dùng account key).
📘 Tài liệu tham khảo:
- Azure Docs: Create a user delegation SAS (cập nhật 2024-2026).
- Azure Docs: Manage SAS tokens – Phần revocation cho user delegation.
- Microsoft Learn: RBAC for Storage.
✅ Đáp án đúng (hai lựa chọn hoàn chỉnh)
Hai phương pháp đúng là:
- Revoke the delegation key.
- Remove the role assignment for the security principle.
Lý do lựa chọn:
- User Delegation SAS được ký bằng user delegation key (lấy từ storage service qua OAuth token). Revoke key này hoặc xóa quyền RBAC của security principal (user/service principal) sẽ làm SAS hết hiệu lực ngay lập tức, vì SAS phụ thuộc vào nguồn gốc ủy quyền Azure AD. Các cách khác không áp dụng trực tiếp cho loại SAS này.
🛠️ Phân tích chi tiết từng phương án (đúng/sai)
-
✅ Revoke the delegation key.
Đúng: User Delegation SAS được tạo bằng user delegation key (một key tạm thời dựa trên OAuth token từ Azure AD). Khi revoke key này (qua API hoặc Azure portal), tất cả SAS liên kết sẽ bị vô hiệu hóa ngay lập tức. Đây là cách trực tiếp và chính xác nhất cho loại SAS delegation, không ảnh hưởng đến các SAS khác. (Theo docs: Sử dụngRevokeUserDelegationKeyAPI). -
❌ Delete the stored access policy.
Sai: Stored access policy chỉ áp dụng cho Service SAS hoặc Account SAS (định nghĩa quyền và thời hạn trên storage account). User Delegation SAS hỗ trợ stored policy nhưng không bắt buộc, và việc xóa policy chỉ ảnh hưởng nếu SAS trỏ đến policy đó. Không phải cách revoke toàn diện cho delegation SAS bị compromised, vì SAS này chủ yếu dựa trên delegation key/Azure AD, không phải policy lưu trữ. -
❌ Regenerate the account key.
Sai: Account key dùng cho Account SAS hoặc Service SAS thông thường, không liên quan đến User Delegation SAS (loại này không sử dụng account key mà dùng Azure AD delegation). Regenerate account key chỉ vô hiệu hóa SAS dựa trên account key, nhưng sẽ ảnh hưởng rộng (có thể phá vỡ ứng dụng khác), không phải giải pháp cho delegation SAS. -
✅ Remove the role assignment for the security principle.
Đúng: Security principal (user, group, hoặc service principal) cần role như Storage Blob Data Contributor để tạo user delegation key. Xóa role assignment (qua Azure RBAC) sẽ làm delegation key không còn hợp lệ, từ đó revoke tất cả SAS liên kết. Cách này an toàn, granular, và hiệu quả ngay lập tức (propagation ~phút). (Docs: Sử dụngaz role assignment deletehoặc portal).
Lưu ý cuối: 🛡️️ Luôn ưu tiên least privilege với RBAC cho SAS delegation để dễ revoke. Nếu cần test, dùng Azure CLI: az storage account user-delegation-key revoke (phiên bản mới 2026).
You deploy a code update and receive multiple failed requests and exceptions in the web app.
You need to validate the performance and failure counts of the web app in near real time.
Which Application Insights tool should you use?
- A Profiler
- B Smart Detection
- C Live Metrics Stream
- D Application Map
- E Snapshot Debugger
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi mô tả một tình huống thực tế trong phát triển ứng dụng trên Microsoft Azure App Service (web app ở môi trường production):
- Bạn đã kích hoạt tính năng Always On (giúp app luôn chạy, tránh cold start) và cài đặt Application Insights site extensions (công cụ giám sát tích hợp).
- Sau khi deploy bản cập nhật code mới, ứng dụng gặp nhiều failed requests (yêu cầu thất bại) và exceptions (lỗi ngoại lệ).
- Yêu cầu chính: Kiểm tra và xác thực performance (hiệu suất) cùng failure counts (số lượng lỗi) của web app ở chế độ near real time (gần thời gian thực, tức là dữ liệu cập nhật liên tục, gần như ngay lập tức mà không cần chờ batch processing).
Mục tiêu là chọn công cụ phù hợp nhất trong Application Insights để theo dõi live (trực tiếp), giúp developer nhanh chóng debug và validate vấn đề sau deploy. Đây là kịch bản phổ biến trong DevOps trên Azure, nhấn mạnh vào monitoring real-time để giảm downtime. (Kiến thức dựa trên Azure Application Insights phiên bản mới nhất đến 2026, với Live Metrics được tối ưu hóa cho streaming metrics).
✅ Đáp án đúng: Live Metrics Stream
Lý do lựa chọn:
- Live Metrics Stream (nay còn gọi là Live Metrics trong dashboard mới) cung cấp dữ liệu near real-time (cập nhật mỗi 1-2 giây) qua streaming trực tiếp, không cần refresh trang.
- Nó hiển thị trực quan performance metrics (như CPU, memory, response time) và failure counts (số lượng failed requests, exceptions rate) ngay lập tức, kèm theo mẫu traces/exceptions live.
- Hoàn hảo cho tình huống post-deploy validation, giúp phát hiện vấn đề nhanh chóng mà không chờ dữ liệu batch (telemetry gửi mỗi 1 phút ở các tool khác).
- Trong Azure portal, chỉ cần click vào Live Metrics để stream dữ liệu từ App Service đã enable site extension.
🛠️ Ví dụ sử dụng: Xem live graph của failed requests spike sau deploy, filter theo endpoint cụ thể.
📋 Giải thích tất cả các phương án (đúng/sai)
Dưới đây là phân tích từng lựa chọn, giữ nguyên tên gốc tiếng Anh. Mỗi phương án được đánh giá dựa trên chức năng thực tế của Application Insights (Azure Monitor suite, cập nhật 2026):
-
Profiler ❌ SAI:
Công cụ này dùng để performance profiling chi tiết (trace CPU, memory leaks) qua sampling traces, nhưng KHÔNG phải near real-time. Dữ liệu chỉ available sau vài phút/giờ, phù hợp analyze sâu sau sự cố chứ không phải monitor live. Không hiển thị failure counts trực tiếp. -
Smart Detection ❌ SAI:
Tính năng anomaly detection tự động (AI-based), gửi alert khi phát hiện failure patterns bất thường (như spike exceptions). Tuy nhiên, nó KHÔNG cho phép validate manual near real-time – dữ liệu là proactive (chờ xử lý batch, delay 10-30 phút), không stream live như yêu cầu. -
Live Metrics Stream ✅ ĐÚNG:
Như đã giải thích ở trên: Streaming metrics near real-time (1-5 giây latency), hiển thị performance (availability, latency) và failure counts (errors, exceptions) trực tiếp trên dashboard. Lý tưởng cho troubleshooting immediate sau deploy code update trên App Service. -
Application Map ❌ SAI:
Tạo topology map của dependencies (services, databases), visualize end-to-end flow với failure rates. Nhưng KHÔNG real-time (dữ liệu aggregated hàng phút/giờ), chủ yếu dùng cho architecture overview chứ không monitor live performance/failures. -
Snapshot Debugger ❌ SAI:
Chụp snapshots debug khi exceptions xảy ra (code state, variables), gửi về portal để analyze. Rất hữu ích cho exceptions sâu, nhưng KHÔNG hiển thị performance metrics hay failure counts real-time – chỉ trigger on-error, delay vài phút, không stream liên tục.
📘 Tài liệu tham khảo
- Azure Docs chính thức (cập nhật 2026): Live Metrics Stream in Application Insights – Chi tiết về near real-time streaming cho App Service.
- Application Insights Overview: Azure Monitor Application Insights – So sánh các tools (Live Metrics vs. Smart Detection).
- Best Practices for App Service: Troubleshoot App Service with Always On.
🛠️ Lời khuyên từ Azure Developer: Luôn enable Application Insights từ đầu deploy và dùng Live Metrics cho CI/CD pipeline để catch issues sớm! Nếu cần setup, dùng Azure CLI: az monitor app-insights component create.