Trong quá trình đi làm phỏng vấn ở một vài nơi, phỏng vấn với khách hàng mình gặp một số câu hỏi về SQL database. Bài viết này sẽ chia sẻ các câu hỏi mình đã gặp về SQL database, hy vọng sẽ được thảo luận cùng anh em về câu trả lời. Hoặc anh em nào có câu hỏi nào hay có thể thảo luận ở phần comment.
I. Ôn phỏng vấn gì về database (SQL Server)?
- 4 tính chất ACID, chuẩn hóa dữ liệu (Data Normalization)
- Cơ sở dữ liệu, cách tạo database, table, column, type, schema, view, temporary table, primary key, foregin key, constrain.
- Các câu lệnh cơ bản: select, insert, update, delete.
- Làm việc với index, store procedure, function, trigger, Permission, users, roles.
- Backup, restore.
- Tối ưu performance về query, database
- Xử lý lỗi khi viết câu query, trong store procedure, function
- Transaction
- Bulk insert, bulk delete
- Partitioning, Sharding
- Các tool sử dụng: sql profiler, SQL Server Integration Services, Azure SQL Analytics, Query Performance Insight, sql execution plan
II. Một số câu hỏi phỏng vấn mình đã gặp
Có rất nhiều câu hỏi nhưng ở đây mình chỉ liệt kê ra các câu mình đã gặp. Nếu anh em có các câu hỏi hay có thể thêm vào phần bình luận.
- Các cách tối ưu sql query?
- Bạn có thiết kế database cho dự án không? cần lưu ý gì khi thiết kế 1 database mới cho dự án.
- Index là gì? có mấy loại index? tại sao phải đánh index? thuật toán sử dụng để đánh index ra sao?
- Trigger là gì?
- Nếu table có 10 cột đều cần search, trừ cột ID, mình đánh index có tất các cột khác được không? có nên làm vậy không?
- Store procedure là gì? lợi ích khi dùng store procedure?
- Cách debug khi làm việc với store procedure?
- Quản lý exception, lỗi khi làm việc với store procedure, function ra sao?
- Cách sử dụng transaction trong sql như thế nào?
- Khác nhau giữa Partitioning và Sharding ?
- Muốn insert data cỡ 1000 records thì làm cách nào?
- Full-Text Search là gì?
- Khác nhau giữa Union và Join?
- ETL là gì? ELT là gì? khác nhau như thế nào?
- Cần làm gì khi migrate DB?
- If you find duplicated record in the source, what will you do?
- How do you define when or which situation we need to convert from LinQ to raw query/procedure?
III. Các tools mình xài để làm việc với SQL Server
- Sql profiler: sử dụng để giám sát, phân tích và chẩn đoán hiệu suất của cơ sở dữ liệu. Ví dụ ta có thể sử dụng sql profiler chọn các cột như Completed, Performance, Duration, CPU ... để đo hiệu suất truy vấn của query.
-
Sql execution plan: là một bản đồ hoặc hướng dẫn chi tiết mà SQL Server sử dụng để thực thi một câu lệnh SQL. Có các thành phần như Operators, Data Access Methods (Phương pháp Truy cập Dữ liệu), Join Methods, Estimates vs. Actuals, Costs.
-
Query performance insight: giúp quản trị viên cơ sở dữ liệu và nhà phát triển theo dõi, phân tích và cải thiện hiệu suất của các truy vấn SQL. Ví dụ ta có thể xem top queries by CPU
-
SQL Server Integration Services: Là một công cụ ETL (Extract, Transform, Load) của Microsoft SQL Server, được thiết kế để hỗ trợ các nhiệm vụ tích hợp dữ liệu, chuyển đổi dữ liệu và di chuyển dữ liệu giữa các nguồn khác nhau
-
Cảm ơn mọi người đã xem bài viết. Chúc anh em một ngày làm việc hiệu quả và đầy năng lượng. Nếu có thắc mắc về các phần trong bài này mọi người có thể inbox qua facebook:https://www.facebook.com/FriendsCode-108096425243996 Mình sẽ giải đáp thắc mắc trong tầm hiểu biết. Cảm ơn mọi người!
-
Hoặc liên hệ mình qua facebook cá nhân: https://www.facebook.com/Flamesofwars/
P/S: Team mình có nhận làm freelancer nên bạn nào cần thì liên hệ nha. (Tech-stack: .NET, Nodejs, ReactJs, Vue)