Hotline: 0909.141.661

Email: plpsoft.vn@gmail.com

Hotline: 0909.141.661 | Email: plpsoft.vn@gmail.com

CÁC CÂU HỎI VỀ C# .NET VÀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG THƯỜNG GẶP

CÁC CÂU HỎI VỀ C# .NET VÀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG THƯỜNG GẶP

CÁC CÂU HỎI VỀ C# .NET VÀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

 

Nếu bạn là một lập trình viên có đam mê với ngôn ngữ C# .Net và đang chuẩn bị ứng tuyển vào một vị trí nào đó của một công ty phần mềm thì hãy đón đọc bài viết này nhé.

Việc chuẩn bị đầu tiên đó là kiến thức căn bản về ngôn ngữ C#, việ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 tức là lập trình hướng đối tượng, nó gồm 4 tính chất (Mỗi tính chất cac bạn phải hiểu và lấy ví dụ được đồng thời các bạn cũng phải nêu ra được tác dụng của nó):

  1. 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 đó.
  2. 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ự.
  3. 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.
  4. 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 cái gì cũng biết nhưng một số điểm các bạn nên biết về Interface và Abstract class hay hiểu biết 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ừ System.Object
  • 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ượng(chuyể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ừ đó chúng ta 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ì ko .

– 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:

  • 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

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: Nên sử dụng override, overload khi nào?

– Sử dụng override khi ở lớp cha có một phương thức thực hiện công việc A, và lớp con khi kế thừa phương thức này nó muốn làm khác đi công việc A đó thì chúng ta sẽ dùng override.

– Sử dụng overload khi chúng ta muốn chỉ sử dụng một tên method cho nhiều xử lý có ý nghĩa tương tự nhau trong cùng một class, để dễ gợi nhớ, tránh trường hợp đặt nhiều tên method khác nhau mà chúng lại có chung xử lý.

Câu 9: 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ập(access modifier) của phương thức được override.

– Có thể mở rộng hoặc thu hẹp phạm vi truy cập(access 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ạy(runtime) (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ịch(compiler) (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.

 

Tin Khác