Câu hỏi phỏng vấn Net core
Câu hỏi

Quá trình biên dịch ngầm (implicit ...

Câu trả lời

Quá trình biên dịch ngầm trong lập trình Java, ví dụ, là khi biên dịch một lớp (class) đơn lẻ như Foo.java, trình biên dịch sẽ tự động biên dịch các phụ thuộc của lớp đó mà không cần phải chỉ định rõ ràng. Điều này có thể được kiểm soát thông qua tham số -implicit khi sử dụng lệnh javac. Tham số này có các tùy chọn: -implicit:{class,none}, trong đó class sẽ tự động tạo ra các tệp lớp cho các tệp nguồn được nạp một cách ngầm, còn none sẽ ngăn chặn việc tạo ra các tệp lớp. Nếu không chỉ định tùy chọn này, mặc định sẽ là tự động tạo ra các tệp lớp và trình biên dịch sẽ cảnh báo nếu có bất kỳ tệp lớp nào được tạo ra trong quá trình xử lý chú thích (annotation processing)[1].

Trong ngôn ngữ lập trình C, quá trình biên dịch là quá trình chuyển đổi mã nguồn thành mã đối tượng (object code) bằng cách sử dụng trình biên dịch (compiler). Trình biên dịch kiểm tra mã nguồn để tìm lỗi cú pháp hoặc cấu trúc, và nếu mã nguồn không có lỗi, nó sẽ tạo ra mã đối tượng. Quá trình biên dịch trong C có thể được chia thành bốn bước: tiền xử lý (pre-processing), biên dịch (compiling), lắp ráp (assembling), và liên kết (linking)[2].

Trong .NET, quá trình biên dịch ngầm là một quá trình hai bước. Bước đầu tiên là chuyển đổi mã nguồn thành ngôn ngữ trung gian (Intermediate Language - IL) bởi trình biên dịch cụ thể cho ngôn ngữ đó. Bước thứ hai là chuyển đổi IL thành các chỉ thị máy tính. Điểm khác biệt chính so với trình biên dịch rõ ràng (explicit compilers) là chỉ có các đoạn mã IL được thực thi mới được biên dịch thành mã máy tại thời điểm chạy (runtime). Trong .NET, trình biên dịch này được gọi là JIT (Just-In-Time) compiler. JIT compiler là một phần của Common Language Runtime (CLR), quản lý ...

senior

senior

Gợi ý câu hỏi phỏng vấn

entry

BoxingUnboxing là gì ?

middle

Giải thích sự khác biệt giữa Managed code và Unmanaged code trong .NET?

expert

Sự khác biệt giữa mô hình bất đồng bộ của Node.js và async/await trong .NET là gì?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào