יום ראשון, 14 בפברואר 2010

שאלות בנושא #C מקבץ מספר 2

  1. האם Assembly.Load הוא הפנייה סטטית או הפנניה דינאמית?
    הפנייה דינאמית קורת בזמן ריצה על ידי קריאה למגוון פונוקציות כגון Assembly.Load ולכן זה הפניה דינאמית.
  2. מה זה assembly qualified name
    assembly qualified name הוא איננו השם של האסמלי אלא זה השם המלא של האסמבלי כולל הגרסא שלו, culture , השם הפנימי שלו וכך נוצרת חתימה ייחודית, לדוגמא:
    System.Xml.XmlDocument, System.Xml, Version=1.3.4400.0,Culture=neutral, PublicKeyToken=b77asfrhgfc934e089"
  3. האם ("assembly.load("foo.dll זו פקודה חוקית
    לא, פונקציה זו צריכה לקבל שם של אסמבלי ולא שם קובץ.
  4. כיצד strongly-named assembly שונה מאחד שהוא לא strongly-named assembly
    strongly-named assembly הוא אסמבלי ש נחתם בעזרת מפתח public/private וניתן לשים אותו ב GAC וכך לשמור על מעקב אחר גרסאות, קוד יותר בטוח.
  5. האם DateTime יכול להיות null
    לא, DateTime הוא משתנה מסוג value type ולכן הוא חייב להישמר ב stack, ניתן לאתחל אותו datateim.mindatetime ולהשתמש בו בצורה הזו במקום ב null.

יום רביעי, 10 בפברואר 2010

שאלות בנושא #C מקבץ מספר 1


  1. מה ההבדל בין srtuct ו class
    קלאס הוא reference types ו קלאס הוא value type ולכן קלאס יכול להיות null ו struct לא.
    מתי שמיצרים קלאס הוא יהיה ב heap ומתי שמיצרים סטראקט הוא יהיה ב stack
    כאשר שולחים לפונקציה קלאס נשלח כהפניה וסטראקט נשלח כ ערך
    בקלאס ניתן לרשום פונקצית אתחול והשמדה ולסטראקט לא
    לקלאס חייבים לעשות new
    קלאסים תומכים בירושה

  2. מה ההבדל בין heap ל stack
    stack הוא משתנה מידע המאפשר לשמור נתונים בזכרון ע"פ שיטת ה LIFO ומאחסן משתנים מסוג value type

    heap הוא אזור מידע בזכרון בו כל המשתנים מסוג referance type שמורים.
    ה stack אחראי על מעקב איפה נמצא כל טרד במהלך ביצוע הקוד, ניתן לחשוב על זה כמעין thread state
  3. מה ההבדל בין thread and process?
    process מריץ thread שזה בעצם הוראה לביצוע פעולה, אותו process יכול להריץ מספר threadים.
    thread מכיל קבוצה של הוראות שה process צריך להריץ.
  4. מה זה Windows service
    Windows service זה משימה שרצה לאורך זמן ולא דורשת התערבות משתמש, ניתן להריץ שרות כזה כאשר המחשב עולה לאחר אתחול, כמשימה מתמשכת או כמשימה שנקראת לפעולה ע"פ דרישה.
  5. מה ההבדל בין EXE and a DLL
    EXE הוא תוכנה שניתן להריץ, DLL זהו קובץ שניתן לטעון ולהריץ ע"י תוכנה, DLL בעצם מכיל קוד שנועד לעבודת התוכנה, בגלל שיש לנו תוכנות שיכולות לשרת מספר תוכנות נהוג לכתוב DLL זהים לתוכנות שונות.
  6. Strong-typing vs Weak-typing
    Strong-typing - בודק את סוג הפרמטר ותקינותו בזמן קימפול לעומתו Weak-typing בודק את המשתנה בזמן ריצה.
  7. מה זה Reflection
    Reflection מאפשר לאוביקטים המכילים בתוכם אסמבלים, מודולים ו types את היכולות להיטען בצורה דינאמית, לבצע השמה לאובייקט אחר ולטעון את התוכן מתוך האוביקט, לבצע הפעלה של פונקציות וכו. נשתמש ב Reflection בעיקר כאשר נרצה לבצע את הדברים הבאים:
  8. מה ההבדל בין xml web services using asmx and net remoting using soap
    1. XML Web services יותר מוגבלים מבחינת מבנה האוביקטים אותם ניתן להעביר, לא ניתן להעביר אוביקטים מורכבים מדי שלא עוברים/עבור סיריליזאציה
    2. remoting הרבה יותר מהיר מעבודה עם webservice כאשר webservice משתמש ב SOAP אשר צורך יותר מידע טקסטואלי להעברה.
    3. XML Web services תומך בפורמט קבוע של WSDL ולכן כל טכנולוגיה שיודעת לקרוא את קובץ ה WSDL ולקבל ולשלוח XML יכול להתמודד עם ה XML Web services של .NET
    4. XML Web services נועד לעבודה בין ארגונים שונים ותומך ב dynamic discovery mechanism או ב advertises
    5. XML Web services איננו דורש שרת אירוח מתוחכם וניתן לארח אותו על שרת IIS רגיל, דרך ה IIS הרגיל ניתן להשתמש בכל שירותי ה WEB הקיימים כגון web farm , session, caching וכו. במקרה של עבודה עם remoting במידה ונרצה לממש דבר כזה זה יהיה ממש ממש קשה.
  9. מה ההבדל בין Late binding and early binding
    בדרך כלל early binding מתבצע בזמן קימפול כמו במקרה של השימוש ב ToString , כאשר Late binding מתבצע לרוב בזמן ריצה בעיקר בשימוש ב reflection


שאלות בנושא asp.net מקבץ מספר 3

  1. איך ניתן לאלץ את כל ה validation control לרוץ
    Page.Validate
  2. איך ניתן לבדוק שכל ה validation control תקינים
    Page.IsValid

שאלות בנושא asp.net מקבץ מספר 2

  1. מה זה dataset ?
    מידע השמור ב cache של השרת.
  2. מה ה namespace בו נמצא dataset
    System.Data
  3. מה ההבדל בין DataSet.Copy לבין DataSet.Clone
    Clone מעתיק רק מבנה, copy מעתיק גם מידע
  4. באיזה אירוע של הדף הקונטרולים נטענו במלואם?
    PAGE LOAD
  5. איך אנו מוודאים שלא נעשה ניסיון לשנות את ה viewstate
    Using the @Page directive and setting ‘EnableViewStateMac’ property to True
  6. מה אומר @Register directive בראש הדף
    מודיע לקומפיילר שישם custom server control בדף.
  7. איך מיצרים custom controls
    ל custom controls ישנה סיומת ascx על מנת ש הדף יוכל להשתמש בזה יש צורך חהוסיף עוד שני דברים:
    <%@ Register tag prefix="Accounting"
  8. למה משמש ה GLOBAL.ASAX
    מאפשר לבצע ארועים ברמת האפליקציה.
  9. מה ההבדל בין “Web.config” and “Machine.Config”
    Web.config - מכיל הגדרות ברמת אתר ה web
    Machine.Config - מכיל הגדרות ברמת המכונה(שרת) עצמה.
  10. מה ההבדל SESSION and APPLICATION
    seesion שומר מידע ספציפי על משתמש במעבר בין בקשות http
    application שומר מידע כללי אפליקטיבי

שאלות בנושא asp.net מקבץ מספר 1

  1. מה תפקידו של inetinfo.exe, aspnet_isapi.dll andaspnet_wp.exe בתהליך טעינת הדף?
    inetinfo.exe מיצג את ה IIS שמריץ בין השאר את הבקשות של ה ASP.NET כאשר מתקבלת בקשת ASP.NET ה ISAPI FILTER - aspnet_isapi.dll מטפל בבקשה ע"י העברתה לתהליך שאמור לטפל ב דף aspnet_wp.exe
  2. מה ההבדל בין Response.Write ולבין Response.Output.Write
    Response.Output.Write מאפשר לנו לרשום טקסט מופרמט
  3. מהם 4 השלבים העיקרים שקורים במהלך עליית דף ASPX
    Init - כאשר הדף נוצר
    Load - כאשר הדף נטען לזיכרון השרת
    PreRender - הזמן הקצר שלפי הפיכת הדף ל HTML עבור המשתמש
    Unload - מתי שהדף סיים את חייו בשרת.
  4. באיזה מהשלבים של טעינת הדף ה ViewState קיים?
    אחרי ה Init ולפני ה Page_Load או אחרי ה Init ולפני הOnLoad במקרה של קונטרול.
  5. מה זה ביעבוע ארועים (bubbled event)
    כאשר אנו רושמים ארועים שונים לכל מיני פקדים זה יכול מיגע. עדיף לרשום את הקוד בצורה כזו שכל פקד מעלה ארוע כלפי ומעלה ולמעלה תהיה פונקציה אחת שתדע להתמודד עם הארועים.
  6. מה זה HTTP Handler
    HTTP Handler הוא תהליך שרץ כתגובה לבקשה שמגיעה מאפליקצית asp.net , כאשר משתמש מבקש דף aspx הבקשה עוברת דרך ה page handler הרלוונטי
  7. מה זה HTTP module
    HTTP module הוא אסמבלי שנקרא כל פעם שפונים לאפליקציה שלך. http מודול נקרא כחלק מתהליך ה הבקשה של asp.net ןיש לו גישה ל למחזור החיים של הבקשה.http module מאפשרים לנו לבדוק ולחקור בקשות נכנסות ויוצאות ולבצע פעולות על סמך בקשות אלו.
  8. איזה interface יש לממש כדי ליצור Custom HTTP Handler
    IHttpHandler עבור סינכרוני
    IHttpAsyncHandler עבור אסינכרוני.
  9. מה ההבדל בין HTTP Handlers סינכרוני ואסינכרוני
    סינכורני לא מחזיר תשובה עד שהוא לא סיים לטפל בבקשת ה http שאותה ביקש.
    אסינכרוני מחזיר ישר תשובה אפילו שהתהליך לא הסתיים, הדבר חשוב כאשר אנו רוצים להחזיר ללקוח תשובה ומהירה ולא לתת לו לחקות עד שהתהליך מסתים.
  10. מה זה HTTP modules
    HTTP modules משמשים לממש מגוון יכולות אפליקטיביות - הזדהות, session, caching וכו
  11. מה ההבדל בין HTTP modules HTTP handlers
    HTTP handlers - מחזיר תגובה לבקשה ע"י התיחסות רק ל שם הקובץ
    HTTP modules - מגיב לכל הבקשות והתגובות,

יום שלישי, 10 בפברואר 2009

What is the difference between const and static readonly?

set to a compile time constant. 

In the static readonly case, the containing class is allowed to modify it only
in the variable declaration (through a variable initializer)
in the static constructor (instance constructors, if it's not static) 

static readonly is typically used if the type of the field is not allowed in a const declaration, or when the value is not known at compile time. 

Instance readonly fields are also allowed.  

Remember that for reference types, in both cases (static and instance) the readonly modifier only prevents you from assigning a new reference to the field. It specifically does not make immutable the object pointed to by the reference.

  class Program

  {

  public static readonly Test test = new Test();

 

  static void Main(string[] args)

  {

  test.Name = "Program";

 

  test = new Test(); // Error: A static readonly field cannot be assigned to (except in a static constructor or a variable initializer)  

 

  }

  }

 

  class Test

  {

  public string Name;

  }

 

On the other hand, if Test were a value type, then assignment to test.Name would be an error.


מהם ה“דורות“ של ה-Garbage collector?

ה-Garbage collector מבוסס על העקרון הבא: כל אובייקט חדש שנוצר מתווסף למה שנקרא “דור 0“. מספר הדור אומר כמה “איסופים“ של ה-Garbage collector הוא “שרד“. “איסוף“ מתייחס לכאשר ה-garbage collector מחליט שצריך לפנות זכרון ובודק אילו אובייקטים יש להשאיר ואיזה אפשר לזרוק. אם ה-garbage collector קובע שהאובייקט צריך להישאר הוא יעביר אותו ל“דור 1“ ובאיסוף הבא ל“דור 2“. אין דורות מעבר לדור 2.