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ùngString.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)?
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 khiDataReader
chỉ có thể đọc.DataSet
có thể chứa nhiều bảng cònDataReader
chỉ có thể chứa 1 bảng.DataSet
làm việc ở chế độ không kết nối cònDataReader
làm việc ở chế độ kết nối.DataSet
có thể di chuyển tới và trở lại cònDataReader
thì chỉ có thể di chuyển tới.DataSet
truy cập chậm hơnDataReader
.
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ànhFinalize
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 overrideDispose
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ủaclass
.Class
không chiếm bộ nhớ, cònObject
đượ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ệuJSON
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);
}