Đề thi olympic tin học sinh viên lần thứ 17 - đề 2 docx

16 499 0
Đề thi olympic tin học sinh viên lần thứ 17 - đề 2 docx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Đề thi Olympic Tin học OLP06 chủ đề Mã nguồn mở (MNM) Phần I : Hiểu biết về MNM Câu hỏi 1 : (2 đ) Copyleft là gì ? Nói Copyleft là loại bỏ bản quyền (Copyright) có đúng không ? Hãy giải thích. Trả lời : Câu hỏi 2 : (2 đ) Free software và freeware giống và khác nhau ở những điểm nào ? Trả lời : Câu hỏi 3 : (1 đ) Giấy phép sử dụng (license) là chỉ dành riêng cho phần mềm, đúng hay sai ? Nếu sai, hãy cho một vài phản ví dụ. Trả lời : Câu hỏi 4 : (1 đ) Một tác giả X quyết định đặt phần mềm S của mình dưới giấy phép GPL (General Public license). Anh ta đã sao chép nguyên văn giấy phép này vào gói phần mềm cũng như vào các tệp mã của phần mềm. Phần mềm này như vậy đã trở thành phần mềm GPL hay chưa ? Nếu chưa, hãy giải thích và cho biết làm thế nào để phần mềm của tác giả X trở thành phần mềm GPL. Trả lời : 1/16 Câu hỏi 5 : (1 đ) Một nhà phát triển cải tiến một phần mềm GPL, sau đó đã bán sản phẩm của mình cho một khách hàng Y. Việc làm này có gì trái với giấy phép GPL không ? Hãy giải thích. Trả lời : Câu hỏi 6 : (1 đ) Phong trào ¨nguồn mở¨ (Open Source) có phải chỉ dành riêng cho phần mềm hay có thể dùng cho cả các lĩnh vực khác ? Nếu có hãy cho một vài ví dụ. Trả lời : Câu hỏi 7 : (1 đ) Một PMNM có thể sử dụng một khuôn dạng dữ liệu đóng không ? Hãy giải thích. Trả lời : Câu hỏi 8 : (1 đ) Làm thế nào để nhận biết một phần mềm tự do (free software) ? Trả lời : Câu hỏi 9 : (2 đ) CVS (Concurrent Versions System) là một công cụ hầu như không thể thiếu của các dự án PMNM. Hãy cho biết lợi ích của CVS và những gì công cụ này không thể làm được trong việc phát triển phần mềm. Trả lời : 2/16 Câu hỏi 10 : (3 đ) Một công cụ khá phổ biến hay được phân phối cùng với mã nguồn của một PMNM là configure. Công cụ này có công dụng gì cho người sử dụng PMNM ? Hãy chỉ ra các bước đặc trưng khi sử dụng công cụ này. Trả lời : Câu hỏi 11 : (2 đ) Trong tác phẩm nổi tiếng ¨Thánh đường và chợ giời¨ (The Cathedral and the Bazar), tác giả Eric Raymond, một trong những người khởi xướng phong trào Mã nguồn mở, đã dùng hình ảnh ¨chợ giời¨ để chỉ phương pháp xây dựng PMNM. Hãy nêu những đặc trưng chính của phương pháp này. Mọi PMNM có phải đều được xây dựng theo mô hình này không ? Trả lời : Câu hỏi 12 : (2 đ) Một phần mềm có thể đồng thời được phân phối theo 2 loại giấp phép là mã nguồn mở và mã nguồn đóng được không ? Nếu được thì làm như vậy có ích lợi gì ? Trả lời : Phần II : LibPDF++ Câu hỏi 13 (1đ) Một công ty phần mềm OpenCom dự định sử dụng thư viện LibPDF++ trong sản phẩm thương mại BigTester của mình. Theo như luật bản quyền thì công ty OpenCom có được phép làm điều này không? a) Không thể được, do sử dụng LibPDF++ nên BigTester cũng phải là sản phẩm mã nguồn mở. b) Có thể được, với điều kiện là trong sản phẩm BigTester phải có nói rõ là OpenCom đã sử dụng LibPDF++ trong phần About và mã nguồn của LibPDF++ phải được phân phối kèm sản phẩm. 3/16 c) Có thể được, với điều kiện là trong sản phẩm BigTester phải có nói rõ là OpenCom đã sử dụng LibPDF++ trong phần About. d) Được, OpenCom vẫn có quyền thương mại sản phẩm BigTester khi sử dụng LibPDF++. Trả lời : Câu hỏi 14 (3đ) Một lập trình viên muốn xuất một đoạn văn bản p ra tài liệu pdf với font f cho trước. Do đoạn văn bản khá dài, nên không thể nào ghi trọn vẹn trên một dòng mà buộc phải ghi thành nhiều dòng (nhưng vẫn nằm trong cùng một trang). Trả lời 2 câu hỏi sau: a) (2đ) LibPDF++ có hỗ trợ trực tiếp việc xuất đoạn văn bản như trên hay không? Trả lời : b) (1đ) Nếu có, đó là hàm nào? Nếu không có, vậy cần sử dụng hàm nào để tìm vị trí ngắt dòng? (Chỉ cần chỉ ra tên hàm là đù) Trả lời : Câu hỏi 15 (4đ) Sử dụng trình biên dịch gcc phiên bản 3.2 trở lên (hoặc trình biên dịch tương đương) theo hướng dẫn của tác giả, có thể xuất ra một chuỗi unicode (wstring) như trong Câu hỏi 14 không? Yêu cầu giải thích rõ. Trả lời : Câu hỏi 16 (2đ) a) (1đ) Liệt kê tất cả các phiên bản pdf được LibPDF++ hỗ trợ: Trả lời : 4/16 b) (1đ) Chỉ ra tập tin, dòng liên quan. Trả lời : Câu hỏi 17 (5đ) a) (1đ) LibPDF++ định nghĩa một số loại font chữ chuẩn, có thể sử dụng trong tài liệu pdf mà không cần nhúng font chữ vào tài liệu. Có bao nhiêu họ font chữ chuẩn được định nghĩa trong tài liệu pdf? Liệt kê ra. Trả lời : b) (3đ) Để sử dụng một font chữ không chuẩn, cần phải sử dụng các hàm nào để nhúng font chữ này vào tài liệu? Trả lời : c) (1đ) Nếu như trong tài liệu pdf sử dụng font chữ Webdings nhưng chỉ dùng một vài ký tự, có thể yêu cầu LibPDF++ chỉ nhúng font chữ của riêng các ký tự này vào tài liệu pdf được không ? Hãy giải thích. Trả lời : Câu hỏi 18 (4đ) Hãy thực hiện sửa đổi trên thư viện LibPDF++ sao cho, bất kể lập trình viên có yêu cầu nhúng font hay không thì font chữ vẫn không được nhúng vào tài liệu pdf. Yêu cầu chỉ rõ các tập tin, vị trí cần sửa đổi và nội dung sửa đổi. Trả lời : 5/16 Câu hỏi 19 (3đ) Sử dụng thư viện, hãy viết đoạn code để tạo ra tệp congr.pdf có dòng chữ: “Chuc cuoc thi ma nguon mo thanh cong” với font Times New Roman, chữ đậm + nghiêng Trả lời : Câu hỏi 20 (1đ) Để dịch được thư viện libpdf cần có các thư viện dưới đây. Trong số đó thư viện nào chỉ dùng mã nguồn mà không cần biên dịch. a) Boost b) Freetype c) libjpeg d) zlib Trả lời : Câu hỏi 21 (1đ) Namespace của thư viện libpdf được đặt tên là Trả lời : Câu hỏi 22 (3đ) Hãy cho biết công cụ tạo các Makefile của bộ thư viện libPDF. Khi chúng ta muốn thay đổi tập các tệp nguồn cần biên dịch thì ta phải sửa đổi những tệp nào. Trả lời : 6/16 Phần III : MySQL++ Câu hỏi 23 (5đ) Cho trước một biến conn (kiểu Connection) đã kết nối với mysql và một biến query (kiểu Query) được tạo từ conn. a) (1đ) Lập trình viên muốn thực hiện câu truy vấn có dạng CREATE TABLE … và muốn biết lệnh xóa có thực hiện thành công hay không. Hãy trình bày cách đơn giản nhất. Trả lời : bSuccess = b) (1đ) Lập trình viên muốn thực hiện câu truy vấn có dạng UPDATE … WHERE … và muốn biết có bao nhiêu dòng được cập nhật. Hãy trình bày cách đơn giản nhất. Trả lời : int nAffectedRows = c) (3đ) Cho một bảng mytable có cấu trúc gồm 3 trường : id : int target : varchar(1024) filename : varchar(256) với khoảng 100 triệu bản ghi. Lập trình viên muốn kiểm tra xem tập tin nào đã bị xóa thì báo ra màn hình thông tin về id, target và filename liên quan. Giả sử cho trước hàm KiemTraVaBaoCao(int nId, std::string sTarget, std::string sFilename). Hãy trình bày cách hiệu quả nhất để thu được kết quả trên. Trả lời : KiemTraVaBaoCao(…………………………,…………………………,…………………………); Câu hỏi 24 (5đ) Cho trước một biến res (kiểu Result) đã có sẵn dữ liệu kết quả. Trả lời các câu hỏi sau: a) (1đ) Hàm res.size() có ý nghĩa gì? Trả lời : 7/16 b) (1đ) Hàm res.preview() có ý nghĩa gì? Trả lời : c) (3đ) Lập trình viên muốn lấy dòng dữ liệu cuối cùng trong res, cách nào là ngắn gọn và đơn giản nhất? Yêu cầu chỉ ra 2 cách. Trả lời cách 1 (1đ): Row rowlast1 = Trả lời cách 2 (2đ): Row rowlast2 = Câu hỏi 25 (4đ) Cho một đoạn ví dụ sau sử dụng thư viện mysql++: using namespace mysqlpp; Connection conn; conn.connect("sampledb", "", "root"); Query query = conn.query(); query << "select * from my table;"; Result res; try { Result res = query.store(); if (res == NULL) cout << "Khong co du lieu" << endl; else cout << "Co du lieu" << endl; } catch (Exception&) { cout << "Co exception xay ra" << endl; } Giả sử kết nối (conn.connect) thành công và trong ¨sampledb¨ có bảng tên là ¨my table¨. Trả lời các câu hỏi sau: 8/16 a) (3đ) Kết quả xuất ra màn hình là gì? Giải thích rõ tại sao? Trả lời : b) (1đ) Dòng “} catch (Exception&) {” sẽ bắt tất cả các lỗi xảy ra. Vậy nếu chỉ muốn bắt lỗi liên quan đến việc thực hiện truy vấn, cần thay Exception bằng gì? Trả lời : Câu hỏi 26 (4đ) Cho đoạn chương trình sau sử dụng thư viện MySQL++. try { Connection conn; bool bSucceed = conn.connect(db, server, "demo"); if (!bSucceed) { cout << "Khong the ket noi mysql" << endl; exit(0); } cout << "Ket noi mysql thanh cong" << endl; } catch(Exception&) { cout << "Da co loi nghiem trong xay ra" << endl; } Giả sử mysql server đang chạy trên cùng máy này và đã có database tên là testdb. Giả sử đăng nhập user demo với password rỗng là hợp lệ, trả lời các câu hỏi sau: a) (1đ) Trong trường hợp db = NULL, server = "" thì kết quả xuất ra màn hình là gì? Giải thích rõ. Trả lời : b) (2đ) Trong trường hợp db = "testdb", server = "fakeserver" và không có server nào tên là fakeserver thì kết quả xuất ra màn hình là gì? Giải thích rõ. Trả lời : 9/16 c) (1đ) Trong trường hợp db = "", server = "" thì kết quả xuất ra màn hình là gì? Giải thích rõ. Trả lời : Câu hỏi 27 (8đ) Hãy thực hiện các sửa đổi cần thiết trong thư viện MySQL++ để có thể biết cổng kết nối mặc định với MySQL server là gì? Hãy chứng tỏ rằng cách sửa đổi của bạn là hiệu quả nhất. Giả thiết mysql server đang chạy tại máy thử nghiệm, có user demo và password là rỗng. Trả lời (các sửa đổi trong MySQL++, ghi rõ tập tin nào, dòng mấy): Các sửa đổi cần thực hiện sao cho khi sử dụng thư viện MySQL++ đã sửa đổi, biết được cổng chuẩn bằng các lệnh sau: Trả lời: Connection conn; int nDefaultPort = conn.GetDefaultPort(); 10/16 [...]... Câu hỏi 34 (1đ) Trong những thông tin dưới đây, chúng ta cần ít nhất thông tin nào để tạo một kết nối CSDL trong một ứng dụng bằng MySQL++ a) host b) database c) username d) password e) không cần bất kỳ thông tin nào Trả lời : 12/ 16 Câu hỏi 35 (1đ) Để cài đặt được MySQL++ , chúng ta cần phải có... : b) (2 ) Nếu muốn sửa đổi giá trị mặc định này thanh 120 giây thì cần thực hiện những sửa đổi nào Ghi rõ tập tin, vị trí, nội dung sửa đổi Trả lời : 13/16 Câu hỏi 38 (2 ) Chương trình thử nghiệm test/testlib.c... loại kiểm tra, ví dụ self-test, lowlevel-test, Vậy nếu không muốn thực hiện self-test thì phải làm thế nào Trả lời : Câu hỏi 39 (7đ) Cho hàm sau : void MySmallHash(BYTE* hashBuffer, int length, BYTE* hashResult) // CRYPT_MAX_HASHSIZE bytes { CRYPT_CONTEXT hashContext; int value; cryptInit(); cryptCreateContext(&hashContext,CRYPT_UNUSED,CRYPT_ALGO_SHA... a) (2 ) Giả sử biến BYTE* sHello trỏ đến chuỗi "Chao mung ban den voi cuoc thi OLP2k6" và biến BYTE sResult[CRYPT_MAX_HASHSIZE] Sau khi gọi MySmallHash(sHello, strlen(sHello), sResult) Giá trị của sResult[6] là bao nhiêu (kiểu số nguyên không dấu)? Trả lời : 14/16 Câu hỏi 40 (5đ) Xét cấu trúc CERT_INFO trong tập tin cert/cert.h,... 15/16 Câu hỏi 43 (1đ) Trong file /misc/config.h, mục đích của các dòng 20 -2 5 (dưới đây) là gì: #if defined( BEOS ) || defined( Câu hỏi ORUS ) || defined( ECOS ) || \ defined( PALMOS )||defined( RTEMS )||defined( SYMBIAN 32 )|| \ defined( TANDEM_NSK ) || defined( TANDEM_OSS ) || \ defined( UNIX ) || defined( WINDOWS ) #define USE_TCP... cert/cert.h, dòng 53 0-6 36 Hãy sửa đổi thư viện CryptLib sao cho mọi certificate được tạo luôn có hiệu lực 15 năm Sửa như thế nào cho đơn giản nhất? Ghi rõ sửa các tập tin nào, dòng nào, nội dung sửa đổi Trả lời : Câu hỏi 41 (2 ) Thuật toán RSA sử... Câu hỏi 36 (2 ) Viết các câu lệnh cho phép tạo một kết nối được mã hoá bằng SSL đến một CSDL với các thông số db=test, host=localhost, user=root, passwd= 123 456 Trả lời : Phần IV : CryptLib Câu hỏi 37 (4đ) a) (2 ) Thời gian timeout mặc định của một session... để tạo số nguyên tố? Trả lời : Câu hỏi 42 (4đ) Muốn thay đổi thuật toán tạo số nguyên tố đang dùng của RSA thành sàng nguyên tố (prime sieve algorithm) thì phải sửa như thế nào cho đơn giản nhất? Ghi rõ các tập tin, dòng sửa đổi, nội dung sửa đổi Trả lời : ... Câu hỏi 31 (2 ) Hãy sử dụng thư viện MySQL++, viết đoạn code để kết nối vào một cơ sở dữ liệu MySQL, select nội dung của một bảng và in nội dung đó ra màn hình Trả lời : 11/16 Câu hỏi 32 (1đ) Trong tệp... phân phối lại thư viện Trả lời : Câu hỏi 45 (1đ) Khi sử dụng thư viện, đoạn code sau làm công việc gì: status = cryptInit(); if( cryptStatusError( status ) ) { printf( "cryptInit() failed with error code %d.\n", status ); exit( EXIT_FAILURE ); } Trả lời : 16/16 . Đề thi Olympic Tin học OLP06 chủ đề Mã nguồn mở (MNM) Phần I : Hiểu biết về MNM Câu hỏi 1 : (2 đ) Copyleft là gì ? Nói Copyleft là loại bỏ bản. : int target : varchar(1 024 ) filename : varchar (25 6) với khoảng 100 triệu bản ghi. Lập trình viên muốn kiểm tra xem tập tin nào đã bị xóa thì báo ra màn hình thông tin về id, target và filename. phương pháp này. Mọi PMNM có phải đều được xây dựng theo mô hình này không ? Trả lời : Câu hỏi 12 : (2 đ) Một phần mềm có thể đồng thời được phân phối theo 2 loại giấp phép là mã nguồn mở

Ngày đăng: 08/08/2014, 07:22

Từ khóa liên quan

Mục lục

  • Phần I : Hiểu biết về MNM

    • Câu hỏi 1 : (2 đ)

    • Câu hỏi 2 : (2 đ)

    • Câu hỏi 3 : (1 đ)

    • Câu hỏi 4 : (1 đ)

    • Câu hỏi 5 : (1 đ)

    • Câu hỏi 6 : (1 đ)

    • Câu hỏi 7 : (1 đ)

    • Câu hỏi 8 : (1 đ)

    • Câu hỏi 9 : (2 đ)

    • Câu hỏi 10 : (3 đ)

    • Câu hỏi 11 : (2 đ)

    • Câu hỏi 12 : (2 đ)

    • Phần II : LibPDF++

      • Câu hỏi 13 (1đ)

      • Câu hỏi 14 (3đ)

      • Câu hỏi 15 (4đ)

      • Câu hỏi 16 (2đ)

      • Câu hỏi 17 (5đ)

      • Câu hỏi 18 (4đ)

      • Câu hỏi 19 (3đ)

      • Câu hỏi 20 (1đ)

Tài liệu cùng người dùng

Tài liệu liên quan