انتخاب روش مناسب ارزیابی نامزد در صورتی که یک توسعه دهنده فرانت اند برای تیم خود استخدام می کنید بسیار مهم است، اما این فرآیند می تواند پیچیده و زمان بر باشد. برخی از روشها غیرقابل اعتماد هستند، مانند غربالگری رزومه - شما به استراتژی نیاز دارید که به شما کمک کند توسعهدهنده مناسب برای تیم خود را پیدا کنید و از استخدام نادرست جلوگیری کنید.
اگر به شما بگوییم دو روش وجود دارد که می تواند به شما در رسیدن به این هدف کمک کند چه میگویید؟
تست مهارت ها با استفاده از آزمون های مهارت های برنامه نویسی و مصاحبه با توسعه دهندگان فرانت اند به شما کمک می کند تا بهترین متقاضیان را پیدا کنید.
استراتژی دوم، مصاحبه با توسعه دهندگان فرانت اند، از شما می خواهد که قبل از مصاحبه، سؤالات مصاحبه مقدماتی مناسب را بیابید.
اما نترسید. در اینجا 75 سؤال مصاحبه مناسب برای متقاضیان جوان و ارشد و سؤالات فنی مربوط به Git و مهارت های مقدماتی ضروری را جمع آوری کرده ایم. با استفاده از سوالات امده در زیر، لیست خود را بسازید.
پاسخ: متا تگها در HTML بخشهایی از کد هستند که اطلاعاتی درباره صفحه وب به مرورگر و موتورهای جستجو میدهند. این اطلاعات شامل عنوان صفحه، کلمات کلیدی، توضیحات کوتاه، کدگذاری کاراکترها و موارد دیگر میشود. متا تگها در بخش <head> سند HTML قرار میگیرند و نقش مهمی در سئو و نمایش صحیح صفحه در مرورگرها دارند.
سوال بالا خیلی کلی است و شکل اصلاح شده آن به این صورت میتواند باشد: سه اصل اساسی طراحی رابط کاربری (UI) را نام ببرید و توضیح دهید که هر کدام چه اهمیتی دارند.
سوال اصلاح شده: به نظر شما، مهمترین مهارتهای فنی که یک توسعهدهنده فرانتاند باید داشته باشد کداماند؟
توجه: مصاحبه شونده نباید لزوما همه موارد بالا را برای شما بیان کند، بلکه بتواند نسبت به برخی از موارد بالا اعلام آشنایی کند. یادتان باشد توسعه فرانت اند، یک موضوع نظری نیست و یک موضوع فنی است.
پیشنهاد حذف سوال: این سوال ارتباط مستقیمی با توسعه فرانتاند ندارد و بهتر است حذف شود. تعادل بار به توزیع یکنواخت بار کاری در بین چندین سرور گفته میشود و بیشتر در حوزه شبکه و سرورها کاربرد دارد.
پاسخ: NPM مخفف Node Package Manager است و ابزاری برای مدیریت بستههای نرمافزاری در جاوا اسکریپت است. با استفاده از NPM میتوانیم کتابخانهها، فریمورکها و سایر بستههای مورد نیاز برای پروژههای جاوا اسکریپت را نصب، بهروزرسانی و مدیریت کنیم.
پاسخ: scope در جاوا اسکریپت به محدوده دسترسی متغیرها، توابع و سایر اشیاء یا ابجکتها اشاره دارد. به عبارت دیگر، جایی که یک متغیر تعریف شده است تعیین میکند که در کدام قسمت از کد قابل دسترسی است. انواع مختلف scope عبارتند از:
پاسخ:
تفاوت اصلی: جی کوئری بر روی سادهسازی کار با DOM تمرکز دارد، در حالی که جاوا اسکریپت یک زبان برنامهنویسی کامل است که قابلیتهای بسیار بیشتری دارد.
پاسخ: خط مشی امنیت محتوا (Content Security Policy یا CSP) یک لایه امنیتی اضافی برای مرورگرها فراهم میکند که به آنها اجازه میدهد منابعی را که یک صفحه وب مجاز به بارگذاری آنها است، محدود کند. این کار به جلوگیری از حملات XSS و سایر حملات تزریق کمک میکند. CSP با تعریف یک سری دستورالعمل در هدر HTTP مشخص میشود.
پاسخ: اسکریپت بین سایتی (Cross-Site Scripting یا XSS) یک آسیبپذیری امنیتی رایج در وب است که در آن مهاجم کدهای مخرب جاوا اسکریپت را در یک وبسایت تزریق میکند. این کدها ممکن است اطلاعات حساس کاربران را سرقت کنند، کوکیها را تغییر دهند یا به حساب کاربری کاربران دسترسی پیدا کنند.
پاسخ: طراحی کاربر محور (User-Centered Design یا UCD) یک فرایند طراحی است که در آن نیازها، خواستهها و محدودیتهای کاربران در مرکز توجه قرار میگیرند. هدف از طراحی کاربر محور ایجاد محصولاتی است که استفاده از آنها برای کاربران آسان و لذتبخش باشد.
پاسخ: callback در جاوا اسکریپت یک تابع است که به عنوان آرگومان به تابع دیگری پاس داده میشود و پس از اتمام اجرای تابع اصلی، اجرا میشود. از callbackها برای مدیریت عملیاتهای ناهمزمان مانند درخواستهای AJAX، تاخیرها (timeouts) و رویدادها استفاده میشود.
پاسخ: مفهوم چندشکلی بیشتر در زبانهای برنامهنویسی شیءگرا مانند جاوا و Cشارپ کاربرد دارد و در جاوا اسکریپت به شکل کلاسیک آن وجود ندارد. با این حال، جاوا اسکریپت از چندشکلی در سطح پروتوتایپها پشتیبانی میکند. به این معنی که اشیاء میتوانند رفتارهای متفاوتی از خود نشان دهند، حتی اگر از یک سازنده (constructor) ایجاد شده باشند.
پاسخ: KISS مخفف عبارت "Keep It Simple, Stupid" است و به این معناست که طراحیها باید تا حد امکان ساده نگه داشته شوند. این اصل در توسعه نرمافزار به این معنی است که باید از پیچیدگیهای غیرضروری پرهیز کرد و کدها را به شکلی بنویسیم که خوانا و قابل نگهداری باشند.
پاسخ: SOLID مجموعهای از پنج اصل طراحی شیءگرا است که برای ایجاد نرمافزارهای قابل نگهداری و انعطافپذیر استفاده میشود. این اصول عبارتند از:
پاسخ: کلیک جک (Clickjacking) یک حمله سایبری است که در آن مهاجم کاربر را فریب میدهد تا روی یک عنصر پنهان یا غیرقابل مشاهده کلیک کند. این کار ممکن است منجر به اجرای کدهای مخرب، تغییر تنظیمات مرورگر یا ارسال اطلاعات حساس شود.
پاسخ اصلاح شده: بهتر است به جای "تبدیل یا coercion" از اصطلاحات دقیقتری مانند "تایپهای دادهای" یا "تفاوت بین مقادیر اولیه و مرجعی" استفاده کنیم.
پاسخ: IIFE مخفف Immediately Invoked Function Expression است و به عبارتی اشاره دارد که یک تابع را تعریف میکند و بلافاصله پس از تعریف آن را اجرا میکند. از IIFEها معمولاً برای ایجاد scopeهای محلی، جلوگیری از آلودگی فضای نام و اجرای کد یکبار استفاده میشود.
پاسخ: سیستمهای گرید در CSS ابزاری قدرتمند برای ایجاد طرحبندیهای پیچیده و پاسخگو هستند. با استفاده از گریدها میتوانیم عناصر را به صورت سطرها و ستونها سازماندهی کنیم و به طور دقیق کنترل کنیم که چگونه این عناصر در صفحه نمایشهای مختلف نمایش داده شوند.
پاسخ اصلاح شده: بهتر است به جای "میکس" از اصطلاح "میکسین mixin" استفاده کنیم.
پاسخ:
من سوالات بالا را به چهار دسته پنج تایی تقسیم کردم شما میتوانید یکی از این چهار دسته را برای پرسش در مصاحبه انتخاب کنید. یا میتوانید از هر قسمت یک سوال انتخاب کنید و در لیست سوالات خودتان قرار دهید.
برای بررسی صحت پاسخ های متقاضیان خود، به این پنج نمونه پاسخ برای برخی از سوالات مهم مصاحبه مقدماتی مبتدی در این بخش مراجعه کنید.
چندین مهارت برای کار توسعهدهنده جلویی مهم هستند. از دانش HTML گرفته تا CSS و جاوا اسکریپت، بسیاری از مهارتهای فنی میتوانند به توسعهدهندگان فرانتاند در ساخت طراحیهای وب و تولید صفحات وب با ساختار مناسب کمک کنند.
مهارت های HTML به توسعه دهندگان فرانت اند کمک می کند تا وب سایت را ساختار دهند و مهارت های CSS طراحی طرح بندی را آسان تر می کند. در همین حال، تسلط بر زبان برنامه نویسی جاوا اسکریپت، توسعه دهندگان را قادر می سازد تا عناصر صفحه وب را پویا کنند.
دانش این زبانها برای هر نقشی که شامل توسعه front-end باشد، بسیار مهم است: ۲۳ درصد از مدیران پروژههای وبسایت مهارتهای HTML را در رزومه خود و ۱۷ درصد شامل مهارتهای جاوا اسکریپت هستند. با این حال، مهارت های دیگر نیز مهم هستند.
متقاضیان باید سه عنصر اصلی طراحی زیر را درک کنند:
برای آزمودن دانش توسعهدهنده مقدماتی متقاضیان خود، در نظر بگیرید که آیا آنها میتوانند تبدیل یا coercion را در جاوا اسکریپت تعریف کنند یا خیر. داوطلبان ماهر خواهند فهمید که تبدیل شامل تبدیل یک مقدار از یک نوع داده به نوع دیگر در طول زمان اجرا است.
آنها همچنین ممکن است به دو شکل تبدیل در جاوا اسکریپت اشاره کنند - صریح و ضمنی.
تبدیل یا coercion ضمنی زمانی رخ می دهد که جاوا اسکریپت به طور خودکار یک نوع داده را بر اساس زمینه ای که در آن استفاده می شود به نوع دیگری تبدیل می کند. تبدیل صریح زمانی اتفاق میافتد که یک توسعهدهنده صریحاً یک مقدار را از یک نوع داده به دیگری با استفاده از عملگرها یا توابع داخلی آن زبان تبدیل میکند.
برای مطالعه بیشتر به این لینک مراجعه کنید:
https://developer.mozilla.org/en-US/docs/Glossary/Type_coercion
برای مشاهده پست من درباره تایپ کوئرشن اینجا کلیک کنید
کاندیداهایی که دانش اولیه توسعه دهنده front-end را دارند باید از تجربه بدانند که چگونه زمان بارگذاری صفحه را کاهش دهند. در نظر بگیرید که آیا آنها می توانند سه روش برای بهبود سرعت بارگذاری صفحه نام ببرند. در زیر برخی از تکنیک هایی که ممکن است به آنها اشاره شود آورده شده است:
سیستم گرید در CSS ساختاری است که توسعه دهندگان فرانت اند برای مرتب کردن مطالب به صورت افقی یا عمودی در یک صفحه از آن استفاده می کنند. سیستمهای گرید پیچیدگی مرتب کردن محتوا را کاهش میدهند و دارای دو جزء کلیدی – ستونها و ردیفها هستند.
دانش CSS متقاضیان خود را مورد آزمایش قرار دهید و تعیین کنید که آیا آنها به طور کامل نحوه عملکرد این زبان را با آزمون انلاین مهارت های CSS درک می کنند یا خیر .
اگر به دنبال توسعهدهندگان ارشد هستید، این سؤالات مصاحبه پیشرفته برای ارزیابی دانش آنها ایدهآل است. برای ارزیابی صحت پاسخ های نامزدهای خود، پاسخ های زیر را بررسی کنید.
داوطلبان ارشد که تجربه کار با CSS دارند باید مدل جعبه CSS را درک کنند. آنها ممکن است با توضیح اینکه مدل جعبه CSS به توسعه دهندگان کمک می کند تا طرح های پیچیده ایجاد کنند و چهار عنصر مدل جعبه CSS فهرست شده در زیر را نام ببرند:
ویژگی srcset یک ویژگی HTML است که مجموعه ای از URL های تصویر را با اندازه ها و وضوح های مختلف مشخص می کند. این به مرورگر این امکان را می دهد تا بر اساس عواملی مانند اندازه صفحه نمایش کاربر یا تراکم پیکسلی، تشخیص دهد که کدام منبع تصویر مناسب ترین است.
یکی از مزایای srcset افزایش کارایی و کاهش زمان بارگذاری با نمایش تصاویری با اندازه مناسب برای دستگاه کاربر است.
متقاضیان باید بدانند که توسعه دهندگان فرانت اند از متد ()JSON.stringify برای تبدیل مقادیر جاوا اسکریپت به رشته های JSON استفاده می کنند. این به آنها امکان می دهد تا این اشیاء را راحت تر ارسال و دریافت کنند. این امر به ویژه هنگام ارسال داده ها به یک وب سرور مهم است زیرا داده ها باید به صورت رشته ای منتقل شوند.
اگر متقاضیان از MySQL استفاده کرده باشند، می دانند که این یک سیستم مدیریت پایگاه داده رابطه ای (RDBMS) است که از زبان برنامه نویسی SQL استفاده می کند. آنها همچنین ممکن است بدانند که MySQL از ساختار جدول استفاده می کند و رایج ترین RDBMS منبع باز است .
https://aws.amazon.com/rds/mysql/what-is-mysql/
داوطلبان با تجربه MongoDB متوجه خواهند شد که این برنامه پایگاه داده NoSQL عناصر داده را با استفاده از یک قالب سند گرا به نام BSON (JSON باینری) نشان می دهد. آنها همچنین ممکن است اشاره کنند که برنامه نویسان از زبان پرس و جو MongoDB برای ایجاد تغییرات در MongoDB استفاده می کنند.
برای ارزیابی دانش کنترل نسخه Git متقاضیان، این 19 سؤال مصاحبه مقدماتی را از آنها بپرسید.
1. به من بگویید در مورد سیستم های کنترل نسخه چه می دانید.
2. تفاوت بین سیستم های کنترل نسخه متمرکز و توزیع شده چیست؟
3. عبارت git push به چه معناست؟
4. عبارت git pull به چه معناست؟
5. توضیح دهید که دستور git config چه کاری انجام می دهد.
6. توضیح دهید که دستور git init چه کاری انجام می دهد.
7. توضیح دهید که دستور git add چه می کند.
8. توضیح دهید که دستور git diff چه کاری انجام می دهد.
9. توضیح دهید که دستور git commit چه کاری انجام می دهد.
10. توضیح دهید که دستور git reset چه کاری انجام می دهد.
11. توضیح دهید که دستور git status چه کاری انجام می دهد.
12. توضیح دهید که دستور git merge چه کاری انجام می دهد.
13. دستور git pull چه کار می کند؟
14. دستور git fetch چه کاری انجام می دهد؟
15. عبارت git pull چه تفاوتی با git fetch دارد ؟
16. توضیح دهید که تضاد ادغام در Git چیست.
17. چگونه یک تضاد ادغام را در Git حل می کنید؟
18. به من بگویید درباره git stash چه می دانید .
19. عبارت git merge چه تفاوتی با git rebase دارد ؟
اگر میخواهید پاسخهای نامزد خود را به مهمترین سؤالات مصاحبه مقدماتی Git مرور کنید، نمونه پاسخهای ارائه شده در اینجا را بررسی کنید.
برنامه نویسان می توانند از یک سیستم کنترل نسخه برای مدیریت تغییرات در فایل ها یا مجموعه داده ها یا بازیابی داده ها به نسخه قبلی استفاده کنند. این سیستم ها همچنین تضمین می کنند که کل تیم برنامه نویسی از آخرین نسخه فایل یا مجموعه داده استفاده می کند.
متقاضیانی که به این سوال پاسخ می دهند باید بدانند که سیستم های کنترل نسخه به طور گسترده توسط تیم های توسعه استفاده می شود: 93٪ از توسعه دهندگان از Git برای مدیریت فایل ها و مجموعه داده ها استفاده می کنند. منبع:
https://stackoverflow.blog/2023/01/09/beyond-git-the-other-version-control-systems-developers-use/
برای ارزیابی دانش Git متقاضیان خود، می توانید از آزمون مهارت های Git انلاین استفاده کنید که در کتابخانه آزمون مهارت های آنلاین سید احمد موجود است.
این سوال را از داوطلبان بپرسید تا دانش خود را در مورد سیستم های کنترل نسخه مورد آزمایش قرار دهند.
هنگام استفاده از سیستم های کنترل نسخه متمرکز، توسعه دهندگان تغییرات را در یک مخزن مرکزی انجام می دهند. درک و استفاده از آنها نسبت به سیستم های کنترل نسخه توزیع شده ساده تر است. با این حال، اگر توسعه دهندگان دسترسی به مخزن مرکزی را از دست بدهند یا خراب شود، دیگر قابل استفاده نخواهد بود.
از طرف دیگر، هنگام استفاده از سیستم کنترل نسخه توزیع شده، هر توسعه دهنده یک کپی از مخزن دارد. در این رویکرد جدیدتر، کپی محلی هر یک از اعضای تیم می تواند به عنوان پشتیبان استفاده شود. آنها همچنین می توانند به طور مستقل روی نسخه خود کار کنند و تغییرات خود را بدون نیاز به دسترسی به سرور مرکزی انجام دهند.
برای تعیین اینکه آیا نامزدهای توسعهدهنده front-end شما دانش کافی درباره Git دارند یا خیر، این سوال مصاحبه ساده را از آنها بپرسید.
متقاضیانی که تجربه Git دارند می دانند که git push فرمانی است که توسعه دهندگان برای فشار دادن محتویات برای آپلود commit های انجام شده در مخزن محلی خود در یک مخزن راه دور استفاده می کنند. آنها همچنین ممکن است توضیح دهند که سینتکس مورد نیاز برای git push این است:
$ git push <option> [< URL راه دور < نام شاخه <refspec>…]
برنامه نویسان از دستور git pull برای بیرون آوردن تغییرات از یک مخزن راه دور و ادغام آنها با نسخه محلی خود استفاده می کنند. این شامل ابتدا واکشی آخرین تغییرات از مخزن راه دور و سپس ادغام آن تغییرات در شاخه فعلی آنها است.
نامزدها باید بدانند که توسعه دهندگان از پیکربندی git برای سفارشی کردن نحوه عملکرد و ظاهر Git استفاده می کنند. به عبارت دیگر، این دستور قدرتمند توسعه دهندگان را قادر می سازد تا تغییراتی در تنظیمات پیکربندی Git ایجاد کنند.
برای ارزیابی دانش متقاضیان خود، نمونه پاسخهای زیر را برای این سؤالات مهم HTML، CSS، جاوا اسکریپت و React.js مصاحبه مقدماتی رجوع کنید.
توسعه دهندگان فرانت اند برای استفاده از کتابخانه React.js به مهارت های فرعی مختلفی نیاز دارند، از درک الگوهای طراحی گرفته تا قلاب های React، مدیریت حالت و مفاهیم پیشرفته React.js.
برای ساخت وبسایتها یا برنامههای کاربردی با مؤلفههای پویا، داوطلبان باید بدانند که React.js چگونه این فرآیند را تسهیل میکند. بنابراین، باید سؤالات بعدی را بپرسید تا مشخص شود آیا کاندیداها متوجه اهمیت React.js هستند یا خیر.
اگر برای سنجش مهارت های React.js متقاضیان خود به داده های آماری نیاز دارید، آزمون آنلاین React بهترین گزینه است. این به شما کمک می کند تا زیرمهارت های حیاتی React.js مورد نیاز برای تکمیل پروژه های پیچیده front-end را ارزیابی کنید.
توسعه دهندگان فرانت اند برای افزودن ویژگی های کاربردی به وب سایت ها به چندین مهارت فرعی جاوا اسکریپت نیاز دارند.
متقاضیانی که با جاوا اسکریپت آشنا هستند می دانند که برنامه نویسی کاربردی، نوشتن کد بین مرورگرها و مدیریت حافظه برخی از مهارت های فرعی هستند که برای توسعه دهندگان فرانت اند مفید است. به پاسخ هایی گوش دهید که توضیح دهند چرا این مهارت ها مهم هستند.
به عنوان مثال، متقاضیان ممکن است توضیح دهند که برنامه نویسی کاربردی به توسعه دهندگان فرانت اند کمک می کند تا از جهش داده ها و عوارض جانبی جلوگیری کنند.
این سوال مصاحبه مقدماتی نسبتا ساده است. اکثر نامزدها می دانند که توسعه دهندگان فرانت اند از تگ های HTML برای تقسیم بخش های متن استفاده می کنند و ممکن است سه نمونه از تگ هایی را که استفاده میکنند نام ببرند.
به عنوان مثال، تگ <br> خطوط متن را تجزیه می کند، تگ <blockquote> نقل قول های طولانی تر را نشان می دهد، و تگ <p> پاراگراف هایی از متن را ایجاد می کند.
داوطلبان باید به این سوال با توضیح اینکه ویژگی box-sizing نحوه محاسبه عرض و ارتفاع یک عنصر را مشخص می کند، پاسخ دهند.
آنها همچنین ممکن است توضیح دهند که چگونه مقادیر ممکن این ویژگی رفتار اندازه جعبه را تغییر می دهد. تنظیم مقدار box-sizing به content-box مشخص میکند که عرض و ارتفاع عنصر باید فقط بر اساس کادر محتوای آن بدون بالشتک، حاشیه یا حاشیه محاسبه شود.
با این حال، تنظیم مقدار به border-box نشان می دهد که عرض و ارتفاع عنصر باید شامل padding و حاشیه باشد.
یکی از روش هایی که توسعه دهندگان فرانت اند ممکن است برای حذف موارد تکراری از آرایه های جاوا اسکریپت استفاده کنند، تکنیک فیلترینگ است. این تکنیک شامل استفاده از سه آرگومان برای فراخوانی تابع filter برای ایجاد یک آرایه جدید است که حاوی هیچ تکراری نباشد.
سایر متقاضیان ممکن است استفاده از حلقه for را برای ذخیره عناصر منحصر به فرد در یک آرایه خالی ترجیح دهند.
مصاحبه ها، از جمله مصاحبه های فنی یا شخصی، بهتر است بعد از آزمون مهارت ها و قبل از اینکه تصمیم به استخدام یک نامزد بگیرید، انجام شود.
استفاده از تست قبل از استخدام برای ایجاد لیست کوتاهی از بهترین نامزدهای توسعهدهنده فرانتاند قبل از مرحله مصاحبه کارآمدتر است – دریافت نتایج آزمون مهارتها و بررسی آمار فقط چند ثانیه طول میکشد.
از داده های آماری تولید شده توسط ارزیابی مهارت ها و پاسخ های متقاضیان به سوالات مصاحبه پس از تکمیل مصاحبه ها استفاده کنید. این داده ها به شما کمک می کند تا یک تصمیم آگاهانه و موفق برای استخدام بگیرید.