Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Java башка популярдуу тилдерден эмнеси менен айырмаланат? Эмне үчүн Java биринчи тил болушу керек? Келгиле, Java тилин нөлдөн баштап жана башка тилдерде программалоо жөндөмдөрүн колдонуу менен үйрөнүүгө жардам бере турган план түзөлү. Келгиле, Java'да өндүрүш кодун түзүү менен башка тилдерде иштеп чыгуунун ортосундагы айырмачылыктарды санап көрөлү. Михаил Затепякин бул докладды болочок катышуучулар учун заседаниеде окуп берди стажировкалар Яндекс жана башка башталгыч иштеп чыгуучулар - Java Junior жолугушуусу.

Play Video

— Баарыңарга салам, менин атым Миша. Мен Яндекс.Маркеттин иштеп чыгуучусумун, бүгүн мен сизге эмне үчүн Java-ны үйрөнүү керектигин жана аны кантип натыйжалуу жасоо керектигин айтып берем. Сиз акылга сыярлык суроо беришиңиз мүмкүн: эмне үчүн мен бул окуяны көп жылдык тажрыйбасы бар күчтүү иштеп чыгуучу эмес, айтып берем? Чындыгында, мен өзүм Java тилин жакында, бир жарым жыл мурун үйрөнгөм, ошондуктан ал кандай болгонун жана кандай тузактар ​​бар экенин дагы деле эстейм.

Бир жыл мурун мен Яндекс.Маркеттен стажировкадан өттүм. Мен Беру үчүн, Базардын өзү үчүн бэкендди иштеп чыктым, сиз аны колдонсоңуз керек. Азыр ал жакта, башка командада иштейм. Биз бизнес өнөктөштөр үчүн Yandex.Market үчүн аналитикалык платформа түзөбүз.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Баштайлы. Эмне үчүн Java тилин практикалык көз караштан үйрөнүшөт? Чындыгында Java абдан белгилүү программалоо тили болуп саналат. Бул абдан чоң коомчулукка ээ.

Мисалы, мындай TIOBE индекси бар, программалоо тилдеринин популярдуулугунун популярдуу индекси жана Java ал жерде биринчи орунда турат. Ошондой эле, жумуш сайттарында, балким, бош орундардын көбү Java жөнүндө экенин байкайсыз, башкача айтканда, Java-да иштеп чыгуу менен сиз ар дайым жумуш таба аласыз.

Коомчулук абдан чоң болгондуктан, кандайдыр бир сурооңузга жоопту кээ бир Stack Overflow же башка сайттардан таба аласыз. Ошондой эле, Javaда иштеп жатканда, сиз JVMге код жазып жатасыз, ошондуктан сиз Kotlin, Scala жана JVM колдонгон башка тилдерге оңой которула аласыз.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Идеологиялык жактан Java эмнеси менен жакшы? Ар кандай программалоо тилдери бар. Алар ар кандай маселелерди чечет, муну билесиңер. Мисалы, Python тез маселелерди чечүү үчүн бир сап скрипттерди жазуу үчүн сонун.

Жакшы жагы, сиз аткарылуучу кодду толугу менен башкара аласыз. Мисалы, бизде унаалар бар, Яндекс айдоочусу жок унаалар, алардын коду плюс менен жазылган. Неге? Javaда мындай нерсе бар - таштанды жыйноочу. Ал RAMды керексиз объекттерден тазалайт. Бул нерсе өзүнөн өзү башталат жана дүйнөнү токтотот, башкача айтканда, ал программанын калган бөлүгүн токтотуп, объекттерди санаганга барат, объекттердин эс тутумун так аткарат. Эгерде мындай нерсе дрондо иштесе, бул сонун эмес. Сиздин дрон түз айдайт, учурда эс тутумун тазалап, жолду такыр карабайт. Ошондуктан, дрон проф боюнча жазылган.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Java кандай көйгөйлөрдү чечет? Бул, биринчи кезекте, ондогон же жүздөгөн адамдар тарабынан жылдар бою жазылган чоң программаларды иштеп чыгуу үчүн тил. Атап айтканда, Яндекс.Маркеттин көп бөлүгү Java тилинде жазылган. Бир нече шаарларда бөлүштүрүлгөн командабыз бар, ар биринде он адамдан. Ал эми кодду тейлөө оңой, ал он жыл же андан көп убакыттан бери колдоого алынып, ошол эле учурда жаңы адамдар кирип, бул кодду түшүнүшөт.

Андагы код оңой колдоого алынышы жана чоң командаларда оңой иштелип чыгышы үчүн тил кандай мүнөздөмөлөргө ээ болушу керек. Биринчиден, ал окула турган код болушу керек жана татаал архитектуралык чечимдерди ишке ашыруу үчүн жеңил болушу керек. Башкача айтканда, жогорку деңгээлдеги абстракцияларды жазуу оңой болушу керек, ж.б. Мунун баары Java бизге берет. Бул объектке багытталган тил. Жогорку деңгээлдеги абстракцияларды жана татаал архитектураларды ишке ашыруу чындап эле оңой.

Ошондой эле Java үчүн көптөгөн фреймворктар жана китепканалар бар, анткени тил 15 жаштан ашкан. Бул убакыттын ичинде, жазыла турган нерселердин баары ага жазылган, ошондуктан сизге керектүү нерселердин бардыгы үчүн тонналаган китепканалар бар.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Менин оюмча, башталгыч JA оюнчусу кандай негизги жөндөмгө ээ болушу керек? Биринчиден, бул Java негизги тилин билүү. Кийинки көз карандылык инъекциясынын бир түрү. Кийинки баяндамачы Кирилл бул тууралуу кененирээк айтып берет. Мен тереңге барбайм. Кийинки архитектура жана дизайн үлгүлөрү болуп саналат. Чоң тиркемелерди жазуу үчүн архитектуралык жактан кооз кодду жаза билишибиз керек. Бул маалымат базасы менен иштөө тапшырмалары үчүн SQL же ORM бир түрү. Жана бул backend үчүн көбүрөөк тиешелүү.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Go! Java өзөгү. Мен бул жерден Американы ачпайм — тилдин өзүн билишиң керек. Эмнеге көңүл буруш керек. Биринчиден, Java акыркы жылдары көптөгөн версияларды чыгарды, башкача айтканда, 2014-2015-жылдары жетинчи, андан кийин сегизинчи, тогузунчу, онунчу, көптөгөн жаңы версиялар жана аларда көптөгөн жаңы сонун нерселер киргизилген. , мисалы, Java Stream API , lambda ж.б. Өндүрүштүк коддо колдонулган абдан сонун, жаңы, сонун нерселер, алар интервьюларда эмнелер жөнүндө сурашат жана сиз билишиңиз керек. Андыктан Java-4 китепканасындагы текчеден китеп алып, аны үйрөнүүгө барбаңыз. Бул биздин план: биз Java-8 же андан жогору курсту үйрөнөбүз.

Биз Stream API, var, ж.б.у.с инновацияларга жакшы көңүл бурабыз. Алар интервью учурунда суралып, өндүрүштө тынымсыз колдонулат. Башкача айтканда, Stream API циклдерге караганда бир топ салкын, жалпысынан алганда, абдан сонун нерсе. Сөзсүз көңүл буруңуз.

Жана итераторлор, Exceptions жана башкалар сыяктуу ар кандай нерселер бар. Сиз кичинекей кодду өзүңүз жазсаңыз, сиз үчүн маанилүү эместей көрүнгөн нерселер. Сизге бул Өзгөчөлүктөрдүн кереги жок, баары бир алар кимге керек? Бирок алар сөзсүз түрдө интервьюда суралат, алар өндүрүштө сизге пайдалуу болот. Жалпысынан алганда, сиз Exceptions, итераторлор жана башка нерселерге көңүл бурушуңуз керек.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Маалымат структуралары. Сиз түзүмдөрсүз жүрө албайсыз, бирок сиз жөн гана топтомдор, сөздүктөр жана баракчалар бар экенин билбесеңиз сонун болот. Ошондой эле структуралардын ар кандай ишке ашырылышы. Мисалы, Java тилиндеги бир эле сөздүктө HashMap жана TreeMap сыяктуу көптөгөн ишке ашыруулар бар. Алардын ар кандай асимптотикасы бар, алар ичинде ар кандай түзүлүштө. Сиз алар кандайча айырмаланарын жана кайсынысын колдонуу керектигин билишиңиз керек.

Эгер сиз бул маалымат структуралары ички иштээрин билсеңиз, абдан сонун болот. Башкача айтканда, алардын асимптотикасын билүү оңой эмес - коюм канча иштейт, өтүү канча убакытка созулат, бирок структуранын ичинде кандай иштейт - мисалы, HashMapта чака деген эмне.

Ошондой эле дарактарга жана графиктерге көңүл буруу керек. Бул өндүрүш кодексинде көп кездешпеген нерселер, бирок алар интервьюларда популярдуу. Демек, сиз бак-дарактарды, туурасы жана тереңдиги боюнча графиктерди аралай билишиңиз керек. Мунун баары жөнөкөй алгоритмдер.

Ар кандай чоң коддорду, комплекстерди, китепканаларды, көп класстуу коддорду жазып баштаганыңызда, системаларды куруп, көз карандылыктарды чечпей туруп, сиз үчүн кыйын экенин түшүнөсүз. Булар биринчи кезекте Maven жана Gradle. Алар китепканаларды долбооруңузга бир сапта импорттоого мүмкүндүк берет. Башкача айтканда, сиз бир саптык xml жазып, китепканаларды долбоорго импорттойсуз. Улуу системалар. Алар болжол менен бирдей, бирин колдонуңуз - Maven же Gradle.

Кийинки - версия башкаруу системасынын кандайдыр бир түрү. Мен Gitти сунуштайм, анткени ал популярдуу жана көптөгөн окуу куралдары бар. Дээрлик ар бир адам Gitти колдонот, бул сонун нерсе, ансыз жашай албайсың.

Жана кандайдыр бир өнүгүү чөйрөсү. Мен IntelliJ Ideaны сунуштайм. Бул иштеп чыгуу процессин абдан тездетет, сизге көп жардам берет, сиз үчүн бардык кодун жазат, жалпысынан алганда, бул сонун.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Слайддан шилтемелер: SQLZOO, habrapost

SQL. Бир аз колдоочулар жөнүндө. Бул жерде чынында күлкүлүү окуя болгон. Экинчи интервьюга эки күн калганда, HR кыз мага чалып, эки күндөн кийин алар менден SQL жана HTTP жөнүндө сурай турганын, мен аны үйрөнүшүм керектигин айтты. Мен SQL же HTTP жөнүндө дээрлик эч нерсе билчү эмесмин. Жана мен бул сонун сайтты таптым - SQLZOO. Мен 12 сааттын ичинде SQLди үйрөндүм, айтайын дегеним, SQL синтаксиси, SELECT сурамдарын кантип жазуу керек, JOIN ж.б.. Абдан сонун сайт, мен аны абдан сунуштайм. Чынында, 12 саатта мен азыр билгендеримдин 90% үйрөндүм.

Ошондой эле маалымат базасынын архитектурасын билүү абдан жакшы. Бул ар кандай баскычтар, индекстер, нормалдаштыруу. Бул тууралуу Habré сайтында бир катар посттор бар.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Javaда, SQLден тышкары, JPA сыяктуу Объект-байланыштуу карта системаларынын бардык түрлөрү бар. Кээ бир код бар. Биринчи ыкмада кээ бир SQL коду бар - SELECT ID атын FROM info.users WHERE ID IN userIds. Колдонуучулардын маалымат базасынан, таблицадан алардын идентификаторлору жана ысымдары алынат.

Андан кийин, объектти базадан Java объектисине айланткан белгилүү бир картачы бар. Ал эми төмөндө бул кодду иш жүзүндө аткара турган үчүнчү ыкма бар. Мунун баарын JPA аркылуу төмөндө жазылган бир сап менен алмаштырууга болот. Ал ошол эле нерсени кылат - All ByIdIn табат. Башкача айтканда, методдун аталышынын негизинде, ал сиз үчүн SQL суроосун жаратат.

Абдан сонун нерсе. Мен өзүм, SQLди билбегенимде, JPA колдончумун. Жалпысынан, көңүл буруңуз. Эгер сиз SQLди үйрөнүүгө жалкоо болсоңуз, анда бул кырсык. Жана жалпы алганда, от!

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Жаз. Жазгы рамка сыяктуу нерсени ким уккан? Көрдүңөрбү, канчаңар бар? Себепсиз эмес. Жаз ар бир экинчи Java резервдик вакансиясынын талаптарына киргизилген. Ансыз чоң өнүгүүнүн эч жери жок. Жаз деген эмне? Биринчиден, бул көз карандылык инъекциясынын негизи. Бул тууралуу да айтып берет кийинки баяндамачы. Бирок, кыскача айтканда, бул кээ бир класстардын көз карандылыгын башкаларга импорттоону жеңилдеткен нерсе. Башкача айтканда, көз карандылыктарды билүү жөнөкөйлөштүрүлөт.

Spring Boot - бул бир баскыч менен сервердик тиркемеңизди иштетүүгө мүмкүндүк берген Жаздын бир бөлүгү. Сиз THIDге өтүп, бир нече баскычты басыңыз, эми сизде сервердик колдонмоңуз иштеп жатат жана localhost 8080де иштеп жатат. Башкача айтканда, сиз азырынча коддун бир сабын жазган жоксуз, бирок ал иштеп жатат. Абдан сонун нерсе. Өзүңдүн бир нерсеңди жазсаң, от!

Жаз - бул абдан чоң алкак. Ал сиздин сервердик тиркемеңизди гана алып койбостон, көз карандылык инъекциясын чечет. Бул сизге көптөгөн нерселерди жасоого мүмкүндүк берет, анын ичинде REST API ыкмаларын түзүү. Башкача айтканда, сиз кандайдыр бир ыкманы жазып, ага Get mapping аннотациясын тиркедиңиз. Эми сизде Localhostто сизге Hello world деп жазган кандайдыр бир ыкмаңыз бар. Коддун эки саптары жана ал иштейт. Сонун нерселер.

Жаз да жазуу тесттерин жеңилдетет. Чоң өнүгүүдө сыноосуз эч кандай жол жок. Код сыналышы керек. Бул максатта Java, JUnit 5 салкын китепкана бар. Жана жалпысынан JUnit, бирок акыркы версия бешинчи болуп саналат. Сыноо үчүн бардык нерсе, ар кандай ырастоолор жана башка нерселер бар.

Жана укмуштуудай Mockito алкагы бар. Сиз сынагыңыз келген функция бар деп элестетиңиз. Функционалдык көп нерсени аткарат, анын ичинде ортодо, мисалы, ID менен ВКонтактеге кирип, IDден ВКонтакте колдонуучунун аты-жөнүн алат. Сиз тесттерге VKontakte киргизбейсиз, бул кызык. Бирок сиз функционалдуулукту сынап көрүшүңүз керек, ошондуктан сиз бул классты Mockito аркылуу жасадыңыз, аны имитацияладыңыз.

Сиз мындай деп айтасыз, бул класска идентификатор менен сурам келгенде, ал кандайдыр бир фамилияны кайтарат, мисалы, Вася Пупкин. Жана ал иштейт. Башкача айтканда, сиз mok бир класс үчүн бардык функцияларды сынайсыз. Абдан сонун нерсе.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Слайддан шилтеме

Дизайн үлгүлөрү. Бул эмне? Бул өнүгүүдө пайда болгон типтүү көйгөйлөрдү чечүү үчүн шаблондор. Иштеп чыгууда окшош же окшош көйгөйлөр көп кездешет, бул кандайдыр бир жол менен жакшы чечсе жакшы болмок. Ошондуктан, адамдар бул проблемаларды чечуу боюнча алдынкы тажрыйбаларды, белгилуу шаблондорду ойлоп табышты.

Эң популярдуу үлгүлөрү бар веб-сайт бар - refactoring.guru, сиз аны окуй аласыз, кандай үлгүлөр бар экенин биле аласыз, бир топ теорияны окуй аласыз. Маселе бул иш жүзүндө пайдасыз. Чынында, практикасы жок үлгүлөрү өзгөчө пайдалуу эмес.

Сиз Singletone же Builder сыяктуу кээ бир үлгүлөр жөнүндө уга аласыз. Бул сөздөрдү ким укту? Көп адамдар. Өзүңүз ишке ашыра турган жөнөкөй үлгүлөр бар. Бирок калыптардын көбү: стратегия, фабрика, фасад – аларды кайда колдонуу керектиги так эмес.

Жана башка бирөөнүн кодунан бул үлгү колдонулган жерди иш жүзүндө көрмөйүнчө, аны өзүңүз колдоно албайсыз. Ошондуктан, практика үлгүлөрү менен абдан маанилүү болуп саналат. Жана жөн гана алар жөнүндө refactoring.guru сайтынан окуу абдан пайдалуу эмес, бирок аны жасоого татыктуу.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Үлгүлөр эмне үчүн керек? Белгилүү бир Колдонуучу классыңыз бар дейли. Анын идентификатору жана аты бар. Ар бир Колдонуучунун идентификатору жана аты болушу керек. Жогорку сол - класс.

Колдонуучуну инициализациялоонун кандай жолдору бар? Эки вариант бар - конструктор же орнотуучу. Эки ыкманын тең кандай кемчиликтери бар?

Конструктор. жаңы Колдонуучу (7, "Бонд"), макул. Эми бизде Колдонуучу классы жок, бирок жети сандык талаалары бар башка класс бар дейли. Сизде ырааттуу жети сандарды камтыган конструктор болот. Бул сандар эмне жана алардын кайсынысы кайсы мүлккө тиешелүү экени белгисиз. Дизайнер сонун эмес.

Экинчи параметр - орнотуучу. Сиз так жазасыз: setId(7), setName("Бонд"). Кайсы менчик кайсыл тармакка тиешелүү экенин түшүнөсүз. Бирок сетердин көйгөйү бар. Биринчиден, сиз бир нерсени дайындоону унутуп коюшуңуз мүмкүн, экинчиден, объектиңиз өзгөрүлүүчү болуп чыгат. Бул жип коопсуз эмес жана коддун окулушун бир аз азайтат. Ошондуктан адамдар салкын үлгү менен чыгышкан - Куруучу.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Бул эмне жөнүндө? Келгиле, эки ыкманын тең артыкчылыгын айкалыштырууга аракет кылалы - конструктор жана конструктор. Биз белгилүү бир объектти, Builder жасайбыз, анда ошондой эле Id жана Name талаалары болот, ал өзү орнотуучунун негизинде курулат жана бардык параметрлери менен жаңы Колдонуучуну кайтарып турган Build ыкмасына ээ болот. Биз өзгөрүлгүс объектти жана орнотуучуну алабыз. Баракелде!

Кандай көйгөйлөр бар? Бул жерде бизде классикалык Builder бар. Маселе, биз дагы эле кээ бир талаада текшерүүнү унутуп калышыбыз мүмкүн. Эгерде биз ID кирүүнү унутуп калсак, бул учурда Builderде ал нөлгө инициализацияланат, анткени int түрү нөл эмес. Эгерде биз "Бонд" деген ысымды жасап, ID кеңсесине барууну унутуп калсак, бизде "0" id жана "Бонд" деген жаңы Колдонуучу пайда болот. Салкын эмес.

Келгиле, муну менен күрөшүүгө аракет кылалы. Builderде биз intти intге өзгөртөбүз, ошондуктан ал нөлгө жарамдуу. Азыр баары сонун.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Эгерде биз “Бонд” аттуу Колдонуучуну түзүүгө аракет кылсак, анын идентификаторун коюуну унутуп калсак, биз нөл көрсөткүчүнүн өзгөчөлүгүнө ээ болобуз, анткени ID нөл эмес, ал эми Builderде нөл, атап айтканда көрсөткүчтүн өзгөчөлүгү бар.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Бирок биз дагы эле ат коюуну унутуп калышыбыз мүмкүн, андыктан объектти кайталоону нөлгө койдук. Эми, объектибизди Builderден курганда, ал талаа нөл эмес экенин текшерет. Ал эле эмес.

Келгиле, акыркы мисалды карап көрөлү. Бул учурда, эгерде биз ID иштөө убактысына кандайдыр бир жол менен null кое турган болсок, анда сиз муну жасаганыңызды дароо билсеңиз жакшы болмок жана азыр ката кетирип жатканыңыз жакшы эмес.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Сиз катаны Колдонуучу түзүү учурунда эмес, идентификаторго нөл койгондо ташташыңыз керек. Ошондуктан, Builderде биз Integer орнотуучуну int деп өзгөртөбүз жана ал дароо нөлдү чыгарып салганына ант берет.

Кыскасы, эмне кереги бар? Жөнөкөй Builder үлгүсү бар, бирок аны ишке ашырууда да кээ бир кылдат жактары бар, андыктан калыптардын ар кандай аткарылышын карап көрүү абдан сонун. Ар бир үлгүдө ондогон ишке ашыруулар бар. Мунун баары абдан кызыктуу.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Өндүрүш кодуна Builderди кантип жазабыз? Бул жерде биздин колдонуучу. Биз ага Lombok китепканасынан Builder ротациясын тиркөөбүз жана ал өзү биз үчүн Куруучуну жаратат. Башкача айтканда, биз эч кандай код жазбайбыз, бирок Java мурунтан эле бул класстын Куруучусу бар деп ойлойт жана биз аны ушундай деп атасак болот.

Мен буга чейин Java-да дээрлик бардык нерселер үчүн китепканалар бар экенин айттым, анын ичинде Ломбок, укмуштуудай китепкана, бул сизге жазууну жазуудан качууга мүмкүндүк берет. Куруучу, GET.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Үлгүлөр архитектуралык болушу мүмкүн - бир класска гана эмес, бүтүндөй системага тиешелүү. Системаны долбоорлоодо ушундай сонун принцип бар: Бирдиктүү жоопкерчилик принциби. Ал эмне жөнүндө айтып жатат? Ар бир класс өзүнүн айрым функциялары үчүн жооптуу болушу керек. Бул учурда, бизде колдонуучулар, JSON объектилери менен байланышуучу Controller бар. JSON объекттерин Java тиркемеси иштей турган моделдерге айландырган Facade бар. Бул моделдер менен иштеген татаал логикага ээ Кызмат бар. Бул моделдерди маалымат базасына киргизип, аларды маалымат базасынан чыгарып турган Маалыматтарга мүмкүндүк алуу объекти бар. Жана базанын өзү бар. Башкача айтканда, мунун баары бир класста эмес, бирок биз беш түрдүү класс жасап жатабыз, бул дагы бир үлгү.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Java тилин аздыр-көптүр үйрөнгөндөн кийин, маалымат базасына ээ боло турган, башка API'лер менен иштей турган жана сервердик тиркемеңизди REST API кардарларына көрсөтө турган өзүңүздүн долбооруңузду жазуу сонун. Бул сиздин резюмеңизге кошуу үчүн сонун нерсе болмок, бул сиздин билимиңиздин сонун аягы болмок. Муну менен барып жумушка орношсо болот.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Бул жерде менин сервердик колдонмомдун мисалы. Экинчи курста жигиттер менен курстук иш жаздым. Алар иш-чараларды уюштуруу үчүн мобилдик тиркемени жазып жатышкан. Ал жерде колдонуучулар ВКонтакте аркылуу кирип, картага пункттарды жайгаштырып, окуяларды түзүп, досторун аларга чакырып, окуялардын сүрөттөрүн сактай алышат ж.б.

Мен долбоордо эмне кылдым? Spring Boot программасында SQLди колдонбостон сервердик тиркемени жаздым. Мен аны таанычу эмесмин, мен JPA колдончумун. Ал эмне кыла алмак? VK'га OAuth-2 аркылуу кириңиз. Колдонуучунун белгисин алыңыз, аны менен ВКга кириңиз, анын чыныгы колдонуучу экенин текшериңиз. VKontakte аркылуу колдонуучулар жөнүндө маалымат алуу. Ал маалымат базасында маалыматты сактай алган, ошондой эле JPA аркылуу. Сүрөттөрдү жана башка файлдарды компьютердин эс тутумуна билгичтик менен сактап, аларга шилтемелерди маалымат базасында сактаңыз. Ал убакта мен маалымат базасында CLOB объектилери бар экенин билген эмесмин, ошондуктан мен муну ушундай кылдым. Колдонуучулар, кардар тиркемелери үчүн REST API бар болчу. Жана негизги функционалдуулук үчүн бирдик тесттери бар болчу.

[…] Java тилин ийгиликтүү үйрөнгөнүмдүн кичинекей мисалы. Университетте биринчи курста мага C# үйрөтүлүп, OOP программалоосу боюнча түшүнүк берилди - класстар, интерфейстер, абстракция деген эмне жана алар эмне үчүн керек. Бул мага абдан жардам берди. Ансыз Java үйрөнүү абдан кыйын; класстар эмне үчүн керек экени түшүнүксүз.

Эмне үчүн Java үйрөнүү жана аны кантип натыйжалуу кылуу керек. Яндекс отчету

Университеттин экинчи курсунда алар кайрадан Java ядросун үйрөтүштү, бирок мен ушуну менен эле токтоп калбай, өзүм Жазды окууга барып, курстук ишимди, жогоруда айткан долбоорумду жаздым. Мына ушунун баары менен мен Яндекске стажировкага барып, интервьюдан өтүп, Яндекс.Маркетке кирдим. Ал жерде мен Беру үчүн бэкленд жаздым, бул биздин базар жана Яндекс.Маркеттин өзү.

Андан кийин, алты ай мурун мен ошол эле Базардын ичиндеги башка командага өттүм. Биз бизнес өнөктөштөр үчүн аналитика жасайбыз. Биз аналитикалык платформадабыз, артында үчөөбүз бар, ошондуктан мен долбоорго абдан чоң таасир этем. Бул абдан кызыктуу, чынында. Башкача айтканда, биз иш жүзүндө рынок боюнча маалыматтарды камсыз кылуу - бизнес-өнөктөштөр, ири белгилүү компаниялар үчүн, сатуу кандай категориялар, кандай моделдер. Жана биз үчөөбүз, биз бул кодду жазабыз жана бул абдан сонун.

Рахмат! Пайдалуу шилтемелер:
- "Java 8. Баштоочу үчүн колдонмо".
- Маалымат структуралары.
- SQLZOO.
- Маалымат базасын нормалдаштыруу.
- Дизайн үлгүлөрү.
- Дизайн үлгүлөрү.
- Таза кодекс.
- Натыйжалуу Java.

Source: www.habr.com

DDoS коргоосу, VPS VDS серверлери бар сайттар үчүн ишенимдүү хостинг сатып алыңыз 🔥 DDoS коргоосу, VPS VDS серверлери бар ишенимдүү веб-сайт хостингин сатып алыңыз | ProHoster