Top 5 câu hỏi phỏng vấn SQL Developer – Phần 1

4813

Liệu rằng phỏng vấn SQL Developer đơn giản chỉ xoay quanh SQL (Structure Query Language)? Xin thưa là không, SQL Developer ngoài hiểu biết sâu rộng về SQL cũng cần có kiến thức về bảo mật, về tổng quan hệ cơ sở dữ liệu và nhiều yếu tố, thành phần khác liên quan tới DB.

Phần 1 bài viết này sẽ chia sẻ 5 câu hỏi liên quan tới SQL, mỗi câu hỏi là một phần kiến thức anh em có thể tham khảo. Vừa đánh giá kiến thức, vừa bổ sung nếu như đang còn hổng.

phỏng vấn SQL Developer
Dễ nhớ nhưng không có nghĩa anh em SQL Developer nào cũng nhìn nghiêm trọng vậy đâu nha

Chúc anh em SQL Developer thu thập được nhiều các kiến thức bổ ích thông qua bài viết này!

Ô sờ kê, gét gô thôi anh em.

1. Union là gì? Union khác gì so với Union All

Gòi, mồm to chứ câu đầu tiên phỏng vấn SQL Developer không thể không nhắc tới kiến thức cơ bản về SQL. Mà nhắc tới SQL không thể không nhắc tới từ khoá.

Từ khoá được nêu danh trong phần 1 này là union và union all.

Đầu tiên là union là cách thức hợp nhất nội dung của hai bảng có cùng cấu trúc. Hoặc sự thống nhất về cột trong 2 câu queries. Sự khác biệt giữa Union và union all là union sẽ tự động loại bỏ trùng lặp.

Trong anh có em, trong em có anh nhưng cái nào lặp thì ta bỏ đi. Còn không muốn bỏ thì ta có UNION ALL. À có một lưu ý nho nhỏ là UNION ALL sẽ tốt hơn về mặt performance do UNION phải tốn thêm xử lý để loại bỏ các dòng trùng lặp. Trong trường hợp anh em chắc chắn không thể có trùng lặp, UNION ALL nên được ưu tiên sử dụng.

  Oracle SQL developer - Top 5 cách dùng thông minh

phỏng vấn SQL Developer

2. Cluster và non clustered index khác gì nhau?

Cluster và non clustered là câu hỏi đánh giá mức độ hiểu biết của anh em về các loại index. Tuy chỉ là câu hỏi tổng quan về phân loại. Nhưng nếu anh em có thể phân biệt rõ sự khác biệt giữa hai loại index này, tin rằng anh em đã có kiến thức khá ổn về index.

Đầu tiên thì clustered index là loại index xác định sự sắp xếp vật lý (physical arrangement) của các dòng dữ liệu. Mỗi một bảng chỉ có một clustered index vì chỉ có một cách duy nhất duy trì về mặt vật lý cho các records trên một bảng.

Ngược lại, non clustered index là index không xác định sắp xếp vật lý (doesn’t specify the physical arrangement). Với non clustered thì dữ liệu có thể được lưu ở các bảng khác. Chính vì vậy, mỗi bảng có thể có nhiều non clustered index.

phỏng vấn SQL Developer

Câu hỏi về index là câu hỏi số hai phỏng vấn SQL Developer. Mục đích giúp anh em phân biệt hai loại index này. Anh em cũng có thể quay lại xem qua các loại index cho chắc nha.

Tham khảo SQL Developer Jobs hấp dẫn trên TopDev

3. Tìm kiếm các records bị trùng lặp như thế nào?

Chuyện dữ liệu bị trùng lặp giữa các bảng, các views là chuyện bình thường như cơm bữa. Câu hỏi số 3 trong bộ câu hỏi phỏng vấn SQL Developer muốn kiểm tra cách anh em xử lý vấn đề thực tế với SQL.

Từ vấn đề đó kiểm tra xem anh em có dùng đúng keywords không. Có hiểu và nhớ về các từ khoá, sử dụng với mục đích gì hay không?.

Trùng lặp records chia thành 2 trường hợp. Một là 1 field, hai là nhiều field trong một table. Nếu chỉ trùng 1 field anh em có thể sử dụng GROUP BY với HAVING COUNT để tìm ra field trùng trong bảng, trong views

 SELECT name, COUNT(email) 
 FROM users
 GROUP BY email
 HAVING COUNT(email) > 1 

Trường hợp có nhiều hơn 1 field, anh em có thể sử dụng COUNT *

 SELECT name, email, COUNT(*)
 FROM users
 GROUP BY name, email
 HAVING COUNT(*) > 1

Tất nhiên sử dụng các từ khoá, ghi nhớ từ khoá anh em không thể học tủ đâu nha, phải nhớ hết. Đây chỉ là một câu hỏi ví dụ.

phỏng vấn SQL Developer
Bộ keywords anh em phải thuộc như nằm lòng nha

  Hướng dẫn kết nối PHP với SQL Server

4. Làm sao để xử lý các vấn đề liên quan tới SQL?

Đây là câu hỏi thường gặp trong các buổi phỏng vấn SQL Developer. Nguyên nhân là nó đánh giá được kinh nghiệm thực tế anh SQL Developer được gặp.

Câu hỏi này cũng phân loại ra những anh em backend thông thường chỉ sử dụng SQL theo kiểu Queries đã viết sẵn hoặc những câu đơn giản không có vấn đề về performance. Câu hỏi này khuyến nghị anh em nêu ra từ khoá, các thức xử lý vấn đề với các câu SQL. Hai nữa là nêu ra kinh nghiệm thực tế đã optimize như thế nào. Được như vậy sẽ thuyết phục hơn.

Quay lại với câu hỏi, câu trả lời anh em có thể nêu ra liên quan tới một số vấn đề của SQL Queries:

  • Nếu SQL chậm, có vấn đề về performance, giải pháp là đánh index cho các column thường được tìm kiếm và thường được sort. Cụ thể index như thế nào, loại nào anh em có thể nêu ra. Một số loại index anh em có thể tham khảo ở đây.
  • Cũng trong SQL performance, anh em có thể nêu ra các cách thức, kĩ thuật sử dụng để phân tích câu SQL. Tìm ra chỗ gây chậm hoặc không hiệu quả. Câu SQL có vấn đề thường là rất dài nên phải tìm từng phần trong đó
  • Từ khoá thì anh em có thể nêu rõ ràng ra dùng EXPLAIN, EXPLAIN ANALYZE. Tuỳ thuộc vào DB mà anh em thường sử dụng.

Về kinh nghiêm thực tế anh em còn có thể nêu ra cụ thể tên một số tools, các thức anh em đã dùng để tối ưu:

  • Sử dụng công cụ như pgAdmin, MySQL Workbench hoặc SQL Server Management Studio để tìm hiểu sâu hơn về SQL như CPU, Ram.
  • Với một số câu SQL, nguyên nhân chậm có thể do các tham số (argument), có thể nêu ra các lần anh em đã thử thay đổi tham số để điều tra nguyên nhân chậm của SQL.

phỏng vấn SQL Developer
Như SQL Server, nó cho biết kích thước dữ liệu trả về là bao nhiêu, dùng hết bao nhiêu CPU cho từng actions

5. Những cách nào được sử dụng để đảm bảo security cho SQL?

Câu hỏi về security là câu hỏi được đánh giá ở mức độ cao hơn trong danh sách các câu hỏi phỏng vấn SQL Developer nha. Những anh em nào có kinh nghiệm hoặc apply vị trí SQL Developer thường sẽ gặp câu này.

Thời đại mà làm cái gì kể cả là Frontend, Backend, Network,… người ta đều chú ý tới security thì SQL cũng không phải là ngoại lệ.

Nếu anh em còn chưa biết nhiều về SQL Security thì có thể tham khảo thêm nha. Đọc để biết thêm về thứ mà chắc chắn là ở level cao anh em nào cũng cần có kiến thức. Rồi, quay lại câu trả lời, anh em có thể liệt kê ra một số kỹ thuật để đảm bảo security cho SQL.

  • Access control: cái này là cơ bản nhất ha, dựa trên quyền truy cập ta có thể chặn hoặc giới hạn quyền truy cập vào hệ cơ sở dữ liệu.
  • Encryption: Mã hoá là xương sống của bảo mật, mật khẩu, thẻ tín dụng, … Tất cả đều được mã hoá để đảm bảo tính bảo mật. Anh em có thể nhấn nhá qua tí về các thức lưu dữ liệu trong các cột.
  • Auditing: Kiểm tra là kỹ thuật lưu lại tất cả hành động được thực hiện trên DB, ai đã log vào DB, đã xem bảng nào, truy cập bảng nào.
  • SQL Injection: Cái này cần phải kiểm tra kĩ input parameter. Anh em lưu ý đây là kiến thức bảo mật cơ bản cần phải có nha.

phỏng vấn SQL Developer
SQL Injection là kiến thức cơ bản cần nhớ nha anh em

6. Tham khảo thêm về phỏng vấn SQL Developer

Cảm ơn anh em đã đọc bài – Thank you for your time – Happy interview!

Tác giả: Kiên Nguyễn

Xem thêm:

Xem thêm tuyển dụng nhân viên it hấp dẫn trên TopDev