50 câu hỏi phỏng vấn JSON hàng đầu và câu trả lời (2026)

Bạn đang chuẩn bị cho một buổi phỏng vấn JSON? Điều quan trọng là phải dự đoán được điều gì là quan trọng nhất trong bất kỳ buổi phỏng vấn JSON nào vì các câu hỏi đều thể hiện chiều sâu, sự rõ ràng và khả năng giải quyết vấn đề của mỗi ứng viên.
Nhu cầu ngày càng tăng đối với dữ liệu có cấu trúc tạo ra nhiều cơ hội trên nhiều vai trò đòi hỏi chuyên môn kỹ thuật và chuyên môn lĩnh vực, được hỗ trợ bởi kinh nghiệm kỹ thuật và phân tích giúp củng cố bộ kỹ năng và giúp những người mới vào nghề, có kinh nghiệm và chuyên gia cấp cao giải quyết các câu hỏi và câu trả lời phổ biến thông qua việc làm việc thực tế với các nhà quản lý và trưởng nhóm ở khắp mọi nơi hiện nay.
Hướng dẫn của chúng tôi phản ánh những hiểu biết thu thập được từ hơn 72 nhà lãnh đạo kỹ thuật, bổ sung thêm phản hồi từ 58 nhà quản lý và quan điểm được chia sẻ bởi 94 chuyên gia, đảm bảo bao quát nhiều mô hình phỏng vấn đa dạng và thực tế. Đọc thêm ...
👉 Tải xuống PDF miễn phí: Câu hỏi và câu trả lời phỏng vấn JSON
Những câu hỏi phỏng vấn JSON hàng đầu và câu trả lời
1) Giải thích JSON là gì và mô tả các đặc điểm chính của nó bằng ví dụ.
JSON là một định dạng trao đổi dữ liệu nhẹ được thiết kế để vừa dễ đọc với con người vừa thân thiện với máy móc. Cấu trúc của nó bắt nguồn từ JavaJSON là đối tượng script theo nghĩa đen, nhưng độc lập với ngôn ngữ lập trình, phù hợp với các API hiện đại, tệp cấu hình và trao đổi dữ liệu ứng dụng web. Điểm đặc biệt mạnh mẽ của JSON là cấu trúc dễ đoán: cặp khóa-giá trị, mảng, lồng nhau và kiểu dữ liệu nghiêm ngặt.
Đặc điểm chính:
- Cấu trúc dễ đọc với con người
- Dữ liệu được tổ chức theo cặp tên/giá trị
- Hỗ trợ chuỗi, số, đối tượng, mảng, boolean và null
- Phân tích cú pháp dễ dàng trên nhiều ngôn ngữ
- Phù hợp với các dịch vụ RESTful, cơ sở dữ liệu NoSQL và các dịch vụ siêu nhỏ
Ví dụ:
{
"id": 101,
"name": "Alice",
"roles": ["admin", "editor"],
"active": true
}
2) Bạn mô tả các kiểu dữ liệu khác nhau được hỗ trợ trong JSON như thế nào và chúng thường được sử dụng ở đâu?
JSON hỗ trợ một tập hợp hạn chế nhưng mạnh mẽ các kiểu dữ liệu nhằm đơn giản hóa việc phân tích cú pháp và khả năng tương tác. Mỗi kiểu dữ liệu đóng một vai trò cụ thể trong việc biểu diễn thông tin có cấu trúc, rất quan trọng đối với phản hồi API, tệp cấu hình, dữ liệu đo từ xa và định nghĩa lược đồ.
Bảng các loại và cách sử dụng
| Loại JSON | Mô tả Chi tiết | Ví dụ sử dụng phổ biến |
|---|---|---|
| Chuỗi | Dữ liệu văn bản được đặt trong dấu ngoặc kép | Tên, email |
| Con số | Số nguyên hoặc số thực | Giá cả, số liệu |
| Đối tượng | Bộ sưu tập các cặp khóa/giá trị | Tải trọng API |
| Mảng | Danh sách các giá trị được sắp xếp | Bộ sưu tập, danh sách |
| Boolean | đúng hay sai | Cờ, tính năng chuyển đổi |
| Null | Biểu thị giá trị bị thiếu | Các trường tùy chọn |
Trường hợp sử dụng mẫu: Trong API thương mại điện tử, thông tin chi tiết về sản phẩm thường kết hợp tất cả các loại này để xây dựng biểu diễn tài nguyên hoàn chỉnh.
3) Sự khác biệt giữa JSON và XML là gì và khi nào nên sử dụng từng loại?
JSON và XML đều là định dạng trao đổi dữ liệu, nhưng chúng khác nhau về cú pháp, khả năng đọc, khả năng xác thực và cấu trúc dữ liệu được hỗ trợ. JSON ưu tiên sự đơn giản và gọn nhẹ, trong khi XML nhấn mạnh vào cấu trúc chặt chẽ và quy trình làm việc dựa trên tài liệu.
Bảng so sánh
| Hệ số | JSON | XML |
|---|---|---|
| cú pháp | Nhẹ, JavaGiống như kịch bản | Thẻ chi tiết |
| Cấu trúc dữ liệu | Hỗ trợ các đối tượng và mảng một cách tự nhiên | Phân cấp dựa trên cây |
| Dễ đọc | Dễ đọc hơn | Phức tạp hơn |
| THẨM ĐỊNH | Lược đồ JSON | XSD |
| Trường hợp sử dụng | API, cấu hình | Tài liệu, dịch vụ SOAP |
Khi nào sử dụng: Sử dụng JSON cho các API RESTful hiện đại và giao tiếp nhẹ nhàng. Chọn XML khi việc đánh dấu tài liệu, thuộc tính và xác thực nghiêm ngặt là cần thiết (ví dụ: hệ thống ngân hàng hoặc dịch vụ SOAP).
4) Công cụ hoặc phương pháp nào có thể xác thực JSON và tại sao việc xác thực lại quan trọng?
Xác thực đảm bảo JSON tuân thủ cấu trúc, kiểu dữ liệu và các ràng buộc dự kiến được xác định bởi lược đồ hoặc hợp đồng. Nếu không có xác thực, ứng dụng có thể bị lỗi âm thầm hoặc tạo ra luồng dữ liệu bị lỗi.
Các phương pháp xác thực phổ biến:
- Trình xác thực Lược đồ JSON (AJV, jsonschema, Python'S
jsonschema) - Trình xác thực trực tuyến (JSONLint)
- Các plugin IDE (VS Code Trình xác thực JSON)
- Xác thực thời gian chạy thông qua cổng API
Kịch bản ví dụ: Cổng thanh toán xác thực dữ liệu JSON sẽ ngăn chặn các trường bị thiếu hoặc không đúng định dạng có thể gây ảnh hưởng đến giao dịch.
5) JSON Schema hoạt động như thế nào và vòng đời của nó trong môi trường doanh nghiệp là gì?
Lược đồ JSON là một thuật ngữ dùng để định nghĩa cấu trúc, kiểu dữ liệu và quy tắc xác thực cho các tài liệu JSON. Vòng đời của nó thường tương tự như vòng đời của việc quản lý phiên bản API: tạo, tinh chỉnh, thử nghiệm, xuất bản, thực thi và ngừng sử dụng.
Các giai đoạn vòng đời:
- Thu thập các yêu cầu
- Soạn thảo lược đồ cơ sở
- Kiểm tra và quản lý phiên bản
- Tích hợp vào hợp đồng API
- Thực thi thông qua cổng hoặc phần mềm trung gian
- Giám sát và cập nhật
- Sự khấu hao và thay thế
Ví dụ: API hướng dẫn người dùng có thể yêu cầu lược đồ xác thực định dạng email, độ tuổi và vai trò được phép để đảm bảo chất lượng dữ liệu nhất quán.
6) Một số ưu điểm và nhược điểm của việc sử dụng JSON trong hệ thống phân tán là gì?
JSON hoạt động tốt trong các hệ thống phân tán vì tính di động và kích thước nhỏ, nhưng nó cũng có những hạn chế về hỗ trợ nhị phân và thực thi lược đồ.
Ưu và nhược điểm
| Ưu điểm | Nhược điểm |
|---|---|
| Nhẹ và nhanh | Không hỗ trợ nhị phân gốc |
| Hỗ trợ ngôn ngữ phổ quát | Các kiểu dữ liệu hạn chế |
| Con người có thể đọc được | Có thể trở nên lớn khi lồng nhau sâu |
| Hoạt động tốt với REST | Không có bình luận tích hợp |
Ví dụ: Kiến trúc vi dịch vụ trao đổi siêu dữ liệu của khách hàng được hưởng lợi từ tính đơn giản của JSON, nhưng tải trọng hình ảnh lớn sẽ yêu cầu mã hóa Base64, làm tăng kích thước.
7) Làm thế nào để phân tích cú pháp JSON trong các ngôn ngữ lập trình khác nhau? Hãy đưa ra ví dụ.
Phân tích cú pháp JSON thường liên quan đến các thư viện tích hợp giúp chuyển đổi chuỗi thành đối tượng hoặc kiểu dữ liệu có cấu trúc. Quá trình này thường đơn giản và gần như giống hệt nhau về mặt khái niệm giữa các ngôn ngữ.
Ví dụ:
JavaKịch bản:
const obj = JSON.parse(jsonString);
Python:
import json data = json.loads(json_string)
Java:
JSONObject obj = new JSONObject(jsonString);
Phân tích cú pháp là điều cần thiết khi sử dụng API, xử lý nhật ký hoặc đọc tệp cấu hình trên các ứng dụng phân tán.
8) Những yếu tố nào quyết định liệu JSON có phải là lựa chọn phù hợp cho dữ liệu API hay không?
Việc lựa chọn JSON cho API phụ thuộc vào yêu cầu về hiệu suất, kích thước tải trọng, khả năng tương thích của máy khách và độ phức tạp của mô hình dữ liệu. Các nhóm đánh giá các định dạng thay thế như Protobuf, YAML hoặc XML dựa trên độ trễ, tính nghiêm ngặt của lược đồ và nhu cầu truyền tải nhị phân.
Các yếu tố chính:
- Khả năng tương tác với khách hàng
- Cần thực thi lược đồ nghiêm ngặt
- Hạn chế về hiệu suất
- Kích thước dữ liệu và chi phí tuần tự hóa
- Hệ sinh thái công cụ
Ví dụ: Các thiết bị IoT có mạng lưới hạn chế có thể ưu tiên Protobuf, trong khi bảng điều khiển web gọi API REST được phục vụ tốt nhất bằng JSON.
9) Có được phép sử dụng chú thích trong JSON không? Giải thích lý do và đưa ra các giải pháp thay thế.
JSON chuẩn không cho phép chú thích vì chú thích có thể gây trở ngại cho việc phân tích dữ liệu và vi phạm các quy tắc định dạng nghiêm ngặt được xác định bởi đặc tả. Tuy nhiên, các nhà phát triển thường cần siêu dữ liệu hoặc ghi chú cấu hình.
Các lựa chọn thay thế:
- Sử dụng JSONC (JSON có chú thích), được sử dụng trong VS Code thiết lập
- Thêm một
_commentkhóa trong JSON (được sử dụng rộng rãi trong cấu hình) - Sử dụng YAML khi cần chú thích
Ví dụ:
{
"_comment": "Max retries for API calls",
"retryLimit": 5
}
10) Có những cách nào khác nhau để giảm kích thước JSON nhằm tối ưu hóa hiệu suất?
Giảm thiểu dấu chân JSON giúp cải thiện độ trễ mạng, thông lượng API và hiệu quả lưu trữ. Nhiều kỹ thuật khác nhau có thể được áp dụng trong quá trình tuần tự hóa, vận chuyển và lưu trữ.
Phương pháp tối ưu hóa
- Thu nhỏ (xóa khoảng trắng)
- Các phím ngắn hơn (
"fn"thay vì"firstName") - Nén (GZIP, Brotli)
- Tránh lồng nhau dư thừa
- Sử dụng mảng thay vì đối tượng khi thứ tự quan trọng
- Thay thế các đối tượng được mã hóa Base64 bằng các phương thức truyền tải nhị phân khi có thể
Ví dụ: Một ứng dụng di động sử dụng JSON thu nhỏ qua nén Brotli có thể giảm mức sử dụng băng thông hơn 40 phần trăm.
11) JSON xử lý các cấu trúc dữ liệu lồng nhau như thế nào và lợi ích cũng như nhược điểm của lồng nhau sâu là gì?
Các đối tượng và mảng lồng nhau cho phép JSON biểu diễn dữ liệu phân cấp phức tạp. Điều này đặc biệt hữu ích cho việc mô hình hóa các thực thể như hồ sơ người dùng, bảng thông tin, danh mục thương mại điện tử và dữ liệu theo dõi. Tuy nhiên, việc lồng nhau quá mức có thể gây ra chi phí phân tích cú pháp, giảm khả năng đọc và làm phức tạp các hợp đồng API.
Ưu điểm và nhược điểm của Deep Nesting
| Ưu điểm | Nhược điểm |
|---|---|
| Tổ chức dữ liệu liên quan một cách hợp lý | Khó đọc và bảo trì hơn |
| Giảm thiểu các khóa trùng lặp | Thời gian phân tích cú pháp dài hơn |
| Hỗ trợ các mô hình phân cấp thực tế | Tăng kích thước tải trọng |
| Linh hoạt cho các mối quan hệ phức tạp | Khó truy vấn trong một số kho lưu trữ NoSQL |
Ví dụ:
{
"order": {
"customer": {
"name": "David",
"address": {
"street": "45 West Ave",
"city": "Boston"
}
},
"items": [
{ "id": 1, "qty": 2 },
{ "id": 9, "qty": 1 }
]
}
}
12) JSONP là gì và nó khác với JSON chuẩn như thế nào? Hãy giải thích bằng ví dụ.
JSONP (JSON with Padding) là một kỹ thuật được sử dụng từ lâu để khắc phục Chính sách Cùng nguồn gốc (Same-Origin Policy) trong trình duyệt trước khi CORS trở nên phổ biến. Thay vì trả về JSON thô, máy chủ sẽ gói phản hồi trong một hàm gọi lại, cho phép thực thi dưới dạng tập lệnh.
Sự khác biệt:
- JSON là dữ liệu thô.
- JSONP được thực thi như JavaKịch bản.
Ví dụ:
callbackFunction({
"user": "alex",
"role": "viewer"
});
JSONP đã lỗi thời đối với hầu hết các hệ thống hiện đại, nhưng một số tích hợp cũ vẫn sử dụng nó khi chỉ <script> cho phép tiêm thẻ.
13) Một số lỗi phổ biến mà các nhà phát triển mắc phải khi làm việc với JSON là gì?
Những cạm bẫy phổ biến thường xoay quanh lỗi cú pháp, giả định sai về kiểu dữ liệu và vi phạm lược đồ. Những sai lầm này trở nên tốn kém khi bảo trì hệ thống phân tán hoặc quy trình hướng sự kiện.
Lỗi điển hình:
- Thiếu dấu phẩy hoặc dấu ngoặc kép
- Dấu phẩy cuối
- Sử dụng các kiểu không được hỗ trợ (Ngày, không xác định, hàm)
- Mã hóa không chính xác các ký tự đặc biệt
- Quên xác thực với Sơ đồ JSON
- Làm tổ sâu không có mục đích
Ví dụ: Đang cố gắng nhúng một JavaHàm script bên trong JSON sẽ làm hỏng quá trình phân tích cú pháp vì JSON không thể biểu diễn mã thực thi.
14) Làm thế nào để bạn tuần tự hóa và hủy tuần tự hóa JSON trong các ngôn ngữ được gõ mạnh như Java hoặc C#?
Ngôn ngữ lập trình kiểu mạnh yêu cầu ánh xạ cấu trúc JSON vào các lớp hoặc mô hình trong quá trình tuần tự hóa và giải tuần tự hóa. Các ngôn ngữ này dựa vào các thư viện liên kết khóa JSON với các thuộc tính có tên trùng khớp hoặc ánh xạ dựa trên chú thích.
Java Ví dụ (Jackson):
ObjectMapper mapper = new ObjectMapper(); User user = mapper.readValue(jsonString, User.class);
Ví dụ C# (System.Text.Json):
User user = JsonSerializer.Deserialize<User>(jsonString);
Việc tuần tự hóa rất quan trọng khi gửi các đối tượng phản hồi từ API hoặc lưu trữ các mô hình cấu hình.
15) Khi nào bạn nên sử dụng mảng trong JSON thay vì đối tượng và những yếu tố nào ảnh hưởng đến quyết định này?
Mảng là lựa chọn lý tưởng khi thứ tự các phần tử quan trọng hoặc khi biểu diễn các tập hợp các mục tương tự. Đối tượng là lựa chọn tốt nhất khi cần tra cứu dựa trên khóa. Việc chọn đúng cấu trúc sẽ cải thiện hiệu quả, khả năng đọc và tính rõ ràng của lược đồ.
Yếu tố quyết định
- Bộ sưu tập có mã định danh duy nhất hay không
- Liệu thứ tự có quan trọng không
- Các yếu tố có cùng cấu trúc không
- Có cần tra cứu nhanh theo khóa không
Ví dụ: Sử dụng mảng cho danh sách ID sản phẩm; sử dụng đối tượng cho cài đặt cấu hình được sắp xếp theo tên.
16) Sự khác biệt giữa JSON.stringify() và JSON.parse() trong JavaKịch bản?
JSON.stringify() chuyển đổi JavaCác đối tượng tập lệnh thành chuỗi định dạng JSON, trong khi JSON.parse() chuyển đổi chuỗi JSON trở lại thành JavaCác đối tượng tập lệnh. Cùng nhau, chúng tạo thành vòng đời tuần tự hóa-hủy tuần tự hóa tiêu chuẩn được sử dụng trong localStorage, sử dụng API và lưu trữ đệm.
Ví dụ:
const json = JSON.stringify({ id: 5 });
const obj = JSON.parse(json);
stringify() cũng hỗ trợ chức năng thay thế và tham số khoảng cách, giúp ích cho việc gỡ lỗi hoặc lọc tùy chỉnh.
17) JSON có thể biểu diễn dữ liệu nhị phân không? Nếu không, các nhà phát triển có những cách nào để khắc phục hạn chế này?
JSON không thể biểu diễn dữ liệu nhị phân một cách tự nhiên. Để khắc phục điều này, các nhà phát triển phải tuần tự hóa thông tin nhị phân bằng các mã hóa an toàn văn bản. Hạn chế này trở nên rõ rệt trong xử lý hình ảnh, đo từ xa hoặc tải lên phương tiện.
Các cách tiếp cận phổ biến
- Mã hóa Base64
- Mã hóa Hex
- Sử dụng multipart/form-data cho các tải trọng hỗn hợp
- Sử dụng các định dạng thân thiện với nhị phân như Protobuf
Ví dụ: Hình ảnh được gửi qua JSON REST API thường xuất hiện dưới dạng chuỗi Base64, làm tăng kích thước khoảng 33 phần trăm.
18) Vai trò của khoảng trắng trong JSON là gì? Nó có ảnh hưởng đến việc phân tích cú pháp hoặc diễn giải dữ liệu không?
Khoảng trắng trong JSON bị bỏ qua trong quá trình phân tích cú pháp và không ảnh hưởng đến ngữ nghĩa. Nó tồn tại hoàn toàn vì mục đích dễ đọc. Việc loại bỏ khoảng trắng thông qua thu nhỏ sẽ làm giảm băng thông và cải thiện hiệu suất. Tuy nhiên, khoảng trắng quá mức có thể khiến các tệp JSON lớn khó quản lý thủ công hơn.
Ví dụ: Cả hai phiên bản dưới đây đều tạo ra các đối tượng giống hệt nhau:
Readable:
{ "id": 1, "name": "Sam" }
Thu nhỏ:
{"id":1,"name":"Sam"}
19) JSON Web Tokens (JWT) sử dụng JSON như thế nào và đặc điểm của chúng là gì?
JWT sử dụng các đối tượng JSON được mã hóa dưới dạng chuỗi Base64URL để truyền thông tin an toàn giữa các bên. Một JWT thông thường bao gồm tiêu đề, tải trọng và chữ ký. Các thành phần này cho phép xác thực không trạng thái trên các hệ thống phân tán và dịch vụ vi mô.
Đặc điểm của JWT
- Nhỏ gọn và an toàn cho URL
- Tự chứa với các yêu cầu bồi thường
- Đã ký để đảm bảo tính toàn vẹn
- Hoạt động tốt trong các kiến trúc không trạng thái
Ví dụ: Tải trọng là một đối tượng JSON đơn giản chứa các yêu cầu như sub, iatvà exp.
20) Chiến lược nào giúp quản lý các tệp JSON lớn một cách hiệu quả trong API hoặc hệ thống lưu trữ?
Các tệp JSON lớn có thể làm chậm I/O, tăng mức sử dụng bộ nhớ và làm giảm độ trễ. Các chiến lược hiệu quả bao gồm phát trực tuyến, phân trang, tuần tự hóa chọn lọc, thiết kế lược đồ và nén.
Chiến lược hiệu quả
- Phân tích luồng (giống SAX)
- Phân trang và lọc ở phía máy chủ
- Chia các tài liệu nguyên khối thành các phần nhỏ hơn
- Nén JSON bằng GZIP hoặc Brotli
- Lưu trữ các phần lớn riêng biệt (ví dụ: S3 + siêu dữ liệu JSON)
Ví dụ: API báo cáo có thể truyền phát kết quả thay vì tải tệp JSON 300MB vào bộ nhớ.
21) Sự khác biệt giữa JSON và YAML là gì và khi nào nên sử dụng từng loại?
JSON và YAML đều biểu diễn dữ liệu có cấu trúc, nhưng triết lý thiết kế của chúng khác nhau. JSON chặt chẽ, gọn nhẹ và được tối ưu hóa cho máy móc, trong khi YAML mang tính biểu cảm, hướng đến con người và nhạy bén với việc thụt lề. Việc lựa chọn một trong hai tùy thuộc vào yêu cầu về khả năng đọc, công cụ, ràng buộc môi trường và vòng đời của cấu hình hoặc trao đổi dữ liệu.
Sự khác biệt chính
| Hệ số | JSON | YAML |
|---|---|---|
| cú pháp | Dấu ngoặc nhọn và dấu phẩy | Dựa trên thụt lề |
| Dễ đọc | Cứng hơn | Rất dễ đọc |
| Loại dữ liệu | Bộ giới hạn | Các loại phong phú hơn |
| Nhận xét | Không được phép | Hỗ trợ |
| Sử dụng | API, lưu trữ | Cấu hình, đường ống |
Ví dụ về trường hợp sử dụng: YAML được ưu tiên sử dụng cho các bản kê khai Kubernetes vì tính dễ đọc, trong khi JSON vẫn là nền tảng cho các API REST.
22) Có những cách nào khác nhau để sử dụng JSON trong phát triển web?
JSON đóng vai trò trung tâm trong các ứng dụng web hiện đại bằng cách cho phép giao tiếp liền mạch giữa các dịch vụ front-end và back-end. Nó được sử dụng cho API, quản lý cấu hình, lưu trữ cài đặt ứng dụng, lưu trữ đệm và duy trì dữ liệu phía máy khách. JSON cũng hỗ trợ việc kết xuất thành phần trong các framework như React và truyền dữ liệu trong các lệnh gọi AJAX.
Sử dụng chung:
- Phản hồi API REST
- Các cuộc gọi tìm nạp AJAX
- Quản lý trạng thái phía máy khách (localStorage/sessionStorage)
- Tệp cấu hình
- Các kho lưu trữ GraphQL và NoSQL
- Webhooks và thông báo sự kiện
Ví dụ: Ứng dụng React thường cung cấp các thành phần UI bằng cách lấy JSON từ phần phụ trợ Node.js.
23) Bạn xử lý lỗi khi phân tích cú pháp JSON như thế nào và những yếu tố nào quyết định phương pháp xử lý lỗi tốt nhất?
Việc xử lý lỗi phân tích cú pháp JSON đòi hỏi phải phát hiện ngoại lệ, xác thực định dạng đầu vào và cung cấp logic dự phòng. Các yếu tố ảnh hưởng đến chiến lược này bao gồm tính nghiêm ngặt của hợp đồng API, kỳ vọng của khách hàng và yêu cầu về khả năng phục hồi của hệ thống.
Phương pháp tiếp cận:
- Các khối Try-catch xung quanh các hoạt động phân tích cú pháp
- Xác thực đầu vào trước khi phân tích cú pháp
- Xác thực dựa trên lược đồ
- Trả về thông báo lỗi thân thiện với người dùng
- Ghi nhật ký các vấn đề để gỡ lỗi
Ví dụ:
Trong Node.js:
try {
const data = JSON.parse(body);
} catch (err) {
console.error("Malformed JSON");
}
24) Mục đích của tham số thay thế và khoảng trắng trong JSON.stringify() là gì?
Hàm replacer cho phép tuần tự hóa chọn lọc các thuộc tính của đối tượng, trong khi tham số space kiểm soát thụt lề để cải thiện khả năng đọc. Các tùy chọn này cải thiện đầu ra gỡ lỗi, bảo mật dữ liệu nhạy cảm và tạo định dạng tùy chỉnh cho nhật ký hoặc tài liệu.
Ví dụ:
JSON.stringify(obj, ["id", "name"], 2);
Lợi ích:
- Kiểm soát chi tiết đầu ra
- Bỏ sót các trường bí mật hoặc không cần thiết
- Tăng khả năng đọc trong môi trường phát triển
25) API thường sử dụng và tạo ra JSON như thế nào và những phương pháp hay nhất nào đảm bảo tính nhất quán?
API sử dụng và tạo ra JSON bằng cách tuân thủ các loại nội dung được chuẩn hóa (application/json), định nghĩa lược đồ, quy tắc quản lý phiên bản và hợp đồng xử lý lỗi. Tính nhất quán đảm bảo tích hợp trơn tru giữa các máy khách và dịch vụ vi mô.
Thực tiễn tốt nhất
- Bao gồm
Content-Type: application/json - Sử dụng tên trường có thể dự đoán được (snake_case hoặc camelCase)
- Xác thực yêu cầu bằng cách sử dụng JSON Schema
- Cung cấp các đối tượng lỗi có cấu trúc
- Duy trì các điểm cuối có phiên bản
Ví dụ: Một API thanh toán được phiên bản như /v2/transactions có thể xuất ra các đối tượng JSON chuẩn hóa để tính phí, hoàn tiền và báo lỗi.
26) Truyền phát JSON là gì và nó thường được triển khai ở đâu?
Truyền phát JSON phân phối dữ liệu theo từng bước thay vì tập trung vào một khối dữ liệu lớn, cải thiện hiệu suất cho các tập dữ liệu lớn. Nó thường được triển khai trong các hệ thống thời gian thực, bộ xử lý nhật ký, công cụ phân tích và đường ống dữ liệu.
Các lợi ích
- Giảm dung lượng bộ nhớ
- Thời gian đến byte đầu tiên nhanh hơn
- Khả năng xử lý các tập dữ liệu lớn
Ví dụ: Truyền nhật ký từ máy chủ đến bảng điều khiển phân tích giúp tránh việc phải tải hàng gigabyte dữ liệu cùng một lúc.
27) JSON xử lý các ký tự đặc biệt như thế nào và có những quy tắc nào chi phối việc thoát ký tự?
JSON sử dụng chuỗi thoát bắt nguồn từ JavaScript đảm bảo việc truyền tải và phân tích cú pháp an toàn. Các ký tự đặc biệt như dấu ngoặc kép, dấu gạch chéo ngược và mã điều khiển phải được mã hóa chính xác.
Chuỗi thoát phổ biến
| Nhân vật | Biểu mẫu thoát |
|---|---|
| Trích dẫn | \" |
| Dấu gạch chéo ngược | \\ |
| Dòng mới | \n |
| Tab | \t |
| Unicode | \uXXXX |
Ví dụ:
{ "message": "Hello\nWorld" }
Việc thoát không đúng cách sẽ dẫn đến lỗi trình phân tích cú pháp và tải trọng API bị hỏng.
28) Có những cách nào để đảm bảo khả năng tương thích ngược trong API JSON?
Khả năng tương thích ngược là điều cần thiết trong các hệ thống doanh nghiệp, nơi nhiều phiên bản máy khách tương tác đồng thời. API JSON thường đạt được điều này thông qua các chiến lược quản lý phiên bản, các trường tùy chọn, việc loại bỏ cẩn thận và các phương pháp phát triển lược đồ.
Kỹ thuật tương thích
- Thêm trường thay vì đổi tên hoặc xóa
- Sử dụng giá trị mặc định cho các trường bị thiếu
- Điểm cuối có phiên bản (
/v1/,/v2/) - Chu kỳ khấu hao duyên dáng
- Duy trì các lược đồ JSON nghiêm ngặt để xác thực
Ví dụ: A mới middleName có thể thêm trường mà không ảnh hưởng đến các máy khách cũ miễn là tùy chọn.
29) Làm thế nào để bảo mật dữ liệu JSON trong quá trình vận chuyển và lưu trữ?
Bảo mật bao gồm mã hóa, xác thực, ủy quyền và các mô hình truy cập được kiểm soát. Bản thân JSON không có bảo mật tích hợp, vì vậy hệ thống dựa vào các giao thức và cơ sở hạ tầng để bảo vệ dữ liệu.
Các biện pháp an ninh
- HTTPS/TLS để mã hóa truyền tải
- JWT để xác thực
- OAuth2 để ủy quyền
- Mã hóa ở trạng thái nghỉ (KMS, Vault)
- Xác thực và vệ sinh đầu vào
- Tránh dữ liệu nhạy cảm trong nhật ký
Ví dụ: API phải từ chối các dữ liệu JSON chưa được xác thực để ngăn chặn các cuộc tấn công theo kiểu tiêm mã vào các hệ thống hạ lưu.
30) Những nhược điểm của việc sử dụng JSON cho các tệp cấu hình là gì?
Các tệp cấu hình JSON gặp phải những hạn chế do thiếu chú thích, cú pháp nghiêm ngặt và không thể biểu diễn các kiểu dữ liệu phức tạp hoặc chuỗi nhiều dòng một cách tinh tế. Những hạn chế này khiến nhiều nền tảng ưu tiên YAML hoặc TOML cho các cấu hình có vòng đời dài.
Nhược điểm
- Không hỗ trợ bình luận
- Thoát chi tiết cho chuỗi
- Lỗi do thiếu dấu phẩy
- Tùy chọn loại hạn chế
- Khó quản lý hơn trong các hệ thống DevOps quy mô lớn
Ví dụ: Kubernetes đã từ bỏ JSON để cấu hình hàng ngày vì YAML dễ dàng hơn cho người vận hành chỉnh sửa thủ công.
31) JSON Merge Patch là gì và nó khác với JSON Patch như thế nào?
Bản vá hợp nhất JSON (RFC 7396) cung cấp một phương pháp đơn giản hóa để thực hiện cập nhật một phần trên các tài liệu JSON bằng cách áp dụng một đối tượng bản vá lên bản gốc. Trong khi đó, Bản vá hợp nhất JSON (RFC 6902) sử dụng danh sách các thao tác (add, remove, replacev.v.) để thực hiện các sửa đổi chi tiết dựa trên thao tác. Merge Patch thuận tiện cho các bản cập nhật đơn giản, trong khi JSON Patch cung cấp khả năng kiểm soát chính xác cho các chuyển đổi có cấu trúc.
Sự khác biệt giữa JSON Merge Patch và JSON Patch
| Tính năng | Bản vá hợp nhất JSON | Bản vá JSON |
|---|---|---|
| Định dạng | Đối tượng đơn giản | Mảng hoạt động |
| xóa | Đặt trường thành null |
Sử dụng rõ ràng remove op |
| phức tạp | Dễ đọc | Chi tiết hơn và chính xác hơn |
| tốt nhất cho | Cập nhật nông | Chỉnh sửa tài liệu phức tạp |
Ví dụ:
Bản vá hợp nhất:
{ "name": "John" }
Vá:
[{ "op": "replace", "path": "/name", "value": "John" }]
32) Có những cách nào để biểu diễn ngày và giờ trong JSON và những yếu tố nào ảnh hưởng đến lựa chọn đó?
JSON không định nghĩa kiểu dữ liệu gốc, vì vậy các nhà phát triển phải mã hóa ngày tháng dưới dạng chuỗi, số hoặc định dạng tùy chỉnh. Cách tiếp cận phù hợp phụ thuộc vào cách xử lý múi giờ, khả năng đọc, khả năng tương tác và kỳ vọng của hệ thống sử dụng.
Biểu diễn chung
- Chuỗi ISO 8601 (
"2024-03-15T10:00:00Z") - Dấu thời gian Unix (
1710496800) - Định dạng tùy chỉnh (không khuyến khích)
Các yếu tố ảnh hưởng đến sự lựa chọn:
- Khả năng phân tích nền tảng khách hàng
- Tính nhất quán giữa các dịch vụ
- Nhu cầu về bản địa hóa và múi giờ
- Yêu cầu về sơ đồ và hợp đồng
Ví dụ: API thường sử dụng ISO 8601 vì nó tránh được sự mơ hồ về múi giờ.
33) Làm thế nào để chuyển đổi JSON bằng các công cụ như JQ và tại sao nó lại được sử dụng rộng rãi?
jq là một bộ xử lý dòng lệnh cho JSON, cho phép lọc, chuyển đổi, truy vấn và tái cấu trúc các cấu trúc JSON. Nó được sử dụng rộng rãi trong DevOps, quy trình xử lý dữ liệu, quy trình CI/CD và xử lý nhật ký nhờ cú pháp truy vấn và hiệu suất biểu đạt cao.
Ví dụ:
jq '.users[].name' data.json
Tại sao nó phổ biến:
- Nhanh và nhẹ
- Lý tưởng cho tự động hóa
- Hỗ trợ các chuyển đổi phức tạp
- Tuyệt vời cho việc xử lý luồng
Nó thường được sử dụng với Kubernetes, AWS CLI và các pipeline Linux.
34) Vai trò của các loại MIME trong giao tiếp dựa trên JSON là gì?
Kiểu MIME (kiểu phương tiện) chỉ định định dạng dữ liệu được truyền. JSON sử dụng các kiểu chuẩn để thông báo cho máy khách và máy chủ cách diễn giải nội dung, cải thiện khả năng tương tác và xác thực.
Các loại MIME JSON phổ biến
application/jsonapplication/merge-patch+jsonapplication/geo+jsonapplication/vnd.api+json(Đặc tả JSON:API)
Ví dụ:
Tiêu đề HTTP:
Content-Type: application/json
Việc sử dụng đúng loại MIME đảm bảo máy khách phân tích dữ liệu chính xác và ngăn ngừa việc hiểu sai nội dung tải trọng.
35) JSON Lines (JSONL) là gì và nó hữu ích ở đâu?
JSON Lines (hay NDJSON) là định dạng mà mỗi dòng trong tệp chứa một đối tượng JSON. Định dạng này cho phép truyền phát, đọc gia tăng và xử lý hiệu quả khối lượng dữ liệu lớn.
Lý tưởng cho:
- Tổng hợp nhật ký
- xử lý dữ liệu lớn
- Đường ống học máy
- Phân tích theo thời gian thực
- quy trình công việc ETL
Ví dụ:
{"id":1,"event":"login"}
{"id":2,"event":"view"}
Bản chất từng dòng của nó cải thiện hiệu quả bộ nhớ và cho phép sử dụng song song.
36) Đặc điểm của phản hồi JSON API được thiết kế tốt là gì?
Một phản hồi JSON được thiết kế tốt phải dễ dự đoán, nhất quán, được xác thực và dễ hiểu. Phản hồi này nên bao gồm siêu dữ liệu phù hợp, các trường được đặt tên rõ ràng và cấu trúc lỗi được chuẩn hóa.
Đặc điểm
- Quy ước đặt tên nhất quán
- Biểu diễn tài nguyên rõ ràng
- Bao gồm siêu dữ liệu khi có liên quan
- Mô hình phản hồi lỗi có cấu trúc
- Thực thi lược đồ mạnh mẽ
- Tránh làm tổ sâu
Ví dụ: Một đối tượng lỗi tốt bao gồm code, message, detailsvà các mã định danh theo dõi tùy chọn.
37) JSON tích hợp với cơ sở dữ liệu NoSQL như thế nào và nó mang lại những lợi ích gì?
JSON tích hợp liền mạch với cơ sở dữ liệu NoSQL dựa trên tài liệu như MongoDB, CouchDBvà DynamoDB. Các hệ thống này lưu trữ các tài liệu giống JSON một cách tự nhiên, cho phép sử dụng lược đồ linh hoạt và lặp lại nhanh chóng.
Các lợi ích
- Tính linh hoạt của giản đồ
- Biểu diễn tự nhiên của dữ liệu phân cấp
- Dễ dàng lập chỉ mục các trường lồng nhau
- Chu kỳ phát triển nhanh
- Ngôn ngữ truy vấn dựa trên JSON
Ví dụ: MongoDB sử dụng BSON, một siêu tập nhị phân của JSON, cho phép lưu trữ hiệu quả và các trường dữ liệu được gõ.
38) Sự khác biệt giữa JSON và BSON là gì?
BSON (Binary JSON) là một biểu diễn nhị phân mở rộng JSON bằng cách thêm các kiểu dữ liệu bổ sung và cho phép duyệt nhanh hơn. JSON dựa trên văn bản và được tối ưu hóa cho tính di động, trong khi BSON được tối ưu hóa cho hiệu quả và cấu trúc phong phú hơn.
Sự khác biệt chính
| Tính năng | JSON | BSON |
|---|---|---|
| Định dạng | bản văn | Nhị phân |
| Các loại được hỗ trợ | Giới hạn | Giàu (Ngày, int32, int64, nhị phân) |
| Tốc độ | Chậm hơn để phân tích | Chuyển đổi nhanh |
| Kích thước máy | Nhỏ hơn cho các tài liệu đơn giản | Lớn hơn do siêu dữ liệu |
| Trường hợp sử dụng | API, cấu hình | MongoDB là gắn |
Ví dụ: BSON cho phép tra cứu chỉ mục hiệu quả trên các số nguyên được gõ, điều mà JSON không thể thực hiện được theo mặc định.
39) Làm thế nào để chuyển đổi JSON sang các định dạng khác như CSV, XML hoặc YAML và tại sao điều này lại cần thiết?
Việc chuyển đổi là cần thiết khi tích hợp các hệ thống không đồng nhất, di chuyển dữ liệu hoặc thực hiện phân tích. Các công cụ như Python các tập lệnh, jq, tiện ích Node.js và trình chuyển đổi trực tuyến cho phép chuyển đổi có cấu trúc dựa trên lược đồ.
Lý do chuyển đổi
- Công cụ BI yêu cầu CSV
- Các hệ thống cũ yêu cầu XML
- Các luồng DevOps ưu tiên YAML
- Hệ thống học máy cần dữ liệu dạng bảng
Ví dụ: Việc chuyển đổi nhật ký JSON sang CSV cho phép dễ dàng nhập vào các nền tảng phân tích như BigQuery hoặc Pandas.
40) Có những cách nào để biểu diễn enum trong JSON và ưu và nhược điểm của chúng là gì?
Enum trong JSON có thể được biểu diễn bằng chuỗi, số hoặc đối tượng tùy thuộc vào độ rõ ràng và ràng buộc của lược đồ. Lựa chọn tối ưu cân bằng giữa khả năng đọc, xác thực và kinh nghiệm của nhà phát triển.
So sánh biểu diễn Enum
| Đại diện | Ưu điểm | Nhược điểm |
|---|---|---|
| Strings | Readable và tự giải thích | Dễ mắc lỗi đánh máy |
| Numbers | Nhỏ gọn, hiệu quả | Khó diễn giải |
| Đối tượng | Có thể mở rộng bằng siêu dữ liệu | Dài dòng |
Ví dụ:
{ "status": "APPROVED" }
Hầu hết các API đều ưa chuộng enum chuỗi vì chúng có tính biểu đạt và dễ xác thực.
41) Bạn thiết kế các chiến lược quản lý phiên bản cho API dựa trên JSON như thế nào và những yếu tố nào ảnh hưởng đến vòng đời quản lý phiên bản?
Quản lý phiên bản đảm bảo các API đang phát triển không làm gián đoạn các máy khách hiện có. Một chiến lược tốt sẽ tính đến khả năng tương thích ngược, quản lý vòng đời, giao thức truyền thông và quản trị lâu dài. Các API dựa trên JSON thường sử dụng quản lý phiên bản ngữ nghĩa để giới thiệu các thay đổi theo cách có thể dự đoán được.
Các phương pháp quản lý phiên bản
- Phiên bản URI (
/v1/users) - Phiên bản dựa trên tiêu đề (
Accept: application/vnd.company.v2+json) - Phiên bản dựa trên tham số (
?version=3) - Đàm phán nội dung bằng cách sử dụng các loại MIME
Những nhân tố ảnh hưởng:
- Tỷ lệ thay đổi đột phá
- Sự đa dạng của người tiêu dùng
- Chính sách khấu hao
- Quản trị và quản lý vòng đời API
Ví dụ: API doanh nghiệp thường duy trì hai phiên bản chính song song để hỗ trợ các ứng dụng di động cũ.
42) Có những cách nào để nén JSON và hiệu suất của chúng so sánh như thế nào?
Nén giúp giảm kích thước tải trọng, tăng tốc độ truyền dữ liệu và giảm chi phí mạng. Việc lựa chọn tùy thuộc vào yêu cầu về độ trễ, khả năng xử lý của CPU và khả năng tương thích của máy khách.
So sánh các phương pháp nén
| Phương pháp | Ưu điểm | Nhược điểm |
|---|---|---|
| GZIP | Được hỗ trợ rộng rãi, nén tốt | Chi phí CPU vừa phải |
| Brotli | Tỷ số nén tuyệt vời | Chậm hơn ở cấp độ cao |
| Xì hơi | Nhanh và nhẹ | Nén thấp hơn |
| ZSTD | Rất nhanh, hiệu quả | Không được hỗ trợ rộng rãi ở những khách hàng lớn tuổi |
Ví dụ: Máy chủ web thường sử dụng Brotli cho các tệp JSON tĩnh, giúp tăng hiệu quả nén lên tới 20 phần trăm so với GZIP.
43) Làm thế nào để phát hiện và tránh các tham chiếu vòng khi tuần tự hóa JSON?
Tham chiếu vòng xảy ra khi các đối tượng tham chiếu lẫn nhau hoặc chính chúng, gây ra đệ quy vô hạn trong quá trình tuần tự hóa. Việc tránh chúng đòi hỏi thiết kế cẩn thận hoặc cơ chế kiểm soát tuần tự hóa.
Kỹ thuật Phòng ngừa
- Thiết kế lại mối quan hệ đối tượng
- Sử dụng logic tuần tự hóa tùy chỉnh (
replacerinJSON.stringify()) - Chuyển đổi tham chiếu thành ID
- Tận dụng các thư viện phát hiện các cấu trúc hình tròn (ví dụ:
flatted,circular-json)
Ví dụ:
const seen = new WeakSet();
JSON.stringify(obj, (key, value) => {
if (typeof value === "object" && value !== null) {
if (seen.has(value)) return;
seen.add(value);
}
return value;
});
44) HAL (Ngôn ngữ ứng dụng siêu văn bản) là gì và nó cải tiến API JSON như thế nào?
HAL là một định dạng siêu phương tiện nhẹ, làm phong phú thêm API JSON bằng cách nhúng liên kết trực tiếp vào phản hồi. Điều này cung cấp khả năng khám phá, cho phép khách hàng điều hướng API mà không cần chỉ dựa vào tài liệu.
Đặc điểm
- Sử dụng
_linksvà_embeddedđối tượng - Khuyến khích thiết kế theo hướng siêu phương tiện
- Hoạt động với REST và HATEOAS
- Cải thiện khả năng tự khám phá API
Ví dụ:
{
"_links": {
"self": { "href": "/users/5" },
"orders": { "href": "/users/5/orders" }
}
}
45) Làm thế nào để triển khai phân trang trong API dựa trên JSON và có những loại phân trang nào?
Phân trang kiểm soát lượng dữ liệu trả về cho máy khách, cải thiện hiệu suất và khả năng sử dụng. API JSON thường bao gồm siêu dữ liệu mô tả số trang, giới hạn và liên kết tiếp theo/trước đó.
Các loại phân trang
| Kiểu | Đặc điểm | Kịch bản lý tưởng |
|---|---|---|
| Dựa trên bù trừ | Sử dụng limit và offset |
Cơ sở dữ liệu có thứ tự ổn định |
| Dựa trên con trỏ | Sử dụng ID con trỏ được mã hóa | Dữ liệu động quy mô lớn |
| Dựa trên trang | Sử dụng số trang đơn giản | Ứng dụng đơn giản |
| Phân trang bộ khóa | Sử dụng các khóa được lập chỉ mục | Bộ dữ liệu lớn, nhu cầu độ trễ thấp |
Ví dụ:
{
"data": [...],
"paging": { "next": "/items?cursor=xyz", "limit": 20 }
}
46) Làm thế nào để bạn kiểm tra API JSON bằng các công cụ như Postman, Newman hay cURL?
Việc kiểm thử API JSON yêu cầu xác thực định dạng phản hồi, mã trạng thái, lược đồ tải trọng và hành vi động. Các công cụ cung cấp khả năng tự động hóa, xác nhận và viết kịch bản.
Phương pháp thử nghiệm
- Sử dụng Postman bộ sưu tập cho các cuộc gọi API
- Chạy tự động thông qua đường ống Newman CI
- cURL để kiểm tra dòng lệnh nhẹ
- Kiểm tra xác thực lược đồ
- Máy chủ giả để thử nghiệm hợp đồng
Ví dụ:
-X GET https://api.example.com/users -H "Accept: application/json"
47) Thực hành tốt nhất để đặt tên khóa trong đối tượng JSON là gì?
Việc đặt tên khóa ảnh hưởng đến khả năng đọc, tính nhất quán và tính dễ sử dụng của người dùng. Việc đặt tên không phù hợp có thể dẫn đến các vấn đề về phân tích cú pháp, nhầm lẫn hợp đồng và các vấn đề tương thích ngược.
Thực tiễn tốt nhất
- Sử dụng camelCase hoặc snake_case một cách nhất quán
- Sử dụng tên mô tả nhưng súc tích
- Tránh viết tắt trừ khi được biết đến rộng rãi
- Tránh khoảng trắng hoặc ký tự đặc biệt
- Không bắt đầu các phím bằng số
Ví dụ:
Tốt: "createdAt"
Xấu: "crt_dt" or "1timestamp"
48) Vai trò của siêu dữ liệu trong phản hồi JSON là gì và những loại siêu dữ liệu nào thường được bao gồm?
Siêu dữ liệu làm phong phú thêm phản hồi JSON bằng thông tin bổ trợ, giúp máy khách xử lý và diễn giải nội dung. Nó cải thiện khả năng sử dụng, khả năng khám phá và tính rõ ràng.
Các loại siêu dữ liệu phổ biến
- Chi tiết phân trang
- Yêu cầu mã định danh
- Dấu thời gian
- Thông tin phiên bản
- Liên kết siêu phương tiện
- Chỉ số hiệu suất
Ví dụ:
{
"data": {...},
"meta": { "requestId": "abc-123", "timestamp": "2025-11-14T10:00:00Z" }
}
49) Bạn thiết kế các đối tượng lỗi trong API JSON như thế nào để đảm bảo tính rõ ràng và khả năng gỡ lỗi?
Một đối tượng lỗi được thiết kế tốt sẽ cung cấp các trường có thể đọc được bằng máy và các mô tả có thể đọc được bằng con người. Nó phải có cấu trúc, nhất quán và giàu thông tin.
Đặc điểm của mô hình lỗi tốt
- Bao gồm các trường chuẩn hóa (
code,message,details) - Cung cấp mô tả có thể thực hiện được
- Bao gồm ID tương quan để theo dõi
- Thực hiện theo cấu trúc có thể dự đoán được trên toàn bộ API
Ví dụ:
{
"error": {
"code": "INVALID_INPUT",
"message": "Email format is not valid",
"traceId": "xyz-99"
}
}
50) Có những cách nào để tạo JSON động trên máy chủ và điều gì quyết định lựa chọn tối ưu?
Máy chủ tạo JSON thông qua việc xây dựng đối tượng thủ công, bộ tuần tự hóa, mẫu hoặc tích hợp ORM. Phương pháp tối ưu phụ thuộc vào nhu cầu hiệu suất, khả năng bảo trì mã và khả năng của khung công tác.
kỹ thuật
- Xây dựng đối tượng thủ công
- Thư viện tuần tự hóa (Jackson, Gson, Newtonsoft)
- Ánh xạ ORM sang JSON (Hibernate, Sequelize)
- Mẫu (Ria mép, Tay lái)
- Trình tạo JSON phát trực tuyến
Các yếu tố ảnh hưởng đến sự lựa chọn:
- Các yêu cầu thực hiện
- Loại nhu cầu an toàn
- Độ phức tạp của mô hình dữ liệu
- Kiểm soát định dạng đầu ra
Ví dụ: Các hệ thống hiệu suất cao thường sử dụng tuần tự hóa luồng để tránh sử dụng nhiều bộ nhớ.
🔍 Những câu hỏi phỏng vấn JSON hàng đầu với các tình huống thực tế và câu trả lời chiến lược
Dưới đây là mười câu hỏi phỏng vấn có mục tiêu bao gồm các góc độ kiến thức, hành vi và tình huống liên quan đến JSON, cùng với các câu trả lời ví dụ hấp dẫn.
1) JSON là gì và tại sao nó được sử dụng rộng rãi trong các ứng dụng hiện đại?
Mong đợi từ ứng viên: Hiểu về nguyên tắc cơ bản của JSON và lý do tại sao các nhóm lại dựa vào nó.
Câu trả lời ví dụ: JSON là một định dạng trao đổi dữ liệu dạng văn bản nhẹ, dễ đọc, dễ viết và dễ phân tích cú pháp cho máy tính. JSON được sử dụng rộng rãi vì tích hợp trơn tru với các công nghệ web, hỗ trợ dữ liệu có cấu trúc và cho phép giao tiếp hiệu quả giữa máy chủ và máy khách.
2) Bạn sẽ giải thích sự khác biệt giữa JSON và XML cho người không am hiểu kỹ thuật như thế nào?
Mong đợi từ ứng viên: Khả năng truyền đạt các khái niệm kỹ thuật một cách rõ ràng.
Câu trả lời ví dụ: JSON biểu diễn dữ liệu bằng các cặp khóa-giá trị và mảng đơn giản, trong khi XML sử dụng các thẻ lồng nhau. JSON có xu hướng ít dài dòng hơn, dễ phân tích cú pháp hơn và phù hợp hơn với các API hiện đại. Đối với một người không rành về kỹ thuật, tôi sẽ mô tả JSON là một dạng thông tin có cấu trúc nhẹ nhàng, gọn gàng hơn mà các ứng dụng có thể trao đổi nhanh hơn.
3) Hãy mô tả một lần bạn làm việc với một tệp JSON có cấu trúc kém. Bạn đã giải quyết nó như thế nào?
Mong đợi từ ứng viên: Giải quyết vấn đề và khả năng phục hồi.
Câu trả lời ví dụ: Ở công việc trước, tôi đã làm việc với một dịch vụ bên thứ ba cung cấp JSON không nhất quán. Tôi đã giải quyết vấn đề bằng cách xây dựng một lớp xác thực với các kiểm tra lược đồ, triển khai xử lý lỗi rõ ràng và ghi lại các định dạng bắt buộc cho nhà cung cấp. Kết quả là một quy trình tích hợp ổn định với ít lỗi hơn.
4) Làm thế nào để xác thực JSON trước khi sử dụng nó trong ứng dụng?
Mong đợi từ ứng viên: Hiểu biết về các biện pháp an toàn và thực hành tốt nhất.
Câu trả lời ví dụ: Tôi thường xác thực JSON bằng các trình xác thực lược đồ như JSON Schema. Tôi cũng thực hiện kiểm tra cấu trúc, xác thực kiểu và xử lý dự phòng cho các trường bị thiếu. Điều này đảm bảo ứng dụng chỉ xử lý dữ liệu đáng tin cậy và có thể dự đoán được.
5) Nếu API trả về JSON không đúng định dạng trong quá trình sản xuất, bước đầu tiên của bạn là gì?
Mong đợi từ ứng viên: Quyết định sáng suốt dưới áp lực.
Câu trả lời ví dụ: Bước đầu tiên của tôi là cô lập sự cố bằng cách xác nhận xem JSON bị lỗi xuất phát từ API bên ngoài hay từ quá trình xử lý nội bộ. Sau khi xác định được, tôi triển khai biện pháp bảo vệ tạm thời như loại bỏ các payload chưa hoàn chỉnh và cảnh báo bên chịu trách nhiệm. Cách tiếp cận này bảo vệ các hệ thống hạ nguồn đồng thời cho phép quá trình điều tra được tiếp tục.
6) Hãy kể cho tôi nghe về một dự án mà bạn đã tối ưu hóa việc xử lý dữ liệu JSON. Bạn đã thực hiện những cải tiến nào?
Mong đợi từ ứng viên: Kinh nghiệm tối ưu hóa thực tế.
Câu trả lời ví dụ: Trong vai trò gần đây nhất của mình, tôi đã giảm kích thước tải trọng cho một ứng dụng di động bằng cách loại bỏ các trường dư thừa và chuyển sang các cấu trúc gọn nhẹ hơn. Điều này giúp giảm tải mạng và cải thiện đáng kể thời gian phản hồi cho người dùng cuối.
7) Bạn sử dụng chiến lược nào khi làm việc với các đối tượng JSON lồng nhau sâu?
Mong đợi từ ứng viên: Tiếp cận sự phức tạp.
Câu trả lời ví dụ: Tôi chia nhỏ các đối tượng lồng nhau thành các thành phần logic nhỏ hơn, tạo các hàm trợ giúp để truy cập an toàn và thường làm phẳng cấu trúc dữ liệu khi cần thiết. Điều này giúp dữ liệu dễ quản lý hơn, giảm lỗi và cải thiện khả năng đọc mã.
8) Mục đích của JSON Schema là gì và khi nào bạn sẽ sử dụng nó?
Mong đợi từ ứng viên: Kiến thức về các tiêu chuẩn liên quan.
Câu trả lời ví dụ: JSON Schema định nghĩa cấu trúc, các trường bắt buộc, kiểu dữ liệu và ràng buộc của dữ liệu JSON. Tôi sử dụng nó khi xây dựng API, tích hợp với các dịch vụ bên ngoài hoặc xác thực dữ liệu đầu vào do người dùng tạo ra để đảm bảo việc xử lý dữ liệu an toàn và có thể dự đoán được.
9) Mô tả cách bạn chẩn đoán các vấn đề về hiệu suất do khối lượng dữ liệu JSON lớn gây ra.
Mong đợi từ ứng viên: Chiến lược khắc phục sự cố hiệu suất.
Câu trả lời ví dụ: Tôi bắt đầu bằng cách đo kích thước tải trọng, thời gian phân tích cú pháp và mức sử dụng bộ nhớ. Sau đó, tôi xác định các trường không cần thiết, nén các cấu trúc lặp lại và đánh giá các cơ hội phân trang hoặc tải gia tăng. Nếu cần, tôi sẽ so sánh các định dạng tuần tự hóa thay thế.
10) Làm thế nào để duy trì độ chính xác của dữ liệu khi chuyển đổi JSON giữa các hệ thống có định dạng khác nhau?
Mong đợi từ ứng viên: Độ chính xác, độ chuẩn xác và nhận thức về bản đồ.
Câu trả lời ví dụ: Ở vị trí trước đây, tôi đảm bảo độ chính xác bằng cách xây dựng một lớp ánh xạ mạnh mẽ với các bài kiểm tra đơn vị, chuyển đổi cấp trường và xác thực tự động để so sánh kết quả đầu ra với các cấu trúc dự kiến. Điều này ngăn ngừa mất dữ liệu và đảm bảo định dạng nhất quán trong suốt quá trình tích hợp.
