You are on page 1of 7

Câu hỏi

1. Em tự tin về phần nào nhất?


2. Con trỏ là gì, định nghĩa? (tham chiếu tham tri so sánh mảng con trỏ)
3. Tham trị, tham chiếu, khi nào sử dụng tham chiếu (câu khi nào trl chưa đc rõ ràng)
4. Cách truy cập mảng bằng con trỏ khác gì truy cập thông qua tên mảng?
5. Con trỏ hàm là gì, khi nào sử dụng? (hàm callback)
6. Bài tập:
Cho mảng char A[32]=32byte, uint16_t B[16]=32 byte, copy từ A->B và B->A sao cho khi in 2 mảng ra
giống nhau theo hình thức Binary.
Cách làm dùng MACRO chưa tối ưu tốc độ, làm lại bằng cách track mảng bằng con trỏ
khác kiểu ok.

1. Em chắc về phần nào nhất?


2. Trình bày những gì em biết về linked list.
3. Linklist có những ưu nhược điểm nào?
4. Cải thiện tốc độ truy cập linked list như thế nào? Trình bày thuật toán.
5. Trình bày về từ khóa Volatile.

1. Em tự tin về phần nào nhất?


2. Cn trỏ là gì, định nghĩa?
3. Con trỏ hàm là gì, khi nào sử dụng?
4. Cách truy cập mảng bằng con trỏ khác gì truy cập thông qua tên mảng?
5. Bài tập:
Có một vùng nhớ dùng 16 bit để đánh địa chỉ, align 4 byte, 0x0000->0xFFFF.
Trong vùng nhớ này chỉ chứa 2 loại biến của struct_A và struct_B và đã mất dấu.
Làm thế nào để tìm lại được tất cả các biến của struct_A biết A luôn có 1 trường header
có giá trị 0x5A5A. Làm thế nào để thuật toán tối ưu nhất.

1. Trình bày đặc điểm của vùng nhớ?


-Qúa trình stacking unstacking, hoạt động stack khi gọi hàm con
2. Giải thích từ khóa static
+ file A.h có biến static uint8_t x = 10.
+ file B.c include file A.h. Có hàm b() { x=5; printf("%d",x); }
+ file C.c include file A.h. Có hàm c() { printf("%d",x); }
+ file main có hàm main() { b(); c(); }
=> Kết quả in ra là gì. - Nếu bỏ static trong a.h thì kết quả thay đổi ntn
3. Cách tính checksum
4. S7, S8, S9 để làm gì. Ý nghĩa của phần địa chỉ trong S7,S8,S9?
5. So sánh Inline function vs Macro-like function.
6. Trình bày cách đọc file dài.
7. So sánh FAT12,32.
8. Có gán 2 mảng cho nhau được không?
1. . Include file gì? tại sao? Định nghĩa 1 biến bên file .h được ko? tại sao?
2. Trình bày đặc điểm của vùng nhớ?
3. Trình bày quá trình stacking và unstacking
4. Giải thích từ khóa static
+ file A.h có biến TH1: static uint8_t x = 10; TH2: uint8_t x = 10
+ file B.c include file A.h. Có hàm b() { x=5; printf("%d",x); }
+ file C.c include file A.h. Có hàm c() { printf("%d",x); }
+ file main có hàm main() { b(); c(); }
=> Kết quả in ra là gì.
5. Cách tính checksum
6. Ý nghĩa địa chỉ của S7 S8 S9 trong SREC
7. Cách đọc entry . trong FAT32
8. Cách đọc cluster khi index_cluster =0 của FAT32

1. Trình bày đặc điểm của vùng nhớ?


2. Trình bày quá trình stacking và unstacking
3. Giải thích từ khóa static
+ file A.h có biến TH1: static uint8_t x = 10; TH2: uint8_t x = 10;
+ file B.c include file A.h. Có hàm b() { x=5; printf("%d",x); }
+ file C.c include file A.h. Có hàm c() { printf("%d",x); }
+ file main có hàm main() { b(); c(); }
=> Kết quả in ra là gì.
4. Có gán 2 mảng cho nhau được không? Giải thích
5. Cách tính checksum
6. S7, S8, S9 để làm gì. Ý nghĩa của phần địa chỉ trong S7,S8,S9?
7. So sánh Inline function vs Macro-like function.
8. So sánh FAT12,16,32.
9. Cách di chuyển từ thư mục con về thư mục cha.

0. Em chắc phần nào nhất ?


1 .Linked list là gì ?
2. So sánh ưu nhược điểm của linked list với array.
3. Tìm kiếm theo tên 1 người cách nhanh nhất.
4. Với yêu cầu trên nếu ra nhiều kết quả , thực hiện xóa, sửa,copy 1 node rồi mới sửa, chèn 1
cách nhanh nhất (tối ưu về tốc độ, có thể theo phương pháp liên kết đôi, chủ yếu bàn về liên
kết đơn )
5. Bài toán 100 triệu dân số VN, muốn show các thông tin lân cân của 1 mốc
( VD muốn tìm đến mốc 10 triệu dân thì show thông tin lân cận 100.000 người, việc truy suất
này phải nhanh nhất có thể)
*note: tất cả dùng liên kết đơn, trình bày ý tưởng triển khai không cần code

1. Ưu và nhược điểm của macro like function với hàm


2. Điểm khác biệt giữa mảng và linked list
3. Side effect thường gặp ở macro like function?
4. Trình bày giải thuật tìm kiếm theo tên ở linked list tối ưu nhất.
5. Trong trường hợp người dùng chỉ tìm theo tên gọi, có nhiều kết quả thì sau khi tìm và hiện danh
sách tên tìm được, cho phép người dùng chọn 1 trong các tên đó để xem thông tin (tối ưu nhất và
không duyệt lại toàn bộ danh sách),
1. Các vùng nhớ trong RAM.
2. Trình bày quá trình stacking và unstacking (General Purpose Registers).
2. Giải thích từ khóa static (lấy vài ví dụ để kiểm chứng).
3. SREC (cách check, giải thích địa chỉ của S789).
5. So sánh Inline function vs function-like macro. (giống và khác, nên dùng cái nào => tại sao).
6. Trình bày cách đọc long filename.
7. So sánh FAT12/16 vs 32. (phân tích thuật toán khi đọc entries và files).

1. Link list có ưu nhược điểm gì so với mảng


2. Để truy cập nhanh các phần tử trong link list dùng phương pháp gì?
3. Nếu dùng phương pháp Indexing cho link list thì có thể xảy ra trường hợp
list quá lớn vượt quá kích thước của mảng lưu địa chỉ, lúc đó xử lý như thế nào?
4. Nếu list quá lớn mà mảng lưu địa chỉ của các node trong list lại nhỏ
như vậy làm thế nào để cover?
5. Trong phương pháp indexing nếu user chọn xóa một node ở list thì
có nhất thiết phải xóa ngay node đó hay không?

1. Trình bày đặc điểm của vùng nhớ? Cơ chế hoạt động của Stack khi gọi hàm con
2. Giải thích từ khóa static + BT về static.
+ file A.h có biến static uint8_t x = 10.
+ file B.c include file A.h. Có hàm b() { x=5; printf("%d",x); }
+ file C.c include file A.h. Có hàm c() { printf("%d",x); }
+ file main có hàm main() { b(); c(); }
=> Kết quả in ra là gì.
3. Cách tính checksum
4. S7, S8, S9 để làm gì. Ý nghĩa của phần địa chỉ trong S7,S8,S9?
5. So sánh Inline function vs Macro-like function.
6. Trình bày cách đọc file gồm nhiều cluster
7. So sánh FAT12,16,32.

1. Mục đích sử dụng của static


2. Nguyên tắc hoạt động của linked-list
3. Ưu nhược điểm của linked list với array (nêu ưu nhược điểm chứ không phải so sánh)
4. Bản thân list không có index, nhưng anh muốn truy cập list theo kiểu index, nghĩa là khi
user truyền indexvào hàm thì có cách nào truy cập node ở index đấy nhanh hơn không
(tăng tốc độ truy cập) -> phương pháp indexing
-> dùng 1 mảng lưu các con trỏ đến node -> lấy các con trỏ kiểu gì -> 1 vòng for/while là lấy
được toàn bộ con trỏ

1. Trình bày đặc đirểm của vùng nhớ? Cơ chế hoạt động của Stack khi gọi hàm con
2. Giải thích từ khóa static + BT về static.
+ file A.h có biến static uint8_t x = 10.
+ file B.c include file A.h. Có hàm b() { x=5; printf("%d",x); }
+ file C.c include file A.h. Có hàm c() { printf("%d",x); }
+ file main có hàm main() { b(); c(); }
=> Kết quả in ra là gì.
3. Cách tính checksum
4. S7, S8, S9 để làm gì. Ý nghĩa của phần địa chỉ trong S7,S8,S9?
5. So sánh Inline function vs Macro-like function.
6. Trình bày cách đọc file dài.
7. So sánh FAT12,16,32.
8. Cách di chuyển từ thư mục con về thư mục cha.
1. Trình bày đặc đirểm của vùng nhớ? Cơ chế hoạt động của Stack khi gọi hàm con
2. Giải thích từ khóa static + BT về static.
+ file A.h có biến static uint8_t x = 10.
+ file B.c include file A.h.
+ file C.c include file A.h.
+ file main có hàm main()
=> có xảy ra lỗi mutil define không
3. Cách tính checksum
4. S7, S8, S9 để làm gì. Ý nghĩa của phần địa chỉ trong S7,S8,S9?
5. So sánh Inline function vs Macro-like function.
6. Trình bày cách đọc file gồm nhiều cluster
7. So sánh FAT12,16,32.
8. Cách di chuyển từ thư mục con về thư mục cha.
c1:A[0] = 01000001 B=uint16A[0]<<8|A[1] c2:A[0]= (uint8t)(B[0]>>8) a[1] = (uint8)&0x00FF

băm(chia để trị) + indexing


0x0000.0001

You might also like