שאלות הזויות שנשאלתי לאחרונה

zalomon

New member
מסכים

"המפתחים" של איזה JVM? Sun JDK? IBM SDK? OpenJDK? Harmony? אפשר לממש synchronized עם mutex ואפשר עם semaphore מכל סוג שהוא.
 

user32

Well-known member
מנהל
עכשיו אני מבין למה שאלו גם על זה

שאלו גם איזה מימושי JVM אני מכיר, האם אני מכיר את ההבדלים בינהם ומימושים על מערכות הפעלה שונות. חוץ מניים דרופינג לא יכולתי לספק עוד פרטים...
 

sudoer

New member
יש הרבה יותר מ synchronized ומוניטורים

ויש לי הרגשה שלקחתי את הקורס הזה או דומה לו בעבודה (לא קורס אקדמי). אני לא בדיוק תכניתן ג'אווה "קלאסי" אבל כן יוצא לי לתכנת גם בג'אווה ולבדוק ג'אווה ולדעתי השאלות ששאלו אותך מאוד רלוונטיות ויכולות לתת לך יתרון על פני "עוד תכניתן ג'אווה". אם מדברים קצת על ריבוי נימים וקטעים קריטיים אני מזמין אותך להתעניין בהשוואות שונות, למשל java.util.concurrent.atomic, futex vs. mutex, volatile וכד'. יש בהחלט חשיבות לבחירה נבונה ולהיכרות עם הבחירות שנעשו ברמת JVM כדי לשפר ביצועים על מנת לממש קוד נכון ולבחור בנעילות הכי זולות והכי מתאימות (אם צריך). כשאתה חושב על דקה או שתיים אולי זה נראה זניח, אבל כשאתה מדבר על שרתים שאמורים להחזיק מעמד חודשים ואף שנים באוויר בלי בעיות ועם תגובתיות טובה (ובלי stop-the-world full gc, אם כבר מדברים על הרעות החולות של ג'אווה) הדברים נראים אחרת לגמרי. אם אתה מבצע מיליון נעילות ליחידת זמן וכל נעילה תעלה לך עשירית מהזמן או שתגלה שתוכל לעשות משהו בלי ממש לנעול יש לזה בהחלט חשיבות והשפעה על היכולות של הקוד שלך.
 

user32

Well-known member
מנהל
אכן, מעטים מכירים את זה וחבל

volatile זה משהו שהרבה לא מכירים או מתעלמים. כנ"ל לגבי הקלאסים האטומיים. שאלו גם על זה בראיון, מזל שהעברתי את הקורס לפני כמה שנים
 

zaske

New member
קורס?:)

נראה לי אתה מסתלבט :) על איזה קורס אתה מדבר?
 

sudoer

New member
לא מסתלבט :)

יש כל מיני חברות הדרכה בארץ שישמחו להדריך בתשלום קורסים של כמה ימים על כל מיני טכנולוגיות ספציפיות, בין השאר JAVA, גם ל"מתקדמים". מעבר לכך, יש מקומות עבודה בהן מתקיימים גם קורסים פנימיים.
 

user32

Well-known member
מנהל
אקסטרים ג'אווה

יש את זה בכל מרכזי ההכשרה וזה אחד מ2 הקורסים המבוקשים ביותר בקרב חברות ההי-טק (אלה שעושות קורס צ'ופר/העשרה לעובדים). השני אגב, זה דיזיין פטרנס. לומדים שם דברים כמו ניהול זיכרון, בדיוק הטיפים שהזכרת מקודם, אופן פעולת הGC, וJVM טיונינג, multi threading מתקדם, class loaders וbyte code manipulation ועוד. כמה מתכנתי ג'אווה למשל יודעים מה זה WeakReference וSoftReference? אז גם זה יש בקורס...
 

zalomon

New member
דרך אגב, להעלות WeakReferece

או PhantomReference בהקשר של השאלות ששאלו אותך זה דבר מאוד מוצלח, שכן הם מתמודדים, בין השאר, בדיוק עם הבעייה שתיארו בפניך.
 

zaske

New member
בוא נתחיל יותר בbasics

שיפסיקו לעשות new לאובייקטי stateless (לדוגמא). אני לא אומר שלא צריך להגיע לרמות המתקדמות שדיברת עליהן, אבל אפשר במעבר על הקוד (או code review קפדני) למצוא רעות חולות "יותר פשוטות" :)
 

guyadini

New member
מעניין...

עכשיו אני צריך לבדוק מי מכם צודק בסביבה שלי (אני לא מתכנת בריבוי נימים באופן רגיל, וחבל). תודה לעונים.
 
למעלה