چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

جاوا چه تفاوتی با سایر زبان های رایج دارد؟ چرا باید جاوا اولین زبانی باشد که باید یاد گرفت؟ بیایید طرحی ایجاد کنیم که به شما کمک می کند جاوا را هم از ابتدا و هم با استفاده از مهارت های برنامه نویسی در زبان های دیگر یاد بگیرید. بیایید تفاوت های بین ایجاد کد تولید در جاوا و توسعه به زبان های دیگر را فهرست کنیم. میخائیل زاتپیاکین این گزارش را در جلسه ای برای شرکت کنندگان آینده خواند دوره های کارآموزی Yandex و دیگر توسعه دهندگان مبتدی - Java Junior Meetup.


- سلام به همه، اسم من میشا است. من یک توسعه دهنده از Yandex.Market هستم و امروز به شما خواهم گفت که چرا جاوا را یاد بگیرید و چگونه آن را به طور موثر انجام دهید. ممکن است یک سوال معقول بپرسید: چرا من این داستان را تعریف خواهم کرد، نه یک توسعه دهنده قوی با چندین سال تجربه؟ واقعیت این است که من خودم اخیراً، حدود یک سال و نیم پیش، جاوا را مطالعه کردم، بنابراین هنوز به یاد دارم که چگونه بود و چه مشکلاتی وجود دارد.

یک سال پیش یک دوره کارآموزی در Yandex.Market گرفتم. من باطن را برای Beru توسعه دادم، برای خود بازار، احتمالا شما از آن استفاده کردید. اکنون در آنجا در تیمی متفاوت به کارم ادامه می دهم. ما یک پلت فرم تحلیلی برای Yandex.Market برای شرکای تجاری ایجاد می کنیم.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

بیا شروع کنیم. چرا جاوا را از نقطه نظر عملی یاد بگیریم؟ واقعیت این است که جاوا یک زبان برنامه نویسی بسیار معروف است. جامعه بسیار بزرگی دارد.

به عنوان مثال، چنین شاخص TIOBE وجود دارد، یک شاخص محبوب محبوبیت زبان های برنامه نویسی، و جاوا در آنجا رتبه اول را دارد. همچنین در سایت های کاریابی احتمالا متوجه خواهید شد که بیشتر جاهای خالی مربوط به جاوا است یعنی با توسعه در جاوا همیشه می توانید کار پیدا کنید.

از آنجایی که انجمن بسیار بزرگ است، هر سوالی که داشته باشید در برخی از Stack Overflow یا سایت های دیگر پاسخی پیدا می کند. همچنین، هنگام توسعه در جاوا، در واقع در حال نوشتن کد بر روی JVM هستید، بنابراین می توانید به راحتی به Kotlin، Scala و سایر زبان هایی که از JVM استفاده می کنند سوئیچ کنید.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

چه چیزی در مورد جاوا از نظر ایدئولوژیک خوب است؟ زبان های برنامه نویسی مختلفی وجود دارد. آنها مشکلات مختلفی را حل می کنند، این را می دانید. به عنوان مثال، پایتون برای نوشتن اسکریپت های یک خطی برای حل سریع مشکلات عالی است.

نکته مثبت این است که می توانید کدهای اجرایی را به طور کامل کنترل کنید. به عنوان مثال، ما ماشین‌هایی داریم، ماشین‌های بدون راننده یاندکس، کد آنها با علامت مثبت نوشته شده است. چرا؟ جاوا چنین چیزی دارد - جمع آوری زباله. RAM را از اشیاء غیر ضروری پاک می کند. این چیز خود به خود شروع می شود و stop-the-world می کند، یعنی بقیه برنامه را متوقف می کند و به شمارش اشیا می رود، حافظه اشیا را پاک می کند. اگر چنین چیزی در یک پهپاد کار کند، جالب نیست. پهپاد شما مستقیم خواهد رفت، در این لحظه حافظه خود را پاک کنید و اصلاً به جاده نگاه نکنید. بنابراین، پهپاد بر روی حرفه ای نوشته شده است.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

جاوا چه مشکلاتی را حل می کند؟ این در درجه اول زبانی برای توسعه برنامه های بزرگ است که در طول سال ها توسط ده ها یا صدها نفر نوشته می شوند. به طور خاص، بسیاری از باطن در Yandex.Market به زبان جاوا نوشته شده است. ما یک تیم توزیع شده در چند شهر داریم که در هر شهر ده نفر است. و نگهداری کد آسان است، ده سال یا بیشتر پشتیبانی می شود و در عین حال افراد جدیدی وارد می شوند و این کد را درک می کنند.

یک زبان باید چه ویژگی هایی داشته باشد تا کدهای موجود در آن به راحتی پشتیبانی شود و به راحتی بتوان آن را در تیم های بزرگ توسعه داد. اول از همه، باید کد خوانا باشد و راه حل های پیچیده معماری به راحتی اجرا شود. یعنی نوشتن انتزاعات سطح بالا و غیره باید آسان باشد. همه اینها چیزی است که جاوا در اختیار ما قرار می دهد. این یک زبان شی گرا است. پیاده سازی انتزاعات سطح بالا و معماری های پیچیده واقعاً آسان است.

همچنین چارچوب ها و کتابخانه های زیادی برای جاوا وجود دارد، زیرا این زبان بیش از 15 سال قدمت دارد. در طول این مدت، هر چیزی که می‌توانست نوشته شود روی آن نوشته شده است، بنابراین هزاران کتابخانه برای هر چیزی که ممکن است نیاز داشته باشید وجود دارد.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

به نظر من یک بازیکن شروع کننده JA چه مهارت های اساسی باید داشته باشد؟ اول از همه، این دانش زبان اصلی جاوا است. بعدی نوعی چارچوب تزریق وابستگی است. سخنران بعدی، کریل، در مورد این موضوع به طور کامل صحبت خواهد کرد. من خیلی عمیق نمی روم بعد معماری و الگوهای طراحی است. برای نوشتن برنامه های بزرگ باید بتوانیم کدهای معماری زیبا بنویسیم. و این نوعی SQL یا ORM برای وظایف کار با پایگاه داده است. و این بیشتر در مورد باطن صدق می کند.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

برو! هسته جاوا من واقعاً آمریکا را در اینجا کشف نخواهم کرد - شما باید خود زبان را بدانید. آنچه باید به آن توجه کنید. اول اینکه جاوا در سال های اخیر نسخه های زیادی منتشر کرده است، یعنی در سال 2014-2015 نسخه هفتم منتشر شد، سپس نسخه های هشتم، نهم، دهم، تعداد زیادی نسخه جدید و چیزهای جالب جدید زیادی در آنها معرفی شد. به عنوان مثال، جاوا استریم API، لامبدا، و غیره. چیزهای بسیار جالب، تازه و باحالی که در کد تولید استفاده می‌شوند، آنچه در مصاحبه‌ها از آنها می‌پرسند و شما باید بدانید. بنابراین، شما نباید یک کتاب را از قفسه کتابخانه Java-4 بردارید و بروید آن را یاد بگیرید. برنامه ما این است: جاوا-8 یا بالاتر را یاد می گیریم.

ما به نوآوری هایی مانند Stream API، var و غیره توجه زیادی داریم. آنها در طول مصاحبه پرسیده می شوند و دائماً در تولید استفاده می شوند. یعنی Stream API بسیار سردتر از حلقه ها است، به طور کلی یک چیز بسیار جالب است. حتما توجه کنید.

و انواع چیزهایی مانند تکرار کننده ها، استثناها و غیره وجود دارد. چیزهایی که برای شما بی اهمیت به نظر می رسند تا زمانی که خودتان کد کوچکی بنویسید. شما به این استثناها نیاز ندارید، چه کسی به آنها نیاز دارد؟ اما قطعاً در مصاحبه ها از آنها سؤال می شود، قطعاً در تولید برای شما مفید خواهند بود. به طور کلی باید به Exception ها، تکرار کننده ها و موارد دیگر توجه کنید.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

ساختارهای داده. شما نمی توانید بدون ساختار پیش بروید، اما اگر فقط ندانید که مجموعه ها، دیکشنری ها و برگه ها وجود دارد، عالی خواهد بود. و همچنین پیاده سازی های مختلف سازه ها. به عنوان مثال، همین دیکشنری در جاوا پیاده سازی های زیادی از جمله HashMap و TreeMap دارد. آنها مجانبی متفاوت دارند، ساختار آنها در داخل متفاوت است. شما باید بدانید که آنها چگونه متفاوت هستند و چه زمانی از کدام یک استفاده کنید.

همچنین اگر بدانید این ساختارهای داده در داخل چگونه کار می کنند بسیار جالب خواهد بود. یعنی دانستن مجانبی آن‌ها آسان نیست - چقدر شرط کار می‌کند، چقدر پاس کار می‌کند، اما ساختار داخل چگونه کار می‌کند - به عنوان مثال، سطل در HashMap چیست.

همچنین ارزش توجه به درختان و نمودارها را دارد. اینها مواردی هستند که در کد تولید چندان رایج نیستند، اما در مصاحبه ها محبوب هستند. بر این اساس، شما باید بتوانید از درختان، نمودارها در عرض و عمق عبور کنید. اینها همه الگوریتم های ساده هستند.

به محض شروع نوشتن هر کد بزرگ، پیچیده، با استفاده از کتابخانه ها، کدهای چند کلاسه، متوجه خواهید شد که بدون ساخت سیستم و رفع وابستگی ها برای شما سخت است. اینها در درجه اول Maven و Gradle هستند. آنها به شما اجازه می دهند کتابخانه ها را در یک خط به پروژه خود وارد کنید. یعنی یک xml یک خطی می نویسید و کتابخانه ها را وارد پروژه می کنید. سیستم های عالی آنها تقریباً یکسان هستند، از یکی استفاده کنید - Maven یا Gradle.

بعدی - نوعی سیستم کنترل نسخه. من Git را توصیه می کنم زیرا محبوب است و آموزش های زیادی وجود دارد. تقریباً همه از Git استفاده می کنند، این چیز جالبی است، شما نمی توانید بدون آن زندگی کنید.

و نوعی محیط توسعه. من IntelliJ Idea را توصیه می کنم. روند توسعه را بسیار سرعت می بخشد، به شما کمک زیادی می کند، تمام کدهای دیگ بخار را برای شما می نویسد، به طور کلی، عالی است.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

پیوندهای اسلاید: SQLZOO, هابراپست

SQL. کمی در مورد پشتیبان ها. در واقع یک مورد خنده دار اینجا وجود داشت. دو روز قبل از دومین مصاحبه کارآموزی ام، یک دختر HR با من تماس گرفت و گفت که دو روز دیگر در مورد SQL و HTTP از من می پرسند، باید آن را یاد بگیرم. و من تقریباً هیچ چیز در مورد SQL یا HTTP نمی دانستم. و من این سایت جالب را پیدا کردم - SQLZOO. من SQL را در عرض 12 ساعت یاد گرفتم، منظورم، SQL syntax، نحوه نوشتن پرس و جوهای SELECT، JOIN و غیره است. سایت بسیار جالبی است، به شدت توصیه می کنم در واقع، در عرض 12 ساعت، 90 درصد چیزی را که اکنون می دانم، یاد گرفتم.

و همچنین دانستن معماری پایگاه داده بسیار خوب است. اینها همه انواع کلیدها، شاخص ها، عادی سازی هستند. یک سری پست در این مورد در هابره وجود دارد.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

در جاوا، علاوه بر SQL، انواع و اقسام سیستم های نگاشت شی رابطه ای مانند JPA وجود دارد. مقداری کد وجود دارد. در روش اول مقداری کد SQL وجود دارد - SELECT id name FROM info.users WHERE id IN userIds. از پایگاه داده کاربران، از جدول، شناسه و نام آنها به دست می آید.

بعد، یک نقشه‌بردار خاص وجود دارد که یک شی را از پایه به یک شی جاوا تبدیل می‌کند. و روش سومی در زیر وجود دارد که در واقع این کد را اجرا می کند. همه اینها را می توان با استفاده از JPA با یک خط جایگزین کرد که در زیر نوشته شده است. همان کار را انجام می دهد - همه ByIdIn را پیدا کنید. یعنی بر اساس نام متد یک پرس و جوی SQL برای شما تولید می کند.

چیز خیلی باحالیه من خودم وقتی SQL را نمی دانستم از JPA استفاده می کردم. به طور کلی توجه کنید. اگر برای یادگیری SQL تنبل هستید، این یک فاجعه است. و به طور کلی آتش!

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

بهار. چه کسی چیزی به عنوان چارچوب Spring شنیده است؟ می بینید چند نفر هستید؟ نه بی دلیل بهار در الزامات هر دوم جای خالی باطن جاوا گنجانده شده است. بدون آن، واقعاً هیچ جای توسعه بزرگی وجود ندارد. بهار چیست؟ اول از همه، این یک چارچوب تزریق وابستگی است. در مورد این هم خواهد گفت سخنران بعدی اما به طور خلاصه، این چیزی است که به شما امکان می دهد وابستگی های برخی از کلاس ها را به سایرین آسان تر وارد کنید. یعنی دانش وابستگی ها ساده شده است.

Spring Boot قطعه ای از Spring است که به شما امکان می دهد برنامه سرور خود را با یک دکمه اجرا کنید. شما به THID می روید، چند دکمه را فشار می دهید و اکنون برنامه سرور خود را روی لوکال هاست 8080 راه اندازی کرده اید. یعنی شما هنوز یک خط کد ننوشته اید، اما در حال حاضر کار می کند. چیز خیلی باحالیه اگر چیزی از خودت نوشتی، آتش بزن!

بهار یک چارچوب بسیار بزرگ است. نه تنها برنامه سرور شما را انتخاب می کند و Dependency Injection را حل می کند. این به شما اجازه می دهد تا یکسری کارها را انجام دهید، از جمله ایجاد متدهای REST API. یعنی یک روش نوشتید و حاشیه نویسی Get mapping را به آن پیوست کردید. و اکنون شما روشی را در لوکال هاست دارید که Hello world را برای شما می نویسد. دو خط کد و کار می کند. چیزهای جالب.

بهار همچنین تست های نوشتن را آسان می کند. هیچ راهی بدون آزمایش در توسعه بزرگ وجود ندارد. کد باید تست شود. برای این منظور، جاوا یک کتابخانه جالب JUnit 5 دارد. و به طور کلی JUnit، اما آخرین نسخه پنجم است. همه چیز برای آزمایش وجود دارد، انواع ادعاها و چیزهای دیگر.

و یک چارچوب Mockito بسیار جذاب وجود دارد. تصور کنید که عملکردی دارید که می خواهید آزمایش کنید. این قابلیت خیلی کارها را انجام می دهد، از جمله، جایی در وسط، مثلاً با شناسه شما وارد VKontakte می شود و نام و نام خانوادگی کاربر VKontakte را از شناسه دریافت می کند. احتمالاً VKontakte را در آزمایشات قرار نخواهید داد، این عجیب است. اما باید عملکرد را آزمایش کنید، بنابراین این کلاس را با استفاده از Mockito، mok it، تقلید از آن ساخته اید.

می گویید وقتی درخواستی با شناسه فلان و فلان به این کلاس می آید، نام خانوادگی مثلاً Vasya Pupkin را برمی گرداند. و کار خواهد کرد. یعنی تمام قابلیت ها را برای کلاس mok one تست خواهید کرد. چیز خیلی باحالیه

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

پیوند از اسلاید

الگوهای طراحی آن چیست؟ اینها الگوهایی برای حل مشکلات معمولی هستند که در توسعه ایجاد می شوند. در توسعه، مشکلات یکسان یا مشابه اغلب بوجود می آیند که حل آنها به نحوی عالی خواهد بود. بنابراین، مردم با بهترین شیوه ها، الگوهای خاصی در مورد چگونگی حل این مشکلات آمدند.

یک وب سایت با محبوب ترین الگوها وجود دارد - refactoring.guru، می توانید آن را بخوانید، ببینید چه الگوهایی وجود دارد، یک دسته از نظریه ها را بخوانید. مشکل این است که عملا بی فایده است. در واقع، الگوهای بدون تمرین مفید نیستند.

در مورد برخی از الگوها مانند Singleton یا Builder خواهید شنید. چه کسی این کلمات را شنید؟ بسیاری از مردم. چنین الگوهای ساده ای وجود دارد که می توانید خودتان آنها را پیاده سازی کنید. اما بیشتر الگوها: استراتژی، کارخانه، نما - مشخص نیست کجا باید آنها را اعمال کرد.

و تا زمانی که در عمل در کد شخص دیگری جایی را مشاهده نکنید که این الگو در آن اعمال می شود، خودتان نمی توانید آن را اعمال کنید. بنابراین، تمرین با الگوها بسیار مهم است. و فقط خواندن در مورد آنها در refactoring.guru بسیار مفید نیست، اما قطعا ارزش انجام آن را دارد.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

چرا الگوها مورد نیاز است؟ فرض کنید کلاس کاربری خاصی دارید. دارای شناسه و نام است. هر کاربر باید هم شناسه و هم یک نام داشته باشد. بالا سمت چپ کلاس درس است.

راه های اولیه سازی User چیست؟ دو گزینه وجود دارد - یا سازنده یا تنظیم کننده. معایب هر دو رویکرد چیست؟

سازنده. کاربر جدید (7، "باند")، بسیار خوب. حالا فرض کنید که ما یک کلاس User نداریم، بلکه یک کلاس دیگر با هفت فیلد عددی داریم. شما یک سازنده خواهید داشت که شامل هفت عدد متوالی است. معلوم نیست این اعداد چیست و کدام یک متعلق به کدام ملک است. طراحش عالی نیست

گزینه دوم تنظیم کننده است. شما به وضوح می نویسید: setId(7)، setName("Bond"). شما متوجه می شوید که کدام ویژگی متعلق به کدام زمینه است. اما تنظیم کننده یک مشکل دارد. اولاً ممکن است فراموش کنید چیزی را اختصاص دهید و ثانیاً شیء شما قابل تغییر است. این موضوع ایمن نیست و کمی خوانایی کد را کاهش می دهد. به همین دلیل است که مردم با یک الگوی جالب آمدند - بیلدر.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

این در مورد چیست؟ بیایید سعی کنیم مزایای هر دو رویکرد - تنظیم کننده و سازنده - را در یک ترکیب کنیم. ما یک شی خاص به نام Builder می سازیم که دارای فیلدهای Id و Name است که خودش بر اساس تنظیم کننده ساخته می شود و متد Build دارد که یک کاربر جدید با تمام پارامترها به شما برمی گرداند. یک شیء تغییرناپذیر و یک تنظیم کننده بدست می آوریم. سرد!

مشکلات چیست؟ در اینجا بیلدر کلاسیک را داریم. مشکل این است که ما هنوز می‌توانیم فراموش کنیم در برخی زمینه‌ها بررسی کنیم. و اگر فراموش کردیم ID را بازدید کنیم، در این حالت در بیلدر مقدار اولیه صفر می شود، زیرا نوع int nullable نیست. و اگر نام "Bond" را بسازیم و فراموش کنیم که به دفتر شناسه مراجعه کنیم، یک کاربر جدید با شناسه "0" و نام "Bond" خواهیم داشت. باحال نبود.

بیایید سعی کنیم با این مبارزه کنیم. در Builder ما int را به int تغییر می دهیم تا باطل شود. حالا همه چیز عالی است.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

اگر بخواهیم یک کاربر با نام "Bond" ایجاد کنیم، فراموش کنیم که شناسه او را قرار دهیم، یک استثنای اشاره گر تهی دریافت می کنیم، زیرا ID قابل تهی نیست و سازنده یک استثنا دارد، به ویژه اشاره گر.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

اما هنوز هم می‌توانیم فراموش کنیم که یک نام بگذاریم، بنابراین replay شی را روی null قرار می‌دهیم. حالا وقتی آبجکت خود را از Builder می سازیم، بررسی می کند که فیلد nullable نباشد. و این همه ماجرا نیست.

بیایید به آخرین مثال نگاه کنیم. در این مورد، اگر به نحوی در زمان اجرا ID null قرار دهیم، بسیار خوب است که فوراً بدانیم که شما این کار را انجام داده‌اید و جالب نیست که اکنون اشتباه می‌کنید.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

شما باید یک خطا را نه در لحظه ایجاد کاربر، بلکه زمانی که null را روی ID تنظیم می کنید، ارسال کنید. بنابراین، در بیلدر، تنظیم کننده Integer را به int تغییر می دهیم، و او بلافاصله قسم می خورد که آنها null را بیرون انداخته اند.

خلاصه اینکه چه فایده ای دارد؟ یک الگوی سازنده ساده وجود دارد، اما حتی اجرای آن دارای ظرافت‌هایی است، بنابراین دیدن پیاده‌سازی‌های مختلف الگوها بسیار جالب است. هر الگو ده ها پیاده سازی دارد. این سراپا بسیار جالب است.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

چگونه بیلدر را در کد تولید بنویسیم؟ اینجا کاربر ماست. ما یک چرخش Builder از کتابخانه Lombok به آن متصل می کنیم و خودش یک Builder برای ما ایجاد می کند. یعنی ما هیچ کدی نمی نویسیم، اما جاوا از قبل فکر می کند که این کلاس یک Builder دارد و می توانیم آن را به این صورت صدا کنیم.

قبلاً گفته‌ام که جاوا تقریباً برای همه چیز کتابخانه دارد، از جمله Lombok، یک کتابخانه جالب که به شما امکان می‌دهد از نوشتن boilerplate اجتناب کنید. سازنده، دریافت کنید.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

الگوها می توانند معماری باشند - نه تنها به یک طبقه، بلکه به کل سیستم مربوط می شوند. چنین اصل جالبی در طراحی سیستم وجود دارد: اصل مسئولیت واحد. در مورد چی حرف می زنه؟ این واقعیت که هر کلاس باید مسئول برخی از عملکردهای خود باشد. در این مورد، ما یک Controller داریم که با کاربران، اشیاء JSON ارتباط برقرار می کند. Facade وجود دارد که اشیاء JSON را به مدل هایی تبدیل می کند که برنامه جاوا با آنها کار می کند. سرویسی وجود دارد که منطق پیچیده ای دارد که با این مدل ها کار می کند. یک Data Access Object وجود دارد که این مدل ها را در پایگاه داده قرار می دهد و آنها را از پایگاه داده بازیابی می کند. و خود پایگاه داده وجود دارد. به عبارت دیگر، همه چیز در یک کلاس نیست، اما ما پنج کلاس مختلف می سازیم و این یک الگوی دیگر است.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

هنگامی که کم و بیش جاوا را یاد گرفتید، نوشتن پروژه خود که دارای پایگاه داده باشد، با سایر API ها کار کند و برنامه سرور خود را در معرض کلاینت های REST API قرار دهد، عالی است. این یک چیز عالی برای اضافه کردن به رزومه شما خواهد بود، این یک پایان جالب برای تحصیل شما خواهد بود. با این کار می توانید بروید و کار پیدا کنید.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

در اینجا یک نمونه از برنامه سرور من است. در سال دوم، با بچه ها یک ترم نوشتم. آنها در حال نوشتن یک برنامه تلفن همراه برای سازماندهی رویدادها بودند. در آنجا، کاربران می توانستند از طریق VKontakte وارد شوند، نقاطی را روی نقشه قرار دهند، رویدادهایی ایجاد کنند، دوستان خود را به آنها دعوت کنند، تصاویر رویدادها را ذخیره کنند و غیره.

من در پروژه چه کار کردم؟ یک برنامه سرور در Spring Boot بدون استفاده از SQL نوشت. من او را نمی شناختم، از JPA استفاده کردم. چه کاری می توانست انجام دهد؟ از طریق OAuth-2 وارد VK شوید. توکن کاربر را بگیرید، با آن به VK بروید، بررسی کنید که یک کاربر واقعی است. اطلاعات کاربران را از طریق VKontakte دریافت کنید. قادر به ذخیره اطلاعات در یک پایگاه داده، همچنین از طریق JPA بود. تصاویر و فایل های دیگر را به طرز ماهرانه ای در حافظه کامپیوتر ذخیره کنید و لینک های آنها را در پایگاه داده ذخیره کنید. در آن زمان من نمی دانستم که اشیاء CLOB در پایگاه داده وجود دارد، بنابراین این کار را به این روش انجام دادم. یک REST API برای کاربران، برنامه های مشتری وجود داشت. و تست های واحد برای عملکرد اولیه وجود داشت.

[...] نمونه کوچکی از یادگیری موفقیت آمیز من از جاوا. در اولین سال تحصیلی ام در دانشگاه، سی شارپ به من آموزش داده شد و درک درستی از برنامه نویسی OOP به من داده شد - کلاس ها، رابط ها، انتزاع چیست و چرا به آنها نیاز است. این خیلی کمکم کرد. بدون این، یادگیری جاوا بسیار دشوار است؛ مشخص نیست که چرا کلاس ها مورد نیاز است.

چرا جاوا را یاد بگیریم و چگونه آن را به طور موثر انجام دهیم. گزارش یاندکس

در سال دوم دانشگاه، آنها دوباره به زبان جاوا core تدریس کردند، اما من به همین جا بسنده نکردم، خودم به مطالعه Spring رفتم و یک مقاله درسی نوشتم، پروژه من، که در بالا به آن اشاره کردم. و با همه اینها، من برای کارآموزی در Yandex رفتم، مصاحبه ای را پشت سر گذاشتم و وارد Yandex.Market شدم. در آنجا من باطن را برای Beru نوشتم، اینجا بازار ماست، و برای خود Yandex.Market.

پس از آن، شش ماه پیش، به تیم دیگری در همان مارکت منتقل شدم. ما برای شرکای تجاری تجزیه و تحلیل انجام می دهیم. ما در پلتفرم تحلیلی هستیم، ما سه نفر در باطن هستیم، بنابراین من سهم بسیار زیادی روی پروژه دارم. خیلی جالبه واقعا یعنی ما در واقع داده‌هایی را در بازار ارائه می‌کنیم - فروش چیست، در چه دسته‌هایی، در چه مدل‌هایی، برای شرکای تجاری، شرکت‌های بزرگ معروف. و ما فقط سه نفر هستیم، ما این کد را می نویسیم، و بسیار جالب است.

متشکرم! لینک های مفید:
- "جاوا 8. راهنمای مبتدیان".
- ساختارهای داده.
- SQLZOO.
- عادی سازی پایگاه داده.
- الگوهای طراحی.
- الگوهای طراحی.
- کد تمیز.
- جاوای موثر.

منبع: www.habr.com

اضافه کردن نظر