Tải bản đầy đủ (.pdf) (3 trang)

Kinh nghiệm phỏng vấn cho lập trình viên c

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (287.1 KB, 3 trang )

Phỏng vấn lập trình viên C#: Chuẩn bị tốt để thành công

Việc chuẩn bị kỹ lưỡng luôn là chìa khóa mở ra sự thuận lợi và ấn tượng đẹp cho buổi phỏng
vấn. Có được những kiến thức cần thiết khi đi phỏng vấn góp phần quan trọng giúp bạn tự
tin để gặt hái kết quả mỹ mãn nhất.
Dưới đây là những câu hỏi phỏng vấn thường được sử dụng nhất đối với một lập trình viên
C#, những câu hỏi này thường là những câu hỏi về kiến thức cơ bản, nhưng thường được ít
người nghĩ đến.
1. 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.
2. Sự khác nhau giữa String và StringBuilder?
- String là lớp không thay đổi. Mọi phương thức sẽ tạo ra một biến String mới.
- StringBuilder là lớp thay đổi. Các phương thức của biến sẽ ảnh hưởng đến đến biến
StringBuilder hiện tại.
3. 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.
4. .NET có hỗ trợ thừa kế từ nhiều lớp hay không (multiple inheritance)? Tại sao?
- 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ó.
5. Hàm GetHasCode() trong System.Object dùng để làm gì?
- Trả về giá trị của một đối tượng. Chú ý hàm này mặc định không trả về giá trị duy nhất
hoặc không đổi. Hàm này có thể override.
6. 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ớ.
- 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.
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.
7. 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ệ.
8. 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.
9. Mục đích của thừa kế (inheritance)?
- Để tái sử dụng.
10. Mục đích của đa hình (poymophism)?
- Một hành động có thể xảy ra theo nhiều cách khác nhau.
11. Sự khác nhau giữa delegate và event?
- delegate là một lớp (class) đại diện cho hàm con trỏ kiểu an toàn hoặc hàm gọi (call backs)
chỉ đến địa chỉ tham chiếu của một (hay nhiều) hàm. Con trỏ hàm chứa trong delegate được
gắn vào một đối tượng đích (target) và khi delegate được kích hoạt phương thức sẽ được
gọi ở đối tượng đích. Sự hữu ích của delegate không nằm ở chỗ giữ địa chỉ tham chiếu của
các hàm mà để định nghĩa và dùng các tên hàm khi runtime thay vì compile time.
- event cho phép xác định một delegate sẽ được gọi khi có sự xuất hiện của “sự kiện” nào
đó. event là một modifier trong khi delegate là một lớp. event cho phép một delegate được
khai báo trong interface.



12. AppDomain là gì?
- Là một miền riêng biệt lưu trữ code và dữ liệu cho một application. Một process có thể
chứa nhiều AppDomains. Khi bạn copy một DLL mới vào bin, ASP.NET runtime sẽ không
thể đưa nó vào một AppDomain đang chạy.Nó sẽ dừng từ từ AppDomain cũ (dừng hẳn khi
nó dừng tất cả các requests) và mở một AppDomain mới.
13. Sự khác nhau giữa Procedure và OO?
- Procedure gồm các hàm và các biến, tất cả các hàm đều có thể truy cập đến tất cả các biến.
Không thể quản lý các biến.
- OO gom hàm và biến vào các đơn vị object. Các hàm và biến được quản lý trong nội bộ
object. Các object tương tác với nhau thông qua các interfaces.
14. Các mâu thuẫn giữa OO và RDBMS?
- Cấu trúc cấp bậc trong OO có thể là vô tận trong khi ở RDBMS chỉ có 4 loại table, row,
column, cell.
- Các đối tượng trong OO bản thân là phân biệt trong khi trong RDBMS cần phải có primarykey.
- Các đối tượng trong OO có thể tham chiếu đến nhau rất đơn giản nhưng trong RDBMS thì
phức tạp thông qua JOIN
- Sự thừa kế trong OO là đơn giản trong khi trong RDBMS hầu như không có khái niệm đó.
Một bảng cần chứa tất cả các tính chất, có khi là thừa.
- Các đối tượng trong OO có thể có các hành động tác động đến tối tương khác.trong RDBMS
thì phức tạp thông qua TRIGGER
- Khả năng truy cập trong OO là hạn chế trong khi ở RDBMS là không giới hạn.
15. Sự khác nhau giữa Cohesion và Coupling
- Cohesion là sự liên kết giữa các thành phần trong một module. Một thiết kế tốt nên có sự
liên kết giữa các thành phần thật chặt chẽ.
- Coupling là sự kết nối giữa các module với nhau. Một thiết kế tốt nên có sự kết nối thật
lỏng lẽo giữa các module.
→Hy vọng với những chia sẻ trên, các bạn sẽ có những chuẩn bị tốt hơn trong quá trình đi
phỏng vấn xin việc.
Nguồn: Stanford - Dạy kinh nghiệm lập trình




×