سوالات مصاحبه ASP.NET: قسمت 1 – (10 پرسش و پاسخ)

Summarize this content to 400 words in Persian Lang
1. دات نت فریم ورک چیست؟
دات نت فریم ورک یک پلتفرم توسعه نرم افزار جامع است که توسط مایکروسافت توسعه یافته است.این شامل یک محیط زمان اجرا به نام Common Language Runtime (CLR) و مجموعه ای غنی از کتابخانه های کلاس است. این برنامه از چندین زبان برنامه نویسی مانند C#، VB.NET و F# پشتیبانی می کند و ویژگی هایی مانند مدیریت حافظه، امنیت و مدیریت استثنا را ارائه می دهد.
دات نت فریم ورک در درجه اول برای ایجاد برنامه های کاربردی برای ویندوز استفاده می شود، اما با معرفی .NET Core و .NET 5، می توان از آن برای توسعه برنامه های کاربردی بین پلتفرم نیز استفاده کرد.
2. زمان اجرای زبان مشترک (CLR) چیست؟
Common Language Runtime (CLR) محیط اجرایی ارائه شده توسط .NET Framework است. اجرای برنامه های دات نت را مدیریت می کند، خدماتی مانند مدیریت حافظه، تأیید کد، امنیت، جمع آوری زباله و رسیدگی به استثناء را ارائه می دهد.
یکی از ویژگی های کلیدی CLR کامپایلر Just-In-Time (JIT) است.هنگامی که یک برنامه دات نت اجرا می شود، CLR از کامپایلر JIT برای تبدیل کد زبان میانی (IL) به کد ماشین بومی استفاده می کند. این فرآیند در طول اجرا اتفاق میافتد و بهینهسازی پلتفرم خاص را تضمین میکند.
3. تفاوت انواع Value و انواع مرجع در دات نت را توضیح دهید؟
در دات نت انواع داده به 2 نوع تقسیم می شوند:
انواع ارزش
انواع مرجع
تفاوت اصلی بین آنها در نحوه ذخیره داده های خود و نحوه مدیریت آنها در حافظه نهفته است.
-> Value Types مستقیماً حاوی داده های آنها هستند و در پشته ذخیره می شوند.آنها شامل انواع اولیه مانند :(int/bool/float/double/char/decimal/enum) هستند. هنگامی که یک مقدار به یک متغیر جدید اختصاص داده می شود، یک کپی از مقدار ایجاد می شود، بنابراین، تغییرات ایجاد شده در یک متغیر بر متغیر دیگر تأثیر نمی گذارد.
int x = 10;
int y = x;
y = 20;
// Here x is not effected, x still 10 and y equal 20.
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
-> Reference Types از سوی دیگر، یک مرجع به داده های واقعی ذخیره می شود که در پشته ذخیره می شود. آنها شامل انواعی مانند:(کلاس / رابط / نمایندگی / رشته / آرایه).هنگامی که یک نوع مرجع به یک متغیر جدید اختصاص داده می شود، رابط کپی می شود، نه داده های واقعی. بنابراین تغییرات ایجاد شده در یک متغیر بر متغیر دیگر تأثیر می گذارد، زیرا هر دو به یک داده اشاره می کنند.
class Person {
public string Name {get; set;}
}
Person person1 = new Person {Name = “Resh”};
Person person2 = person1;
person2.Name = “Mezz”;
Console.WriteLine(person1.Name); // output : Mezz;
Console.WriteLine(person2.Name); // output : Mezz;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
درک تفاوت بین انواع ارزش و انواع مرجع برای کارآمد، مدیریت حافظه و بهینه سازی عملکرد در برنامه های NET ضروری است.
> 4. فضای نام System.IO در NET چیست؟
فضای نام System.IO در دات نت بخشی اساسی از چارچوب است که کلاس ها و روش هایی را برای مدیریت عملیات ورودی/خروجی (I/O) فراهم می کند.این عملیات شامل خواندن و نوشتن فایلها، جریان دادهها و ارتباط با دستگاههایی مانند هارد دیسک و اتصالات شبکه است.
فضای نام System.IO شامل کلاسهای مختلفی است که به توسعهدهندگان اجازه میدهد با سیستم فایل تعامل داشته باشند و جریانهای داده را به طور موثر مدیریت کنند. برخی از کلاس های کلیدی عبارتند از:
فایل : روش های ایستا را برای ایجاد، باز کردن، حذف و انتقال فایل ها ارائه می دهد.
دایرکتوری : روش های ایستا را برای ایجاد، جابجایی و شمارش از طریق دایرکتوری ها و زیر شاخه ها ارائه می دهد
FileStream : یک جریان برای یک فایل فراهم می کند که از عملیات خواندن و نوشتن همزمان و ناهمزمان پشتیبانی می کند.
StreamReader و StreamWriter : این کلاس ها برای خواندن و نوشتن به جریان شخصیت ها هستند.
BinaryReader و BinaryWriter : این کلاس ها برای خواندن و نوشتن به جریان های باینری است.
> 5. چگونه مفهوم ویژگی ها ابرداده ها را در دات نت تسهیل می کند؟
ویژگیها در داتنت ساختارهای قدرتمندی هستند که به توسعهدهندگان اجازه میدهند ابرداده—اطلاعات توصیفی اضافی—-به عناصر مختلف کد، مانند کلاسها، متدها، ویژگیها و موارد دیگر اضافه کنند.این ابرداده را می توان در زمان اجرا و با استفاده از بازتاب دسترسی پیدا کرد که امکان برنامه نویسی پویا و انعطاف پذیر را فراهم می کند.
صفات دارای براکت مربع هستند [] و در بالای عناصر کدی که با آنها مرتبط هستند قرار می گیرند. می توان از آنها برای کنترل رفتار، ارائه اطلاعات اضافی یا معرفی عملکرد اضافی استفاده کرد.
[Serializable] public class ExampleClass {//Some code…
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
در مثال بالا، [Serializable] ویژگی برای نشان دادن اینکه کلاس ExampleClass میتواند سریالسازی شود، استفاده میشود، این قابلیت اغلب برای ذخیرهسازی یا انتقال شبکه ضروری است.
علاوه بر استفاده از ویژگی های از پیش تعریف شده مانند Serialization، Compilation، Marshalling و غیره… دات نت اجازه می دهد تا ویژگی های سفارشی را برای رفع نیازهای خاص ایجاد کنید. این ویژگی ها را به بخشی همه کاره و جدایی ناپذیر از دات نت تبدیل می کند و برنامه نویسی اعلامی و خوانایی کد را ارتقا می دهد.
> 6. تفاوت بین فایل exe و dll در دات نت چیست؟
یک فایل exe (قابل اجرا) حاوی نقطه ورود برنامه است و قرار است مستقیماً اجرا شود. این نشان دهنده یک برنامه مستقل است
public class Program {
public static void Main(string[] args) {
//This is the entry level…
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
از سوی دیگر، یک فایل dll (کتابخانه دینامیک-linl) حاوی کد قابل استفاده است که می تواند توسط چندین برنامه ارجاع داده شود و از آن استفاده کند. به اشتراک گذاری کد و توسعه ماژولار اجازه می دهد.
public class Library {
public void SharedMethod () {
//This method can be used across different applications.
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
در زمان اجرا، زبان مشترک Runtime (CLR) کد exe را بارگیری و اجرا می کند و dll مربوطه را در صورت لزوم در حافظه بارگذاری می کند که یک کلاس برای عملکرد dll ساخته شود.
> 7. مفهوم Serialization و Deserialization را در NET توضیح دهید؟
Serialization فرآیند تبدیل یک شی به جریانی از بایت ها برای ذخیره یا انتقال آن است.
Deserialization فرآیند معکوس بازسازی شی از بایت های سریال شده است.
این مکانیسمها به اشیا اجازه میدهند که باقی بمانند، از طریق شبکه منتقل شوند یا بین بخشهای مختلف یک برنامه به اشتراک گذاشته شوند.
> 8. انواع مختلف استثناها در دات نت چیست و چگونه با آنها برخورد می شود؟
انواع مختلفی از استثناها در دات نت وجود دارد که همه آنها از کلاس System.Exception پایه گرفته شده اند. برخی از استثناهای رایج عبارتند از System.ApplicationException، System.NullReferenceException، System.IndexOutOfRangeException، System.DivideByZeroException و موارد دیگر….
در NET استثناها با استفاده از بلوکهای try-catch-finally مدیریت میشوند:
امتحان کنید : بلوک try شامل بخش کدی است که ممکن است یک استثنا ایجاد کند.
گرفتن : بلوک catch برای گرفتن و رسیدگی به استثناها در صورت وقوع استفاده می شود. می توانید چندین بلوک catch برای یک بلوک Try داشته باشید تا انواع استثناهای مختلف را جداگانه مدیریت کنید.
در نهایت : بلوک نهایی اختیاری است و شامل بخش کدی است که بدون توجه به رخ دادن خطایی باید اجرا شود. این به طور کلی حاوی کد پاکسازی است …
try{
int[] arr = {1,2,3}
Console.WriteLine(arr[3]); //This will throw an IndexOutOfRangeException..
}
catch(IndexOutOfRangeException ex){
Console.WriteLine(“Exception : {ex.Message}”)
}
finally{
Console.WriteLine(“This line is always executed wether the exception is thrown or not”);
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
> 9. نقش جهانی شدن و بومی سازی در دات نت چیست؟
Globalizationبه طراحی و توسعه برنامه هایی اشاره دارد که می توانند با فرهنگ ها، زبان ها و مناطق مختلف سازگار شوند.Localization فرآیند سفارشی کردن یک برنامه کاربردی برای یک فرهنگ یا محلی خاص است.
در داتنت، جهانیسازی و بومیسازی از طریق ویژگیهایی مانند فایلهای منبع، ماهواره، و کلاس CultureInfo پشتیبانی میشوند و به برنامهها اجازه میدهند تا تفاوتهای فرهنگی را بومیسازی و مدیریت کنند.
> 10. تفاوت بین IActionResult و ActionResult در دات نت چیست؟
IActionResult رابطی است که نتیجه یک روش عمل را نشان می دهد.این انعطاف پذیری را فراهم می کند زیرا می توانید هر شی که این رابط را پیاده سازی می کند را برگردانید.ActionResult اجرای ملموس IActionResult است. این یک کلاس پایه برای نتایجی مانند ViewResult، JsonResult، RedirectResult و غیره است و ایمنی نوع و عملکرد بیشتری را ارائه میکند.
فعلا همین! به کدنویسی ادامه دهید و عالی بمانید. نردها بعداً شما را بگیرم 👋
1. دات نت فریم ورک چیست؟
دات نت فریم ورک یک پلتفرم توسعه نرم افزار جامع است که توسط مایکروسافت توسعه یافته است.
این شامل یک محیط زمان اجرا به نام Common Language Runtime (CLR) و مجموعه ای غنی از کتابخانه های کلاس است. این برنامه از چندین زبان برنامه نویسی مانند C#، VB.NET و F# پشتیبانی می کند و ویژگی هایی مانند مدیریت حافظه، امنیت و مدیریت استثنا را ارائه می دهد.
دات نت فریم ورک در درجه اول برای ایجاد برنامه های کاربردی برای ویندوز استفاده می شود، اما با معرفی .NET Core و .NET 5، می توان از آن برای توسعه برنامه های کاربردی بین پلتفرم نیز استفاده کرد.
2. زمان اجرای زبان مشترک (CLR) چیست؟
Common Language Runtime (CLR) محیط اجرایی ارائه شده توسط .NET Framework است. اجرای برنامه های دات نت را مدیریت می کند، خدماتی مانند مدیریت حافظه، تأیید کد، امنیت، جمع آوری زباله و رسیدگی به استثناء را ارائه می دهد.
یکی از ویژگی های کلیدی CLR کامپایلر Just-In-Time (JIT) است.
هنگامی که یک برنامه دات نت اجرا می شود، CLR از کامپایلر JIT برای تبدیل کد زبان میانی (IL) به کد ماشین بومی استفاده می کند. این فرآیند در طول اجرا اتفاق میافتد و بهینهسازی پلتفرم خاص را تضمین میکند.
3. تفاوت انواع Value و انواع مرجع در دات نت را توضیح دهید؟
در دات نت انواع داده به 2 نوع تقسیم می شوند:
- انواع ارزش
- انواع مرجع
تفاوت اصلی بین آنها در نحوه ذخیره داده های خود و نحوه مدیریت آنها در حافظه نهفته است.
-> Value Types
مستقیماً حاوی داده های آنها هستند و در پشته ذخیره می شوند.
آنها شامل انواع اولیه مانند :(int/bool/float/double/char/decimal/enum) هستند.
هنگامی که یک مقدار به یک متغیر جدید اختصاص داده می شود، یک کپی از مقدار ایجاد می شود، بنابراین، تغییرات ایجاد شده در یک متغیر بر متغیر دیگر تأثیر نمی گذارد.
int x = 10;
int y = x;
y = 20;
// Here x is not effected, x still 10 and y equal 20.
-> Reference Types
از سوی دیگر، یک مرجع به داده های واقعی ذخیره می شود که در پشته ذخیره می شود. آنها شامل انواعی مانند:
(کلاس / رابط / نمایندگی / رشته / آرایه).
هنگامی که یک نوع مرجع به یک متغیر جدید اختصاص داده می شود، رابط کپی می شود، نه داده های واقعی. بنابراین تغییرات ایجاد شده در یک متغیر بر متغیر دیگر تأثیر می گذارد، زیرا هر دو به یک داده اشاره می کنند.
class Person {
public string Name {get; set;}
}
Person person1 = new Person {Name = "Resh"};
Person person2 = person1;
person2.Name = "Mezz";
Console.WriteLine(person1.Name); // output : Mezz;
Console.WriteLine(person2.Name); // output : Mezz;
درک تفاوت بین انواع ارزش و انواع مرجع برای کارآمد، مدیریت حافظه و بهینه سازی عملکرد در برنامه های NET ضروری است.
> 4. فضای نام System.IO در NET چیست؟
فضای نام System.IO در دات نت بخشی اساسی از چارچوب است که کلاس ها و روش هایی را برای مدیریت عملیات ورودی/خروجی (I/O) فراهم می کند.
این عملیات شامل خواندن و نوشتن فایلها، جریان دادهها و ارتباط با دستگاههایی مانند هارد دیسک و اتصالات شبکه است.
فضای نام System.IO شامل کلاسهای مختلفی است که به توسعهدهندگان اجازه میدهد با سیستم فایل تعامل داشته باشند و جریانهای داده را به طور موثر مدیریت کنند. برخی از کلاس های کلیدی عبارتند از:
فایل : روش های ایستا را برای ایجاد، باز کردن، حذف و انتقال فایل ها ارائه می دهد.
دایرکتوری : روش های ایستا را برای ایجاد، جابجایی و شمارش از طریق دایرکتوری ها و زیر شاخه ها ارائه می دهد
FileStream : یک جریان برای یک فایل فراهم می کند که از عملیات خواندن و نوشتن همزمان و ناهمزمان پشتیبانی می کند.
StreamReader و StreamWriter : این کلاس ها برای خواندن و نوشتن به جریان شخصیت ها هستند.
BinaryReader و BinaryWriter : این کلاس ها برای خواندن و نوشتن به جریان های باینری است.
> 5. چگونه مفهوم ویژگی ها ابرداده ها را در دات نت تسهیل می کند؟
ویژگیها در داتنت ساختارهای قدرتمندی هستند که به توسعهدهندگان اجازه میدهند ابرداده—اطلاعات توصیفی اضافی—-به عناصر مختلف کد، مانند کلاسها، متدها، ویژگیها و موارد دیگر اضافه کنند.
این ابرداده را می توان در زمان اجرا و با استفاده از بازتاب دسترسی پیدا کرد که امکان برنامه نویسی پویا و انعطاف پذیر را فراهم می کند.
صفات دارای براکت مربع هستند [] و در بالای عناصر کدی که با آنها مرتبط هستند قرار می گیرند. می توان از آنها برای کنترل رفتار، ارائه اطلاعات اضافی یا معرفی عملکرد اضافی استفاده کرد.
[Serializable]
public class ExampleClass {
//Some code...
}
در مثال بالا، [Serializable] ویژگی برای نشان دادن اینکه کلاس ExampleClass میتواند سریالسازی شود، استفاده میشود، این قابلیت اغلب برای ذخیرهسازی یا انتقال شبکه ضروری است.
علاوه بر استفاده از ویژگی های از پیش تعریف شده مانند Serialization، Compilation، Marshalling و غیره…
دات نت اجازه می دهد تا ویژگی های سفارشی را برای رفع نیازهای خاص ایجاد کنید. این ویژگی ها را به بخشی همه کاره و جدایی ناپذیر از دات نت تبدیل می کند و برنامه نویسی اعلامی و خوانایی کد را ارتقا می دهد.
> 6. تفاوت بین فایل exe و dll در دات نت چیست؟
یک فایل exe (قابل اجرا) حاوی نقطه ورود برنامه است و قرار است مستقیماً اجرا شود. این نشان دهنده یک برنامه مستقل است
public class Program {
public static void Main(string[] args) {
//This is the entry level...
}
}
از سوی دیگر، یک فایل dll (کتابخانه دینامیک-linl) حاوی کد قابل استفاده است که می تواند توسط چندین برنامه ارجاع داده شود و از آن استفاده کند.
به اشتراک گذاری کد و توسعه ماژولار اجازه می دهد.
public class Library {
public void SharedMethod () {
//This method can be used across different applications.
}
}
در زمان اجرا، زبان مشترک Runtime (CLR) کد exe را بارگیری و اجرا می کند و dll مربوطه را در صورت لزوم در حافظه بارگذاری می کند که یک کلاس برای عملکرد dll ساخته شود.
> 7. مفهوم Serialization و Deserialization را در NET توضیح دهید؟
Serialization
فرآیند تبدیل یک شی به جریانی از بایت ها برای ذخیره یا انتقال آن است.
Deserialization
فرآیند معکوس بازسازی شی از بایت های سریال شده است.
این مکانیسمها به اشیا اجازه میدهند که باقی بمانند، از طریق شبکه منتقل شوند یا بین بخشهای مختلف یک برنامه به اشتراک گذاشته شوند.
> 8. انواع مختلف استثناها در دات نت چیست و چگونه با آنها برخورد می شود؟
انواع مختلفی از استثناها در دات نت وجود دارد که همه آنها از کلاس System.Exception پایه گرفته شده اند. برخی از استثناهای رایج عبارتند از System.ApplicationException، System.NullReferenceException، System.IndexOutOfRangeException، System.DivideByZeroException و موارد دیگر….
در NET استثناها با استفاده از بلوکهای try-catch-finally مدیریت میشوند:
امتحان کنید : بلوک try شامل بخش کدی است که ممکن است یک استثنا ایجاد کند.
گرفتن : بلوک catch برای گرفتن و رسیدگی به استثناها در صورت وقوع استفاده می شود. می توانید چندین بلوک catch برای یک بلوک Try داشته باشید تا انواع استثناهای مختلف را جداگانه مدیریت کنید.
در نهایت : بلوک نهایی اختیاری است و شامل بخش کدی است که بدون توجه به رخ دادن خطایی باید اجرا شود. این به طور کلی حاوی کد پاکسازی است …
try{
int[] arr = {1,2,3}
Console.WriteLine(arr[3]); //This will throw an IndexOutOfRangeException..
}
catch(IndexOutOfRangeException ex){
Console.WriteLine("Exception : {ex.Message}")
}
finally{
Console.WriteLine("This line is always executed wether the exception is thrown or not");
}
> 9. نقش جهانی شدن و بومی سازی در دات نت چیست؟
Globalization
به طراحی و توسعه برنامه هایی اشاره دارد که می توانند با فرهنگ ها، زبان ها و مناطق مختلف سازگار شوند.Localization
فرآیند سفارشی کردن یک برنامه کاربردی برای یک فرهنگ یا محلی خاص است.
در داتنت، جهانیسازی و بومیسازی از طریق ویژگیهایی مانند فایلهای منبع، ماهواره، و کلاس CultureInfo پشتیبانی میشوند و به برنامهها اجازه میدهند تا تفاوتهای فرهنگی را بومیسازی و مدیریت کنند.
> 10. تفاوت بین IActionResult و ActionResult در دات نت چیست؟
IActionResult
رابطی است که نتیجه یک روش عمل را نشان می دهد.
این انعطاف پذیری را فراهم می کند زیرا می توانید هر شی که این رابط را پیاده سازی می کند را برگردانید.ActionResult
اجرای ملموس IActionResult است. این یک کلاس پایه برای نتایجی مانند ViewResult، JsonResult، RedirectResult و غیره است و ایمنی نوع و عملکرد بیشتری را ارائه میکند.
فعلا همین! به کدنویسی ادامه دهید و عالی بمانید. نردها بعداً شما را بگیرم 👋