תוכן העניינים[להתחבא][הופעה]
- 1. תאר את גולנג.
- 2. אילו יתרונות יש ל-Go על פני שפות אחרות?
- 3. בתכנות גולנג, מה זה fmt?
- 4. מה זה בעצם Go Interfaces?
- 5. מה זה בעצם מילולי מחרוזת?
- 6. כיצד מוגדרות סביבות עבודה ופרמטרים בגולנג?
- 7. תאר את חבילות הגולנג?
- 8. אילו סוגי נתונים נתמכים על ידי Golang?
- 9. למה אתה מתכוון בהצהרת סוג סטטי של משתנה בגולנג?
- 10. בגולנג, מהי הצהרת המשתנה הדינמי?
- 11. כיצד אוכל להשתמש בחבילות מותאמות אישית בשפת התכנות GO?
- 12. מה זה בעצם גורוטינה? איך אפשר לעצור את זה?
- 13. תאר רונה.
- 14. מהו ניב הגו לייצוג מנוסים?
- 15. כיצד נבדק סוג המשתנה בזמן ריצה?
- 16. תאר ערוצי Go.
- 17. הסבר שיטות גולנג.
- 18. מהו בעצם מירוץ נתונים?
- 19. מה זה בעצם גו איסוף זבל?
- 20. תאר את שלבי הבדיקה באמצעות גולנג.
- 21. מה זה בעצם פרוסות בגו?
- 22. מהו בעצם זיכרון ערימה?
- 23. מהן בעצם סגירות פונקציות?
- 24. מה המשמעות של הצהרת הגוטו של גולנג?
- 25. בגולאנג, מה הם Lvalue ו-Rvalue?
- 26. ב-Go, מה הם מבני הלולאה?
- 27. מהן בעצם דפוסי עיצוב?
- 28. מהי חבילת Golang הטובה ביותר לפעולות קבצים פשוטות? באילו חבילות נוספות של Golang נעשה שימוש במניפולציה של קבצים?
- 29. תן הסבר לארכיטקטורה מונחה עצמים של גולנג.
- 30. באילו סוגי המרה תומך גולנג?
- 31. תאר את המטרה והפעולה של קביעת סוג.
- 32. מהו בעצם סוג struct?
- 33. הסבר את מערך הגיבוי של ערך פרוסה.
- 34. האם יש צורך להחזיק גם משתני GOPATH וגם GOROOT, ואם כן, מדוע?
- 35. האם גולנג מאפשר ירושה?
- 36. בגולנג, איך מופיע CGo?
- 37. מהו סוג המצביע בגולנג?
- סיכום
שפת התכנות Go, המכונה לעתים קרובות גולאנג, היא שפת תכנות בקוד פתוח הדומה ל-C אך מיועדת להידור מהיר, מקבילות חלקה ונוחות מפתחים.
שפה זו פותחה והשתמשה על ידי גוגל, אך היא צברה תאוצה בחברות אחרות בשנים האחרונות ככל שהביקוש לתכנות מקביל ברשת גדל.
Golang מקל על מפתחים על ידי מתן קומפילציה אופטימלית לפיתוח מהיר של יישומי תוכנה, מקביליות חלקה יותר, יעילות זמן ריצה משופרת ופחות פגמים.
גולנג הופכת במהירות לשפת תכנות ארגונית פופולרית, עם מספר אפשרויות תעסוקה. מומחי IT רבים, כמו גוגל, אובר ואפל, מעריצים את גולנג בגלל זמן הפיתוח הקצר יותר, קלות הלמידה, זמן הריצה המשופר, איסוף האשפה ויתרונות אחרים.
ככל שחברות רבות יותר משתמשות בגולנג, הצורך במתכנתי גולנג גדל. בשורה התחתונה? לימוד גולנג יספק מספר אפשרויות תעסוקה.
אם אתה רוצה לעבוד כמפתח גולנג, עליך להתכונן כראוי לראיון שלך. לכן ריכזנו את האוסף המקיף הזה של שאלות ראיונות בגולנג.
בפוסט זה נציג שאלות ראיונות בסיסיות עד מתקדמות בגולנג, כדי שתוכלו לעבור את הראיון בקלות.
1. תאר את גולנג.
Go היא רמה גבוהה, למטרות כלליות שפת תכנות שתומך באיסוף אשפה ובתכנות בו-זמנית ומוקלד בצורה מאוד הדוקה וסטטית. יישומי Go נוצרים על ידי שימוש בחבילות, המספקות ניהול תלות יעיל.
בנוסף, הוא מנצל את גישת הקומפילציה ליצירת קבצים בינאריים הניתנים להפעלה מקוד המקור. Go היא שפה פשוטה עם מבנים תחביריים יפים וברורים.
זה מגיע עם קבוצה של ספריות סטנדרטיות חזקות שיכולות לשמש מפתחים כדי לפתור בעיות ללא דרישה לחבילות אחרות.
2. אילו יתרונות יש ל-Go על פני שפות אחרות?
- קוד Go פותח מתוך מחשבה על פרקטיות, בניגוד לשפות אחרות שהחלו כניסויים אינטלקטואליים. כל בחירה בתחביר ובתכונה נעשית מתוך מחשבה על הנוחות של המתכנת.
- מכיוון שאיסוף אשפה אוטומטי פועל במקביל לאפליקציה, זה הרבה יותר יעיל מג'אווה או פייתון.
- מדרגיות ומקיפות הן שתי עדיפות בגולנג.
- גולנג נחשבת בדרך כלל למובנת יותר משפות אחרות מכיוון שיש לה מבנה קוד יחיד וסטנדרטי.
3. בתכנות גולנג, מה זה fmt?
חבילת הפורמט מסומנת בסמל fmt. משתמשים יכולים להשתמש בפונקציונליות זו כדי לעצב טקסט בסיסי, ערכים או כל דבר אחר ולהדפיס אותו.
זה גם מאפשר למשתמשים לקבל קלט מסוף, לכתוב לקובץ עם סופר, ואפילו לבנות הודעות שגיאה מפוארות בהתאמה אישית. חבילה זו עוסקת בעיצוב קלט ופלט.
4. מה זה בעצם Go Interfaces?
הממשקים ב-Go שונים מאלה בשפות אחרות. ממשקי Go הם סוג מיוחד המשמש לביטוי אוסף של חתימת שיטה אחת או יותר.
הממשק נוצר על ידי שימוש במונח "סוג", ואחריו השם וממשק מילת המפתח. ניתן להגדיר את הממשקים כך:
- אוסף של שיטות
- סוּג
5. מה זה בעצם מילולי מחרוזת?
מחרוזת מילולית היא קבוע מחרוזת המופק על ידי שרשור אותיות. מילולי מחרוזת גולמיים ומפורשים הם שני סוגי מילולי המחרוזת. מילוליות של מחרוזות גולמיות מוקפות בסימנים אחוריים (foo) ומכילות תווי UTF-8 לא מפורשים.
מילוליות של מחרוזות מתפרשות הן מחרוזות שנכתבו בתוך מרכאות כפולות וכוללות כל תו מלבד שורה חדשה ומירכאות כפולות לא שלמות.
6. כיצד מוגדרות סביבות עבודה ופרמטרים בגולנג?
ניתן להגדיר סביבות עבודה והגדרות באמצעות JSON, שנמצא בשימוש נרחב בימינו. העובדה ש-JSON כלול בספרייה הסטנדרטית היא היתרון העיקרי שלו.
הספרייה הסטנדרטית מספקת שיטות כתיבה למיועד מבנה נתונים, מה שהופך אותו לקריאה מאוד. חבילת YAML עבור Go היא בחירה נוספת.
7. תאר את חבילות הגולנג?
חבילות הן תיקיות שמכילות חבילות אחרות וקוד המקור שלהן בסביבת העבודה Go. החבילות המקושרות כוללות את כל הקוד, כולל משתנים, פונקציות וסוגים, שנכתבים בקבצי המקור.
כל קובץ מקור הוא חלק מחבילה, וניתן לאחסן חבילות go גם בתוך חבילות.
8. אילו סוגי נתונים נתמכים על ידי Golang?
גולנג עושה שימוש בסוגים הבאים:
- שִׁיטָה
- בוליאני
- מספרי
- מחרוזת
- מצביע
- פונקציה
- מִמְשָׁק
- פרוסה
- מבנה
- מַפָּה
- ערוץ
- מערך
9. למה אתה מתכוון בהצהרת סוג סטטי של משתנה בגולנג?
המהדר יכול להמשיך עם קומפילציה נוספת ללא צורך במידע מקיף על המשתנה הודות להצהרות משתנים מסוג סטטי, המבטיחות לו שיש רק משתנה אחד עם הסוג והשם הנתונים.
הצהרת משתנה חשובה רק במהלך ההידור; המהדר דורש משתנה אמיתי והצהרה בעת החיבור לאפליקציה.
10. בגולנג, מהי הצהרת המשתנה הדינמי?
על המהדר להסביר את סוג המשתנה בסוג דינמי של הצהרת משתנה בהתבסס על הסכום המועבר אליו. כתנאי נדרש, המהדר אינו דורש משתנה כדי לסווג באופן סטטי.
11. כיצד אוכל להשתמש בחבילות מותאמות אישית בשפת התכנות GO?
אם אתה יוצר פרויקט נפרד go get -table עבור הספרייה שלך והוא מיועד רק לשימוש פנימי, אתה יכול לכתוב קוד כזה.
- מקם את ספריית קבצי הספרייה מתחת לספריית הפרויקט שלך.
- עיין בספרייה לפי הנתיב שלה ביחס לשורש סביבת העבודה שמכילה את הפרויקט.
12. מה זה בעצם גורוטינה? איך אפשר לעצור את זה?
גורוטינה היא פונקציה או הליך הפועלים בו זמנית עם גורוטינים אחרים על חוט גורוטינה ייעודי. חוטי Goroutine הם קלים יותר מחוטים רגילים, ורוב יישומי Golang משתמשים באלפי Goroutine במקביל.
ניתן לעצור גורוטינה על ידי העברת לו ערוץ אות. Goroutines יכולים להגיב לאותות רק אם הם מכוונים לבדוק, לכן כלול בדיקות במקומות סבירים כמו החלק העליון של לולאת ה-For.
13. תאר רונה.
ב-Go, רונה הוא סוג מובנה עם השם int32. Unicode CodePoint משמש כרונה ב-Go. לא משנה כמה בתים תופסת נקודת הקוד, זה יכול להיות מיוצג על ידי רונה.
רונים אינם חייבים להיות מסודרים במחרוזת. למרות שאנו יכולים להמיר בין מחרוזת לרונה, הם אינם זהים.
14. מהו ניב הגו לייצוג מנוסים?
שפת התכנות Golang אינה תומכת ישירות ב-enums. ניתן להשתמש ב- Iota וקבועים כדי ליישם מנוסים. ניתן להשתמש בכל אחת מהגישות הבאות כדי ליישם סוג מסופר:
- הצגת סוג מספר שלם חדש
- Iota משמש לציון ערכו.
- על ידי מתן פונקציית מחרוזת לסוג
15. כיצד נבדק סוג המשתנה בזמן ריצה?
מתג הסוג הוא הגישה היעילה ביותר לקביעת סוג המשתנה בזמן אמת. משתנים מוערכים לפי סוג ולא ערך בעת שימוש במתג הסוג.
גם מקרה ברירת מחדל, שמתבצע אם אף אחד מהמקרים אינו נכון וגם מקרה אחד לפחות, המשמש כמשפט מותנה, קיימים בכל Switch. אתה יכול, למשל, לעצב מתג Type שקובע אם ערך הממשק שאני כולל הוא ה-type int או מחרוזת:
16. תאר ערוצי Go.
ערוץ go מאפשר העברת נתונים והעברה בין גורוטינים. ניתן לשלוח נתונים מאותו סוג בערוץ אחד.
Goroutines מסוגלים לשלוח ולקבל נתונים באותו ערוץ בגלל זרימת הנתונים הדו-כיוונית של הערוץ.
17. הסבר שיטות גולנג.
גולנג לא מספקת שיעורים אבל תומכת בשיטות. שיטות אלו זהות לפונקציות, פרט לכך שלשיטות Go יש פרמטר מקלט.
לשיטת Go יש גישה לתכונות המקלט באמצעות פרמטרי המקלט. שיטות Go, הידועות גם כפונקציות מקלט, מסייעות בהצגת רעיון מדויק יותר ומציאותי יותר.
18. מהו בעצם מירוץ נתונים?
איתור הבאגים הנפוץ והקשה ביותר הוא מירוץ נתונים. גישה לא מסונכרנת לזיכרון משותף או ביצוע של מספר גורוטיינים בו-זמנית ללא טיפול נפרד מביא לתקלת מרוץ נתונים.
19. מה זה בעצם גו איסוף זבל?
איסוף אשפה מייעד מחדש אחסון שהוקצה באופן דינמי לתוכנית לשימוש על ידי אובייקטים אחרים. המילה מתייחסת לעתים קרובות להתחדשות אוטומטית של אספן הפסולת לאחסון שגרתי ולא לקוד מפורש (שמסופק על ידי מתכנת) לשחרור בלוקי זיכרון מסוימים.
איסוף אשפה אוטומטי מתחיל לעתים קרובות כאשר כמות ה-RAM הפנוי יורדת מתחת לסף מוגדר מראש או לאחר מספר מוגדר של הקצאות.
ביטול הפריטים שהתוכנה כבר לא דורשת כדי ליצור מקום בזיכרון לאובייקטים דינמיים יותר מכונה "איסוף אשפה".
20. תאר את שלבי הבדיקה באמצעות גולנג.
Golang מספקת בדיקות אוטומטיות של חבילות באמצעות חבילות בדיקה מותאמות אישית. כדי להקים חבילה חדשה, צור קובץ שמסתיים ב-_test.go וכולל פונקציה TestXxx, כאשר Xxx מוחלף בשם התכונה שאתה בודק.
פונקציה הבודקת יכולות כניסה, למשל, תיקרא TestLogin. קובץ חבילת הבדיקה נכלל אז באותה חבילה כמו הקובץ הנבדק.
קובץ הבדיקה ידלג במהלך ביצוע רגיל אך יפעל כאשר תזין את הפקודה go test.
21. מה זה בעצם פרוסות בגו?
Slices הם סוג נתוני Go חשוב המספק ממשק חזק יותר לרצפים מאשר מערכים. פרוסות, בניגוד למערכים, מוקלדות אך ורק בהתאם לאלמנטים שהם מכילים (לא למספר האלמנטים).
כדי לבנות פרוסה ריקה באורך שאינו אפס, השתמש במילת המפתח המובנית "עשה".
22. מהו בעצם זיכרון ערימה?
אנו מאחסנים אובייקטים ומשתנים שנוצרו בצורה דינמית בזיכרון הערימה. כאשר איננו משתמשים יותר באובייקט, אנו בדרך כלל מוחקים את זיכרון הערימה שהוא תפס.
23. מהן בעצם סגירות פונקציות?
סגירות פונקציות הן סוג של ערך פונקציה שיוצר משתנים עם הפניה חיצונית. לפונקציה יש גישה ושליטה על ערכי המשתנים המוזכרים.
כהמחשה, הסגירה המוחזרת על ידי adder() קשורה כל אחת למשתנה סכום שונה.
24. מה המשמעות של הצהרת הגוטו של גולנג?
הצהרת goto מתפקדת כהצהרת קפיצה בגולנג. Goto משמש לספק שליטה תווית מוגדרת על התוכנית.
ניתן להשתמש בו כדי לדלג על חלקי קוד ולעבור ישר להצהרות הדרושות, או שניתן להשתמש בו כדי לחזור על חלק מקוד התוכנית בהינתן נסיבות מסוימות.
25. בגולאנג, מה הם Lvalue ו-Rvalue?
Lvalue:
- זה רומז למקום זיכרון.
- אפשר לשנות את זה.
- זה מציין מזהה משתנה.
- זה עשוי להתרחש משמאל או מימין לאופרטור =.
- בשורה x =20, למשל, x הוא lvalue ו-20 הוא rvalue.
Rvalue:
- זה מסמל ערך קבוע.
- הוא מייצג ערך נתונים המאוחסן בזיכרון.
- זה תמיד מופיע בצד ימין של האופרטור =.
- הביטוי 10 = 20 אינו נכון, למשל, מכיוון שיש ערך rvalue (10) משמאל לאופרטור =.
26. ב-Go, מה הם מבני הלולאה?
יש רק רכיב לולאה אחד ב-Go: לולאת for. לולאת for מורכבת משלושה חלקים המופרדים על ידי נקודה-פסיק:
- הצהרת Init מופעלת לפני שהלולאה מתחילה. לעתים קרובות זוהי הצהרת משתנה המופיעה רק בטווח של לולאת for.
- לפני כל איטרציה, הצהרת התנאי מוערכת כבוליאנית כדי להחליט אם הלולאה צריכה להמשיך.
- הצהרת הפוסט מופעלת בסיום כל איטרציה.
27. מהן בעצם דפוסי עיצוב?
דפוסי עיצוב הם נתחי קוד שניתן לעשות בהם שימוש חוזר כדי להתמודד עם בעיות תוכנה נפוצות. אם אתה משתמש בדפוסי עיצוב, הפרויקטים שלך ייצרו תוכנה מודולרית, ניתנת להרחבה ויעילה יותר. דפוסי עיצוב עוזרים לך להרחיב את האפליקציות שלך ולעבוד עם צוות. דפוסי עיצוב נפוצים כוללים את שיטת המפעל, Singleton, Facade, ו-Decorator.
28. מהי חבילת Golang הטובה ביותר לפעולות קבצים פשוטות? באילו חבילות נוספות של Golang נעשה שימוש במניפולציה של קבצים?
הממשק הבלתי תלוי בפלטפורמה מסופק על ידי חבילת הספרייה הסטנדרטית של OS. בעת אינטראקציה עם קבצים, אנו משתמשים בהם עבור פונקציות מערכת. ממשק מערכת ההפעלה אמור להיות עקבי בכל מערכות ההפעלה.
כתוצאה מכך, האפליקציות שאנו מפתחים פועלות באופן זהה ב-Windows, Linux ו-Mac. חבילות ספריות אחרות של Go כוללות io, ioutil ו-bufio. הם פועלים עם קבצים ומוסיפים פונקציונליות. עם זאת, הם אינם נדרשים עבור פעולות קבצים בסיסיות. אנו דורשים רק את חבילת מערכת ההפעלה.
29. תן הסבר לארכיטקטורה מונחה עצמים של גולנג.
גולנג אינו משתמש בעיצוב אובייקט-כיתה כרגיל תכנות מונחה עצמים עושה. מבני נתונים והתנהגות מורכבים מאוחסנים במקום זאת במבנים ושיטות.
מבנה הוא רק סכמה עם תוכנית לנתונים שמבנה ישא. ניתן להשתמש במבנים כדי לסמל רעיונות מהעולם האמיתי, כגון ספרים, אנשים או מכוניות.
30. באילו סוגי המרה תומך גולנג?
כשמדובר בהקלדה מפורשת, Go היא מאוד בררנית. שום המרת סוג לא מתבצעת באופן אוטומטי. כדי לייעד משתנה מסוג אחד לאחר, המרת סוג חייבת להיעשות במפורש.
31. תאר את המטרה והפעולה של קביעת סוג.
ב-GO, המרת סוג משמשת להמרת טיפוסים שונים. ערך מפורש מהסוג שצוין מופק מערך ממשק על ידי קביעת סוג.
32. מהו בעצם סוג struct?
מבנה מורכב מרשימה של רכיבים בעלי שם הנקרא שדות. יש סוג ושם לכל תחום. דרך נוספת לתפוס מבנה היא כקבוצה של מאפיינים מחוברים. הם מועילים לשילוב נתונים ליצירת רשומות.
33. הסבר את מערך הגיבוי של ערך פרוסה.
כאשר אנו בונים פרוסה, Go מייצרת מערך סודי הנקרא גיבוי או מערך בסיס מאחורי הקלעים, והמשתנה מסוג הפרוסה החדש מתייחס אליו. הפריטים, לא הפרוסה, מאוחסנים במערך הגיבוי.
פרוסות מיושמות ב-Go כמבני נתונים הנקראים כותרות פרוסות, הפועלות כייצוג זמן הריצה של הפרוסה.
34. האם יש צורך להחזיק גם משתני GOPATH וגם GOROOT, ואם כן, מדוע?
בדרך כלל, אין צורך בשתיהן. המשתנה היחיד שיש להגדיר כך שיצביע על עץ החבילה או העצים של Go הוא GOPATH.
GOROOT מתייחס לשורש ספריית הבית של שפת התכנות Go, אולם כמעט בוודאות היא כבר מוגדרת למיקום ההתקנה הנוכחית של Go.
אם ישנן מספר גרסאות של שפת Go באותה מערכת, או אם שפת Go הורדה כחבילה בינארית מהאינטרנט או הועברה ממחשב אחר, יש להגדיר את המשתנה GOROOT.
35. האם גולנג מאפשר ירושה?
ירושה היא מושג בסיסי בתכנות מונחה עצמים המתייחס להעברת המאפיינים של מחלקת העל למחלקה הבסיסית.
מכיוון שגולנג חסר מחלקות, ההורשה מתבצעת באמצעות הטבעת struct ולא ניתן להרחיב מבנים ישירות, עלינו להשתמש ברעיון הקומפוזיציה כדי ליצור אובייקטים חדשים עם המבנה.
36. בגולנג, איך מופיע CGo?
מקובץ מקור של Go עם תכונות מוגדרות, cGo יוצר קבצי Go ו-C שניתן לשרשר אותם לחבילת Go ייחודית. C מתייחס ל"פסאודו-חבילה", שהוא ביטוי אחר שנוצר על ידי cGo כדי להתייחס למרחב השמות של C.
37. מהו סוג המצביע בגולנג?
ייעודים אלפאנומריים או תוויות עבור אזורי זיכרון מסוימים ידועים כמשתנים. סוג משתנה המכונה מצביע מאחסן את כתובת הזיכרון של משתנה אחר.
הכתובת של משתנה מיוצגת על ידי ערך מצביע, או אפס אם המשתנה עדיין לא הוקם. בדיוק כפי שמשתנה מייצג את מיקום הזיכרון של ערך, מצביע מצביע על כתובת זו.
סיכום
המטרה של שפת התכנות Golang הייתה ליצור תוכניות יעילות מהר יותר. חברות החלו להשתמש בגולאנג כשהחלו להבין את האפשרויות המועילות שלו.
Golang הייתה יעילה ביותר בהדלקת העניין של מפתחים, הגדלת השימוש הבסיסי שלהם, וכתוצאה מכך, הזדמנויות עבודה. התשובות לשאלות הנ"ל, שהן הנפוצות ביותר שנשאלות במהלך ראיונות בגולנג, יכולות לעזור לך להשיג את העבודה שאתה מחפש בגולנג.
לִרְאוֹת סדרת הראיונות של השדורק לעזרה בהכנה לראיון.
השאירו תגובה