JavaRush /בלוג Java /Random-HE /שאלות ג'אווה מסובכות שנשאלות לעתים קרובות בראיונות

שאלות ג'אווה מסובכות שנשאלות לעתים קרובות בראיונות

פורסם בקבוצה
אם אי פעם התכוננתם לראיון לתפקיד מתכנת ג'אווה או ניגשתם למבחן כלשהו (לאו דווקא בתכנות) כדי לקבל תעודה, אז סביר להניח שכבר שמתם לב שהשאלות שהם שואלים מאוד ספציפיות. רבים מהם גורמים לך לחשוב על הארכיטקטורה של השפה, חלקם מיועדים לידע מעמיק. יש גם כאלה שדומים יותר לחידות או נוגעות לניואנסים שקשה מאוד להרגיש בלי תרגול. במאמר זה, המפתח Saraans Singh מספק מספר שאלות Java כאלה. עם תשובות כמובן. שאלות ג'אווה מסובכות שנשאלות לעתים קרובות בראיונות - 11. מה קורה אם תשים משפט return או System.exit() בבלוק try/catch? זוהי שאלת "להדביק" מאוד פופולרית בג'אווה. הטריק שלו הוא שמתכנתים רבים מאמינים שהבלוק finallyיבוצע בכל מקרה. שאלה זו מאתגרת את המושג הזה על ידי הצבת משפט returnבבלוק try/catchאו קריאה מבלוק try/catchמשפט System.exit (). התשובה לשאלה המסובכת הזו: הבלוק finallyיתבצע כאשר הצהרה מוצבת returnבבלוק try/catch, ולא יתבצע כאשר נקרא מבלוק try/catchהצהרה System.exit (). 2. האם Java תומך בירושה מרובה? זו שאלה מאוד מסובכת. מראיינים אומרים לעתים קרובות: אם C++ יכול לתמוך בירושה ישירה מרובה, מדוע Java לא יכולה? התשובה קצת יותר מסובכת ממה שזה נראה, מכיוון ש-Java תומכת בירושה מסוגים מרובים, מכיוון שממשק בו יכול להרחיב ממשקים אחרים. אבל שפת Java אינה תומכת בהורשה מרובה של יישומים. 3. במקרה שבו מתודה זורקת חריגה NullPointerExceptionבמחלקת האב, האם ניתן לעקוף אותה על ידי המתודה שזורקת RuntimeException? שאלה מסובכת נוספת קשורה למושגים של עומס יתר ועקיפה. תשובה: אתה יכול בבטחה לזרוק חריג מחלקה אב בשיטה שנדחקה NullPointerException – RuntimeException, אבל אתה לא יכול לעשות את אותו הדבר עם חריג מסומן מסוג Exception. 4. כיצד להבטיח ששרשורים יכולים לגשת למשאבים ללא תקלה? NN אם אתה לא ממש טוב בכתיבת קוד מרובה חוטים, השאלה הזו תהיה ממש מסובכת עבורך. זה יכול להיות מאתגר אפילו למתכנת מנוסה שלא התמודד עם מבוי סתום ותנאי מירוץ. הטריק כאן הוא בסדר: ניתן למנוע מבוי סתום על ידי שחרור משאבים בסדר הפוך שבו הם נרכשו. 5. מה ההבדל בין מחלקות StringBufferלשפת StringBuilderג'אווה? שאלה קלאסית על שפת Java, שנחשבת מסובכת על ידי מפתחים מסוימים ופשוטה מאוד על ידי אחרים. המחלקה StringBuilderהוצגה ב-JDK 1.5 וההבדל היחיד ביניהן הוא שהשיטות של המחלקה StringBuffer, למשל, length()או capacity(), append()מסונכרנות, בעוד שהשיטות המקבילות של המחלקה StringBuilderאינן. בגלל ההבדל הבסיסי הזה, שרשור מחרוזות StringBuilderמהיר יותר עם StringBuffer. למעשה, StringBufferלא מומלץ להשתמש, שכן ב-99% ממקרי השימוש, שרשור מחרוזות מתבצע על אותו חוט. 6. מה מחזיר הביטוי 1.0/0.0? האם זה יזרוק חריג או יגרום לשגיאת קומפילציה? עוד שאלה מסובכת על הכיתה Double. למרות שמפתחי Java מודעים לסוג הנתונים הפשוטים כפול ול-class Double, בעת ביצוע פעולות נקודה צפה, הם לא מקדישים מספיק תשומת לב ל- Double.INFINITY, NaN, -0.0ולכללים השולטים בחישובים האריתמטיים הקשורים אליהם. התשובה לשאלה זו פשוטה: שום חריג ArithmeticExceptionלא יזרק, הערך יוחזר Double.INFINITY. 7. מה קורה אם מנסים להכניס HashMapאובייקט מפתח לאובייקט מפתח שכבר קיים בו? השאלה המסובכת הזו היא חלק משאלת נפוצה נוספת: איך הם עובדים HashMapבג'אווה? HashMapהוא נושא פופולרי לשאלות מבלבלות ובעייתיות על שפת ג'אווה. התשובה היא שאם תנסה להכניס מחדש מפתח לתוך HashMap, הוא יחליף את הישן מכיוון שהמחלקה HashMapלא מאפשרת שכפול מפתחות. ואותו מפתח פירושו אותו קוד חשיש, כך שהוא יגיע לאותו מקום בקטע ה-hash. מבוסס על חומרים מ-Quora
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION