câu hỏi phỏng vấn net
4. CAN YOU EXPLAIN THE PAGE LIFE CYCLY OF MVC? -> 5) What are the advantages of MVC over ASP.NET? →Provides a clean separation of concerns among UI (Presentation layer), model (Transfer objects/Domain Objects/Entities) and Business Logic (Controller). →Easy to UNIT Test. →Improved reusability of model and views.
2. 5 câu hỏi nhà tuyển dụng không hề bỏ lỡ khi phỏng vấn ban đối ngoại. 2.1. Anh / Chị hãy trình làng qua về bản thân. Bất kỳ cuộc phỏng vấn nào thì ra mắt về bản thân chính là câu cửa miệng của nhà tuyển dụng. Đây chính là thời cơ ăn được điểm dễ nhất mà
Sau buổi trao đổi, nhà tuyển dụng thường sẽ đặt câu hỏi phỏng vấn mở như “ Bạn có câu hỏi nào cho chúng tôi không?”. Lúc này, nếu bạn trả lời là “không” chắc chắn buổi phỏng vấn sẽ kết thúc và rất khó có cơ hội làm việc tại công ty. Bởi đây là câu trả
5 câu hỏi phỏng vấn .Net và cách trả lời trúng đích - Trợ Giúp Việc Làm. Cộng tác với một nhóm để phát triển các ứng dụng web và di động. Dịch bảng phân cảnh ứng dụng thành các ứng dụng chức năng. Tích hợp các giải pháp lưu trữ dữ liệu. Đảm bảo hiệu suất cao
I. Vai trò của câu hỏi tình huống khi phỏng vấn. Câu hỏi tình huống là dạng câu hỏi mà các nhà tuyển dụng sẽ đưa ra các tình huống giả thuyết nhằm tập trung vào cách ứng viên xử lý các tình huống thực tế mà họ có thể gặp ở nơi làm việc và cách họ xử lý các
Wo Kann Ich Einen Reichen Mann Kennenlernen. {{ {{ {{GetQuestionLevelTxt {{FormatNumbertoThousand lượt xem {{ {{ {{GetQuestionLevelTxt {{FormatNumbertoThousand lượt xem {{ {{ {{GetQuestionLevelTxt {{FormatNumbertoThousand lượt xem
51 câu hỏi phỏng vấn .NET Core 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. 2. .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 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 3. .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 4. Sự khác biệt giữa String và string trong C là gì? string là một bí danh alias trong C cho 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 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 = {0}!", place; 5. 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 6. .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. 7. 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. 8. .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 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 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. 9. 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. 10. 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ở. 11. 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. 12. 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. 13. 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. 14. CTS là gì? Common Type System CTS chuẩn hóa các kiểu dữ liệu của tất cả các ngôn ngữ lập trình sử dụng .NET dưới sự bảo trợ của .NET thành kiểu dữ liệu chung để giao tiếp dễ dàng và mượt mà giữa các ngôn ngữ .NET này. CTS được thiết kế như một hệ thống phân cấp đối tượng gốc duy nhất với là kiểu cơ sở mà từ đó tất cả các kiểu khác được bắt nguồn từ đó. CTS hỗ trợ hai loại kiểu khác nhau Value Types Chứa các giá trị cần được lưu trữ trực tiếp trên stack hoặc được cấp phát nội tuyến trong một structure. Chúng có thể được tích hợp sẵn các kiểu Standard primitive, do người dùng xác định được xác định trong source code hoặc kiểu enumerations tập hợp các giá trị được liệt kê được biểu thị bằng labels nhưng được lưu trữ dưới dạng kiểu số. Reference Types Lưu trữ một tham chiếu đến địa chỉ bộ nhớ của giá trị và được cấp phát trên heap. Các reference types có thể bất kỳ là pointer types, interface types hoặc self-describing types các arrays và kiểu class chẳng hạn như class do người dùng định nghĩa, boxed value types và delegates. 15. Một unmanaged resource là gì? Nếu bạn tìm thấy nó trong Microsoft .NET Framework đó là managed. Nếu bạn tự tìm kiếm nó quanh MSDN, đó là unmanaged. Bất kỳ thứ gì ở ngoài mọi thứ tuyệt vời của .NET Framework mà bạn dùng lệnh gọi P/Invoke để sử dụng đều là unmanaged – và bạn phải chịu trách nhiệm dọn dẹp nó. 16. Giải thích hai loại triển khai deployment cho các ứng dụng .NET Core? Framework-dependent deployment FDD – nó dựa vào phiên bản được chia sẻ trên toàn hệ thống của .NET Core trên hệ thống đích. Ứng dụng chỉ chứa mã của riêng nó và bất kỳ third-party dependencies bên ngoài các thư viện .NET Core. FDD chứa các tệp .dll có thể được khởi chạy bằng cách sử dụng tiện ích dotnet từ command line. dotnet Self-contained deployment – không như FDD, self-contained deployment SCD không dựa vào các thành phần được chia sẻ trên hệ thống đích. Tất cả các thành phần, bao gồm cả các thư viện .NET Core và .NET Core runtime, đều được bao gồm trong ứng dụng và độc lập với các ứng dụng .NET Core khác. SCD bao gồm tệp thực thi chẳng hạn như trên nền tảng Windows, là phiên bản được đổi tên của máy chủ .NET Core dành riêng cho nền tảng, và tệp .dll chẳng hạn như là ứng dụng thực tế. 17. NuGet packages và là gì? Tệp không nào nữa. Tất cả packages hiện nay sẽ được quản lý trong tệp .csproj. Tệp .csproj đã được dọn dẹp và nó cũng đóng vai trò của hoặc trong Nodejs. Đó là nơi các packages và versions của bạn được lưu trữ. NuGet packages là đơn vị tham chiếu và chúng có thể phụ thuộc vào các NuGet packages khác, nhưng chúng cũng có thể phụ thuộc vào các projects. Và như trước đây, các projects cũng có thể phụ thuộc vào các NuGet packages và projects khác. Điều đó có nghĩa là các projects và NuGet packages có thể hoán đổi cho nhau. Với .NET Core, bạn có thể dễ dàng biến các dự án của mình thành các NuGet packages chỉ bằng một cú click bên trong các properties. 18. Trình biên dịch JIT là gì? Trước khi máy tính có thể thực thi mã nguồn, các chương trình đặc biệt được gọi là trình biên dịch phải viết lại nó thành các lệnh máy, còn được gọi là object code. Quá trình này thường được gọi đơn giản là “biên dịch” có thể được thực hiện một cách rõ ràng hoặc ngầm định. Biên dịch ngầm định là một quá trình gồm hai bước Bước đầu tiên là chuyển đổi mã nguồn sang ngôn ngữ trung gian bằng trình biên dịch dành riêng cho ngôn ngữ. Bước thứ hai là chuyển ngôn ngữ trung gian sang hướng dẫn máy. Sự khác biệt chính với các trình biên dịch rõ ràng là chỉ các đoạn mã ngôn ngữ trung gian được thực thi mới được biên dịch thành các lệnh máy, trong runtime. .NET framework gọi trình biên dịch này là trình biên dịch JIT Just-In-Time. 19. Explicit Compilation là gì? Explicit compilation biên dịch rõ ràng chuyển đổi ngôn ngữ cấp trên thành object code trước khi thực thi chương trình. Các Ahead of time AOT compilers trình biên dịch trước thời hạn được thiết kế để đảm bảo rằng, CPU có thể hiểu mọi dòng mã trước khi bất kỳ tương tác nào diễn ra. 20. Tại sao cần sử dụng IDisposable interface? Công dụng “chính” của IDisposable interface là dọn dẹp các Unmanaged resources. Lưu ý rằng mục đích của Dispose pattern là cung cấp một cơ chế để dọn dẹp cả hai Managed/Unmanaged resources và thời điểm điều đó xảy ra phụ thuộc vào cách mà phương thức Dispose được gọi. 21. BCL là gì? Một .NET Framework library, BCL là tiêu chuẩn cho C runtime library và một trong các Common Language Infrastructure CLI standard libraries. BCL cung cấp các kiểu đại diện cho các kiểu dữ liệu CLI được tích hợp sẵn, quyền truy cập tệp cơ bản, collections, thuộc tính tùy chỉnh, định dạng, thuộc tính bảo mật, I/O streams, thao tác chuỗi và hơn nữa. Base Class Library BCL theo nghĩa đen là cơ sở. Nó chứa các kiểu cơ bản, cơ bản như và 22. Sự khác biệt giữa .NET Core, .NET Framework, và Xamarin? .NET Framework là hương vị “đầy đủ” hoặc “truyền thống” của .NET được phân phối với Windows. Sử dụng .NET Framework khi bạn đang xây dựng một ứng dụng Windows hoặc UWP hoặc làm việc với cũ hơn. .NET Core là .NET đa nền tảng chạy trên Windows, Mac và Linux. Sử dụng .NET Core khi bạn muốn xây dựng console hoặc ứng dụng web có thể chạy trên bất kỳ nền tảng nào, kể cả bên trong Docker containers. Điều này không bao gồm các ứng dụng UWP / Desktop hiện tại. Xamarin được sử dụng để xây dựng các ứng dụng di động có thể chạy trên các thiết bị iOS, Android hoặc Windows Phone. Xamarin thường chạy trên Mono, là phiên bản .NET được xây dựng để hỗ trợ đa nền tảng trước khi Microsoft quyết định chính thức sử dụng .NET Core. Giống như Xamarin, nền tảng Unity cũng chạy trên nền tảng Mono. 23. Những lợi ích của Explicit compilation là gì? Ahead of time AOT mang lại thời gian khởi động nhanh hơn, đặc biệt là trong các ứng dụng lớn, nơi có nhiều mã cần thực thi khi khởi động. Nhưng nó đòi hỏi nhiều dung lượng ổ đĩa hơn và nhiều bộ nhớ / không gian địa chỉ ảo hơn để giữ cả IL và hình ảnh được biên dịch trước. Trong trường hợp này, JIT Compiler phải thực hiện nhiều thao tác I/O đĩa, chúng khá tốn kém. 24. Implicit compilation là gì? Implicit Compilation biên dịch ngầm định là một quy trình gồm hai bước và nó cần một Virtual Machine để có thể thực thi mã của bạn. Bước đầu tiên của quy trình là chuyển đổi chương trình của bạn sang một mã bytecode mà Virtual Machine có thể hiểu được. .NET bytecode được gọi là Common Intermediate Language CIL. Nó còn được gọi là Microsoft Intermediate Language MSIL hoặc Intermediate Language IL. Bước thứ hai là chuyển đổi mã CIL thành mã máy. Đây là nhiệm vụ của Virtual Machine. Common Language Runtime .NET Virtual Machine chỉ chuyển đổi các đoạn CIL được thực thi thành các lệnh CPU trong runtime. .NET framework gọi trình biên dịch này là JIT Just-In-Time compiler. 25. Kestrel là gì? Kestrel là một web server đa nền tảng được xây dựng cho Core dựa trên Libuv – một thư viện I / O bất đồng bộ đa nền tảng. Nó là một máy chủ web mặc định được chọn để sử dụng trong tất cả các Core templates. Nó thực sự rất nhanh. Nó đủ an toàn và tốt để sử dụng mà không cần một Reverse proxy server. Tuy nhiên, bạn vẫn nên sử dụng IIS, Nginx hoặc Apache hoặc thứ gì đó khác. 26. Common Language Specification CLS có nghĩa là gì? Common Language Specification CLS là một tập hợp các tính năng ngôn ngữ cơ bản được hỗ trợ bởi Common Language Runtime CLR của .NET Framework. CLS là một phần đặc điểm kỹ thuật của .NET Framework. CLS được thiết kế để hỗ trợ các cấu trúc ngôn ngữ thường được các nhà phát triển sử dụng và tạo ra mã xác minh cho phép tất cả các ngôn ngữ tuân theo CLS để đảm bảo độ an toàn của loại mã. CLS bao gồm các tính năng chung cho nhiều ngôn ngữ lập trình hướng đối tượng. Nó tạo thành một tập hợp con các chức năng của Common Type System CTS và có nhiều quy tắc hơn được định nghĩa trong CTS. 27. .NET Core bao gồm những gì? Một .NET runtime, cung cấp một type system, assembly loading, một trình thu gom rác garbage collector, tương tác với native code và các dịch vụ cơ bản khác. Một tập hợp các framework libraries, cung cấp các kiểu dữ liệu primitive, các kiểu hợp thành ứng dụng và các tiện ích cơ bản. Một bộ công cụ SDK và trình biên dịch ngôn ngữ cho phép nhà phát triển cơ sở trải nghiệm , có sẵn trong .NET Core SDK. Máy chủ ứng dụng dotnet’, được sử dụng để chạy các ứng dụng .NET Core. Nó chọn runtime và lưu trữ runtime, cung cấp chính sách assembly loading và chạy ứng dụng. Máy chủ tương tự cũng được sử dụng để khởi chạy các công cụ SDK theo cách tương tự. 28. Giải thích sự khác biệt giữa “managed” code và “unmanaged” code? Managed code không được biên dịch thành mã máy mà sang một ngôn ngữ trung gian được một số dịch vụ trên máy thông dịch và thực thi, do đó nó đang hoạt động trong một framework bảo mật để xử lý những thứ nguy hiểm như memory và threads cho bạn. Nó chạy trên CLR Common Language Runtime, cùng với những thứ khác, cung cấp các dịch vụ như thu gom rác, kiểm tra loại run-time và kiểm tra tham chiếu. Vì vậy, hãy nghĩ về nó như là, “Code của tôi được quản lý bởi CLR.“ Unmanaged code được biên dịch thành mã máy và do đó được hệ điều hành thực thi trực tiếp. Do đó, nó có khả năng làm những điều gây tổn hại hoặc những tính năng mà Managed code không làm được. Đây là cách mọi thứ được sử dụng để hoạt động, vì vậy nó thường được liên kết với những thứ cũ như .dlls 29. Hãy nói về file mới .csproj? File .csproj hiện được sử dụng làm nơi quản lý các NuGet packages cho ứng dụng của bạn. File explorer và Project explorer hiện được đồng bộ hóa. Đối với các dự án .NET Core, bạn có thể dễ dàng drop một file từ File explorer vào một project hoặc xóa nó khỏi hệ thống file và file đó sẽ biến mất khỏi project. Không còn source files nào trong file .csproj nữa. Hiện tại bạn có thể chỉnh sửa file .csproj trực tiếp mà không cần unloading project. 30. Sự khác biệt giữa Class Library trong .NET Standard và Class Library trong .NET Core? Compatibility tính tương thích các Class Libraries trong .NET Standard sẽ chạy trên bất kỳ runtime thuộc .NET Standard, chẳng hạn như .NET Core, .NET Framework, Mono / Xamarin. Mặt khác, các Class Libraries trong .NET Core chỉ có thể chạy trên runtime thuộc .NET Core. API Surface Area Các .NET Standard libraries đi kèm với mọi thứ trong trong khi các .NET Core libraries đi kèm với mọi thứ trong Cái thứ hai bao gồm khoảng 20 thư viện bổ sung, một số trong số đó chúng ta có thể tự thêm vào .NET Standard library của mình chẳng hạn như và một số trong số đó không tương thích với .NET Standard chẳng hạn như 31. Sự khác biệt giữa .NET Standard và PCL Portable Class Libraries là gì? Các cấu hình .NET Standard và PCL được tạo ra cho các mục đích giống nhau nhưng cũng khác nhau về các điểm chính. Điểm tương đồng Định nghĩa các API được sử dụng để chia sẻ mã nhị phân. Điểm khác nhau .NET Standard là một tập hợp các API được chọn, còn các cấu hình PCL được xác định bởi các điểm chung của các nền tảng hiện có. .NET Standard ấn bản một cách tuyến tính, trong khi cấu hình PCL thì không. Cấu hình PCL đại diện cho các nền tảng của Microsoft còn .NET Standard là platform-agnostic. 32. .NET Standard là gì? .NET Standard giải quyết vấn đề chia sẻ mã cho nhà phát triển .NET trên tất cả nền tảng bằng cách mang tất cả APIs mà bạn mong đợi và yêu thích vào các môi trường mà bạn cần như desktop applications, mobile apps & games, và cloud services. .NET Standard là một tập hợp các APIs mà tất 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 sẽ được thực thi bởi .NET Framework, .NET Core và Xamarin. Đối với .NET Core, nó sẽ có thêm nhiều API được yêu cầu. .NET Standard 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 .NET Standard libraries 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. 33. Framework Class Library FCL là gì? .NET Framework Class Library đúng như tên gọi của nó một thư viện của lớp và các loại khác mà các nhà phát triển có thể sử dụng để làm cho cuộc sống của họ dễ dàng hơn. Mặc dù bản thân các lớp này được viết bằng C, chúng có thể được sử dụng từ bất kỳ ngôn ngữ nào dựa trên CLR. Framework Class Library FCL là thư viện rộng hơn chứa toàn bộ WinForms, XML stack, và hơn thế nữa. Bạn có thể nói rằng FCL bao gồm BCL. Ở mức độ đơn giản, .NET Framework = libraries FCL, BCL, trình biên dịch ngôn ngữ C , và Common Language Runtime CLR. 34. Có cách nào để bắt multiple exceptions cùng một lúc mà không bị trùng lặp mã không? Ví dụ try { WebId = new GuidqueryString["web"]; } catch FormatException { WebId = } catch OverflowException { WebId = } Có cách nào để bắt hai exceptions mà chỉ gọi lệnh WebId = một lần không? Giải pháp catch Exception ex { if ex is FormatException ex is OverflowException { WebId = return; } throw; } 35. CoreCLR là gì? CoreCLR là công cụ thực thi .NET trong .NET Core, thực hiện các chức năng như thu gom rác và biên dịch thành mã máy. 36. Khi nào chúng ta nên sử dụng .NET Core Class Library và .NET Standard Class Library? Sử dụng .NET Standard library khi bạn muốn tăng số lượng ứng dụng tương thích với thư viện của mình và bạn đồng ý với việc giảm số lượng .NET API mà thư viện của bạn có thể truy cập. Sử dụng .NET Core library khi bạn muốn tăng số lượng .NET API mà thư viện của bạn có thể truy cập và bạn có thể chỉ cho phép các ứng dụng .NET Core tương thích với thư viện của bạn. 37. Sự khác biệt giữa .NET Core và .NET Framework là gì? .NET hiện nay nói chung có 2 hương vị .NET Framework .NET Core .NET Core và .NET Framework đối với hầu hết các phần đều có mối quan hệ subset-superset. .NET Core được đặt tên là “Core” vì nó chứa các tính năng cốt lõi từ .NET Framework, cho cả các thư viện runtime và framework. Ví dụ .NET Core và .NET Framework chia sẻ GC, JIT và các loại như String và List. .NET Core được tạo ra để .NET có thể là mã nguồn mở, đa nền tảng và được sử dụng trong nhiều môi trường bị hạn chế về tài nguyên hơn. 38. Giải thích sự khác biệt giữa Task và Thread trong .NET? Thread đại diện cho một luồng thread cấp hệ điều hành, với stack và tài nguyên hạt nhân kernel resources của riêng nó. Thread cho phép mức độ kiểm soát cao nhất; bạn có thể Abort hoặc Suspend hoặc Resume một luồng, bạn có thể quan sát trạng thái của nó và bạn có thể thiết lập các thuộc tính cấp luồng như stack size, apartment state, hoặc culture. ThreadPool là một trình bao bọc xung quanh một nhóm các threads được duy trì bởi CLR. Lớp Task từ Task Parallel Library cung cấp những gì tốt nhất của cả hai thế giới. Giống như ThreadPool, một tác vụ task không tạo luồng cấp hệ điều hành của riêng nó. Thay vào đó, các tác vụ được thực thi bởi TaskScheduler; bộ lập lịch mặc định chỉ chạy trên ThreadPool. Không giống như ThreadPool, Task cho phép bạn biết được khi nào nó kết thúc và thông qua generic Task để trả về kết quả. 39. Những lợi ích của việc sử dụng JIT là gì? JIT có thể tạo mã nhanh hơn, vì nó nhắm mục tiêu đến nền tảng thực thi hiện tại. Biên dịch AOT phải nhắm mục tiêu đến mẫu số chung thấp nhất trong số tất cả các nền tảng thực thi có thể có. JIT có thể định cấu hình ứng dụng trong khi nó chạy và tự động biên dịch lại mã để mang lại hiệu suất tốt hơn trong hot path các chức năng được sử dụng nhiều nhất. 40. Các tác vụ bất đồng bộ Async / Await hoạt động như thế nào trong .NET? private async Task TestFunction { var x = await DoesSomethingExists; var y = await DoesSomethingElseExists; return y; } Câu lệnh await thứ hai có được thực thi ngay lập tức hay sau khi câu lệnh await đầu tiên hoàn thành? await tạm dừng phương thức cho đến khi hành động của nó hoàn tất. Vì vậy, await thứ hai sẽ được thực thi sau khi await đầu tiên hoàn thành. Mục đích của await là nó sẽ trả lại thread hiện tại cho nhóm thread trong khi hoạt động được await chạy và thực hiện bất cứ điều gì. Điều này đặc biệt hữu ích trong các môi trường hiệu suất cao, chẳng hạn như một máy chủ web, nơi một yêu cầu nhất định được xử lý trên một thread nhất định từ nhóm thread tổng thể. Nếu chúng ta không await, thì thread đã cho xử lý request và tất cả tài nguyên của nó vẫn “được sử dụng” trong khi lệnh gọi db / dịch vụ hoàn tất. Quá trình này có thể mất vài giây hoặc hơn, đặc biệt là đối với các cuộc gọi dịch vụ bên ngoài. 41. Sự khác biệt giữa AppDomain, Assembly, Process và Thread là gì? Một AppDomain là một đơn vị độc lập trong một process. AppDomains có thể được tạo trong runtime, được tải bằng mã và được tải xuống. Ranh giới độc lập của nó được thiết kế để làm cho các ứng dụng .NET đáng tin cậy hơn. Một Assembly chứa một hoặc nhiều modules, chứa các đoạn mã đã được biên dịch. Bạn thường sẽ thấy một assembly dưới dạng .EXE hoặc .DLL. Một Process là một ứng dụng đang thực thi. Một Thread là một execution context. Hệ điều hành thực thi mã trong một thread. Hệ điều hành chuyển đổi qua lại giữa các threads, cho phép từng thread thực thi lần lượt, do đó tạo cảm giác rằng nhiều ứng dụng đang chạy cùng một lúc. Để tổng hợp tất cả lại với nhau rất đơn giản … Một chương trình được thực thi. Một process được tạo bởi hệ điều hành, và trong thread đơn của nó, nó bắt đầu tải mã để thực thi. Trong một ứng dụng .NET, một AppDomain duy nhất được tạo bởi CLR. Cụm assembly thực thi của ứng dụng .EXE được tải vào AppDomain này và bắt đầu thực thi. Ứng dụng có thể sinh ra các processes mới, tạo các AppDomains, tải các assemblies khác vào các AppDomains này, sau đó tạo các Threads mới để thực thi mã trong bất kỳ AppDomains nào trong số này. 42. Sự khác biệt giữa các dự án .NET Framework / Core và các dự án .NET Standard Class Library? Sử dụng .NET Standard library khi bạn muốn tăng số lượng ứng dụng tương thích với thư viện của mình và bạn đồng ý với việc giảm số lượng .NET API mà thư viện của bạn có thể truy cập. Việc triển khai .Net Standard Library cho phép chia sẻ mã trên tất cả các phiên bản khác nhau của các ứng dụng .NET như .NET Framework, .NET Core và Xamarin. 43. Làm thế nào để chọn target version của .NET Standard library? Khi chọn phiên bản .NET Standard, bạn nên cân nhắc sự đánh đổi này Phiên bản càng cao, càng nhiều API có sẵn cho bạn. Phiên bản càng thấp, càng có nhiều nền tảng triển khai nó. Bạn nên chọn target version thấp nhất có thể của .NET Standard. Vì vậy, sau khi bạn tìm thấy phiên bản .NET Standard cao nhất mà bạn có thể nhắm đến, hãy làm theo các bước sau Hãy chọn phiên bản thấp hơn tiếp theo của .NET Standard và xây dựng dự án của bạn. Nếu dự án của bạn xây dựng thành công, hãy lặp lại bước 1. Nếu không, hãy chọn lại phiên bản cao hơn tiếp theo và đó là phiên bản bạn nên sử dụng. 44. .NET có hỗ trợ đa kế thừa không? .NET không hỗ trợ đa kế thừa theo cách trực tiếp vì trong .NET, một lớp không thể kế thừa từ nhiều hơn một lớp. .NET hỗ trợ đa kế thừa thông qua các Interfaces. 45. Tại sao .NET sử dụng trình biên dịch JIT thay vì chỉ biên dịch mã một lần trên máy đích? Có hai thứ cần đạt được bằng cách sử dụng định dạng trung gian intermediate format như .NET hoặc Java Bạn có thể chạy chương trình trên bất kỳ nền tảng nào, chính xác là vì mã được biểu diễn ở định dạng trung gian thay vì native code. Bạn chỉ cần viết một trình thông dịch cho định dạng trung gian. Nó cho phép một số tối ưu hóa run-time không thể dễ dàng tại thời gian biên dịch compile-time ví dụ bạn có thể tận dụng các tính năng đặc biệt trên CPU mới, ngay cả khi những CPU đó không tồn tại khi bạn viết chương trình của mình – chỉ có trình biên dịch JIT mới cần biết về điều đó. 46. Tại sao thư viện .NET Standard tồn tại? Lý do mà .NET Standard tồn tại là vì tính di động; nó xác định một tập hợp các API mà các nền tảng .NET đồng ý triển khai. Bất kỳ nền tảng nào triển khai .NET Standard đều tương thích với các thư viện sử dụng .NET Standard đó. Một trong những nền tảng tương thích đó là .NET Core. Các mẫu thư viện .NET Standard tồn tại để chạy trên nhiều runtime. Ngược lại, các mẫu thư viện .NET Core tồn tại để truy cập nhiều API hơn với chi phí tương thích và để chỉ định một nền tảng mà dựa vào đó để xây dựng tệp thực thi. 47. Sự khác biệt giữa RyuJIT và Roslyn là gì? Roslyn là trình biên dịch sẽ biên dịch mã của bạn C hoặc VB sang IL. RyuJIT là một trình biên dịch Just In Time biên dịch IL của bạn thành native code. Hiện tại cả hai đều là mã nguồn mở. 48. Sự khác biệt giữa CIL và MSIL IL là gì? CIL là thuật ngữ được sử dụng trong CLI Standard. MSIL là tôi nghĩ là CIL được tạo bởi các công cụ MS. Về hiệu quả, chúng đồng nghĩa với nhau. CIL – Common Intermediate Language – là thuật ngữ được sử dụng trong International Standard. MSIL – Microsoft Intermediate Language – là thuật ngữ sản phẩm để chỉ việc triển khai tiêu chuẩn đó của Microsoft. 49. Giải thích cách sử dụng Finalize và Dispose? Phương thức Finalizer được gọi khi đối tượng của bạn được thu gom rác và bạn không có gì đảm bảo khi nào điều này sẽ xảy ra bạn có thể ép buộc nó, nhưng nó sẽ ảnh hưởng đến hiệu suất. Mặt khác, phương thức Dispose được gọi bằng code đã tạo ra class của bạn để bạn có thể dọn dẹp và giải phóng bất kỳ tài nguyên nào bạn đã có được dữ liệu không được quản lý, kết nối cơ sở dữ liệu, xử lý tệp, tại thời điểm mã được hoàn thành với đối tượng của bạn. Các sử dụng thực tế là triển khai IDisposable và Dispose để bạn có thể sử dụng đối tượng của mình trong một câu lệnh using, chẳng hạn như using var foo = new MyObject {}. Và trong phần finalizer của bạn, bạn gọi Dispose, đề phòng trường hợp mã đang chạy của bạn quên “dispose”. 50. Bạn biết bao nhiêu loại JIT Compilations? Có ba kiểu JIT compilation trong .NET framework Pre-JIT biên dịch mã nguồn hoàn chỉnh thành native code trong một chu kỳ biên dịch duy nhất. Trong các ngôn ngữ .NET, điều này được thực hiện trong Native Image Generator. Tất cả các quy trình CIL được biên dịch thành native code trước khi khởi động. Bằng cách này, runtime có thể sử dụng các native images từ bộ đệm cache thay vì gọi JIT Compiler. Econo-JIT chỉ biên dịch những phương thức được gọi trong runtime. Tuy nhiên, các phương thức được biên dịch này sẽ bị loại bỏ khi chúng không được yêu cầu. Normal-JIT chỉ biên dịch những phương thức được gọi trong runtime. Các phương thức này được biên dịch ở lần đầu tiên chúng được gọi, và sau đó chúng được lưu trữ trong bộ nhớ cache. Khi các phương thức tương tự được gọi lại, mã được biên dịch từ bộ nhớ cache sẽ được sử dụng để thực thi. 51. Sự khác biệt giữa mô hình bất đồng bộ và async / await trong .NET? Mô hình bất đồng bộ trong tương tự như mô hình bất đồng bộ cũ trong C và .Net được gọi là Event-based Asynchronous Pattern EAP. Các từ khóa async / await của C làm cho mã bất đồng bộ trở nên tuyến tính và cho phép bạn tránh “Callback Hell” tốt hơn nhiều trong bất kỳ ngôn ngữ lập trình nào khác. là đơn luồng single-threaded bất đồng bộ, trong khi là đa luồng multi-threaded bất đồng bộ. Điều này có nghĩa là mã có thể tạo ra một số giả định đơn giản hóa vì tất cả mã của bạn luôn chạy trên cùng một thread. Vì vậy, khi mã của bạn đang await, nó có thể tiếp tục trên một thread khác và tùy thuộc vào bạn để tránh những thứ như trạng thái luồng cục bộ thread-local state. Sự khác biệt tương tự cũng là một điểm mạnh của bởi vì nó có nghĩa là bất đồng bộ có thể mở rộng quy mô tối đa với khả năng đầy đủ của máy chủ của bạn. Nếu bạn xem xét, chẳng hạn như một máy 8 lõi, thì có thể xử lý các phần đồng bộ của 8 request cùng một lúc. Nếu bạn đặt trên một máy chủ được cải tiến, thì thông thường bạn sẽ thực sự chạy 8 instances riêng biệt của và thêm một cái gì đó như hoặc một trình cân bằng tải tùy chỉnh đơn giản để xử lý các yêu cầu định tuyến routing cho máy chủ đó.
Có là dot NET hay dot NET core thì anh em cũng cần nắm vững một số kiến thức cơ bản để tham gia phỏng vấn NET Developer. Thời thế đổi thay nhưng những kiến thức cơ bản luôn cần thiết và cần nhớ bền, nhớ vững trong đầu. Nói là lựa chọn vậy chứ hiện nay hầu hết các vị trí tuyển dot NET đều yêu cầu kinh nghiệm ở cả dot NET và dot NET CORE. không khó để tìm ra các JD job description kiểu như này. Technical requirements .NET C, Visual – 5 years+ .NET Core API’s SQL Server – 3 years+ Microservices / Messaging Event-Driven / Distributed System Bài viết này giới thiệu tới anh em top 10 câu hỏi phỏng vấn NET developer. Giúp anh em tham khảo, tổng hợp lại kiến thức và hiểu biết của mình. Chuẩn bị tốt cho buổi phỏng vấn chưa bao giờ là thừa đúng không anh em? Ok, bắt đầu ngay thôi nào! 1. .NET framework hoạt động như thế nào? Câu hỏi đâu tiên, đập ngay vào là .NET hoạt động như nào. Tưởng dễ mà không dễ tẹo nào. Cụ thể thì .NET framework hoạt động như thế nào?. Như bao ngôn ngữ khác, anh em viết code .NET với C hoặc VB bằng ngôn ngữ tự nhiên, thông qua Native compiler rồi đem tới CIL common intermediate language, intermediate là trung gian. Tức qua bước trung gian này từ ngôn ngữ tự nhiên sẽ chuyển qua ngôn ngữ code. Sau khi qua bước này, CLR sẽ làm việc để compile toàn bộ nội dung từ CIL thành mã máy, lúc này machine có thể hiểu được và thực thi. Về mặt bản chất việc compile từ mã code qua mã máy giống với các ngôn ngữ khác, đều dùng Just In TimeJIT compiler để biên dịch qua mã máy. Tuy nhiên anh em lưu ý .NET compiler code qua file có định dạng dll hoặc exe. Anh em chú ý hoạt động như thế nào thường là câu hỏi được hỏi khi phỏng vấn NET developer nha. 2. Thứ tự events thực thi của page life cycle? Câu hỏi thứ hai phỏng vấn .NET hỏi về life cycle. Câu này đánh mạnh vào kinh nghiệm làm việc thực tế. Nếu anh em đã có thời gian debug từng event trong life cycle tất nhiên sẽ nhớ được. Page_PreInit Page_Init Page_InitComplete Page_PreLoad Page_Load Page_LoadComplete Page_PreRender Render Về thứ tự thì anh em nhớ là init luôn đầu tiên, khi nào init xong thì mới tới load, load hết xong xuôi tất cả đâu vào đấy rồi mới tới render. TOP các vị trí tuyển dụng .Net lương cao tại đây 3. Boxing và unboxing trong .NET? Xin thưa boxing không phải là uýnh lộn trong .NET. Trả lời lèo nghèo coi chừng toang. Boxing is the process of converting a value type into a reference type directly. Boxing là quá trình chuyển đổi giá trị từ kiểu giá trị sang kiểu tham chiếu Trong khi đó unboxing Unboxing is the process where reference type is converted back into a value type. Unboxing là quá trình chuyển đổi kiểu tham chiếu ngược trở lại thành kiểu giá trị int a = 10; // a value type object o = a; // boxing int b = into; // unboxing Trong ví dụ này biến á từ kiểu giá trị int được chuyển thành object, có thể tham chiếu là o. Sau đó được chuyển ngược lại thành kiểu giá trị và gán vào biến b. Vẫn là một câu hỏi đơn giản phỏng vấn NET developer. Vậy sao không nhào qua tí về OOP, để xem .NET khác gì so với các ngôn ngữ khác khi so sánh giữa Abstract và Interface? 4. Sự khác biệt giữa Abstract và Interface trong .NET Câu hỏi Abtract, Interface nó như cái gì đó default và cơ bản khi phỏng vấn bất cứ ngôn ngữ lập trình hướng đối tượng nào. Cụ thể anh em có thể tham khảo bảng so sánh dưới đây Abstract class Interface Sử dụng để khai báo properties, events, methods và fields Trong interface không thể khai báo các field. Nhiều loại hình access biến như public, private, protected được hỗ trợ bởi Abstract Với interface thì chỉ public được hỗ trợ Với Abstract thì bản thân nó chấp nhận kiểu static Interface không hỗ trợ kiểu static Abstract không hỗ trợ đa kế thừa Interface hỗ trợ đa kế thừa Về kế thừa và đa kế thừa thì dễ hiểu vì interface là can-do, tất nhiên một objects đối tượng có thể làm can do nhiều thứ khác nhau. Còn abstract là is-a, tức là cái gì đó. Việc cho phép đa kế thừa với interface và không cho kế thừa với abstract .NET giống với các ngôn ngữ lập trình bậc cao khác. Nói chung là đi phỏng vấn NET developer hay Java hay Python mà ở vị trí Backend thì thường anh em sẽ được hỏi câu hỏi này. Nếu có thể đưa ra ví dụ cụ thể giải thích Abstract và Interface nữa thì càng tuyệt. 5. Sự khác nhau giữa từ khoá ref và out Khác với một số ngôn ngữ lập trình phổ biến như Java chỉ hỗ trợ pass by value .NET hỗ trợ cả pass by reference và pass by value. Nhưng sự khó hiểu giữa ref và out thì khác hẳn so với hai cái pass ở trên kia. Cả hai đều là pass by reference, nhưng vẫn tồn tại một số điểm khác biệt. Quay lại với câu hỏi. ref keyword is used to pass an already initialized variable to a method as a reference type, facilitating bi-directional data passing. Từ khoá ref sử dụng để giá trị của biến vào function thông qua hình thức pass by reference. Tiếng việt gọi là tham chiếu. Dữ liệu 2 chiều. Tại sao hai chiều hồi sau sẽ rõ. out keyword is used to pass a variable as an empty container that can store multiple values to a method as a reference type. out keyword allows uni-directional data passing, as the container passed using out keyword doesn’t need to be initialized beforehand. Trong khi đó từ khoa out sử dụng để chuyển giá tị của biến vào trong vùng chứa dưới loại tham chiếu. Với từ khoá out, biến được chuyển vào mà không cần khởi tạo vùng chứa. Chu choa, nghe hơi căng. Thôi ví dụ gấp. Ví dụ về ref và out using System; class GFG { // Main method static public void Main { // Khai báo biến string str3 = "Kien"; // Gọi hàm với từ khoá ref initializeStringref str3; {0}", str3; } // Dùng từ khoá ref khai báo kiểu reference public static void initializeStringref string str1 { if str1 == "Kien" { Kien dep trai"; } // Vì biến là reference nên khi khai báo lại cái nó mất ngay // Tưởng đẹp nhưng không ngờ khi khai báo lại phát nữa thì anh Kiên lại xấu như quỷ str1 = "Anh Kien xau nhu quy"; } } Kết quả khi chạy chương trình anh em sẽ nhận được 2 dòng chữ Chao Kien dep trai Độp phát ngay sau đó là “anh Kien xấu như quỷ” using System; class GFG { // Main method static public void Main { // Khai báo biến string str3 = "Kien"; // Gọi hàm với từ khoá ref initializeStringout str3; {0}", str3; } // Dùng từ khoá ref khai báo kiểu reference public static void initializeStringout string str1 { str1 = "Kien dep trai"; // Check parameter value if str1 == "Kien dep trai" { dep trai that"; } } } Giá trị out put của đoạn code này là; ok dep trai that Chao Kien dep trai Một ví dụ khác của out // C program to illustrate the // concept of out parameter using System; class GFG { // Main method static public void Main { // Declaring variable // without assigning value int G; // Pass variable G to the method // using out keyword Sumout G; // Display the value G sum of" + " the value is {0}", G; } // Method in which out parameter is passed // and this method returns the value of // the passed parameter public static void Sumout int G { G = 80; G += G; } } Output của chương trình này The sum of the value is 160 In ra cả hai dòng chữ như này cho ta thấy cả out và ref đều là kiểu tham trị. Tức là vào và ra function thì giá trị của biến đều thay đổi. Vậy điểm khác nhau của out và ref là gì?. Parameter truyền vào function thông qua hình thức ref cần được khởi tạo trước Parameter truyền vào function thông qua hình thức out không cần được khởi tạo trước Không cần khởi tạo giá trị trước khi trả về cho function gọi Cần khởi tạo để trả về vì lúc đưa vào đã không có gì còn trả ra không có gì thì toang Hữu dụng khi giá trị vào hàm ra hàm phát là thay đổi mãi mãi luôn, không cần quay lại giá trị cũ như pass by value Không cần khởi tạo nên nhận vào một nhưng trả về 3,4,5. Hữu dụng khi hàm trả về nhiều giá trị Câu này đem đi phỏng vấn NET developer mà trả lời trôi chảy thì cũng khá là khoai đó chơ. 6. Tham khảo thêm câu hỏi phỏng vấn NET developer Trên đây là 5 câu hỏi phỏng vấn NET developer. Mong rằng với các câu hỏi này, anh em có thời gian tổng hợp lại kiến thức. Chuẩn bị tốt nhất cho buổi phỏng vấn NET developer. Anh em có thể tham khảo thêm một số bài viết sau How Does the Internet Work Infographic HP Tech Takes C ref vs out Prototype pattern – một trong những pattern phổ biến nhất Cảm ơn thời gian của anh em – Thank you for your time to read – Happy coding! Tác giả Kiên Nguyễn Có thể bạn quan tâm Bách khoa toàn thư .Net 5 Điều Cần Trang Bị Để Trở Thành Lập Trình Viên .NET Giỏi Cách cài đặt .NET Framework trên Windows thành công 100% Tìm kiếm việc làm IT mới nhất tại TopDev!
Hybrid Technologies đã tổng hợp lại một số các câu hỏi mà nhà tuyển dụng hay đề cập để trao đổi khi phỏng vấn vị trí ứng tuyển sử dụng ngôn ngữ C. Để giúp cho các bạn chuẩn bị tâm lí trước buổi phỏng vấn và tự tin “chiến thắng” trong quá trình tìm kiếm công việc của bạn, hãy cùng chúng mình đọc bài viết dưới đây nhé! Việc chuẩn bị đầu tiên đó là kiến thức căn bản về ngôn ngữ C, tiếp theo đó là hiểu sâu về ngôn ngữ này và chuẩn bị các tình huống thường gặp trong khi phỏng vấn như dưới đây. 1. Cơ bản về lập trình OOP? OOP là lập trình hướng đối tượng, nó gồm 4 tính chất Mỗi tính chất các bạn phải hiểu và lấy ví dụ, đồng thời nêu ra được tác dụng của nó Tính đóng gói Encapsulation Là cách để che dấu những tính chất xử lý bên trong của đối tượng, những đối tượng khác không thể tác động trực tiếp làm thay đổi trạng thái chỉ có thể tác động thông qua các method public của đối tượng đó. Tính kế thừa Inheritance Là kỹ thuật cho phép kế thừa lại những tính năng mà một đối tượng cha đã có, giúp tránh việc code lặp dư thừa mà chỉ xử lý công việc tương tự. Tính đa hình Polymorphism Là một đối tượng thuộc các lớp khác nhau có thể hiểu cùng một thông điệp theo cách khác nhau. Tính trừu tượng Abstraction Là phương pháp trừu tượng hóa định nghĩa lên những hành động, tính chất của loại đối tượng nào đó cần phải có. 2. Ngôn ngữ lập trình C Về ngôn ngữ lập trình C, các bạn không cần thiết phải biết mọi thứ nhưng một số điểm các bạn nên biết là về Interface và Abstract class hay có kiến thức về các collection trong C .NET. Ngoài ra các bạn cũng cần hiểu về đa luồng, extension methods, delegate, xử lý bất đồng bộ, overriding method, và tổng quan các thư viện hay dùng nhất. Câu 1 Thế nào là 1 object? Là một kiểu dữ liệu cơ bản của tất cả các kiểu dữ liệu trong .NET. Mọi kiểu dữ liệu đều được kế thừa từ Thuộc kiểu dữ liệu tham chiếu Kiểu dữ liệu object cung cấp một số phương thức ảo cho phép mình overload để sử dụng Một số phương thức tiêu biểu nằm trong object Phương thức Ý nghĩa ToString Trả về kiểu chuỗi của đối tượngchuyển từ kiểu dữ liệu nào đó về kiểu chuỗi GetHashCode Trả về mã băm của đối tượng. Equals So sánh 2 đối tượng và trả về true khi hai đối tượng có giá trị bằng nhau, ngược lại thì trả về false. GetType Trả về kiểu dữ liệu cảu đối tượng. Câu 2 Một constructor là gì? Constructor hàm tạo/hàm dựng là một loại thành viên đặc biệt trong class C. Nhiệm vụ của nó là khởi tạo object của class. Mỗi khi gọi lệnh khởi tạo, thực tế là bạn đang gọi đến constructor. Câu 3 Sự khác nhau giữa abstract class và interface? Cả hai được sử dụng để thu được tính trừu tượng, từ đó có thể khai báo các phương thức trừu tượng Có thể thừa kế nhiều interface nhưng chỉ được thừa kế từ một abstract class Có thể viết sẵn các thực thi trong abstract class nhưng interface thì không Interface dùng để gom lại các hoạt động cần được thực hiện, các khả năng của một đôi tượng VD con người và xe cộ có khả năng đi lại . Còn abstract class cho các lớp thừa kế cùng một loại , tính chất hay trạng thái VD đàn ông, phụ nữ, trẻ con … Câu 4 Sự khác nhau của static readonly và const? Static readonly là hằng số được khởi tạo khi thực thi chương trình Const là hằng số được khởi tạo khi biên dịch chương trình Câu 5 Interface là gì? Interface được xem như là một lớp, lớp đó có thể được một class hoặc struct khác implement nó. Câu 6 Thế nào là attribute trong C? Thuộc tính attribute trong C, là một thẻ khai báo, được sử dụng để truyền thông tin tới runtime về các hành vi của các phần tử khác nhau như các lớp, phương thức, cấu trúc, enum, assembly… trong chương trình của bạn. Các Attribute được sử dụng để thêm metadata, ví dụ như chỉ lệnh biên dịch và thông tin khác như comment, mô tả, phương thức và các lớp vào một chương trình. Câu 7 Hãy so sánh giữa interface và abstract? Giống nhau Không thể khởi tạo đối tượng bên trong Có thể khai báo các phương thức nhưng không thực hiện chúng Bao gồm các phương thức abstract Được thực thi từ các class con hay còn gọi kế thừa, dẫn xuất Có thể kế thừa từ nhiều interface Khác nhau Abstract Class Interface Cho phép khai báo field Không cho phép Các phương thức có thể có thân hàm hoặc không có thân hàm. Chỉ khai báo không có thân hàm Class dẫn xuất chỉ kế thừa được từ 1 abstract class và nhiều interface. Class triển khai có thể triển khai nhiều interface. Có chứa constructor Không có Các phương thức có từ khóa access modifier Không có Câu 8 Sự khác nhau giữa override và overload là gì? Override Overload Kiểu dữ liệu trả về, tên phương thức, danh sách tham số của phương thức override và phương thức được override phải giống nhau. Kiểu dữ liệu trả về của các phương thức overload có thể giống nhau hoặc khác nhau.– Số lượng tham số hoặc kiểu dữ liệu của tham số ở các phương thức overload phải khác nhau. Không thể thu hẹp phạm vi truy cậpaccess modifier của phương thức được override. Có thể mở rộng hoặc thu hẹp phạm vi truy cậpaccess modifier của phương thức được overload. Không thể overriding constructor method. Overloading được constructor method. Chỉ thực hiện được đối với các class có quan hệ kế thừa. Do đó overriding thực hiện ở ngoài phạm vi của một class. Chỉ thực hiện trong cùng phạm vi, trong nội bộ của một class. Là hình thức đa hình khi chạyruntime tức là chỉ khi chương trình chạy, thì chúng ta mới biết phương thức được gọi từ lớp nào. Là hình thức đa hình khi biên dịchcompiler tức là khi biên dịch mới biết đang sử dụng phương thức ở trong lớp nào. Không cho phép tạo ra những ngoại lệ khác loại hoặc không phải đối tượng thuộc lớp con của lớp có thể hiện là ngoại lệ từ phương thức được override. Cho phép tạo ra những ngoại lệ hoàn toàn mới so với những ngoại lệ từ phương thức được overload. Có thể nói, phỏng vấn gần như là giai đoạn cuối cùng trên con đường tìm việc của bạn, quyết định đến 80% khả năng được nhận vào vị trí này hay không. Nó giống như một kỳ thi vấn đáp nhưng sẽ khó khăn hơn rất nhiều, bởi ngoài kiến thức chuyên môn bạn còn cần thể hiện nhiều phẩm chất khác phù hợp với công việc và văn hoá của nhà tuyển dụng. Chúc các bạn luôn tự tin và thành công! Nguồn Sưu Tầm. CÂU HỎI PHỎNG VẤN C/.NET THƯỜNG GẶP5 100% 1 vote
Một trong những framework khá nổi tiếng hiện nay chính là .NET, đây cũng là framework đang được khá nhiều người sử dụng. Do đó, nhu cầu tuyển dụng vị trí lập trình viên .NET cũng ngày càng nhiều hơn. Vậy, trong quá trình phỏng vấn, các bạn lập trình viên .NET sẽ được hỏi những câu hỏi như thế nào? Nếu bạn đang chuẩn bị có một buổi phỏng vấn cho vị trí lập trình viên .NET, hãy lưu lại ngay bộ 30 câu hỏi phỏng vấn lập trình viên .NET ngay dưới đây từ Câu 1 Khái niệm .NET là gì? .NET là khung phát triển phần mềm, website hay là một framework để các lập trình viên làm việc trên đó. Câu 2 Framework .NET hỗ trợ bao nhiêu loại ngôn ngữ? Hiện tại, Framework .NET đang hỗ trợ 44 ngôn ngữ lập trình. Câu 3 Các mục ViewState có tuổi thọ bao lâu? Tuổi thọ của Viewstate không cố định mà phụ thuộc vào trang chứa của chúng. Câu 4 Định nghĩa CTS? CTS – Common-Type System là hệ thống loại chung để ra lệnh các loại dữ liệu. Tìm hiểu thêm Top 10 Câu Hỏi Tuyển Dụng Phổ Biến Cho IOS Developer Bộ 30 câu hỏi phỏng vấn lập trình viên .NET thường gặp nhất Câu 5 Encapsulation là gì? Là chức năng bao gồm phương pháp, dữ liệu khác nhau ở trong cùng một dự án. Câu 6 Phân biệt Object đối tượng và Class lớp trong .NET? Object là một thành phần ở trong class. Câu 7 Debug và Trace có khác nhau không? Nếu có thì khác nhau như thế nào? Có. Debug chỉ sử dụng để gỡ lỗi còn Trace dùng để gỡ lỗi và phán hàng. Câu 8 Phân biệt In-process và Out-of-process? In-process là quá trình lưu trữ dữ liệu bên trong còn Out-of-process là quá trình lưu trữ dữ liệu bên ngoài. Câu 9 MSIL là gì? MSIL – Microsoft Intermediate Language – ngôn ngữ trung gian của nền tảng Microsoft. Câu 10 Định nghĩa Inheritance? Câu 11 Phân biệt Managed Code và Unmanaged Code? Managed Code được tạo ra trong .NET còn Unmanaged Code được xây dựng từ phần mềm khác. Câu 12 Phân biệt Int và Có thể hiểu rằng Int là phiên bản ngắn hơn của Câu 13 Caching là gì? Câu 14 Giải thích thuật ngữ Assembly? Câu 15 Theo bạn, framework .NET có phải là AOP hay OOP Framework hay không? .NET là khung OOP – Object-Oriented Programming – Lập trình hướng đối tượng. Câu 16 Bộ đếm thời gian Session Out có thể cài đặt thủ công không? – Có. Câu 17 Trong thư mục “App_Code”, bạn có thể kết hợp nhiều ngôn ngữ lập trình không? – Không. Câu 18 “.dll” là tập tin gì? “.dll” hiểu đơn giản là những tập tin cần ẩn. Câu 19 Phân biệt Stack và Queue? Stack là LIFO, Queues là FIFO. Câu 20 Giải thích thuật ngữ boxing trong framework .NET? Là quá trình tạo các đối tượng từ giá trị nhất định. Câu 21 Các chỉ số khóa chính trên bảng có thể điều chỉnh hoặc thay đổi hay không? – Không. Câu 22 Hãy chỉ ra phương pháp để xác thực dữ liệu đã có ở trên website? Sử dụng Client-Side Validation – Xác thực từ phía khách hàng. Câu 23 Functions và Stored Procedures khác nhau như thế nào? Điểm khác biệt chính là Functions có thể thực hiện các nhiệm vụ khác nhau còn Stored Procedures chỉ thực hiện một nhiệm vụ du nhất. Câu 24 Giải thích thuật ngữ LINQ? LINQ – Language Integrated Query – là truy vấn tích hợp ngôn ngữ. Câu 25 Giải thích Variable và Constant là gì? Variable – biến – nơi dữ liệu được lưu trữ trên máy tính. Constants – hằng số – tương tự với biến nhưng giá trị gắng với constants không thay đổi. Câu 26 Định nghĩa Garbage Collector là gì? Garbage Collector – gom rác – là công cụ giải phóng không gian để giúp cho .NET hoạt động nhanh hơn. Câu 27 Trong một giao diện, bạn có thể chỉ định các sửa đổi truy cập được không? – Không. Câu 28 Định nghĩa Tuple là gì? Tuple – bộ sưu tập dữ liệu cùng loại/khác nhau. Câu 29 Trong .NET có bao nhiêu chỉ mục? Có 2 chỉ mục là Clustered và Non-Clustered. Câu 30 Giải thích sự khác nhau giữa Stack và Heaps? Stack là loại giá trị, Heaps là lưu trữ các loại tham chiếu. Tìm hiểu thêm Tuyển Tập Những Câu Hỏi Phỏng Vấn Front End Hay Gặp Nhất Hãy chuẩn bị kiến thức chuyên môn kỹ càng trước khi tham gia phỏng vấn lập trình viên .NET Một số câu hỏi phỏng vấn lập trình viên NET khác Ngoài những câu hỏi chuyên môn, trong quá trình phỏng vấn lập trình viên .NET, bạn cũng có thể bắt gặp những câu hỏi sau đây. Câu 31 Giới thiệu về bản thân? – Lưu ý chỉ giới thiệu ngắn gọn về họ tên, tuổi, kinh nghiệm trong vòng 2 – 3 phút? Câu 32 Dự định tương lai trong 3 – 5 năm tới của bạn là gì? Câu 33 Bạn đã tìm hiểu qua về công ty cũng như vị trí làm việc hay chưa? Câu 34 Bạn có câu hỏi gì với phía công ty hay không? Câu 35 Ngoài những công cụ phục vụ cho việc lập trình .NET, bạn có thành thạo công cụ nào khác hay không? Tìm hiểu thêm Học IT Có Khó Không? Cơ Hội Việc Làm Của Ngành IT Sau Khi Ra Trường? Hy vọng với bộ 30 câu hỏi phỏng vấn lập trình viên NET thường gặp nhất hôm nay sẽ giúp bạn chuẩn bị kỹ càng hơn cho buổi phỏng vấn. Để tìm việc làm IT, bạn có thể truy cập vào TopCV để tiếp cận nhiều công việc thú vị với mức lương hấp dẫn nhé!
câu hỏi phỏng vấn net