Bộ câu hỏi phỏng vấn .Net Core phần 1

.NET Standard là gì?


.NET Standard là một đặc tả chính thức của các .NET APIs với mục đích có sẵn trên tất cả các triển khai .NET.

.NET Core là gì?


Nền tảng .NET Core là một .NET stack mới được tối ưu hóa để phát triển mã nguồn mở và phân phối nhanh trên NuGet.

  • .NET Core có hai thành phần chính. Nó bao gồm một runtime nhỏ được xây dựng từ cùng một cơ sở mã như .NET Framework CLR. .NET Core runtime bao gồm cùng một GC và JIT (RyuJIT), nhưng không bao gồm các tính năng như Application Domains hoặc Code Access Security. Runtime này được phân phối qua NuGet, như một phần của ASP.NET Core package.
  • .NET Core cũng bao gồm các class libraries cơ sở. Các libraries này phần lớn là các mã giống như các .NET Framework class libraries, nhưng đã được tính theo yếu tố (loại bỏ các dependencies) để cho phép gửi một bộ libraries nhỏ hơn. Các libraries này được vận chuyển dưới dạng các System.\* NuGet packages trên NuGet.org.

.NET Framework là gì?


.NET là một Framework, là một tập hợp các lớp thư viện có thể tái sử dụng do Microsoft cung cấp để sử dụng trong các ứng dụng .NET khác và để phát triển, xây dựng và triển khai nhiều loại ứng dụng trên nền tảng Windows bao gồm:

  • Console Applications
  • Windows Forms Applications
  • Windows Presentation Foundation (WPF) Applications
  • Web Applications
  • Web Services
  • Windows Services
  • Services-oriented applications sử dụng Windows Communications Foundation (WCF)
  • Workflow-enabled applications sử dụng Windows Workflow
  • Foundation (WF)

Sự khác biệt giữa String và string trong C# là gì?


string là một bí danh (alias) trong C# cho System.String. Vì vậy, về mặt kỹ thuật, không có sự khác biệt. Nó giống như int so với System.Int32.

Theo nguyên tắc, thường nên sử dụng string bất cứ khi nào bạn đề cập đến một đối tượng.

string place = "world";

Tương tự như vậy, thường nên sử dụng String nếu bạn cần tham chiếu cụ thể đến lớp.

string greet = String.Format("Hello {0}!", place);

Kể tên một số CLR services?


  • Assembly Resolver
  • Assembly Loader
  • Type Checker
  • COM marshalled
  • Debug Manager
  • Thread Support
  • IL to Native compiler
  • Exception Manager
  • Garbage Collector

.NET application domain là gì?


Nó là một layer biệt lập được cung cấp bởi .NET runtime. Như vậy, các app domains tồn tại cùng trong một process (một process có thể có nhiều app domains) và có không gian địa chỉ ảo của riêng chúng.

App domains hữu ích là vì:

  • Chúng ít tốn kém hơn các process đầy đủ.
  • Chúng là đa luồng.
  • Bạn có thể stop một cái mà không cần phải kill tất cả trong process đó.
  • Phân tách resources/config...
  • Mỗi app domain chạy ở cấp độ bảo mật riêng.

Kể ra các đặc tính của .NET Core?


  • Triển khai linh hoạt: Có thể đưa vào ứng dụng của bạn hoặc được cài đặt song song với user hoặc toàn bộ máy.
  • Đa nền tảng: Chạy trên Windows, macOS và Linux; có thể được chuyển sang hệ điều hành khác. Các hệ điều hành (OS), CPU và Application scenarios được hỗ trợ sẽ phát triển theo thời gian, được cung cấp bởi Microsoft, các công ty và cá nhân khác.
  • Công cụ Command-line: Tất cả các Product scenarios có thể được thực hiện tại command-line.
  • Tính tương thích: .NET Core tương thích với .NET Framework, Xamarin và Mono, thông qua .NET` Standard Library.
  • Mã nguồn mở: nền tảng .NET Core là mã nguồn mở, sử dụng giấy phép MIT và Apache 2. Tài liệu được cấp phép theo CC-BY. .NET Core là một dự án .NET Foundation.
  • Được hỗ trợ bởi Microsoft: .NET Core được Microsoft hỗ trợ, theo .NET Core Support.

.NET Standard là gì?


  • .NET Standard giải quyết vấn đề về chia sẻ mã của các nhà phát triển .NET trên tất cả các nền tảng bằng cách cung cấp tất cả các API mà bạn mong đợi và yêu thích trên các môi trường mà bạn cần: Desktop applications, Mobile apps & Games, và Cloud services.
  • .NET Standard là một tập hợp các API mà tất cả các nền tảng .NET phải triển khai. Điều này hợp nhất các nền tảng .NET và ngăn chặn sự phân mảnh trong tương lai.
  • .NET Standard 2.0 sẽ được thực thi bởi .NET Framework, .NET Core và Xamarin. Đối với .NET Core, điều này sẽ thêm nhiều API hiện có mà được yêu cầu.
  • .NET Standard 2.0 bao gồm một miếng đệm tương thích cho các .NET Framework binaries, làm tăng đáng kể bộ thư viện mà bạn có thể tham khảo từ các thư viện .NET Standard của mình.
  • .NET Standard sẽ thay thế các Portable Class Libraries (PCLs) làm công cụ để xây dựng các thư viện .NET đa nền tảng.

image

CLR là gì?


CLR là viết tắt của Common Language Runtime và nó là một Execution Environment. Nó hoạt động như một layer giữa Operating Systems và các ứng dụng được viết bằng ngôn ngữ .NET tuân theo Common Language Specification (CLS).

Chức năng chính của Common Language Runtime (CLR) là chuyển đổi Managed Code thành native code, sau đó thực thi chương trình.

Sự khác biệt giữa SDK và Runtime trong .NET Core là gì?


SDK là tất cả những thứ cần thiết / giúp phát triển ứng dụng .NET Core dễ dàng hơn, chẳng hạn như CLI và trình biên dịch (compiler). Runtime là "máy ảo" lưu trữ / chạy ứng dụng và trừu tượng hóa tất cả các tương tác với hệ điều hành cơ sở.

MSIL là gì?


  • Khi chúng ta biên dịch mã .NET thì nó không được chuyển đổi trực tiếp thành native/binary code.
  • Đầu tiên nó được chuyển đổi thành mã trung gian được gọi là mã MSIL, sau đó được diễn giải bởi CLR.
  • MSIL độc lập với phần cứng và hệ điều hành.
  • Có thể có các mối quan hệ giữa các ngôn ngữ vì MSIL giống nhau đối với tất cả các ngôn ngữ .NET. MSIL tiếp tục được chuyển đổi thành native code.

Sự khác biệt giữa decimal, float và double trong .NET là gì?


Độ chính xác là điểm khác biệt chính.

  • Float: 7 digits (32 bit)
  • Double: 15-16 digits (64 bit)
  • Decimal: 28-29 significant digits (128 bit)

Các trường hợp sử dụng chúng là:

  • Đối với các giá trị là "số thập phân chính xác tự nhiên", bạn nên sử dụng decimal. Điều này thường phù hợp với bất kỳ khái niệm nào do con người phát minh ra: giá trị tài chính là ví dụ rõ ràng nhất, nhưng cũng có những giá trị khác. Ví dụ, hãy xem xét số điểm dành cho thợ lặn hoặc người trượt băng.
  • Đối với các giá trị là đồ tạo tác của tự nhiên mà không thể thực sự đo lường chính xác được, float / double là phù hợp hơn. Ví dụ, dữ liệu khoa học thường được biểu diễn dưới dạng này. Ở đây, các giá trị ban đầu sẽ không "chính xác theo số thập phân", vì vậy, việc duy trì "độ chính xác thập phân" không quan trọng đối với các kết quả mong đợi. Các loại Floating binary hoạt động nhanh hơn nhiều so với decimal.

Sự khác biệt giữa .NET Core và Mono là gì?


Nói một cách đơn giản:

  • Mono là bên thứ ba triển khai .Net Framework cho Linux/Android/iOS.
  • .Net Core là phần triển khai riêng của Microsoft.
Avatar Techmely Team
VIẾT BỞI

Techmely Team