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

Sự khác nhau giữa static readonly và const?


  • Const là hằng số được khởi tạo khi biên dịch chương trình.
  • Static readonly là hằng số được khởi tạo khi thực thi chương trình.

So sánh sự khác nhau giữa các lớp Trace và Debug?


  • Trace dùng để theo dõi các hành động xảy ra. Nó hoạt động trong các đóng gói cả Debug lẫn Release. Trace là khả năng của chương trình tự đưa ra các thông tin về hành động của mình.
  • Debug dùng để tìm và sửa các lỗi trong chương trình. Nó chỉ hoạt động trong đóng gói Debug.

Sự khác nhau giữa "" và String.Empty?


  • "" sẽ tạo thêm 1 đối tượng khi làm việc với nó (so sánh, copy…)
  • String.Empty không tạo đối tượng nào cả. String.Emtpy nằm trong mscorlib. Khi kiểm tra 1 String có rỗng hay không nên dùng String.Length == 0 để có tốc độ nhanh nhất.

Sự khác nhau giữa == và phương thức Equals trong CSharp?


  • Equals so sánh theo kiểu tham chiếu.
  • == so sánh theo kiểu giá trị.

Sự khác nhau giữa throw và throw ex?


  • throw đế đưa lại toàn bộ các tầng theo dõi của lỗi ra.
  • throw ex bỏ bớt các tầng theo dõi bên dưới phương thức gọi throw ex.

Connection Pooling dùng để làm gì?


Cho phép tăng tốc độ của các ứng dụng Web bằng cách dùng lại các kết nối thay vì tạo các kết nối mới với mỗi yêu cầu.

.NET có hỗ trợ thừa kế từ nhiều lớp hay không (multiple inheritance)?


.NET có hỗ trợ thừa kế từ nhiều lớp hay không

Không. Vì sẽ không hiểu được khi gọi 1 phương thức mà 2 lớp cha cùng override nó.

So sánh giữa abstract class và interface?


Giống nhau:

  • Abstract class và Interface đều không thể khởi tạo đối tượng bên trong được.
  • Abstract class và Interface đều có thể khai báo các phương thức nhưng không thực hiện chúng.
  • Abstract class và Interface đều bao gồm các phương thức abstract.
  • Abstract class và Interface đều được thực thi từ các class con hay còn gọi kế thừa, dẫn xuất.
  • Abstract class và Interface đều có thể kế thừa từ nhiều interface.

Khác nhau:

Abstract class:

  • Cho phép khai báo field.
  • Các phương thức có thể có thân hàm hoặc 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.
  • Có chứa constructor.
  • Các phương thức có từ khóa access modifier.

Interface:

  • Chỉ khai báo không có thân hàm.
  • Class triển khai có thể triển khai nhiều interface.

Sự khác nhau giữa DataSet và DataReader?


  • DataSet có thể đọc và ghi trong khi DataReader chỉ có thể đọc.
  • DataSet có thể chứa nhiều bảng còn DataReader chỉ có thể chứa 1 bảng.
  • DataSet làm việc ở chế độ không kết nối còn DataReader làm việc ở chế độ kết nối.
  • DataSet có thể di chuyển tới và trở lại còn DataReader thì chỉ có thể di chuyển tới.
  • DataSet truy cập chậm hơn DataReader.

Sự khác nhau giữa các phuơng thức Copy và Clone?


Clone chỉ copy cấu trúc trong khi Copy copy cả cấu trúc lẫn dữ liệu.

Sự khác nhau giữa Dispose, Destructor và Finalize?


  • Destructor sẽ được chuyển thành Finalize khi biên dịch.
  • Finalize được gọi bởi .NET Runtime và chúng ta không thể đoàn được nó được gọi khi nào, nhưng nó chắc chắn sẽ được gọi.
  • Dispose sẽ giải phóng bộ nhớ ngay khi nó được gọi. Lưu ý nếu lớp nào override Dispose mà quên gọi thì các đối tượng sẽ không tự giải phóng bộ nhớ.

Serialization là gì?


Serialization là sự chuyển chuyển đối tượng thành 1 luồng các bytes.

Sự khác nhau giữa overriding và shadowing?


Overriding cung cấp sự hiện thực mới của 1 hàm ở lớp thừa kế nhưng không thay đổi số biến, kiểu trả về, mức truy cập còn shadowing thì có thể thay đổi (từ khóa new trong C#).

Sự khác nhau giữa class, object, struct và interface?


  • Class là cấu trúc dữ liệu định nghĩa bởi người dùng chứa các tính chất và phương thức.
  • Object là một trường hợp cụ thể của class. Class không chiếm bộ nhớ, còn Object được tạo trong bộ nhớ.
  • Struct là kiểu giá trị được lưu trữ trong stack còn class là kiểu tham chiếu (các object) được lưu trữ trong heap.
  • Khi struct được khởi tạo không bằng hàm khởi tạo người dùng sẽ phải khởi tạo tất cả các Fields trước khi sử dụng nó.
  • Interface là một hợp đồng gồm một nhóm các phương thức cần được hiện thực.

Sự khác nhau giữa Property và Field?


Property dùng để quản lý sự truy cập đến Field. Dùng Property để đảm bảo Field không bị gán các giá trị không hợp lệ.

Sự khác nhau giữa static Method, static constructor với method và constructor thông thường?


Static method có thể gọi mà không cần khởi tạo biến. Static constructor chỉ được gọi đúng một lần khi object đầu tiên được khởi tạo.

Các biến tĩnh và chỉ dẫn chương trình được lưu ở đâu?


Ở 1 vùng bộ nhớ đặc biệt gọi là Permanent Storage area.

Sự khác nhau giữa stack và heap?


Stack và heap là các vùng bộ nhớ. Heap nằm giữa stack và Permanent Storage area, và độ lớn có thể thay đổi khi thực thi chương trình.

Sự khác nhau giữa Boxing and Un-Boxing?


Boxing là chuyển đổi kiểu giá trị thành kiểu tham chiếu. Un-Boxing ngược lại.

Sự khác nhau giữa Error và Exception?


Error là lỗi của chương trình, còn exception là lỗi chương trình được phát hiện và có thể xử lý.

Khác nhau giữa ActionResult và JsonResult?


  • ActionResult thường được sử dụng khi bạn muốn trả về 1 view hoặc file hoặc jsondata hoặc điều hướng tới 1 url khác.
  • JsonResult thường được sử dụng khi bạn muốn trả về jsondata tới 1 client.
  • JsonResult là 1 loại ActionResult trong MVC. Nó giúp gửi dữ liệu theo chuẩn format JavaScript Object Notation (JSON).
  • Cũng như vậy, JsonRequestBehavior là gì? Nếu bạn cần gửi JSON trong 1 request có phương thức là GET, bạn cần phải cho phép hành động này bằng cách dùng JsonRequestBehavior. AllowGet là tham số thứ 2 trong phương thức Json. Tuy nhiên đây cũng là cơ hội để hacker có thể truy cập vào phần tải dữ liệu JSON thông qua 1 quá trình gọi là JSON Hijacking.
[HttpGet]
public JsonResult GetListEmail()
{
   List<string> list = new List<string>() { "email 1", "email 2", "email 3"};
   return Json(list, JsonRequestBehavior.AllowGet);
}
Avatar Techmely Team
VIẾT BỞI

Techmely Team