# dbt - Tính năng nâng cao (Data Engineering) > Macro Jinja, test tùy chỉnh, packages, hooks, snapshots (SCD), incremental models, dbt Cloud, CI/CD - 20 câu hỏi phỏng vấn - Senior - [Câu hỏi phỏng vấn: Data Engineering](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van.md) ## 1. Trong dbt, mục đích chính của macro Jinja là gì? **Câu trả lời** Macro Jinja cho phép tái sử dụng mã trên nhiều model dbt. Chúng hoạt động như các hàm nhận tham số và trả về mã SQL được tạo động. Điều này tránh trùng lặp mã và giúp dễ bảo trì các phép biến đổi phức tạp trong toàn bộ dự án. ## 2. Làm thế nào để định nghĩa một macro dbt có thể tái sử dụng trong một file? **Câu trả lời** Một macro dbt được định nghĩa bằng cú pháp macro/endmacro của Jinja trong tệp .sql trong thư mục macros. Tên macro được chỉ định sau từ khóa macro, theo sau là các tham số trong dấu ngoặc đơn. Macro này sau đó có thể được gọi từ bất kỳ model nào trong dự án. ## 3. Sự khác biệt giữa chiến lược 'timestamp' và 'check' cho dbt snapshots là gì? **Câu trả lời** Chiến lược timestamp so sánh cột ngày cập nhật (updated_at) để phát hiện thay đổi, hiệu suất cao hơn vì chỉ so sánh một cột. Chiến lược check so sánh các giá trị của các cột được chỉ định (check_cols) để phát hiện bất kỳ thay đổi nào, hữu ích khi không có cột timestamp đáng tin cậy. ## Còn 17 câu hỏi nữa - Những cột nào được dbt tự động thêm khi tạo snapshot? - Làm thế nào để cấu hình một model incremental với chiến lược 'merge' trong dbt? Đăng ký miễn phí: https://sharpskill.dev/vi/login ## Các chủ đề phỏng vấn Data Engineering khác - [Linux & Shell - Cơ bản](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/linux-shell-basics.md): 20 câu hỏi, Junior - [Git & GitHub - Kiến thức cơ bản](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/git-github-fundamentals.md): 20 câu hỏi, Junior - [Python nâng cao cho Data Engineering](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/python-advanced-de.md): 25 câu hỏi, Junior - [Docker - Cơ bản](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/docker-fundamentals.md): 25 câu hỏi, Junior - [Google Cloud Platform - Cơ bản](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/gcp-fundamentals.md): 20 câu hỏi, Junior - [CI/CD và chất lượng mã](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/ci-cd-code-quality.md): 20 câu hỏi, Mid-Level - [Docker Compose](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/docker-compose.md): 20 câu hỏi, Mid-Level - [FastAPI - API dữ liệu](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/fastapi.md): 20 câu hỏi, Mid-Level - [SQL nâng cao cho Data Engineering](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/sql-advanced-de.md): 20 câu hỏi, Mid-Level - [Data Lake - Kiến trúc và nạp dữ liệu](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/data-lake.md): 20 câu hỏi, Mid-Level - [BigQuery cho Data Engineering](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/bigquery-de.md): 20 câu hỏi, Mid-Level - [PostgreSQL - Quản trị](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/postgresql-admin.md): 20 câu hỏi, Mid-Level - [Data Modeling cho Data Engineering](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/data-modeling-de.md): 20 câu hỏi, Mid-Level - [Fivetran & Airbyte - Nạp dữ liệu](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/fivetran-airbyte.md): 20 câu hỏi, Mid-Level - [dbt - Kiến thức cơ bản](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/dbt-fundamentals-de.md): 20 câu hỏi, Mid-Level - [Apache Airflow - Cơ bản](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/airflow-fundamentals.md): 20 câu hỏi, Mid-Level - [Kubernetes - Cơ Bản](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/kubernetes-fundamentals.md): 20 câu hỏi, Mid-Level - [Mẫu ETL / ELT / ETLT](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/etl-elt-patterns.md): 20 câu hỏi, Senior - [Apache Airflow - Nâng cao](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/airflow-advanced.md): 20 câu hỏi, Senior - [Airflow + dbt - Điều phối pipeline](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/airflow-dbt-integration.md): 20 câu hỏi, Senior - [PySpark - Xử lý quy mô lớn](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/pyspark.md): 20 câu hỏi, Senior - [Google Pub/Sub - Streaming dữ liệu](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/pubsub-streaming.md): 20 câu hỏi, Senior - [Apache Beam & Dataflow](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/apache-beam-dataflow.md): 20 câu hỏi, Senior - [Kubernetes - Production và Scaling](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/kubernetes-advanced.md): 20 câu hỏi, Senior - [Terraform - Infrastructure as Code](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/terraform.md): 20 câu hỏi, Senior - [Cơ sở dữ liệu NoSQL](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/nosql-databases.md): 20 câu hỏi, Senior - [Data Architecture hiện đại](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/data-architecture.md): 20 câu hỏi, Senior - [Giám sát và Khả năng quan sát](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/monitoring-observability.md): 20 câu hỏi, Senior - [IAM và Bảo mật Dữ liệu](https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/iam-security-de.md): 20 câu hỏi, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/vi/technologies/data-engineering/cau-hoi-phong-van/dbt-advanced-de