فهرست مندرجات[پنهان شدن][نمایش]
- 1. گولنگ را توصیف کنید.
- 2. Go چه مزیتی نسبت به سایر زبان ها دارد؟
- 3. در برنامه نویسی Golang fmt چیست؟
- 4. رابط کاربری Go دقیقا چیست؟
- 5. حرف های رشته ای دقیقا چیست؟
- 6. محیط های کاری و پارامترها در Golang چگونه پیکربندی می شوند؟
- 7. بسته های Golang را توضیح دهید؟
- 8. چه نوع داده ای توسط Golang پشتیبانی می شود؟
- 9. منظور شما از اعلان نوع ایستا یک متغیر در Golang چیست؟
- 10. در Golang اعلان متغیر پویا چیست؟
- 11. چگونه می توانم از بسته های سفارشی در زبان برنامه نویسی GO استفاده کنم؟
- 12. گوروتین دقیقاً چیست؟ چگونه می توانید آن را متوقف کنید؟
- 13. یک رون را توصیف کنید.
- 14. اصطلاح Go برای نمایش enums چیست؟
- 15. نوع متغیر در زمان اجرا چگونه بررسی می شود؟
- 16. کانال های Go را توصیف کنید.
- 17. روشهای گلانگ را توضیح دهید.
- 18. مسابقه داده دقیقاً چیست؟
- 19. جمع آوری زباله Go دقیقا چیست؟
- 20. مراحل تست با استفاده از Golang را شرح دهید.
- 21. برش ها در Go دقیقا چیست؟
- 22. حافظه پشته دقیقاً چیست؟
- 23. بسته شدن عملکرد دقیقاً چیست؟
- 24. عبارت goto Golang به چه معناست؟
- 25. در گلنگ Lvalue و Rvalue چیست؟
- 26. در Go ساختارهای حلقه ای چیست؟
- 27. الگوهای طراحی دقیقا چیست؟
- 28. بهترین بسته Golang برای عملیات ساده فایل چیست؟ چه بسته های Golang اضافی برای دستکاری فایل استفاده می شود؟
- 29. توضیحی در مورد معماری شی گرا Golang ارائه دهید.
- 30. Golang از کدام انواع تبدیل پشتیبانی می کند؟
- 31. هدف و عملکرد Type assertion را شرح دهید.
- 32. نوع ساختار دقیقاً چیست؟
- 33. آرایه پشتیبان یک مقدار slice را توضیح دهید.
- 34. آیا داشتن هر دو متغیر GOPATH و GOROOT ضروری است و اگر چنین است چرا؟
- 35. آیا Golang وراثت را امکان پذیر می کند؟
- 36. در Golang، CGo چگونه ظاهر می شود؟
- 37. نوع اشاره گر در گلنگ چیست؟
- نتیجه
زبان برنامه نویسی Go که اغلب با نام شناخته می شود گلانگ، یک زبان برنامه نویسی منبع باز است که با C قابل مقایسه است اما برای کامپایل سریع، همزمانی روان و راحتی توسعه دهندگان طراحی شده است.
این زبان توسط گوگل توسعه یافته و مورد استفاده قرار گرفته است، اما در سال های اخیر با افزایش تقاضا برای برنامه نویسی همزمان و شبکه ای، در سایر شرکت ها مورد توجه قرار گرفته است.
Golang با ارائه کامپایل بهینه برای توسعه سریع برنامه های کاربردی نرم افزار، همزمانی روان تر، افزایش کارایی زمان اجرا و نقص های کمتر، توسعه را برای توسعه دهندگان آسان تر می کند.
Golang به سرعت در حال تبدیل شدن به یک زبان برنامه نویسی شرکتی محبوب با چندین گزینه استخدامی است. بسیاری از غولهای فناوری اطلاعات، مانند گوگل، اوبر، و اپل، Golang را به دلیل زمان کوتاهتر توسعه، یادگیری آسان، زمان اجرا افزایش یافته، جمعآوری زباله و سایر مزایای آن میپسندند.
همانطور که شرکت های بیشتری از Golang استفاده می کنند، نیاز به برنامه نویسان Golang افزایش می یابد. نتیجه نهایی؟ یادگیری Golang چندین چشم انداز شغلی را فراهم می کند.
اگر می خواهید به عنوان یک توسعه دهنده Golang کار کنید، باید به اندازه کافی برای مصاحبه خود آماده شوید. به همین دلیل این مجموعه جامع سوالات مصاحبه گلنگ را گردآوری کردیم.
در این پست سوالات مصاحبه گولنگ مقدماتی تا پیشرفته را ارائه می دهیم تا بتوانید به راحتی مصاحبه را پشت سر بگذارید.
1. گولنگ را توصیف کنید.
Go یک سطح بالا و همه منظوره است زبان برنامه نویسی که از جمع آوری زباله و برنامه نویسی همزمان پشتیبانی می کند و بسیار محکم و استاتیک تایپ می شود. برنامه های Go با استفاده از بسته هایی ایجاد می شوند که مدیریت وابستگی موثری را ارائه می دهند.
علاوه بر این، از رویکرد کامپایل پیوند برای ایجاد باینری های اجرایی از کد منبع بهره می برد. Go یک زبان ساده با ساختارهای نحوی زیبا و واضح است.
این مجموعه دارای مجموعه ای از کتابخانه های استاندارد قوی است که می تواند توسط توسعه دهندگان برای حل مشکلات بدون نیاز به بسته های دیگر استفاده شود.
2. Go چه مزیتی نسبت به سایر زبان ها دارد؟
- کد Go با در نظر گرفتن عملی بودن توسعه داده شد، برخلاف زبان های دیگر که به عنوان آزمایش های فکری شروع شدند. هر انتخاب در نحو و ویژگی با در نظر گرفتن راحتی برنامه نویس انجام می شود.
- از آنجایی که جمعآوری خودکار زباله همزمان با برنامه اجرا میشود، بسیار مؤثرتر از جاوا یا پایتون است.
- مقیاس پذیری و همزمانی هر دو در Golang اولویت دارند.
- گلانگ معمولاً قابل فهم تر از زبان های دیگر است زیرا ساختار کد واحد و استانداردی دارد.
3. در برنامه نویسی Golang fmt چیست؟
بسته Format با نماد fmt نشان داده می شود. کاربران می توانند از این قابلیت برای قالب بندی متن اصلی، مقادیر یا هر چیز دیگری و چاپ آن استفاده کنند.
همچنین به کاربران این امکان را می دهد که ورودی ترمینال را دریافت کنند، در یک فایل با یک نویسنده بنویسند، و حتی پیام های خطای فانتزی سفارشی بسازند. این بسته همه چیز در مورد قالب بندی ورودی و خروجی است.
4. رابط کاربری Go دقیقا چیست؟
رابطهای Go با سایر زبانها متفاوت است. Go Interfaces نوع خاصی است که برای بیان مجموعه ای از یک یا چند امضای متد استفاده می شود.
رابط با استفاده از عبارت "نوع" و به دنبال آن نام و رابط کلمه کلیدی شکل می گیرد. رابط ها را می توان به صورت زیر تعریف کرد:
- مجموعه ای از روش ها
- نوع
5. حرف های رشته ای دقیقا چیست؟
رشته لفظی یک ثابت رشته ای است که از به هم پیوستن حروف تولید می شود. لفظ رشته ای خام و تفسیر شده دو نوع لفظ رشته ای هستند. رشتههای خام با بکتیک (foo) محصور شدهاند و حاوی کاراکترهای UTF-8 تفسیر نشده هستند..
لفظ رشته تفسیر شده رشتههایی هستند که در داخل گیومههای دوتایی نوشته میشوند و شامل هر کاراکتری به جز خط جدید و گیومههای دوتایی ناقص هستند.
6. محیط های کاری و پارامترها در Golang چگونه پیکربندی می شوند؟
محیط های کاری و تنظیمات را می توان با استفاده از JSON پیکربندی کرد که این روزها بسیار مورد استفاده قرار می گیرد. این واقعیت که JSON در کتابخانه استاندارد گنجانده شده است، مزیت اصلی آن است.
کتابخانه استاندارد روش های نوشتن را برای موارد مورد نظر فراهم می کند ساختار داده ها، که آن را بسیار خواندنی می کند. بسته YAML برای Go یک انتخاب اضافی است.
7. بسته های Golang را توضیح دهید؟
بسته ها پوشه هایی هستند که بسته های دیگر و کد منبع آنها را در فضای کاری Go قرار می دهند. بستههای پیوند شده شامل تمام کدها، از جمله متغیرها، توابع و انواع هستند که در فایلهای منبع نوشته شدهاند.
هر فایل منبع بخشی از یک بسته است و بسته های go را می توان در داخل بسته ها نیز ذخیره کرد.
8. چه نوع داده ای توسط Golang پشتیبانی می شود؟
Golang از انواع زیر استفاده می کند:
- روش
- بولی
- عددی
- رشته
- اشارهگر
- عملکرد
- رابط
- تکه
- ساختار
- نقشه
- کانال
- صف
9. منظور شما از اعلان نوع ایستا یک متغیر در Golang چیست؟
کامپایلر میتواند بدون نیاز به داشتن اطلاعات جامع از متغیر به لطف اعلانهای متغیر نوع استاتیک، کامپایلر دیگری را ادامه دهد، که به او اطمینان میدهد که تنها یک متغیر با نوع و نام داده شده وجود دارد.
اعلان متغیر فقط در حین تدوین مهم است. کامپایلر هنگام اتصال به برنامه به یک متغیر واقعی و اعلان نیاز دارد.
10. در Golang اعلان متغیر پویا چیست؟
کامپایلر باید نوع متغیر را در یک نوع پویا از اعلان متغیر بر اساس مقدار انتقال داده شده به آن توضیح دهد. به عنوان یک شرط لازم، کامپایلر برای دسته بندی ایستا به متغیری نیاز ندارد.
11. چگونه می توانم از بسته های سفارشی در زبان برنامه نویسی GO استفاده کنم؟
اگر در حال ایجاد یک پروژه جداگانه go get -table برای کتابخانه خود هستید و فقط برای استفاده داخلی است، می توانید کدی مانند این بنویسید.
- دایرکتوری فایل های کتابخانه را در زیر دایرکتوری پروژه خود قرار دهید.
- با توجه به مسیر آن نسبت به ریشه فضای کاری که پروژه را در بر می گیرد، به کتابخانه مراجعه کنید.
12. گوروتین دقیقاً چیست؟ چگونه می توانید آن را متوقف کنید؟
گوروتین تابع یا رویهای است که به طور همزمان با سایر گوروتینها بر روی یک نخ اختصاصی گوروتین اجرا میشود. نخ های گوروتین سبک تر از نخ های معمولی هستند و اکثر برنامه های Golang از هزاران گوروتین به طور همزمان استفاده می کنند.
یک گوروتین را می توان با عبور دادن یک کانال سیگنال متوقف کرد. گوروتینها تنها در صورتی میتوانند به سیگنالها پاسخ دهند که برای بررسی هدایت شوند، بنابراین بررسیهایی را در مکانهای معقولی مانند بالای حلقه for خود وارد کنید.
13. یک رون را توصیف کنید.
در Go، یک Rune یک نوع داخلی با نام int32 است. Unicode CodePoint به عنوان روون در Go عمل می کند. مهم نیست که نقطه کد چند بایت اشغال می کند، می توان آن را با یک رون نمایش داد.
لازم نیست رون ها در یک رشته مرتب باشند. اگرچه می توانیم بین رشته و رون تبدیل کنیم، اما آنها یکسان نیستند.
14. اصطلاح Go برای نمایش enums چیست؟
زبان برنامه نویسی Golang مستقیماً از enum ها پشتیبانی نمی کند. از آیوتا و ثابت ها می توان برای پیاده سازی enum ها استفاده کرد. هر یک از رویکردهای زیر را می توان برای اجرای یک نوع شمارش شده استفاده کرد:
- معرفی یک نوع عدد صحیح تازه
- آیوتا برای نشان دادن ارزش آن استفاده می شود.
- با ارائه تابع String به نوع
15. نوع متغیر در زمان اجرا چگونه بررسی می شود؟
سوئیچ نوع موثرترین روش برای تعیین نوع متغیر در زمان واقعی است. هنگام استفاده از سوئیچ نوع، متغیرها بر اساس نوع ارزیابی می شوند تا مقدار.
هر دو حالت پیش فرض، که در صورتی اجرا می شود که هیچ یک از موارد درست نباشد و حداقل یک مورد، که به عنوان یک دستور شرطی عمل می کند، در هر سوئیچ وجود دارد. برای مثال، میتوانید یک نوع سوئیچ طراحی کنید که تعیین میکند مقدار رابط i شامل نوع int یا رشته باشد:
16. کانال های Go را توصیف کنید.
یک کانال go انتقال داده و انتقال بین گوروتین ها را امکان پذیر می کند. داده های یکسان را می توان در یک کانال ارسال کرد.
به دلیل جریان داده های دو طرفه کانال، گوروتین ها می توانند داده ها را از طریق یک کانال ارسال و دریافت کنند.
17. روشهای گلانگ را توضیح دهید.
Golang کلاس ها را ارائه نمی دهد اما از روش ها پشتیبانی می کند. این متدها با توابع یکسان هستند، با این تفاوت که متدهای Go یک پارامتر گیرنده دارند.
متد Go از طریق پارامترهای گیرنده به ویژگی های گیرنده دسترسی دارد. روشهای Go، که به عنوان توابع گیرنده نیز شناخته میشوند، به ارائه ایدهای دقیقتر و واقعیتر کمک میکنند.
18. مسابقه داده دقیقاً چیست؟
رایج ترین و سخت ترین اشکال زدایی، مسابقه داده است. دسترسی غیرهمگام به حافظه مشترک یا اجرای چندین گوروتین به طور همزمان بدون مدیریت جداگانه منجر به خطای مسابقه داده می شود.
19. جمع آوری زباله Go دقیقا چیست؟
جمعآوری زباله، فضای ذخیرهسازی را تغییر کاربری میدهد که به صورت پویا به یک برنامه برای استفاده توسط اشیاء دیگر اختصاص داده شده است. این کلمه اغلب به بازسازی خودکار جمع آوری زباله برای ذخیره سازی معمولی به جای کد صریح (ارائه شده توسط یک برنامه نویس) برای آزاد کردن بلوک های حافظه خاص اشاره دارد.
جمعآوری خودکار زبالهها اغلب زمانی آغاز میشود که مقدار RAM آزاد به زیر آستانه از پیش تعریفشده یا پس از تعداد مشخصی تخصیص میرسد.
حذف مواردی که نرم افزار دیگر نیازی به ایجاد مکانی در حافظه برای اشیاء پویاتر ندارد به عنوان "جمع آوری زباله" نامیده می شود.
20. مراحل تست با استفاده از Golang را شرح دهید.
Golang تست خودکار بسته ها را با استفاده از مجموعه های تست سفارشی ارائه می دهد. برای ایجاد یک مجموعه جدید، فایلی ایجاد کنید که با _test.go ختم می شود و شامل یک تابع TestXxx می شود، جایی که Xxx با نام ویژگی که در حال آزمایش آن هستید جایگزین می شود.
برای مثال، تابعی که قابلیتهای ورود را آزمایش میکند، TestLogin نامیده میشود. سپس فایل مجموعه آزمایشی در همان بسته فایل مورد آزمایش قرار میگیرد.
فایل تست در طول اجرای معمولی نادیده گرفته می شود اما زمانی که دستور go test را وارد می کنید اجرا می شود.
21. برش ها در Go دقیقا چیست؟
Slices یک نوع داده مهم Go است که رابط قدرتمندتری برای دنباله ها نسبت به آرایه ها فراهم می کند. برش ها، بر خلاف آرایه ها، صرفاً بسته به عناصری که دارند (نه تعداد عناصر) تایپ می شوند.
برای ساختن یک برش خالی با طولی که صفر نیست، از کلمه کلیدی داخلی «ساخت» استفاده کنید.
22. حافظه پشته دقیقاً چیست؟
ما اشیاء و متغیرهای تشکیل شده به صورت پویا را در حافظه پشته ذخیره می کنیم. وقتی دیگر از یک شیء استفاده نمی کنیم، معمولاً حافظه پشته ای را که آن را اشغال کرده بود حذف می کنیم.
23. بسته شدن عملکرد دقیقاً چیست؟
بسته شدن تابع نوعی از مقدار تابع است که متغیرهای ارجاع خارجی را ایجاد می کند. تابع به مقادیر متغیرهای ارجاع شده دسترسی و کنترل دارد.
به عنوان مثال، بسته شدن بازگردانده شده توسط ()adder هر کدام به یک متغیر مجموع ارجاع شده متفاوت مرتبط است.
24. عبارت goto Golang به چه معناست؟
دستور goto به عنوان یک دستور پرش در Golang عمل می کند. Goto برای ارائه یک کنترل برچسب مشخص بر روی برنامه استفاده می شود.
میتوان از آن برای رد شدن از بخشهایی از کد و رفتن مستقیم به عبارات ضروری استفاده کرد، یا میتوان از آن برای تکرار بخشی از کد برنامه با توجه به شرایط خاص استفاده کرد.
25. در گلنگ Lvalue و Rvalue چیست؟
Lvalue:
- اشاره به یک مکان خاطره دارد.
- قابل تغییر است.
- نشان دهنده یک شناسه متغیر است.
- ممکن است در سمت چپ یا راست عملگر = رخ دهد.
- به عنوان مثال، در خط x = 20، x یک lvalue و 20 یک مقدار rvalue است.
مقدار Rvalue:
- نشان دهنده یک مقدار ثابت است.
- این یک مقدار داده ذخیره شده در حافظه را نشان می دهد.
- همیشه در سمت راست عملگر = رخ می دهد.
- عبارت 10 = 20 نادرست است، برای مثال، زیرا یک مقدار r (10) در سمت چپ عملگر = وجود دارد.
26. در Go ساختارهای حلقه ای چیست؟
تنها یک جزء حلقه در Go وجود دارد: حلقه for. حلقه for از سه قسمت تشکیل شده است که با نقطه ویرگول از هم جدا می شوند:
- دستور Init قبل از شروع حلقه اجرا می شود. این اغلب یک اعلان متغیر است که فقط در محدوده حلقه for ظاهر می شود.
- قبل از هر تکرار، عبارت شرط به عنوان یک بولی ارزیابی می شود تا تصمیم بگیرد که آیا حلقه باید ادامه یابد یا خیر.
- بیانیه پست در پایان هر تکرار اجرا می شود.
27. الگوهای طراحی دقیقا چیست؟
الگوهای طراحی تکههایی از کد هستند که میتوانند برای رفع مشکلات رایج نرمافزاری مورد استفاده مجدد قرار گیرند. اگر از الگوهای طراحی استفاده کنید، پروژه های شما نرم افزارهای مدولار، مقیاس پذیر و کارآمدتری تولید خواهند کرد. الگوهای طراحی به شما کمک می کنند تا برنامه های خود را گسترش دهید و با یک تیم کار کنید. الگوهای طراحی متداول عبارتند از Factory Method، Singleton، Facade و Decorator.
28. بهترین بسته Golang برای عملیات ساده فایل چیست؟ چه بسته های Golang اضافی برای دستکاری فایل استفاده می شود؟
رابط مستقل از پلت فرم توسط بسته کتابخانه استاندارد OS ارائه شده است. هنگام تعامل با فایل ها، از آنها برای عملکردهای سیستم استفاده می کنیم. رابط OS قرار است در تمام سیستم عامل ها سازگار باشد.
در نتیجه، برنامههایی که ما توسعه میدهیم روی ویندوز، لینوکس و مک اجرا میشوند. سایر بسته های کتابخانه استاندارد Go عبارتند از io، ioutil و bufio. آنها با فایل ها کار می کنند و قابلیت هایی را اضافه می کنند. با این حال، آنها برای عملیات فایل اصلی مورد نیاز نیستند. ما فقط به بسته os نیاز داریم.
29. توضیحی در مورد معماری شی گرا Golang ارائه دهید.
Golang از طراحی کلاس شی به عنوان معمولی استفاده نمی کند برنامه نویسی شی گرا میکند. ساختارها و رفتار پیچیده داده در عوض در ساختارها و روشها ذخیره میشوند.
یک ساختار فقط یک طرح واره با یک نقشه برای داده هایی است که یک ساختار حمل می کند. از ساختارها می توان برای نمادسازی ایده هایی از دنیای واقعی مانند کتاب، مردم یا اتومبیل استفاده کرد.
30. Golang از کدام انواع تبدیل پشتیبانی می کند؟
وقتی صحبت از تایپ صریح می شود، Go بسیار حساس است. هیچ تبدیل نوع به صورت خودکار انجام نمی شود. برای تعیین یک متغیر از یک نوع به نوع دیگر، تبدیل نوع باید به صراحت انجام شود.
31. هدف و عملکرد Type assertion را شرح دهید.
در GO، تبدیل نوع برای تبدیل انواع متفاوت استفاده می شود. یک مقدار صریح از نوع مشخص شده از یک مقدار واسط توسط یک نوع ادعا استخراج می شود.
32. نوع ساختار دقیقاً چیست؟
یک ساختار شامل لیستی از اجزای نامگذاری شده به نام فیلدها است. برای هر رشته ای یک نوع و یک نام وجود دارد. راه دیگر برای درک ساختار، به عنوان گروهی از خواص متصل است. آنها برای ترکیب داده ها برای ایجاد رکورد مفید هستند.
33. آرایه پشتیبان یک مقدار slice را توضیح دهید.
هنگامی که ما یک Slice می سازیم، Go یک آرایه مخفی به نام آرایه پشتیبان یا زیربنایی در پشت صحنه تولید می کند و متغیر نوع slice جدید به آن ارجاع می دهد. موارد، نه برش، در آرایه پشتیبان ذخیره می شوند.
Slice ها در Go به عنوان ساختارهای داده ای به نام slice header پیاده سازی می شوند که به عنوان نمایش زمان اجرا برش عمل می کنند.
34. آیا داشتن هر دو متغیر GOPATH و GOROOT ضروری است و اگر چنین است چرا؟
معمولاً هیچکدام لازم نیست. تنها متغیری که باید تنظیم شود تا به درخت یا درختان بسته Go اشاره کند GOPATH است.
GOROOT به ریشه فهرست اصلی برای زبان برنامه نویسی Go اشاره دارد، با این حال، تقریباً به طور قطع در محل نصب فعلی Go تنظیم شده است.
اگر نسخه های متعددی از زبان Go در یک سیستم وجود داشته باشد، یا اگر زبان Go به عنوان یک بسته باینری از اینترنت دانلود شده یا از دستگاه دیگری منتقل شده است، متغیر GOROOT باید تنظیم شود.
35. آیا Golang وراثت را امکان پذیر می کند؟
وراثت یک مفهوم اساسی در برنامه نویسی شی گرا است که به انتقال خصوصیات سوپرکلاس به کلاس پایه اشاره دارد.
از آنجایی که Golang فاقد کلاس است، وراثت با استفاده از جاسازی ساختار انجام می شود و ساختارها را نمی توان مستقیماً گسترش داد، ما باید از ایده ترکیب برای ایجاد اشیاء جدید با ساختار استفاده کنیم.
36. در Golang، CGo چگونه ظاهر می شود؟
از یک فایل منبع Go با ویژگیهای تعریفشده، cGo فایلهای Go و C را ایجاد میکند که میتوانند به یک بسته Go منحصربفرد متصل شوند. C به یک "شبه بسته" اشاره دارد، که عبارت متفاوتی است که توسط cGo برای اشاره به فضای نام C تولید شده است.
37. نوع اشاره گر در گلنگ چیست؟
نامگذاریهای الفبایی یا برچسبها برای مناطق خاص حافظه به عنوان متغیر شناخته میشوند. یک نوع متغیر که به عنوان اشاره گر شناخته می شود، آدرس حافظه متغیر دیگری را ذخیره می کند.
آدرس یک متغیر با یک مقدار اشاره گر یا صفر نشان داده می شود اگر متغیر هنوز ایجاد نشده باشد. همانطور که یک متغیر مکان حافظه یک مقدار را نشان می دهد، یک اشاره گر به آن آدرس اشاره می کند.
نتیجه
هدف زبان برنامه نویسی Golang ایجاد برنامه های موثر با سرعت بیشتر بود. شرکت ها با درک امکانات سودمند Golang شروع به استفاده از آن کردند.
Golang در برانگیختن علاقه توسعه دهندگان، افزایش استفاده از پایه آنها و در نتیجه فرصت های شغلی بسیار مؤثر بوده است. پاسخ به سؤالات فوق، که متداول ترین سؤالاتی است که در طول مصاحبه های Golang پرسیده می شود، می تواند به شما کمک کند شغلی را که به دنبال آن هستید، پیدا کنید.
دیدن مجموعه مصاحبه هاشدورک برای کمک به آماده سازی مصاحبه
پاسخ دهید