سوالات مصاحبه C Sharp

#C یک زبان شی گرا ، ایمن و Managed است که توسط .Net framework برای تولید یک زبان میانی کامپایل می شود.

'#C چیست؟                                                                                                                                                                ','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

متغیرها یا متدهای public در هر نقطه از برنامه قابل دسترسی است. متغیرها یا متدهای static در سطح برنامه بدون ایجاد نمونه ای از کلاس در دسترس هستند و void یک modifier نوع است که بیان می کند که متد یا متغیر هیچ مقداری بر نمی گرداند.

'تفاوت بین public ، static و void چیست؟','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

یک سازنده یک متد هم نام با نام کلاس و بدون مقدار بازگشتی است. هر زمان که شی ای از یک کلاس ایجاد شود ، سازنده آن به طور خودکار فراخوانی می شود و فیلدهای کلاس را مقداردهی اولیه میکند یا منطقی را پیاده سازی میکند. در صورتی که هیچ سازنده ای در کلاس تعریف نشده باشد #C از یک سازنده پیش فرض که پارامتر ورودی ندارد استفاده می کند. در یک کلاس می توان چندین سازنده با overload های مختلف داشت.

'constructor یا سازنده چیست؟                   ','سوالات مصاحبه C Sharp'

public class Person
{
   private string last;
   private string first;

   public Person(string lastName, string firstName)
   {
      last = lastName;
      first = firstName;
   }

   // Remaining implementation of Person class.
}
این سوال از من پرسیده شده است  + 

method overloading مکانیزمی برای ایجاد چندین متد با یک نام و امضای منحصر به فرد در یک کلاس است. با تغییر تعداد، تغییر ترتیب و تغییر نوع ورودی ها میتوان overload های مختلفی از متدهای هم نام ایجاد کرد.

'overloading در #C چیست؟                           ','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

بله، میتوان چندین بلوک catch متوالی ایجاد کرد که هر کدام در جواب به exception خاصی اجرا شوند. مثلا میتوان دو بلوک catch داشت که اولی در زمان ایجاد خطای تقسیم بر صفر اجرا گردد (DevideByZeroException) و دیگری در زمانی که سعی داریم در یک آرایه یا لیست به یک ایندکس خارج از محدوده دسترسی پیدا کنیم (IndexOutOfRangeException).

'آیا میتوان چندین بلوک catch داشت؟','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

آرایه مجموعه ای از نمونه های مربوط به هم از نوع value و یا reference است. سه نوع آرایه توسط C#پشتیبانی می شود: آرایه تک بعدی: شامل یک ردیف است. همچنین به عنوان آرایه برداری معروف است. آرایه چند بعدی: مستطیلی است و شامل سطرها و ستون ها است. آرایه ناهموار(Jagged): شامل سطرها و ستونها است اما شکل نامنظمی دارد.

'آرایه چیست؟                                       ','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

آرایه ای که دارای عناصری از نوع آرایه باشد ، آرایه Jagged نامیده می شود. عناصر می توانند در ابعاد و اندازه های مختلف باشند. ما همچنین می توانیم آرایه Jagged را به عنوان آرایه ای از آرایه ها بنامیم.

'Jagged Arrays چیست؟                ','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

ArrayList یک آرایه پویا است. در زمان اجرا می توانید عناصر را از ArrayList اضافه و حذف کنید. در ArrayList ، عناصر به طور خودکار مرتب نمی شوند.

'ArrayList چیست؟             ','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

در یک آرایه ، ما می توانیم مواردی از نوع یکسان را داشته باشیم. اندازه آرایه همواره ثابت است. arraylist شبیه به یک آرایه است اما اندازه ثابتی ندارد.

'تفاوت بین Array و Arraylist چیست؟','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

Interface یک کلاس انتزاعی است که فقط متدهای انتزاعی عمومی دارد. این متدها فقط اعلان دارند نه تعریف. این متدهای انتزاعی باید در کلاسهای فرزند پیاده سازی شوند. یک از دلایل استفاده از Interface امکان پیاده سازی وراثت چندگانه است. یعنی میتوان از چند Interface به طور همزمان ارث بری کرد ولی در مقابل شما میتوانید فقط از یک کلاس ارث بری کنید.

'Interface چیست؟                    ','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

Lock برای اطمینان از این مساله استفاده میشود که یک Thread در بخش حساس کد وارد نمی شود، در حالی که Therad دیگر در بخش بحرانی قرار دارد. اگر Therad دیگری سعی کند که وارد کد قفل شده شود، منتظر می ماند ، مسدود می شود، تا شیء آزاد شود.

'Lock  در #C چه کاری را انجام می دهد؟','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

به فرآیند تبدیل یک شی به آرایه ای از بایت ها جهت ارسال از طریق شبکه، سریال سازی می گویند و به فرایندی که در مقصد عمل عکس را انجام می دهد، یعنی تبدیل آرایه ای از بایت ها به شی، Deserialization می گویند.

'Serlialization و Deserialization چیست؟             ','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

موارد زیر modifier های دسترسی هستند که عموماً برای دسترسی استفاده می شوند: - public: اگر یک attribute یا متد را public تعریف کنید ، می توانید از هر جای کد پروژه به آن دسترسی داشته باشید. - private: به attribute یا متد تعریف شده خصوصی تنها می توان در داخل کلاس فعلی دسترسی داشت. - protected: اگر متد یا attribute را protected تعریف کنید ، می توانید از هر متدی در کلاسهای فرزند و هر متدی در همان کلاس به آن ها دسترسی داشته باشید. - internal: اگر یک ویژگی یا متدی را به عنوان internal تعریف کنید ، به کلاسهای موجود در assembly پروژه فعلی محدود می شود. - protected internal: اگر یک attribute یا متدی را به عنوان protected internal تعریف کنید ، دسترسی به کلاسهای موجود در assembly پروژه فعلی یا انواع مشتق شده از کلاس فعلی آن محدود می شود.

'modifier های دسترسی کدامند؟         ','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

کلاس abstarct به غیر از متدهای abstract متدهای پیاده سازی شده نیز دارد ولی interface فقط شامل متدهای abstract میباشد. در interface همه متدها از نوع public هستند ولی در کلاس abstract میتوان متدهای private نیز داشت..

'تفاوت بین کلاس abstract  و interface چیست؟','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

پارامترهای متد در overloading متفاوت ولی در overloading یکسان است. وراثت در overloading مورد نیاز نیست و در داخل یک کلاس overload های مختلف یک متد تعریف میشود ولی در overriding وراثت لازم است. یعنی کلاس فرزند میتواند متد تعریف شده در کلاس والد را override کند.

'تفاوت بین method overloading  و method overriding  در چیست؟','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

Delegate نوعی است که به متدهایی با پارامتر ها و نوع بازگشتی مشابه با اعلان خود رفرنس می دهد. یعنی هنگامی که یک Delegate را نمونه سازی می کنید، می توانید نمونه آن را با هر متد سازگاری مرتبط کنید. می توانید متد را از طریق نمونه delegate فراخوانی کنید. Delegates برای انتقال متدها به عنوان آرگومان به متدهای دیگر استفاده می شود. Event handlersها چیزی نیستند جز متدهایی که از طریق Delegate ها فراخوانی می شوند. شما یک متد سفارشی ایجاد می‌کنید و کلاسی مانند windows control می‌تواند زمانی که رویداد خاصی رخ می‌دهد، متد شما را فراخوانی کند. هر متدی از هر کلاس یا struct قابل دسترسی که با نوع Delegate مطابقت داشته باشد را می توان به آن اختصاص داد. این متد می تواند استاتیک باشد یا از طریق ایجاد نمونه قابل دسترسی باشد. مثال زیر روش اعلان یک Delegate و استفاده از آن را نشان می دهد:

'delegate در #C چیست؟               ','سوالات مصاحبه C Sharp'

public delegate void Del(string message);


// Create a method for a delegate.
public static void DelegateMethod1(string message)
{
    Console.WriteLine(message);
}

// Create another method for a delegate.
public static void DelegateMethod2(string name)
{
    Console.WriteLine("Hello"+name);
}

//  Instantiate the delegate with method1.
Del handler = DelegateMethod1;

// Call the delegate.
handler("Hello World");


//  Instantiate the delegate with method2.
Del handler = DelegateMethod2;

// Call the delegate.
handler("Ali");


Output:
Hello World
Hello Ali
این سوال از من پرسیده شده است  + 

یک آرگومان که به عنوان ref ارسال می شود باید قبل از انتقال به متد مقداردهی شود در حالی که پارامتر out قبل از انتقال به متد نیازی به مقداردهی اولیه ندارد.

'تفاوت بین پارامترهای ref و out چیست؟','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

در #C مدیریت حافظه به صورت خودکار توسط Garbage Collector انجام میگیرد، ولی با استفاده از بلوک کد using برنامه نویس میتواند به طور صریح کار تخصیص حافظه به اشیا و آزادسازی آن را انجام دهد. دستور using در واقع مرزی را برای استفاده از یک شی ایجاد میکند که خارج از آن آن شی به طور خودکار از بین می رود. برای فهم بهتر موضوع به مثال زیر دقت کنید. در این مثال شیئی به نام mnObj ایجاد شده است که در داخل بلوک کد using مورد استفاده قرار میگیرد. زمانی که به انتهای بلوک رسیدیم این شی از بین میرود و خارج از بلوک قابل استفاده نیست.

'دلیل استفاده از عبارت "using" در #C چیست؟','سوالات مصاحبه C Sharp'

.......  
using (MyManagedClass mnObj = new MyManagedClass())  
{  
......  
mnObj.Use(); //use the mnObj object  
......  
} //The compiler will dispose the mnObj object now  
......  
این سوال از من پرسیده شده است  + 

ما نمی توانیم از "this" در یک متد استاتیک استفاده کنیم زیرا فقط می توانیم از متغیرها/متدهای استاتیک در یک متد استاتیک استفاده کنیم.

'آیا می توانیم از دستور "this" در یک متد استاتیک استفاده کنیم؟','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

متغیرهای const فقط در زمان کامپایل اعلان و مقداردهی اولیه میشوند و بعد از آن مقدارشان قابل تغییر نیست. در حالی که متغیرهای read-only در زمان اجرا مقدار میگیرند.

'تفاوت بین const و read-only چیست؟','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

مقدار متغییرهای Value Type در حافظه Stackذخیره میشود، مثل متغییرهای نوع int، ولی متغییر Reference Type حاوی یک اشاره گر یا آدرس به یک مکان حافظه در حافظه Heap است که مقدار متغییر در آن قرار گرفته است.

'تفاوت بین Value Type و Reference Type چیست؟','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

کلاس sealed کلاسی است که امکان وراثت از آن وجود ندارد. یعنی فرزندی ندارد.

'کلاس sealed چه نوع کلاسی است؟','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

System.String تغییر ناپذیر است. وقتی مقدار یک متغیر رشته ای از نوع System.String را تغییر می دهیم ، یک حافظه جدید به مقدار جدید اختصاص داده می شود و تخصیص حافظه قبلی آزاد می شود. System.StringBuilder به گونه ای طراحی شده است که دارای یک رشته متغیر باشد که در آن می توان عملیات مختلفی را بدون تخصیص مکان جداگانه حافظه برای رشته اصلاح شده انجام داد.

'تفاوت بین کلاس های System.String و System.Text.StringBuilder چیست؟','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

با استفاده از روش Clone ، یک آرایه جدید شامل همه عناصر موجود در آرایه اصلی ایجاد می کنیم. اما با استفاده از روش CopyTo، همه عناصر آرایه موجود در آرایه موجود دیگری کپی می شوند. هر دو روش یک کپی سطحی را انجام می دهند.

'تفاوت بین ()System.Array.CopyTo و ()System.Array.Clone چیست؟','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

جنریک ها کلاس های قابل استفاده مجددی هستند که نوع داده ای فیلدها، پارمترها و یا مقدار برگشتی متدها آنها در زمان استفاده تعیین میشود. بنابراین آنها از تولید کد اضافه جلوگیری میکنند. یک کلاس جنریک به وسیله براکت های زاویه ای <> تعریف شود. برای مثال List یک کلاس جنریک است که می تواند هر نوع داده ای را بگیرد.

'generic ها را در #C توضیح دهید.','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

ArgumentException, ArgumentNullException, ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException ,OverflowException, IndexOutOfRangeException, InvalidCastException, InvalidOperationException, IOEndOfStreamException , NullReferenceException, OutOfMemoryException, StackOverflowException.

'
انواع exception های رایج مورد استفاده در #C را فهرست کنید','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

کلاس را به صورت public تعریف کنید ولی متد را sealed تعریف کنید تا از override شدنش جلوگیری شود.

'چگونه می توانیم در یک کلاس با قابل ارث بری از آن، از override شدن متد جلوگیری کنیم؟','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

struct ها از نوع value-type هستند ولی کلاس ها از نوع reference-type هستند. struct ها روی حافظه Stack ذخیره می شوندکه باعث سربار اضافی میشود اما بازیابی سریعتر می شود. struct ها را نمی توان به ارث برد.

'تفاوت بین Struct و Class چیست؟','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

عملگر "is" برای بررسی یکی بودن نوع یک شی با یک نوع مشخص استفاده می شود و نتیجه را به صورت Boolean برمی گرداند. در حالی که عملگر "as" برای تبدیل نوع یک شیء به یک نوع یا کلاس دیگر استفاده می شود.

'تفاوت بین عملگرهای "is" و "as" در #C چیست؟','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

میتوانیم از طریق سازنده(Constructor) کلاس پدر به فیلدهای خصوصی آن دسترسی پیدا کرده و به آنها مقدار دهیم. به مثال زیر توجه کنید. در این مثال دو کلاس با نام های A و B وجود دارند که کلاس B فرزند کلاس A است و هر یک دارای یک فیلد خصوصی هستند. برای دسترسی به فیلد private_field_A از طریق سازنده کلاس B ، از دستور base با یک پارامتر ورودی استفاده میکنیم. با این روش ابتدا سازنده کلاس پدر فراخوانی شده و فیلد private_field_A مقدار value1 را می گیرد، سپس مقدار value2 به private_field_B تخصیص می یابد.

'چگونه میتوان از طریق کلاس فرزند به فیلدهای خصوصی(private) کلاس پدر دسترسی پیدا کرد؟','سوالات مصاحبه C Sharp'

public class A
{
	private int private_field_A;
	public A(int value)
	{
		private_field= value;
	}
}

public class B:A
{
	private int private_field_B;
	public B(int value1,int value2):base(value1)
	{
		private_field_B=value2;
	}
}
این سوال از من پرسیده شده است  + 

برای اینکه بتوانیم متدی از کلاس پدر را در کلاس فرزند بازنویسی (override) کنیم ابتدا باید متد پایه در کلاس پدر virtual و یا abstract باشد. سپس باید جهت بازنویسی آن متد در کلاس فرزند در کنار نام متد از کلمه override استفاده کنیم. در زمان بازنویسی متدها در نظر داشته باشید که: - ساختار متد بازنویسی شده مانند تعداد پارامترها و نوع مقدار بازگشتی باید با متد پایه یکسان باشد. - شما نمیتوانید Access Modifier متد پایه را در متد بازنویسی شده تغییر دهید. مثلا نمیتوانید آن را از public به private تغییر دهید. - شما نمیتوانید یک متد ایستا (static) را بازنویسی کنید. به مثال زیر توجه کنید:

'روش بازنویسی(override) یک متد از کلاس پدر از طریق کلاس فرزند را با ذکر مثال توضیح دهید.','سوالات مصاحبه C Sharp'

abstract class Shape
{
    public abstract int GetArea();
}

class Square : Shape
{
    private int _side;

    public Square(int n) => _side = n;

    // GetArea method is required to avoid a compile-time error.
    public override int GetArea() => _side * _side;

    static void Main()
    {
        var sq = new Square(12);
        Console.WriteLine($"Area of the square = {sq.GetArea()}");
    }
}
// Output: Area of the square = 144}
این سوال از من پرسیده شده است  + 

در سی شارپ از فضاهای نام برای مرتب کردن و سازماندهی منطقی کلاس ها، structها، interface ها، enumها و delegateها استفاده می شود. فضاهای نام در سی شارپ می توانند تودرتو باشند. این بدان معناست که یک فضای نام می تواند شامل فضاهای نام دیگری نیز باشد.

'فضاهای نام (Namespaces) در #C چه کاربردی دارند؟','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 

زمانی که بخواهیم تنها یک نمونه از یک کلاس ایجاد شود، از این Design Pattern استفاده میکنیم. هر تلاشی که برای ساختن نمونه های جدید انجام شود به سادگی به نمونه قبلی رفرنس داده میشود.

'دیزاین پترن Singleton  را توضیح دهید.','سوالات مصاحبه C Sharp'

public sealed class SingletonClass {  
    private SingletonClass() {}  
    private static SingletonClass instance = null;  
    public static SingletonClass Instance {  
        get {  
            if (instance == null) {  
                instance = new SingletonClass();  
            }  
            return instance;  
        }  
    }  
}  
این سوال از من پرسیده شده است  + 

فرایند تبدیل نوع یک مقدار از value-type (بر روی حافظه Stack) به reference-type (بر روی حافظه Heap ) را Boxing و عکس این عمل را Unboxing می نامند. مثال:

'تفاوت بین Boxing و Unboxing را توضیح دهید.','سوالات مصاحبه C Sharp'

int a=42;
object b=a; // Boxing
int c=(int)b;// Unboxing
این سوال از من پرسیده شده است  + 

خطاها در #C عموما بر دو نوع اند: 1) Run-time Errors: انواع Exceptionها که در زمان اجرای برنامه رخ میدهند و اجرای برنامه را متوقف میکنند، مانند خطای تقسیم بر صفر. 2) Compile-time Errors: مانند خطاهای نحوی (ُSyntax Errors)

'انواع خطاها در #C را نام ببرید.','سوالات مصاحبه C Sharp'

این سوال از من پرسیده شده است  + 




افزودن سوال مصاحبه C Sharp


سوالی هست که اینجا نمیبینیش و از نظر تو مهمه؟ خودت سوالی داری که دنبال جوابشی؟ جواب بهتری واسه یکی از سوالای بالا داری؟ پس واسمون بفرست.


این مباحث هم مرتبط اند:

SQL


primary key چیست؟
Unique Key چیست؟
Foreign Key چیست؟
Join چیست؟

برو به همه سوالات

NET.


چه تفاوتی بین public ، static ...
Net. چیست؟
مزایای استفاده از NET. چیست؟
تفاوت بین Reference Type و Val...

برو به همه سوالات

WPF


WPF چیست؟
انواع اسناد پشتیبانی شده توسط ...
فضای نام مورد نیاز برای کار با...
آیا درست است که بگوییم WPF جای...

برو به همه سوالات
مصاحبه یار