wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Đề thi kết thúc học phần: Lập trình thiết bị di động

Total questions: 40

Worksheet time: 23mins

Name
Class
Date
1.

Hiện nay có bao nhiêu cách để phát triển ứng dụng cho thiết bị di động? Cách nào là cơ bản nhất mà người phát triển ứng dụng cho thiết bị di động phải học trước tiên?

a)

Có 4 cách để phát triển ứng dụng cho thiết bị di động. Cách phát triển ứng dụng trên nền tảng chéo (Cross platform) là cơ bản nhất.

b)

Có 5 cách để phát triển ứng dụng cho thiết bị di động. Cách phát triển ứng dụng trên nền tảng gốc (Native platform) là cơ bản nhất.

c)

Có 5 cách để phát triển ứng dụng cho thiết bị di động. Cách phát triển ứng dụng kiểu lập trình những là cơ bản nhất.

d)

Có 4 cách để phát triển ứng dụng cho thiết bị di động. Cách phát triển ứng dụng lai (Hybrid Apps) là cơ bản nhất.

2.

Khái niệm trừu tượng (abstraction) trong lập trình gồm những thành phần như:

a)

Những môi trường phát triển phần mềm (SDE).

b)

Là những phần mềm nằm giữa phần cứng và môi trường phát triển ứng dụng như: menu, database, file systems, related runtime libraries, API,…

c)

Máy ảo (Emulator).

d)

Là lớp (class) không thể được dùng để tạo ra các đối tượng như những lớp bình thường khác.

3.

IDE (integrated design environment hay integrated debugging environment) là:

a)

Một hệ điều hành hay một máy ảo (virtual machine) trên đỉnh của phần cứng, nó cho khả năng viết code một lần để phát triển ứng dụng chạy trên nhiều nền tảng.

b)

Một tổng thể (gồm cả phần cứng lẫn phần mềm) mà nó cung cấp toàn bộ các phương tiện để người lập trình máy tính phát triển phần mềm ứng dụng.

c)

Một phần mềm ứng dụng mà nó cung cấp toàn bộ các phương tiện để người lập trình máy tính phát triển phần mềm ứng dụng trên một hoặc nhiều nền tảng.

d)

Một môi trường lập trình hỗ trợ nhiều ngôn ngữ lập trình khác nhau để lập trình phát triển ứng dụng, sau đó biên dịch sang một ngôn ngữ trung gian (bytecode) và ứng dụng chỉ chạy trên một hệ điều hành.

4.

Kiến trúc Thin-Client Wireless Client-Server là:

a)

Kiến trúc mà khi client truyền thông với server, nó có thể thực thi vài việc và server thực hiện các việc khác. Ví vậy không cần kết nối mạng liên tục và ổn định.

b)

Kiến trúc mà ứng dụng được thực hiện bởi server. Vì vậy đôi khi client phải kết nối mạng liên tục và ổn định với server, tương ứng với tập các đặc tính kỹ thuật chung nhỏ nhất của các thiết bị và platform.

c)

Kiến trúc truyền thông theo giao thức TCP/IP.

d)

Kiến trúc truyền thông theo giao thức UDP.

5.

Ứng dụng lai (Hybrid application) là ứng dụng như thế nào?

4 lines
6.

Quá trình phát triển của mạng viễn thông di động trải qua các thế hệ 1G, 2G, 3G, 4G, 5G. Sự chuyển đổi từ chuyển từ kỹ thuật tương tự (analog) sang kỹ thuật số (digital) diễn ra trong thế hệ nào?

a)

2G

b)

3G

c)

4G

d)

Áp dụng kỹ thuật số ngay từ đầu.

7.

Phân biệt mạng Piconet và Scatternet trong kỹ thuật Bluetooth

a)

Scatternet là mạng liên kết các thiết bị cùng cấp, Piconet là mạng liên kết giữa các Scatternet.

b)

Piconet là mạng liên kết các thiết bị cùng cấp, Scatternet là mạng liên kết giữa các Piconet.

c)

Piconet là mạng liên kết các thiết bị cùng loại, Scatternet là mạng liên kết giữa các thiết bị khác loại.

d)

Piconet là mạng liên kết các thiết bị khác loại, Scatternet là mạng liên kết giữa các thiết bị cùng loại.

8.

Điện thoại Android đầu tiên tên gì? Ra mắt năm nào?

a)

T-Mobile G1 – 1, 2007

b)

Nexus – one, 2008

c)

T-Mobile G1 – 1, 2008

d)

HTC One, 2008

9.

Mỗi phiên bản của hệ điều hành Android có 3 tên đại diện là gì? Cho biết các tên này ứng với phiên bản mới nhất hiện nay (tính đến tháng 08/2023)?

a)

3 tên đại diện cho phiên bản là: Release number, Target name và API level. Tương ứng với phiên bản mới nhất hiện nay là Release number = 14, Target name = S và API level = 34.

b)

3 tên đại diện cho phiên bản là: Version number, Target name và API level. Tương ứng với phiên bản mới nhất hiện nay là Version number = 12.0, Target name = S và API = 31.

c)

3 tên đại diện cho phiên bản là: Target, Version name và API level. Tương ứng với phiên bản mới nhất hiện nay là Target = 12L, Release name = Sv2 và API level = 32.

d)

3 tên đại diện cho phiên bản là: Target, Release name và API level. Tương ứng với phiên bản mới nhất hiện nay là Target = 13, Release name = Tiramisu và API level = 33.

10.

Kiến trúc của hệ điều hành Android bao gồm các tầng như sau:

a)

Linux Kernel; Library; Android runtime; Application Framework; Applications.

b)

Linux Kernel; Library; Android runtime; Application Framework; Applications.

c)

Unix Kernel; Library; Android runtime; Applications.

d)

Linux Kernel; Application Framework; Virtual machine; Applications.

11.

Một trong các ưu điểm của nền tảng Android là tính năng mở, tính năng mở có nghĩa là:

a)

Mã nguồn mở.

b)

Không giới hạn cho môi trường phát triển ứng dụng.

c)

Có thể chạy thử phần mềm trực tiếp trên máy thật trong khi lập trình phát triển.

d)

Tất cả các câu trả lời đều đúng.

12.

Trong 6 thành phần của ứng dụng Android có 4 thành phần chính cấu thành ứng dụng là:

a)

Activity, Service, Broadcast Receiver và Content Provider là 4 thành phần chính cấu thành nên ứng dụng Android, cần khai báo trong AndroidManifest.

b)

Activity, Service, Broadcast Receiver và Intent là 4 thành phần chính cấu thành nên ứng dụng Android, cần khai báo trong AndroidManifest.

c)

Activity, Service, Intent và Content Provider là 4 thành phần chính cấu thành nên ứng dụng Android, cần khai báo trong AndroidManifest.

d)

Activity, Intent, Broadcast Receiver và Content Provider là 4 thành phần chính cấu thành nên ứng dụng Android, cần khai báo trong AndroidManifest.

13.

Activity là thành phần trong một ứng dụng Android:

a)

Trong mỗi ứng dụng đều phải có Activity.

b)

Mỗi Activity tương ứng với một giao diện người dùng.

c)

Một ứng dụng có thể có một hoặc nhiều Activity.

d)

Tất cả các câu trả lời đúng.

14.

Khi mới project mới ta cần khai báo chọn bao nhiêu phiên bản, những phiên bản nào? Tại sao?

a)

Cần khai báo 3 phiên bản: 1 để biên dịch (mới nhất, mặc định), 1 phiên bản cũ nhất có thể chạy được ứng dụng và 1 phiên bản trung gian để chạy thử ứng dụng.

b)

Cần khai báo từ 3 phiên bản trở lên: 1 để biên dịch (mới nhất), 1 phiên bản cũ nhất có thể chạy được ứng dụng và các phiên bản trung gian để chạy thử ứng dụng bằng máy ảo.

c)

Cần khai báo 2 phiên bản: 1 để biên dịch (mới nhất, mặc định), 1 phiên bản cũ nhất có thể chạy được ứng dụng.

d)

Cần khai báo 1 phiên bản mới nhất (mặc định).

15.

Explicit Intents là:

a)

Intent được chỉ xác định hành động cần thực hiện khi không chỉ định thành phần cần gọi để xử lý.

b)

Intent cần khai báo rõ các thuộc tính action, data.

c)

Intent thường được sử dụng để khởi chạy các ứng dụng đã được cài đặt trên thiết bị.

d)

Intent đã được xác định thuộc tính component, nghĩa là đã chỉ rõ thành phần sẽ nhận và xử lý.

16.

Lập trình giao diện người dùng mức cao là:

a)

Cách tạo giao diện người dùng tuỳ biến bằng các đối tượng do người lập trình tạo ra.

b)

Cách lập trình xây dựng giao diện người dùng sử dụng các kiểu giao diện được định nghĩa (Layout) và các đối tượng có sẵn (View) trong Android SDK.

c)

Cách lập trình sử dụng công cụ kéo thả trong Android Studio.

d)

Cách lập trình viết các viết code mà không dùng công cụ kéo thả trong Android Studio.

17.

Khi sử dụng LinearLayout cần phải khai báo thêm thuộc tính gì?

a)

Thuộc tính android:orientation.

b)

Thuộc tính android:layout_gravity.

c)

Không bắt buộc khai báo thêm.

d)

Thuộc tính android:layout_width và android:layout_height.

18.

Trong Android, để Activity (giả sử viết bằng ngôn ngữ Java) hiển thị một giao diện ta sử dụng phương thức và câu lệnh như sau (Giả sử “giaodien” là tên giao diện được chọn để hiển thị):

a)

setLayoutView(R.layout.giaodien);

b)

setIntentView(R.layout.giaodien);

c)

setContentView(R.layout.giaodien);

d)

setContentLayout(R.layout.giaodien);

19.

Để sử dụng đối tượng ImageView và phải lưu tên tập tin của ảnh muốn hiển thị vào đâu và câu lệnh bắt buộc (không mặc định) trong mã nguồn xml là gì?

a)

Lưu ảnh vào thư mục res/drawable và câu lệnh xml bắt buộc phải khai báo là android:src="@drawable/’tên tập tin ảnh’".

b)

Lưu ảnh vào thư mục res/layout và câu lệnh xml bắt buộc phải khai báo là android:contentDescription="@drawable/’tên tập tin ảnh’".

c)

Lưu ảnh vào thư mục res/mipmap và câu lệnh xml bắt buộc phải khai báo là android:src="@drawable/’tên tập tin ảnh’".

20.

Cách ánh xạ một View trong tập tin Layout.xml vào mã nguồn Java của Activity tương ứng?

a)

Dùng phương thức setContentView(R.id.tên định danh của View); Ví dụ: Trong Layout.xml : android:id="@+id/edittext" Trong Java Activity: EditText edit=(EditText)setContentView (R.layout.edittext);

b)

Dùng phương thức findViewById(R.id.tên định danh của View); Ví dụ: Trong Layout.xml : android:id="@+id/edittext" Trong Java Activity: EditText edit=findViewById(R.id.edittext);

c)

Dùng phương thức getViewById(R.layout.layout.tên định danh của View); Ví dụ: Trong Layout.xml : android:id="@+id/edittext" Trong Java Activity: EditText edit=getViewById(R.layout.edittext);

d)

Tất cả A, B và C đều sai.

21.

Bảng cách gom nhóm các RadioButton vào một RadioGroup cho phép:

a)

Có thể check nhiều RadioButton trong cùng một nhóm.

b)

Chỉ được check chọn một RadioButton trong cùng một nhóm.

c)

Khi check một RadioButton thì tất cả các RadioButton trong cùng nhóm đều được check.

d)

Tùy thuộc vào giá trị của thuộc tính check được khai báo trong tập tin layout mà các RadioButton có thể bị hạn chế chỉ check chọn một RadioButton trong cùng một nhóm hay có thể check chọn cùng lúc nhiều RadioButton trong cùng một nhóm.

22.

Người lập trình phát triển ứng dụng có thể kết hợp giao diện mức cao và mức thấp bằng cách nào?

a)

Trong giao diện mức cao ta có thể lồng vào giao diện mức thấp.

b)

Trong giao diện mức thấp ta có thể lồng vào giao diện mức cao.

c)

Từ Activity có giao diện mức thấp gọi gọi Activity có giao diện mức cao hoặc ngược lại.

d)

Tất cả các câu trả lời đều đúng.

23.

Các bước lập trình xử lý tương tác của người dùng lên các View như sau:

a)

Khai báo View trong Layout → Ánh xạ View này vào Activity tương ứng bằng phương thức findViewById(R.id.) → Sử dụng phương thức setOnClickListener() kết hợp với onClick().

b)

Khai báo View trong Layout → Tạo phương thức xử lý tương tác của người dùng trong Activity tương ứng, giả sử phương thức tương tác này được đặt tên là “ptTuongtac(View view)” → Khai báo thuộc tính onClick cho View trong tập tin Layout như sau: android:onClick=”ptTuongtac”.

c)

Các câu trả lời A và B đều đúng.

d)

Câu trả lời A đúng và câu trả lời B sai.

24.

Menu rất hữu ích để hiển thị tùy chọn bổ sung mà không trực tiếp nhìn thấy trên giao diện của một Activity. Trong đó, Context Menu có chức năng và đặc điểm là:

a)

Hiển thị những thông tin liên quan đến Activity hiện tại. Menu này thường nằm ở góc phải phía trên của giao diện. Để kích hoạt menu này chỉ cần nhấn vào biểu tượng của nó.

b)

Hiển thị những thông tin liên quan đến một đối tượng View cụ thể, để kích hoạt menu này người dùng cần nhấn và giữ đối tượng View mà nó liên kết.

c)

Hiển thị những thông tin liên quan đến một đối tượng View cụ thể, để kích hoạt menu này người dùng chỉ cần nhấn vào đối tượng View mà nó liên kết.

d)

Hiển thị những thông tin liên quan đến ứng dụng. Menu này thường nằm ở góc phải phía trên của giao diện của tất cả Activity của ứng dụng. Để kích hoạt menu này chỉ cần nhấn vào biểu tượng của nó.

25.

Các bước để thực hiện một Intent ngầm (Implicit Intent) gồm:

a)

Bước 1: Định nghĩa dữ liệu kèm theo dưới dạng Uri; Bước 2: Khai báo một Intent với 1 Action cụ thể và Uri đã định nghĩa; Bước 3: Gọi hàm startActivity() hoặc startActivityForResult () để khởi động Intent.

b)

Bước 1: Khai báo một Intent với 1 Action cụ thể; Bước 2: Gọi hàm startActivity() hoặc startActivityForResult () để khởi động Intent; Bước 3: Khai báo View cần thiết để thể hiện đáp ứng.

c)

Bước 1: Khai báo View cần thiết để thể hiện đáp ứng; Bước 2: Khai báo một Intent với 1 Action cụ thể; Bước 3: Gọi hàm startActivity() hoặc startActivityForResult () để khởi động Intent.

d)

Bước 1: Khai báo một Intent với 1 Action cụ thể; Bước 2: Định nghĩa dữ liệu kèm theo dưới dạng Bundle; Bước 3: Gọi hàm startActivity() hoặc startActivityForResult () để khởi động Intent.

26.

Trong thiết bị di động, bộ nhớ trong và bộ nhớ ngoài được phân biệt như sau:

a)

Bộ nhớ trong là bộ nhớ RAM, bộ nhớ ngoài là bộ nhớ ROM.

b)

Bộ nhớ trong là bộ nhớ được gắn sẵn trong thiết bị, bộ nhớ ngoài là SDCard.

c)

Bộ nhớ trong gồm RAM và bộ nhớ được gắn sẵn trong thiết bị, bộ nhớ ngoài là SDCard.

d)

Bộ nhớ trong chỉ được dùng để lưu dữ liệu riêng của mỗi ứng dụng, bộ nhớ ngoài dùng để lưu dữ liệu dùng chung (thường là SDCard, nhưng cũng có thể là bộ nhớ được gắn sẵn).

27.

Đối tượng Preferences thường dùng để lưu trữ, điều chỉnh và phục hồi nội dung gì?

a)

Tập các tính năng của ứng dụng được người dùng tuỳ chọn.

b)

Các thiết lập của người dùng trong một ứng dụng.

c)

Tập các hoạt động của ứng dụng được người dùng tuỳ chọn.

d)

Tất cả A, B, C đều đúng.

28.

Các đối tượng được dùng để xây dựng thiết lập trong Android gồm:

a)

ListboxPreference; ViewPreference; FramePreference.

b)

CheckBoxPreference; ListPreference; EdittextPreference.

c)

PreferenceFragment; PreferenceActivity.

d)

Tất cả A, B và C đều sai.

29.

Tạo bảng: tên là Lop_CT724, gồm 7 cột: ID, MSSV, Họ_Tên, Email, Diem_KT, Diem_Thi, Diem_TH. Hãy viết chuỗi tạo bảng.

a)

String CreatetbSchool="create table Lop_CT724 (+'id integer primary key autoincrement', +'MSSV' text, +'Ho_Ten' text, +'Email' text, +'Diem_KT' float, +'Diem_Thi' float, +'Diem_TH' float)";

b)

String CreatetbSchool="create table Lop_CT724 ("+"id integer primary key autoincrement,"+"MSSV text,"+"Ho_Ten text,"+"Email text,"+"Diem_KT float, +"+"Diem_Thi float, +"+"Diem_TH float)";

c)

String CreatetbSchool="table Lop_CT724 ("+"id integer key autoincrement,"+"MSSV text,"+"Ho_Ten text,"+"Email text,"+"Diem_KT float,"+"Diem_Thi float,"+"Diem_TH float)";

d)

Các câu khác với câu này đều sai.

30.

Để thao tác với cơ sở dữ liệu SQLite trên Android ta sử dụng các đối tượng nào?

a)

SQLiteOpenController và SQLiteDatabase.

b)

SQLiteOpenHelper và SQLiteDatabase.

c)

SQLiteData và SQLiteOpenManager.

d)

SQLiteOpenHelper và SQLiteDataContent.

31.

Trong Android có nhiều Content Provider hữu dụng được dựng sẵn như CallLog, Contacts, MediaStore, Settings. Để truy vấn một Content Provider, chẳng hạn như lấy tất cả các contacts từ một Contacts content provider, chúng ta khai báo URI như sau:

a)

contentprovider://contacts/people

b)

provider://contacts/people

c)

content://contacts/people

d)

provider://content/contacts/people

32.

Để xóa bảng trong cơ sở dữ liệu SQLite, giả sử có tên là db, ta áp dụng phương thức:

a)

db.deleteDatabase()

b)

db.execSQL("Chuỗi xóa bảng")

c)

db.delete("Tên bảng")

d)

db.deleteTable()

33.

Để tạo ra một đối tượng con trỏ dùng để đọc tin nhắn trong thư mục inbox ta dùng phương thức nào? Cú pháp?

a)

Dùng phương thức getSmsContent và phương thức query, với cú pháp như sau: Cursor c = getSmsContent().query(SMS_INBOX, null, null, null, null);

b)

Dùng phương thức getContent và phương thức query, với cú pháp như sau: Cursor c = getContent().query(SMS_INBOX, null, null, null, null);

c)

Dùng phương thức getContent và phương thức getquery, với cú pháp như sau: Cursor c = getContent().getquery(SMS_INBOX, null, null, null, null);

d)

Dùng phương thức getContentResolver và phương thức query, với cú pháp như sau: Cursor c = getContentResolver().query(SMS_INBOX, null, null, null, null);

34.

Vậy GET trong giao thức HTTP có đặc điểm gì?

a)

Yêu cầu thông tin - dữ liệu được chuyển đi như là một phần của URL, được dùng để lấy dữ liệu từ server và đây là phương thức mặc định.

b)

Yêu cầu thông tin - dữ liệu được chuyển đi trong luồng riêng biệt, dùng để gửi dữ liệu đến server.

c)

Yêu cầu thông tin - dữ liệu được chuyển đi như là một phần riêng biệt gồm URL và dữ liệu trong một luồng, dùng để gửi yêu cầu đến server và nhận dữ liệu từ server.

35.

Để có thể thực hiện các cuộc giao tiếp, một trong hai quá trình phải công bố số hiệu cổng của socket mà mình sử dụng. Ngoài số hiệu cổng, hai bên giao tiếp còn phải biết địa chỉ IP của nhau. Cho biết vai trò của số hiệu cổng và địa chỉ IP.

a)

Số hiệu cổng và IP là một cặp để xác định server hoặc client.

b)

Địa chỉ IP giúp phân biệt các thiết bị trên mạng TCP/IP. Trong khi số hiệu cổng dùng để phân biệt các quá trình khác nhau trên cùng một máy tính.

c)

Cổng để xác định đường truyền, địa chỉ IP để xác định thiết bị trên mạng TCP/IP.

d)

Số hiệu cổng và địa chỉ IP đều bắt buộc khai báo trong mọi trường hợp cho cả client và server.

36.

Hoạt động mạng là yêu cầu cơ bản và đã được thiết kế sẵn cho hầu hết các thiết bị di động. Như vậy, trong trường hợp nào người lập trình phát triển ứng dụng di động cần phải lập trình kết nối mạng cho thiết bị di động?

a)

Khi xây dựng một ứng dụng có các chức năng cần phải kết nối mạng, người phát triển phần mềm cần lập trình mạng cho ứng dụng của mình.

b)

Nguyên tắc chung cho các ứng dụng di động là phải có kết nối mạng, nên người lập trình phát triển ứng dụng di động luôn phải thực hiện nội dung này trong các ứng dụng của mình.

c)

Vì các hoạt động mạng đã được thiết kế sẵn trên tất cả các thiết bị di động, nên người lập trình ứng dụng di động không cần lập trình kết nối mạng.

37.

Các bước lập trình để kiểm tra tình trạng kết nối mạng:

a)

Bước 1. Tạo ra đối tượng quản lý kết nối với lớp ConnectivityActive với câu lệnh ConnectivitySystem qlkn = (ConnectivitySytem)getSystem(Context.CONNECTIVITY_NETWOR; Bước 2. Khai báo đối tượng chứa thông tin kết nối với câu lệnh: NetInfo tkn = qlkn.getActiveNetworkInfo(); Bước 3. Lập trình hiển thị thông tin kết nối như sau: Nếu tkn == null thì báo “Mạng mặc định không hoạt động”, nếu tkn==(!networkInfo.isAvailable()) thì báo “Không có mạng”, nếu không xảy ra các trường hợp trên thì báo “Mạng tốt”.

b)

Bước 1. Tạo ra đối tượng quản lý kết nối với lớp ConnectivityActive với câu lệnh ConnectivityNetwork qlkn = (ConnectivityNetwork)getService(Context.CONNECTIVITY_NETWOR; Bước 2. Khai báo đối tượng chứa thông tin kết nối với câu lệnh: NetworkInfo tkn = qlkn.getActiveNetworkInfo(); Bước 3. Lập trình hiển thị thông tin kết nối như sau: Nếu tkn == null thì báo “Hiện không có mạng mặc định nào đang hoạt động”, nếu tkn==(!networkInfo.isConnected()) thì báo “Mạng không được kết nối”, nếu tkn==(!networkInfo.isAvailable()) thì báo “Không có mạng”, nếu không xảy ra các trường hợp trên thì báo “Mạng tốt”.

c)

Bước 1. Tạo ra đối tượng quản lý kết nối với lớp ConnectivityActive với câu lệnh ConnectivityActive qlkn = (ConnectivityActive)getSystemService(Context.CONNECTIVITY_NETWOR; Bước 2. Khai báo đối tượng chứa thông tin kết nối với câu lệnh: NetworkInfo tkn = qlkn.getActiveNetworkInfo(); Bước 3. Lập trình hiển thị thông tin kết nối như sau: Nếu tkn == null thì báo “Hiện không có mạng mặc định nào đang hoạt động”, nếu tkn==(!networkInfo.isConnected()) thì báo “Mạng không được kết nối”, nếu tkn==(!networkInfo.isAvailable()) thì báo “Không có mạng”, nếu không xảy ra các trường hợp trên thì báo “Mạng tốt”.

d)

Tất cả A, B và C đều sai.

38.

Lớp nào được sử dụng để mở 1 kết nối http với URL từ xa? Cú pháp?

a)

Có thể dùng lớp HttpConnection và hàm getConnection(), cú pháp: URL url = new URL(urlString); HttpConnection conn = url.getConnection();

b)

Có thể dùng lớp URLConnection và hàm openConnection(), cú pháp: URL url = new URL(urlString); URLConnection conn = url.openConnection();

c)

Có thể dùng lớp ConnectionUrl và hàm urlConnection(), cú pháp: URL url = new URL(urlString); ConnectionUrl conn = url.urlConnection();

d)

Tất cả A, B và C đều sai.

39.

Cấu trúc ngôn ngữ JSON?

a)

Thông điệp JSON được chia thành các đối tượng (JSONObject). Mỗi đối tượng được bắt đầu và kết thúc bằng một cặp ngoặc quấn ({}). Các thông tin trong một đối tượng bao gồm tập hợp các cặp khóa/giá trị (Key/Value).

b)

Thông điệp JSON được chia thành các dãy (JSONArray). Mỗi dãy được bắt đầu và kết thúc bởi cặp ngoặc vuông ([]). Các thông tin trong một dãy đối tượng bao gồm tập hợp các cặp khóa/giá trị (Key/Value).

40.

Để lập trình phát triển ứng dụng trên nền tảng gốc iOS, người lập trình gặp khó khăn gì?

a)

Ngôn ngữ lập trình được đánh giá là phức tạp.

b)

Tốn chi phí để đăng tuyển vào chương trình người phát triển iOS (tải SDK, cài đặt môi trường phát triển, kiểm thử trên thiết bị thật, đưa lên App Store).

c)

Môi trường phát triển ứng dụng iOS chỉ có thể cài đặt trên máy tính chạy hệ điều hành Mac OS, (Macintosh, Hackintosh), version 10.6.8 trở lên.

d)

Tất cả A, B và C đều đúng.