Lợi nhuận:
- Khả năng nhận biết và xác minh rằng AI có thể tạo ra các API không có thật, mã không an toàn và nội dung có bản quyền
- Khả năng quản lý việc sử dụng AI trong giới hạn bảo mật mã nguồn, dữ liệu cá nhân và chính sách của công ty
- Hiểu rằng trách nhiệm cuối cùng về việc tuân thủ giấy phép, bảo mật và đạo đức vẫn thuộc về kỹ sư.
Thi học phần
1. Là một kỹ sư máy tính, khi làm việc với công cụ tạo mã AI, trách nhiệm cuối cùng về vấn đề nào sau đây luôn thuộc về con người?
- A) Phê duyệt cuối cùng về tính chính xác, bảo mật cũng như xem xét và kiểm tra mã được đưa vào sản xuất ✔
- B) Tạo khung mã đầu tiên cho hàm
- C) Tạo danh sách gợi ý cho tên biến
- D) Chuẩn bị văn bản dự thảo để bình luận mã
Mô tả: AI; Nó có thể tăng tốc các tác vụ như khung mã, bản nháp thử nghiệm và tài liệu. Tuy nhiên, trách nhiệm của người kỹ sư là xem xét, kiểm tra và phê duyệt mã được tạo ra để đảm bảo mã đó đúng, an toàn, tuân thủ yêu cầu và đưa vào sản xuất; việc này không thể được ủy quyền cho AI nếu không có sự xác minh độc lập.
2. AI đã tạo ra một chức năng cho bạn và nó dường như đang hoạt động theo hướng tốt đẹp. Bước tốt nhất trước khi đưa nó vào sản xuất là gì?
- A) Vì chức năng này có vẻ hoạt động nên hãy đưa nó trực tiếp vào sản xuất
- B) Xác minh hành vi bằng cách viết và chạy các bài kiểm tra đơn vị nhỏ bao gồm các trường hợp đặc biệt ✔
- C) Chỉ cần nhìn vào số dòng của hàm
- D) Đặt tên hàm mang tính mô tả hơn
Giải thích: Xuất hiện trong công việc không có nghĩa là đúng. Viết và chạy các bài kiểm tra đơn vị nhỏ bao gồm các trường hợp biên như đầu vào trống, số 0, âm, giá trị rất lớn và không khớp sẽ xác minh hành vi thực tế của hàm mà không di chuyển nó sang môi trường trực tiếp.
3. AI đã đề xuất một phương thức có tên 'array.sortStable()' không tồn tại trong ngôn ngữ của bạn và giải thích nó một cách rõ ràng. Hành động đúng đắn đầu tiên cần thực hiện là gì?
- A) Sử dụng phương pháp trực tiếp vì AI có vẻ tự tin
- B) Tự xác định phương thức và sử dụng chính xác tên của nó
- C) Xác minh sự tồn tại của phương pháp từ tài liệu chính thức của ngôn ngữ/thư viện ✔
- D) Đóng cảnh báo trình biên dịch và tiếp tục
Giải thích: Các mô hình ngôn ngữ có thể tạo nên các tên thư viện, gói hoặc phương thức không thực sự tồn tại (ảo giác). Mỗi API được đề xuất phải được xác minh nguyên văn dựa trên tài liệu chính thức và hiện tại của ngôn ngữ hoặc thư viện; Nếu nó không được đưa vào tài liệu thì không nên sử dụng.
4. Bạn muốn dán mã nguồn bí mật của công ty mình và khóa API được nhúng vào công cụ AI công khai và yêu cầu trợ giúp. Cách tiếp cận nào đúng nhất?
- A) Dán mã như với khóa API để tăng tốc
- B) Chỉ cần xóa tên công ty và chia sẻ mọi thứ khác là đủ
- C) Chia sẻ mã và sau đó yêu cầu AI xóa nó
- D) Loại bỏ các bí mật và logic ẩn và rút gọn vấn đề thành một ví dụ điển hình hoặc sử dụng một công cụ thể chế ✔
Mô tả: Mã nguồn bí mật và thông tin xác thực (khóa API, mật khẩu, chuỗi kết nối); Đó là rủi ro về mặt bí mật và an ninh của công ty. Cần phải loại bỏ các bí mật và logic nghiệp vụ ẩn, đồng thời giảm vấn đề xuống một ví dụ ẩn danh/đại diện hoặc sử dụng công cụ chia sẻ doanh nghiệp/phi dữ liệu.
5. AI nói rằng độ phức tạp của hàm tìm kiếm mà anh ấy viết là O(n); nhưng có hai vòng lặp lồng nhau trong mã. Hành vi kỹ thuật chính xác là gì?
- A) Phân tích mã theo cách thủ công và tự mình trích xuất độ phức tạp rồi đo lường nếu cần thiết ✔
- B) Chấp nhận O(n) và tiếp tục vì AI đã nói
- C) Giả sử số chu kỳ không liên quan gì đến hiệu suất
- D) Chỉ cần thay đổi tên hàm
Giải thích: Độ phức tạp về thời gian (Big-O) cho thấy số lượng thao tác tăng lên khi đầu vào tăng lên. Hai vòng lặp lồng nhau thường có nghĩa là O(n^2). Tuyên bố về độ phức tạp của AI phải được xác minh bằng cách phân tích mã theo cách thủ công và đo lường với mức đầu vào tăng dần nếu cần thiết; Việc dựa vào tuyên bố sẽ tạo ra một giả định sai lầm về hiệu quả hoạt động.
6. Mã do AI tạo trực tiếp chèn dữ liệu đầu vào của người dùng vào truy vấn SQL bằng cách nối văn bản. Vấn đề chính và giải pháp phù hợp ở đây là gì?
- A) Không có vấn đề gì; ghép văn bản là phương pháp nhanh nhất
- B) Có nguy cơ bị tiêm SQL; Nên sử dụng truy vấn được tham số hóa (câu lệnh đã chuẩn bị sẵn) để phân tách đầu vào ✔
- C) Chỉ cần chuyển câu truy vấn sang chữ hoa là đủ
- D) Viết truy vấn ngắn hơn sẽ giải quyết được vấn đề
Mô tả: Việc thêm trực tiếp dữ liệu nhập của người dùng vào văn bản truy vấn sẽ tạo ra lỗ hổng chèn SQL; Kẻ tấn công có thể sửa đổi truy vấn bằng đầu vào. Giải pháp đúng là sử dụng truy vấn được tham số hóa (câu lệnh được chuẩn bị sẵn) để tách đầu vào khỏi văn bản truy vấn. Đây là một trong những lỗi bảo mật thường bị bỏ qua nhất trong mã AI.
7. Bạn có giới hạn thời gian khi xem lại một đoạn mã do AI tạo ra. Những vấn đề nào là tốt nhất để ưu tiên?
- A) Chỉ định dạng các chi tiết như thụt lề và giãn cách
- B) Chỉ độ dài của tên biến
- C) Tính chính xác về mặt logic, lỗ hổng và hành vi của trường hợp nguy hiểm ✔
- D) Chỉ tổng số dòng của tệp
Mô tả: Rủi ro cao nhất trong quá trình xem xét mã; Đây là những vấn đề gây ra tác hại nghiêm trọng, chẳng hạn như lỗi logic, lỗ hổng bảo mật và rò rỉ thông tin bí mật. Các vấn đề về định dạng và kiểu dáng được khắc phục bằng các công cụ tự động; Sự chú ý chính của con người nên được dành cho tính chính xác, bảo mật và hành vi của trường hợp nguy hiểm.
8. Bạn muốn AI giải quyết lỗi. Đầu vào nào sẽ giúp AI tìm ra nguyên nhân gốc rễ tốt nhất?
- A) Chỉ cần nói 'mã không hoạt động, hãy sửa nó'
- B) Chỉ cần đặt tên của tập tin
- C) Chỉ nói kết quả mong đợi, không có văn bản lỗi
- D) Cung cấp thông báo lỗi đầy đủ, dấu vết ngăn xếp, mã liên quan và ví dụ sao chép tối thiểu ✔
Giải thích: Để gỡ lỗi hiệu quả, cần phải cung cấp cho AI thông báo lỗi đầy đủ, dấu vết ngăn xếp, đoạn mã có liên quan và mẫu có thể tái tạo nhỏ nhất gây ra lỗi. Tuyên bố mơ hồ 'không hoạt động' buộc AI phải đoán và đưa ra các khuyến nghị chung chung.
9. Tất cả các bài kiểm tra đơn vị do AI tạo ra đều vượt qua trong lần chạy đầu tiên. Rủi ro nào không nên bỏ qua trong tình huống này?
- A) Kiểm thử có thể xác nhận trạng thái hiện tại của mã nhưng không xác nhận hành vi thực tế/mong đợi ✔
- B) Mã hoàn toàn không có lỗi vì tất cả các bài kiểm tra đều vượt qua
- C) Chất lượng được đảm bảo nếu số lượng bài kiểm tra lớn
- D) Việc vượt qua bài kiểm tra chứng tỏ rằng phạm vi bảo hiểm đã hoàn tất
Giải thích: Các thử nghiệm có thể xác nhận hành vi hiện tại (có thể có lỗi) của mã chứ không phải hành vi dự định của nó; hoặc nó có thể không chứa bất kỳ xác nhận có ý nghĩa nào và luôn được thông qua. Để thấy rằng các bài kiểm tra đang kiểm tra kỳ vọng thực sự, cần phải phá mã một cách có ý thức và xác nhận rằng bài kiểm tra chuyển sang màu đỏ.
10. AI đã tạo cho bạn một khối mã làm sẵn để giải quyết một vấn đề. Bạn nghi ngờ rằng mã có thể đã được sao chép nguyên văn từ một dự án nguồn mở. Đó là cách tiếp cận đúng đắn?
- A) Sử dụng giấy phép mà không cần suy nghĩ vì mã hoạt động
- B) Kiểm tra nguồn/giấy phép của mã, viết lại nếu cần thiết và tuân thủ chính sách của công ty ✔
- C) Chỉ cần thay đổi tên biến và coi như vấn đề đã được giải quyết
- D) Giả sử rằng việc cấp phép chỉ liên quan đến các công ty lớn
Mô tả: AI có thể sao chép nguyên văn mã có bản quyền/được cấp phép trong dữ liệu đào tạo. Vi phạm giấy phép trong một sản phẩm thương mại tạo ra rủi ro pháp lý nghiêm trọng. Cần kiểm tra nguồn và giấy phép của mã, viết lại bằng từ ngữ của riêng bạn nếu cần thiết và tuân thủ chính sách cấp phép của tổ chức.
11. AI đề xuất bạn nên chuyển ngay sang kiến trúc microservice cho dự án của mình. Phương pháp kỹ thuật phù hợp nhất khi đánh giá đề xuất này là gì?
- A) Chia ngay toàn bộ hệ thống thành các microservices vì AI gợi ý
- B) Giả sử microservice luôn là lựa chọn tốt nhất
- C) Đánh giá đề xuất theo nhu cầu thực tế, khối lượng, cơ cấu nhóm và sự cân đối cộng trừ ✔
- D) Đưa ra quyết định chỉ dựa trên mức độ phổ biến của kiến trúc
Giải thích: Các quyết định về kiến trúc phụ thuộc vào bối cảnh; Vi dịch vụ tăng thêm giá trị cho các nhu cầu như quy mô và phân tách nhóm, nhưng đi kèm với các chi phí như độ phức tạp trong vận hành, gỡ lỗi phân tán và chi phí. Đánh giá đề xuất theo nhu cầu thực tế, khối lượng, cơ cấu nhóm và cân bằng ưu nhược điểm; Lời khuyên chung không nên được làm theo một cách mù quáng.
12. AI đã tạo ra tài liệu API và README được sắp xếp hợp lý cho mã của bạn; nhưng một số điểm cuối và tham số không khớp trong mã. Hành vi đúng đắn là gì?
- A) Xuất bản tài liệu như hiện tại vì văn bản trôi chảy
- B) Chỉ cần sửa tiêu đề và giữ nguyên phần còn lại
- C) Thêm tài liệu vào kho mà không đọc
- D) So sánh từng điểm cuối và tham số với mã thực tế và sửa bất kỳ điểm nào không khớp ✔
Mô tả: Tài liệu phải phản ánh chính xác mã thực tế; Tài liệu sai sẽ đẩy các nhà phát triển đọc nó sử dụng nó không đúng cách. Mọi điểm cuối, tham số và giá trị trả về phải được xác minh dựa trên mã thực tế và mọi thông tin không khớp đều phải được sửa.
13. Cách tiếp cận đầu vào nào phù hợp để có đầu ra chất lượng cao nhất khi yêu cầu mã từ AI?
- A) Cung cấp rõ ràng ngôn ngữ/phiên bản, hợp đồng đầu vào-đầu ra, các ràng buộc và tình huống lỗi ✔
- B) Chỉ cần nói 'viết cho tôi một số mã làm việc'
- C) Viết yêu cầu ngắn nhất mà không đưa ra bất kỳ ngữ cảnh nào
- D) Chỉ cần xác định sẽ có bao nhiêu dòng mã
Mô tả: Lời nhắc mạnh mẽ; Nó bao gồm ngôn ngữ và phiên bản được sử dụng, hợp đồng đầu vào-đầu ra, các ràng buộc về hiệu suất và kiểu dáng, điều kiện lỗi và hướng dẫn 'chỉ ở trong phạm vi được yêu cầu'. Yêu cầu 'viết cho tôi một hàm' không theo ngữ cảnh là yêu cầu chung chung và thường tạo ra mã không phù hợp.
14. AI đã tạo cấu hình cho quy trình CI/CD (tích hợp/triển khai liên tục) của bạn và nhúng mật khẩu cơ sở dữ liệu vào đó ở dạng văn bản thuần túy. Cách khắc phục nào là đúng?
- A) Để lại mật khẩu ở dạng văn bản thuần túy vì nó hoạt động
- B) Di chuyển bí mật ra ngoài thông qua biến môi trường hoặc công cụ quản lý bí mật, không đưa bản rõ vào kho lưu trữ ✔
- C) Chỉ di chuyển mật khẩu vào dòng bình luận
- D) Thay đổi tên tệp sẽ giải quyết được vấn đề
Giải thích: Việc ghi các bí mật như mật khẩu và khóa ở dạng văn bản thuần túy vào tệp cấu hình có nguy cơ rò rỉ quyền kiểm soát phiên bản và truy cập trái phép. Bí mật; Nó phải được giữ bởi các biến môi trường hoặc một trình quản lý bí mật đặc biệt và không bao giờ được nhập vào kho lưu trữ ở dạng văn bản thuần túy.