الزامات توسعه دهندگان بالقوه جاوا دائماً در حال تغییر است و به سختی می توان با آنها همراه بود. آیا برای کارآموز شدن فقط Java Core را بدانید کافی است؟ چقدر باید Spring و Hibernate را برای به دست آوردن موقعیت Java Junior درک کنید؟ آیا ارزش یادگیری پایگاه داده ها و درک الگوریتم های مرتب سازی و جستجو را دارد؟ و از آنجایی که دانشجویان JavaRush اغلب نگران این سوالات هستند، تصمیم گرفتیم آنها را از فارغ التحصیلان خود بپرسیم که در حال حاضر به عنوان جاوا جونیور یا کارآموزی در شرکت هایی به عنوان کارآموز جاوا مشغول به کار هستند. توجه داشته باشید که 13٪ از پاسخ دهندگان به اندازه کافی خوش شانس بودند که در اولین تلاش خود، با دور زدن مرحله Junior، موقعیت Java Middle را به دست آوردند. پاسخ دهندگان اطلاعاتی را در مورد فناوری هایی که برای قبولی در مصاحبه نیاز داشتند و در سال اول اولین شغل خود در جاوا استفاده کردند، به اشتراک گذاشتند.
- جاوا هسته
- الگوریتم ها و ساختارهای داده
- تست واحد
- کتابخانه های ابزار، رابط کاربری گرافیکی و اجزای مفید
- چارچوب ها
- ابزارهای اتوماسیون و سرورهای کاربردی بسازید
- تکنولوژی ها و الگوهای مختلف
همه به Java Core نیاز دارند
اصطلاح Java Core بسیار گسترده است. این نام هم به نحو ابتدایی زبان و هم به موضوع پیچیده ای مانند multithreading اشاره دارد. در واقع، دوره JavaRush عمدتا به Core اختصاص دارد. نحو جاوا. مبانی زبان. همه این نوع داده ها، عملگرها، حلقه ها و شاخه ها. به طور طبیعی، 92.4٪ از کسانی که این شغل را دریافت کردند، دانش خود را در نحو "خوب یا عالی" ارزیابی کردند. با این حال، 7.6٪ از پاسخ دهندگان موفق شدند با دانش نحوی متوسط، کارآموز جاوا شوند. با این حال، این باید بیشتر به عنوان شانس (یا لاف زدن پاسخ دهندگان :)) ارزیابی شود. البته، همه کسانی که برای شغل برنامه نویسی درخواست می دهند باید نحو زبان را بدانند. برنامه نویسی شی گرا (OOP). همه چیز در جاوا از اشیاء تشکیل شده است، بنابراین OOP را می توان یکی از مهم ترین موضوعات زبان در نظر گرفت. رویکرد شی گرا ممکن است در ابتدا ناآشنا به نظر برسد، به خصوص اگر قبلاً فقط زبان های رویه ای را مطالعه کرده باشید، اما تغییر به اشیا دشوار نیست. بزرگترین مشکلات برای مبتدیان سطوح انتزاع و توزیع مستقل آنها است - یک برنامه نویس تازه کار باید بتواند به درستی سلسله مراتبی از اشیاء را ایجاد کند، بفهمد که رابط چه مسئولیتی دارد و چه چیزی را می توان در یک کلاس انتزاعی قرار داد، وراثت ایجاد کرد. نردبان و غیره طبق معمول، این مشکل با تمرین حل می شود. اکثر پاسخ دهندگان، 80.3٪ از کسانی که اولین شغل خود را پیدا کردند، اصول OOP را به خوبی می دانستند و دائماً از آنها استفاده می کردند. در سال اول کار به عنوان جاوا جونیورها و کارآموزان، 78.8٪ از پاسخ دهندگان اغلب از اصول OOP استفاده کردند، 12.1٪ - هر از گاهی. 7.6٪ از شنوندگان به ندرت از آنها استفاده می کردند - این افراد عمدتاً مشغول آزمایش واحد و کارهای کوچک مختلف بودند. البته، آنها همچنین از کلاس ها یا اشیاء استفاده می کردند (شما نمی توانید بدون این کار در جاوا انجام دهید)، اما به ندرت سلسله مراتب کلاس ایجاد می کردند. چارچوب مجموعه ها. مجموعه مجموعه ای از اشیاء منفرد است که به طور کلی ارائه می شوند. جاوا یک مجموعه بسیار هوشمند چارچوب برای نمایش مجموعه ها دارد. مجموعه ها بر اساس ساختارهای داده محبوب - لیست ها، معمولی و متصل، مجموعه ها، جداول هش هستند. بنابراین هنگام کاوش مجموعه ها، بهتر است با ساختارهای داده بیشتر آشنا شوید. مشکل اصلی در مطالعه مجموعه ها درک و به خاطر سپردن نحوه کار آنهاست. اگر میدانید که چگونه به یک عنصر دسترسی پیدا میکنند، آن را از یک مجموعه استخراج میکنند و به آن اضافه میکنند، سپس متوجه میشوید که کجا باید این یا آن ساختار را اعمال کنید. با تمرین می آید. اما، خوشبختانه، همه تعداد زیادی از مجموعه ها به طور فعال در کارهای واقعی استفاده نمی شوند. 80.3 درصد از پاسخ دهندگان نشان دادند که قبل از دریافت اولین پیشنهاد شغلی خود، دانش خوب یا حتی عالی از مجموعه ها داشتند و تقریباً 96.9 درصد از جوانان و کارآموزان از مجموعه ها در اولین شغل خود استفاده می کنند. رسیدگی به استثنا.یک استثنا یک موقعیت غیرعادی است که ممکن است در حین اجرای برنامه شما رخ دهد. تمام کلاس های استثنا زیرنوع های کلاس java.lang.Exception هستند. مکانیسم رسیدگی به استثناها فرآیند یافتن خطاها در برنامه ها را بسیار ساده می کند. معمولاً دانشآموزان خیلی زود شروع به استفاده از استثناها میکنند، مثلاً در JavaRush. در JavaRush، این موضوع در اولین جستجوی Java Syntax مطرح میشود. تقریباً تمام فارغالتحصیلان JavaRush که اولین شغل خود را پیدا کردند، میدانستند که چگونه استثنائات را مدیریت کنند و طبیعتاً هنگام کار از آنها استفاده میکردند. I/O جریان جاوا. اولین برنامه های نوشته شده در جاوا معمولاً حاوی چیزی شبیه System.out.println ("سلام جهان") بود. اغلب، تازهکاران میدانند که روش println یک خط را در کنسول چاپ میکند، اما نمیدانند چرا System و out وجود دارد و چگونه کار میکنند. کمی بعد معلوم می شود که جاوا عملیات ورودی و خروجی را با استفاده از جریان ها، یک جریان پیوسته از داده ها، انجام می دهد. Thread ها ساده ترین موضوع برای درک نیستند، و اغلب در مشاغل تازه کار استفاده نمی شود: فقط 22.7٪ از افرادی که اولین شغل Java Junior/Trainee خود را دریافت کردند، گفتند که از رشته های I/O زیاد استفاده می کنند، 31.8٪ - از زمان به بعد. زمان، 25.8٪ - به ندرت. بنابراین فقط کمتر از 20٪ در اولین سال خود به عنوان یک توسعه دهنده جاوا اصلا از آنها استفاده نکردند. 18.2% در طول تحصیل خود مشکل خاصی با جریان نداشتند و آنها را به خوبی می شناختند، 36.4% دانش خود را خوب ارزیابی کردند، اما 10.6% این موضوع را نادیده گرفتند. Multithreading (Java Multithreading/Concurrency). شاید این موضوعی است که باعث ایجاد بزرگترین سوء تفاهم در بین توسعه دهندگان تازه کار می شود. اگرچه چند رشته ای در جاوا بسیار خوب پیاده سازی شده است، درک آن دشوار است و حتی در هنگام نوشتن برنامه های ساده نیز ممکن است مشکلاتی پیش بیاید (به عنوان مثال، "Hello, world" چند رشته ای). بسیاری از کارفرمایان این را میدانند و نیازی به درک عمیق چند رشتهای از مبتدیان ندارند و انتظار دارند که با تجربه همراه شود. تنها 12 درصد از پاسخ دهندگان خاطرنشان کردند که قبل از دریافت اولین پیشنهاد، موضوع را در سطح خوبی می دانستند، در حالی که تقریباً 32 درصد از پاسخ دهندگان اعتراف کردند که اصلاً چیزی در مورد موضوع نمی دانند. اکثریت، 56.2٪ گفتند که "درکی" از چند رشته ای داشتند. بنابراین اگر در حال حاضر دشواری های کار با نخ ها برای شما غیر قابل حل به نظر می رسد، این اعداد ممکن است به شما اطمینان دهند. با این حال، اگر می خواهید در مصاحبه مزیت رقابتی کسب کنید، این موضوع می تواند نقطه قوت شما باشد. در پروژه های واقعی، مبتدیان نیز به ندرت مجاز به کار با رشته ها هستند. بنابراین، 15.1 درصد از برنامه نویسان مبتدی در کار خود اصلاً با Java Multithreading مواجه نشده اند و 39.4 درصد با آن مواجه شده اند، اما به ندرت. اغلب در سال اول کار فقط 9.1٪ از پاسخ دهندگان مجبور بودند با چند نخ کار کنند. عبارات لامبداعبارات لامبدا و نکات برنامه نویسی کاربردی در جاوا 8 ظاهر شد، اما تازه کارها اغلب از این ابزار مفید استفاده نمی کنند. عبارت لامبدا تابعی است که میتوان آن را بدون تعلق به کلاسی ایجاد کرد و میتوانید آن را به عنوان یک شی ارسال کنید یا در صورت تقاضا آن را اجرا کنید. تنها 22.7 درصد از فارغ التحصیلان مورد بررسی، عبارات لامبدا را قبل از دریافت اولین پیشنهاد شغلی خود به خوبی می دانستند و 48.5 درصد دانش خود را از این موضوع "نزدیک به صفر" ارزیابی کردند. در همان زمان، بیش از 85 درصد از برنامه نویسان جدید گفتند که در سال اول از عبارات لامبدا استفاده کردند. اگر منصف باشیم، اشاره میکنیم که درصد پایین کسانی که این موضوع را میدانند ممکن است به این دلیل باشد که در JavaRush، عبارات لامبدا تاکنون فقط در جستوجو و مقالات جدید Java Syntax Pro ارائه شدهاند . بنابراین، به جرات می توان گفت که دانش Core Java برای هر جاوا جونیور و حتی کارآموز بالقوه به سادگی ضروری است. البته، برخی از موضوعات، به عنوان مثال، multithreading، قابل قبول است که کمی کمتر بدانید، اما نحو جاوا، OOP و مجموعه ها باید به طور محکم در آگاهی شما جا افتاده باشد.الگوریتم ها و ساختارهای داده
بحث دائمی در مورد مطالعه الگوریتم های مرتب سازی و جستجو وجود دارد. از یک سو، بهترین الگوریتمها مدتهاست که در کتابخانههای همه زبانهای برنامهنویسی محبوب از جمله جاوا نوشته و گنجانده شدهاند. و آنها را می توان به طور قانونی بدون دردسر نوشتن کد خود استفاده کرد. با این حال، کارشناسانی که برنامهنویسان را آموزش میدهند، همچنان توصیه میکنند که هر توسعهدهنده مبتدی با نوشتن همه این الگوریتمهای حباب، ادغام، جستجوی باینری و مواردی از این دست، مغز خود را آموزش دهد. اولاً، این الگوریتمها نوعی آزمون تورنسل برای مهارتهای یک برنامهنویس (یعنی نه دانش، بلکه مهارتها) و درک شخص از برنامهنویسی در اصل هستند. اگر مغز شما از قبل به خوبی روی این نوع کارها تنظیم شده باشد، الگوریتم ها را نسبتاً آسان می نویسید. و با این حال، باید به خاطر داشته باشید: شما دقیقاً برای آموزش مغز خود به الگوریتمهایی نیاز دارید... و برای انجام مصاحبه: توسعهدهندگان ارشد خورنده که آنها را انجام میدهند، علاقه زیادی به عذاب متقاضیان با درخواست نوشتن این یا آن الگوریتم دارند. اما در کار خود اکثریت (5/48 درصد) از الگوریتم های استاندارد کتابخانه ای، مؤثر و اثبات شده استفاده می کنند، در حالی که 16 درصد از پاسخ دهندگان در سال اول کار به عنوان برنامه نویس اصلاً از مرتب سازی استفاده نکرده اند. 69.6 درصد از فارغ التحصیلان ادعا می کنند که قبل از دریافت اولین پیشنهاد شغلی خود، درک خوبی از الگوریتم های مرتب سازی و جستجو داشته اند و می توانند آنها را خودشان بنویسند. زمانی که درباره مجموعههای جاوا صحبت کردیم، قبلاً به موضوع ساختارهای داده پرداختیم. بله، بهتر است آنها را درک کنید تا بدانید کجا و چه ساختاری باید اعمال شود. ایجاد ساختارهای داده ای خود در تصویری از نمونه های کتابخانه ای تمرین بسیار خوبی است که به شما در درک بهتر آنها کمک می کند. برای مثال، میتوانید سعی کنید نسخه ArrayList خود را بنویسید یا لیست پیوندی خود را پیشنهاد دهید (لینکد لیست معمول در جاوا دو بار پیوند دارد). در حین کار، برنامه نویسان مبتدی عمدتاً از ساختارهای داده استاندارد استفاده می کردند.تست واحد
کتابخانه JUnit مسئول تست واحد در جاوا است. در واقع تقریباً در همان ابتدای آموزش می توانید تست واحد را شروع کنید. حداقل زمانی که اولین پروژه مستقل خود را انجام می دهید، حتی یک پروژه بسیار کوچک، بهتر است از قبل در این ابزار مهارت داشته باشید. نوشتن تست های واحد چندان دشوار نیست، اگرچه تفاوت های ظریفی وجود دارد. یادگیری JUnit زمان زیادی نمی برد، اما مزایای دانستن آن بسیار زیاد است. شما قادر خواهید بود کدهای خود و دیگران را با تست ها پوشش دهید. اغلب، افراد تازه کار وظیفه نوشتن تست واحد برای همکاران را دارند، بنابراین این می تواند مستقیماً در شغل جدید آنها مفید باشد. 57.5 درصد از پاسخ دهندگان گفتند که از JUnit قبل از اولین مصاحبه موفق جاوا خود استفاده کرده اند و بیش از 83 درصد قبلاً از تست واحد در سال اول استفاده کرده اند.کتابخانه های ابزار، رابط کاربری گرافیکی و اجزای مفید
ما پرسیدیم که فارغ التحصیلان JavaRush چقدر با تعدادی ابزار آشنا هستند که برخی از آنها در دوره ما پوشش داده شده است.- Servlets اجزای نرم افزار جاوا هستند که قابلیت های یک سرور را گسترش می دهند.
- JDBC یک استاندارد مستقل از پلتفرم برای قابلیت همکاری بین برنامه های کاربردی جاوا و پایگاه های داده است. JDBC به عنوان یک بسته جاوا پیاده سازی شده است. sql با جاوا SE (نسخه استاندارد) گنجانده شده است.
- log4j مشهورترین کتابخانه ثبت پیام است. این امکان را به شما می دهد تا تماس های کتابخانه را در کد جاوا بنویسید، و سپس به طور انعطاف پذیر آن را بدون تغییر کد نوشته شده قبلی، سفارشی کنید.
- جکسون/JSON. JSON (JavaScript Object Notation) یک فایل استاندارد باز و فرمت تبادل داده بسیار محبوب است و جکسون یک پردازنده JSON با کارایی بالا برای جاوا است.
چارچوب ها
قبلاً هیچکس انتظار نداشت که Java Junior Spring یا Hibernate را بداند. اما زمانه تغییر می کند و امروزه حتی از Trainee نیز این انتظار می رود. یادگیری این فناوری ها به تنهایی کار آسانی نیست. حتی اگر همه چیز واضح به نظر برسد، دانشآموزان اغلب خیلی سریع فراموش میکنند که چه چیزی چیست. گاهی اوقات حتی برنامه هایی که به طور مستقل در بهار نوشته شده اند نوشدارویی نیستند. فقط کار فعال کمک خواهد کرد. با این حال، قبل از یک مصاحبه موفق، یک سوم از پاسخ دهندگان با بهار در سطح خوبی آشنا بودند و 45.5٪ درک متوسطی از آن داشتند. وضعیت بوت Spring تا حدودی بدتر است (36.4٪ اصلاً آن را نمی دانستند) و تقریباً 44٪ از فارغ التحصیلان JavaRush که مورد بررسی قرار گرفتند گفتند که دانش خوبی از Hibernate داشتند. در همان زمان، در حین کار، تقریباً 88٪ از برنامه نویسان جدید از چارچوب اصلی جاوا استفاده کردند، Spring Boot - 83٪، Hibernate - 81٪.ابزارهای اتوماسیون و سرورهای کاربردی بسازید
اکثر فارغ التحصیلان JavaRush که با آنها مصاحبه شده است سعی کرده اند با سازندگان پروژه کار کنند. بیشتر اوقات Maven بود (40.9٪ آن را در عمل امتحان کردند، 30.3٪ دیگر هر از گاهی از آن استفاده کردند و 12.1٪ به طور مداوم در طول تحصیل از آن استفاده کردند). هنگام کار با Maven، من با 72.7٪ (اغلب)، 7.6٪ (گاهی اوقات) و 3٪ (به ندرت) مواجه شدم. در مورد Gradle، وضعیت تا حدودی بدتر است. تنها 22.7 درصد با این کلکسیونر تمرین کرده اند و بیشتر آنها به تازگی این فناوری را امتحان کرده اند. تقریباً نیمی از پاسخ دهندگان از Gradle در کار خود استفاده کردند. مورچه مدتهاست که موقعیت خود را از دست داده است و این در محبوبیت آن در بین فارغ التحصیلان ما منعکس شده است: فقط 3٪ از پاسخ دهندگان با آن دست و پنجه نرم کرده اند. و 12 درصد از کسانی که به سوالات پاسخ دادند مجبور بودند با او کار کنند. در میان سرورهای برنامه، تامکت پیشرو است؛ بیش از 77 درصد از پاسخ دهندگان در طول مطالعات خود متوجه این موضوع شدند، 11 درصد از GlassFish، 12 درصد از JBoss استفاده کردند. محبوبیت سرورها در بین کسانی که در حال حاضر کار می کنند مشابه به نظر می رسد. تنها 31.8 درصد از افرادی که این شغل را دریافت کردند، هیچ تجربه ای با تامکت نداشتند. همچنین فارغ التحصیلان JavaRush در سال اول کار خود به عنوان برنامه نویس، سرورهایی مانند WebSphere، Jetty، Netty، Wildfly، Weblogic را امتحان کردند.چه چیز دیگری؟
اکثریت قریب به اتفاق پاسخ دهندگان، حتی قبل از به دست آوردن اولین شغل خود:- درک درستی از HTML، CSS و جاوا اسکریپت داشت.
- با پایگاه داده کار می کرد، SQL را می دانست.
- تقریباً همه از Git و GitHub استفاده می کردند.
- سعی کردم با XML خالص کار کنم.
GO TO FULL VERSION