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

Phụ lục
top-5-cau-hoi-phong-van-sql-phan-1

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.

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.

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.

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

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.

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à FrontendBackend, 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


Devwork

Devwork là Nền tảng TUYỂN DỤNG IT CẤP TỐC với mô hình kết nối Nhà tuyển dụng với mạng lưới hơn 30.000 headhunter tuyển dụng ở khắp mọi nơi.Với hơn 1800 doanh nghiệp IT tin dùng Devwork để :

  • Tối ưu chi phí
  • Tiết kiệm thời gian
  • Tăng tốc tuyển dụng tối đa
  • Đăng ký ngay Devwork trong hôm nay để tuyển dụng những tài năng ưu tú nhất.

    Tag Cloud:

    Tác giả: quyenntt

    Link chia sẻ

    Bình luận

    Việc làm tại Devwork

    khám phá các cơ hội việc làm tốt nhất tại Devwork Xem thêm

    Bài viết liên quan

    Danh sách bài viết liên quan có thể bạn sẽ thích Xem thêm
    quantity-surveyor-qs-la-gi

    ( Quantity Surveyor ) QS là gì: Cẩm nang về nghề Kỹ sư Dự toán 2025

    00:00 18/04/2025

    QS là gì? Kỹ sư Dự toán (Quantity Surveyor) đang trở thành một trong những nghề nghiệp được săn đón nhất trong ngành xây dựng hiện nay. Trong bài viết này, Devwork giới thiệu đến bạn bài viết chi tiết về công việc, kỹ năng cần thiết và tiềm năng phát triển của nghề QS....

    IT Comtor là gì? Nghề "hot" cho người giỏi tiếng Nhật, mê công nghệ

    14:29 23/04/2025

    Trong bối cảnh hợp tác IT Nhật-Việt ngày càng phát triển, vai trò của IT Comtor đã trở thành mắt xích quan trọng không thể thiếu. Bài viết sẽ giúp bạn hiểu rõ về IT Comtor là gì, cơ hội nghề nghiệp và lộ trình phát triển trong lĩnh vực đầy tiềm năng này.

    it-comtor-la-gi

    IT Service Desk là gì? Lộ trình, kỹ năng và mức lương cập nhật 2025

    14:23 23/04/2025

    IT service desk hoạt động hiệu quả là trụ cột không thể thiếu giúp doanh nghiệp duy trì sự ổn định và liên tục của quy trình làm việc. Trong bài viết này, Devwork sẽ giải thích rõ ràng khái niệm IT service desk là gì, kỹ năng &  lộ trình thăng tiến trong lĩnh vực hấp dẫn này.

    it-service-desk-la-gi

    QA Leader là gì? Tất tần tật về vai trò, kỹ năng và lộ trình nghề nghiệp

    14:16 23/04/2025

    Bạn đang tìm kiếm thông tin về vị trí QA Leader trong ngành công nghệ thông tin? Devwork xin giới thiệu bài viết phân tích chi tiết về vai trò, kỹ năng và lộ trình phát triển sự nghiệp của một QA Leader thành công. Bài viết sẽ cung cấp cái nhìn toàn diện về vị trí quan trọng này trong quy trình phát triển phần mềm hiện đại.

    qa-leader-la-gi
    jquery-la-gi

    jQuery là gì? Tìm hiểu thư viện JavaScript giúp code dễ dàng hơn

    17:58 17/04/2025

    jQuery giúp lập trình JavaScript trở nên dễ dàng hơn bao giờ hết, nhưng bạn có biết cách sử dụng nó đúng cách? Trong bài viết này, chúng ta sẽ đi từ cơ bản đến nâng cao, bao gồm jQuery là gì, cách dùng Ajax jQuery, .prop() trong jQuery, và ứng dụng của jQuery UI trong thiết kế giao diện.

    php-developer-la-gi

    PHP Developer là gì? 7 lý do khiến lập trình viên PHP luôn Hot

    17:43 17/04/2025

    Đứng sau nhiều website và ứng dụng web phổ biến trên toàn cầu là những PHP Developer tài năng. Trong bài viết này, Devwork sẽ giới thiệu khái niệm PHP Developer là gì, các kỹ năng và lộ trình phát triển sự nghiệp trong lĩnh vực này.