האם Java טובה למבני נתונים ואלגוריתמים?
כן. היא מילולית יותר מ־Python, אבל המילוליות עוזרת בזמן הלמידה: הטיפוסים הופכים כל צומת, הפניה ופרמטר גנרי למפורשים, והאוספים של הספרייה הסטנדרטית ממופים אחד לאחד למבנים במסלול הזה. היא מהירה מספיק כמעט לכל שופט אוטומטי וכל ראיון, וזו השפה שבה משתמשים קורסים רבים באוניברסיטאות ומבחני השמה בקמפוס.
איזה אוסף של Java מתאים לאיזה מבנה נתונים?
ArrayDeque היא מחסנית או תור, LinkedList היא רשימה מקושרת דו־כיוונית, HashMap ו־HashSet הם טבלאות גיבוב, PriorityQueue היא ערימת מינימום בינארית, ו־TreeMap ו־TreeSet הם עצים אדומים־שחורים, עץ חיפוש בינארי מאוזן כמו עץ ה־AVL שאתם בונים בשלב השני. אין מחלקה לעץ trie או לגרף; אותם כותבים בעצמכם.
להשתמש ב־Stack או ב־ArrayDeque ב־Java?
ArrayDeque. Stack היא מחלקה ישנה שיורשת מ־Vector, ולכן כל קריאה מסונכרנת והיא יורשת מתודות של רשימה שלמחסנית לא אמורות להיות; התיעוד של Java עצמו ממליץ על Deque במקומה. מראיינים שמים לב: Deque<Integer> stack = new ArrayDeque<>(); היא השורה האידיומטית.
Java או C++ ל־DSA?
זו שבה תתראיינו או תתחרו. C++ היא הנורמה בתכנות תחרותי בזכות המהירות וה־STL; Java טובה באותה מידה לראיונות, ואיסוף הזבל שלה אומר שאין ניהול זיכרון ידני בזמן שהאלגוריתמים עדיין חדשים. הרעיונות זהים, ולכן מעבר בהמשך הוא תרגום של תחביר, לא לימוד מחדש.
אילו קורסים במסלול הזה לא נלמדים ב־Java?
שלושה: תכנות דינמי וסדרת הראיונות של Python נלמדים ב־Python, ומניפולציית ביטים ב־C++. הם מופיעים אחרי השלבים, כל אחד עם קישור שפותח אותו בשפה שלו, ושניהם קלים לקריאה מתוך Java: נוסחת נסיגה זהה בכל שפה, ול־Java יש את האופרטורים הביטיים של C++ ועוד את ההזזה הלא מסומנת >>>.
האם צריך לדעת Java לפני שמתחילים את המסלול?
כדאי שתרגישו בנוח עם מחלקות, מתודות, מערכים ולולאות; גנריות עוזרת, ותלמדו אותה בדרך. אם אתם עוד לא שם, קורס Java של Coddy מביא אתכם לשם קודם, בחינם, והמסלול הזה ממשיך מהמקום שבו הוא מסתיים.