Practice Assessment for Exam AZ-204: Developing Solutions for Microsoft Azure – 017
4 mins read

Practice Assessment for Exam AZ-204: Developing Solutions for Microsoft Azure – 017



✅ Phân tích đáp án câu hỏi

📌 Dịch câu hỏi:

Bạn có lớp GameStat sau:

public class GameStat
{
    public string Id { get; set; }
    public string Sport { get; set; }
    public DateTimeOffset DatePlayed { get; set; }
    public string Game { get; set; }
    public IReadOnlyList<string> Teams { get; set; }
    public IReadOnlyList<(string team, int score)> Results { get; set; }

    public GameStat(string sport, DateTimeOffset datePlayed, string game, string[] teams, IEnumerable<(string team, int score)> results)
    {
        Id = Guid.NewGuid().ToString();
        Sport = sport;
        DatePlayed = datePlayed;
        Game = game;
        Teams = teams.ToList();
        Results = results.ToList();
    }

    public override string ToString()
    {
        return $"{Sport} {Game} played on {DatePlayed.Date.ToShortDateString()} - " +
               $"{string.Join(',', Teams)}\r\n\t" +
               $"{string.Join('\t', Results.Select(r => $"{r.team} - {r.score}\r\n"))}";
    }
}

Câu hỏi:

Bạn cần lưu trữ thể hiện của GameStat trong Azure Cache for Redis.
Bạn nên sử dụng đoạn mã nào?


🔍 Các lựa chọn:

Đoạn mãCó phù hợp không?Giải thích
Dùng JsonSerializer.Serialize(stat) để chuyển sang JSON và gọi StringSet để lưuĐúngĐây là cách chính xác và chuyên nghiệp nhất để lưu trữ một đối tượng trong Redis – chuyển đối tượng thành chuỗi JSON bằng System.Text.Json.JsonSerializer, sau đó lưu vào Redis qua StringSet.
Dùng stat.ToString() và lưu bằng StringSetĐúng (chấp nhận được)Vì lớp GameStat đã override ToString() để định dạng dữ liệu theo cách cụ thể, nên việc dùng stat.ToString() vẫn hợp lệ. Tuy nhiên, đây không phải cách tối ưu nếu cần deserialize lại sau này.
Gọi StringGet để lưu dữ liệu❌ KhôngStringGethàm đọc dữ liệu từ Redis, không phải hàm ghi dữ liệu. Do đó, không dùng được trong trường hợp này.
Dùng ToString()StringGet để ghi dữ liệu❌ KhôngTương tự như trên, StringGet không phải là phương thức lưu trữ – không thực hiện được thao tác ghi vào Redis.

📘 Bổ sung từ tài liệu chính thức

Câu hỏi này kiểm tra kiến thức của thí sinh về cách triển khai lưu trữ vào bộ nhớ đệm (caching).

Các đoạn mã sử dụng phương thức StringSet sẽ thực hiện tuần tự hóa (serialization) và lưu nội dung của đối tượng GameStat vào Azure Cache for Redis.

Các đoạn mã sử dụng StringGet sẽ không thực hiện thao tác ghi dữ liệu – do StringGet chỉ dùng để truy xuất dữ liệu từ Redis.

🔗 Nguồn tài liệu:


✅ Kết luận:

Các đáp án chính xác là:
Dùng StringSet cùng với JsonSerializer.Serialize(stat)
Dùng StringSet cùng với stat.ToString()

🔐 Lý do:

  • StringSet là phương thức dùng để ghi dữ liệu vào Redis.
  • JsonSerializer.Serialize() là cách tuần tự hóa chuẩn dùng trong Redis/Cache.
  • Việc override ToString() có thể được dùng, nhưng không nên sử dụng cho các tình huống cần deserialize lại.

Leave a Reply

Your email address will not be published. Required fields are marked *