Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Java тілінің басқа танымал тілдерден айырмашылығы неде? Неліктен Java ең бірінші үйренетін тіл болуы керек? Сізге Java тілін нөлден бастап және басқа тілдерде бағдарламалау дағдыларын қолдану арқылы үйренуге көмектесетін жоспар құрайық. Java тілінде өндіріс кодын жасау мен басқа тілдерде әзірлеу арасындағы айырмашылықтарды тізіп көрейік. Михаил Затепякин бұл баяндаманы болашақ қатысушыларға арналған кездесуде оқыды тағылымдамалар Яндекс және басқа бастаушы әзірлеушілер - Java Junior кездесуі.


— Бәріне сәлем, менің атым Миша. Мен Яндекс.Маркеттің әзірлеушісімін, мен бүгін Java тілін неліктен үйрену керектігін және оны қалай тиімді орындау керектігін айтамын. Сіз ақылға қонымды сұрақ қоюыңыз мүмкін: неге мен көп жылдық тәжірибесі бар күшті әзірлеуші ​​емес, бұл оқиғаны айтып беремін? Мен өзім Java тілін жақында, шамамен бір жарым жыл бұрын зерттедім, сондықтан оның қандай болғанын және қандай тұзақтар бар екенін әлі есімде сақтаймын.

Бір жыл бұрын Яндекс.Маркетте тәжірибеден өттім. Мен Беру үшін, нарықтың өзі үшін бэкенд жасадым, сіз оны пайдаланған шығарсыз. Қазір сол жерде, басқа командада жұмыс істеймін. Біз бизнес серіктестер үшін Yandex.Market үшін аналитикалық платформа жасаймыз.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Бастайық. Неліктен Java тілін практикалық тұрғыдан үйрену керек? Өйткені, Java өте танымал бағдарламалау тілі. Оның өте үлкен қауымдастығы бар.

Мысалы, бағдарламалау тілдерінің танымалдылығының танымал индексі болып табылатын TIOBE индексі бар және Java онда бірінші орында тұр. Сондай-ақ, жұмыс сайттарында сіз бос орындардың көпшілігі Java-ға қатысты екенін байқайсыз, яғни Java тілін дамыту арқылы сіз әрқашан жұмыс таба аласыз.

Қауымдастық өте үлкен болғандықтан, кез келген сұраққа жауапты кейбір Stack Overflow немесе басқа сайттардан таба аласыз. Сондай-ақ, Java-да әзірлеу кезінде сіз JVM-де код жазасыз, сондықтан сіз Kotlin, Scala және JVM қолданатын басқа тілдерге оңай ауыса аласыз.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Java-да идеологиялық тұрғыдан не жақсы? Әртүрлі бағдарламалау тілдері бар. Олар әртүрлі мәселелерді шешеді, сіз мұны білесіз. Мысалы, Python жылдам есептерді шешу үшін бір жолды сценарийлерді жазу үшін тамаша.

Бір жақсысы, сіз орындалатын кодты толығымен басқара аласыз. Мысалы, бізде автокөліктер бар, Яндекс жүргізушісіз көліктер, олардың коды плюспен жазылған. Неліктен? Java-да мұндай нәрсе бар - қоқыс жинағыш. Ол жедел жадты қажетсіз нысандардан тазартады. Бұл нәрсе өздігінен басталады және әлемді тоқтатуды жасайды, яғни ол бағдарламаның қалған бөлігін тоқтатады және объектілерді санауға, объектілердің жадысын тазартуға барады. Егер мұндай нәрсе дронда жұмыс істесе, бұл керемет емес. Сіздің дроныңыз түзу жүреді, қазір жадыны тазартады және жолға мүлде қарамайды. Сондықтан, ұшқышсыз ұшқыш профессионалдарға жазылған.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Java қандай мәселелерді шешеді? Бұл, ең алдымен, ондаған немесе жүздеген адамдар жылдар бойы жазылған үлкен бағдарламаларды әзірлеуге арналған тіл. Атап айтқанда, Yandex.Market-тегі көптеген серверлер Java тілінде жазылған. Бізде бірнеше қалада бөлінген команда бар, әрқайсысында он адам. Ал кодты сақтау оңай, оған он жыл немесе одан да көп қолдау көрсетілді, сонымен бірге жаңа адамдар кіріп, бұл кодты түсінеді.

Ондағы кодқа оңай қолдау көрсету және оны үлкен командаларда оңай әзірлеу үшін тілдің қандай сипаттамалары болуы керек. Ең алдымен, ол оқылатын код болуы керек және күрделі архитектуралық шешімдерді жүзеге асыру оңай болуы керек. Яғни, жоғары деңгейлі абстракцияларды жазу оңай болуы керек және т.б. Мұның бәрі Java бізге береді. Бұл объектіге бағытталған тіл. Жоғары деңгейдегі абстракциялар мен күрделі архитектураларды жүзеге асыру өте оңай.

Сондай-ақ Java үшін көптеген фреймворктар мен кітапханалар бар, өйткені тіл 15 жастан асқан. Осы уақыт ішінде жазуға болатынның бәрі оған жазылған, сондықтан сізге қажет нәрсенің барлығына арналған тонна кітапханалар бар.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Менің ойымша, JA ойыншысы қандай негізгі дағдыларға ие болуы керек? Ең алдымен, бұл Java негізгі тілін білу. Келесі - тәуелділік инъекциясының құрылымы. Келесі спикер Кирилл бұл туралы толығырақ айтып береді. Мен тым тереңге бармаймын. Келесі - сәулет және дизайн үлгілері. Үлкен қосымшаларды жазу үшін архитектуралық әдемі кодты жаза білуіміз керек. Бұл дерекқормен жұмыс істеу тапсырмаларына арналған SQL немесе ORM түрі. Және бұл серверге көбірек қатысты.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Бар! Java ядросы. Мен Американы бұл жерден ашпаймын - сіз тілді білуіңіз керек. Неге назар аудару керек. Біріншіден, Java соңғы жылдары көптеген нұсқаларды шығарды, яғни 2014-2015 жылдары жетінші шығарылды, содан кейін сегізінші, тоғызыншы, оныншы, көптеген жаңа нұсқалар және оларда көптеген жаңа керемет нәрселер енгізілді. , мысалы, Java Stream API , lambda және т.б. Өндіріс кодында қолданылатын өте керемет, жаңа, керемет нәрселер, олар сұхбатта не туралы сұрайды және сіз білуіңіз керек. Сондықтан Java-4 кітапханасындағы сөреден кітапты алып, оны үйренуге болмайды. Бұл біздің жоспарымыз: біз Java-8 немесе одан жоғары нұсқасын үйренеміз.

Біз Stream API, var және т.б. сияқты инновацияларға мұқият назар аударамыз. Олар сұхбат кезінде сұралады және өндірісте үнемі қолданылады. Яғни, Stream API циклдарға қарағанда әлдеқайда салқын, жалпы алғанда, өте керемет нәрсе. Міндетті түрде назар аударыңыз.

Итераторлар, Ерекшеліктер және т.б. сияқты нәрселердің барлық түрлері бар. Кішкентай кодты өзіңіз жазсаңыз, сізге маңызды емес болып көрінетін нәрселер. Сізге бұл Ерекшеліктер қажет емес, бәрібір олар кімге керек? Бірақ олар міндетті түрде сұхбатта сұралады, олар сізге өндірісте міндетті түрде пайдалы болады. Жалпы алғанда, Ерекшеліктерге, итераторларға және басқаларға назар аудару керек.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

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

Сондай-ақ, егер сіз бұл деректер құрылымдарының ішкі түрде қалай жұмыс істейтінін білсеңіз, бұл өте жақсы болады. Яғни, олардың асимптотикасын білу оңай емес - ставка қанша жұмыс істейді, өту қанша уақыт жұмыс істейді, бірақ құрылымның ішінде қалай жұмыс істейді - мысалы, HashMap-те шелек деген не.

Сондай-ақ ағаштар мен графиктерге назар аударған жөн. Бұл өндіріс кодында өте кең таралмаған нәрселер, бірақ олар сұхбаттарда танымал. Тиісінше, сіз ағаштарды, ені мен тереңдігі бойынша графиктерді аралай білуіңіз керек. Мұның бәрі қарапайым алгоритмдер.

Кез келген үлкен кодты, кешенді, кітапханаларды, көп класты кодты пайдалана отырып, жаза бастағанда, сіз жүйені құрастырмай және тәуелділіктерді шешпейсіз қиын екенін түсінесіз. Бұл ең алдымен Maven және Gradle. Олар жобаңызға кітапханаларды бір жолда импорттауға мүмкіндік береді. Яғни, сіз бір жолды xml жазасыз және жобаға кітапханаларды импорттайсыз. Тамаша жүйелер. Олар шамамен бірдей, біреуін пайдаланыңыз - Maven немесе Gradle.

Келесі - нұсқаны басқару жүйесінің қандай да бір түрі. Мен Git-ті ұсынамын, өйткені ол танымал және көптеген оқулықтар бар. Барлығы дерлік Git пайдаланады, бұл керемет нәрсе, онсыз өмір сүре алмайсыз.

Және қандай да бір даму ортасы. Мен IntelliJ идеясын ұсынамын. Бұл әзірлеу процесін айтарлықтай жылдамдатады, сізге көп көмектеседі, сіз үшін барлық қазандық кодын жазады, жалпы алғанда, бұл керемет.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Слайдтағы сілтемелер: SQLZOO, хабрапост

SQL. Бекіткіштер туралы аздап. Бұл жерде күлкілі оқиға болды. Екінші тағылымдамадан екі күн бұрын маған HR қыз қоңырау шалып, екі күннен кейін олар менен SQL және HTTP туралы сұрайтынын айтты, мен оны үйренуім керек. Мен SQL немесе HTTP туралы ештеңе білмедім. Мен бұл керемет сайтты таптым - SQLZOO. Мен 12 сағатта SQL тілін үйрендім, яғни SQL синтаксисі, SELECT сұраныстарын жазу, JOIN, т.б. Өте керемет сайт, мен оны ұсынамын. Негізі 12 сағатта мен қазір білетінімнің 90% үйрендім.

Сондай-ақ деректер базасының архитектурасын білу өте жақсы. Бұл кілттердің барлық түрлері, индекстер, нормалау. Хабреде бұл туралы бірқатар жазбалар бар.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Java-да, SQL-ге қосымша, JPA сияқты Объектіге қатысты салыстыру жүйелерінің барлық түрлері бар. Кейбір код бар. Бірінші әдісте кейбір SQL коды бар - SELECT ID атын FROM info.users WHERE ID IN userIds. Пайдаланушылардың дерекқорынан, кестеден олардың идентификаторлары мен атаулары алынады.

Әрі қарай нысанды базадан Java нысанына айналдыратын белгілі бір бейнелеуші ​​бар. Төменде осы кодты нақты орындайтын үшінші әдіс бар. Мұның бәрін JPA көмегімен бір жолға ауыстыруға болады, ол төменде жазылған. Ол бірдей нәрсені жасайды - All ByIdIn табыңыз. Яғни, әдіс атауының негізінде ол сізге SQL сұрауын жасайды.

Өте керемет нәрсе. Мен өзім SQL білмеген кезде JPA қолдандым. Жалпы, назар аударыңыз. Егер сіз SQL тілін үйренуге тым жалқау болсаңыз, бұл апат. Жалпы, өрт!

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Көктем. Көктемгі шеңбер сияқты нәрсе туралы кім естіді? Көрдіңіз бе, сізде қанша адам бар? Себепсіз емес. Көктем әрбір екінші Java серверлік бос орнының талаптарына енгізілген. Онсыз үлкен дамудың еш жері жоқ. Көктем деген не? Ең алдымен, бұл Dependency Injection құрылымы. Бұл туралы да айтып береді келесі спикер. Бірақ қысқаша айтқанда, бұл кейбір сыныптардың тәуелділіктерін басқаларына импорттауды жеңілдетуге мүмкіндік беретін нәрсе. Яғни, тәуелділіктер туралы білім жеңілдетілген.

Spring Boot - бұл серверлік қолданбаны бір түймемен іске қосуға мүмкіндік беретін Spring бөлігі. Сіз THID-ке өтіп, бірнеше түймені басыңыз, енді сізде жергілікті сервер 8080-де іске қосылған сервер қолданбасы бар. Яғни, сіз әлі кодтың бір жолын жазған жоқсыз, бірақ ол қазірдің өзінде жұмыс істеп тұр. Өте керемет нәрсе. Егер сіз өзіңізден бірдеңе жазсаңыз, өрт!

Көктем - өте үлкен шеңбер. Ол серверлік қолданбаңызды алып қана қоймайды және тәуелділік инъекциясын шешеді. Ол сізге көптеген нәрселерді жасауға мүмкіндік береді, соның ішінде REST API әдістерін жасау. Яғни, сіз қандай да бір әдіс жаздыңыз және оған Get mapping аннотациясын тіркедіңіз. Енді сізде localhost-те сізге Сәлем әлемін жазатын әдіс бар. Кодтың екі жолы және ол жұмыс істейді. Керемет заттар.

Көктем жазу сынақтарын да жеңілдетеді. Үлкен дамуда тестілеусіз жол жоқ. Кодты сынау керек. Осы мақсатта Java-да JUnit 5 тамаша кітапханасы бар. Ал жалпы JUnit, бірақ соңғы нұсқасы бесінші болып табылады. Тестілеу үшін бәрі бар, әр түрлі бекітулер және басқалар.

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

Сіз бұл сыныпқа идентификаторы бар сұрау келгенде, ол кейбір фамилияны қайтаратынын айтасыз, мысалы, Вася Пупкин. Және ол жұмыс істейді. Яғни, сіз mok бір сыныптың барлық функционалдығын тексересіз. Өте керемет нәрсе.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Слайдтан сілтеме

Дизайн үлгілері. Бұл не? Бұл дамуда пайда болатын типтік мәселелерді шешуге арналған үлгілер. Даму барысында ұқсас немесе ұқсас мәселелер жиі туындайды, бұл қандай да бір жолмен жақсы шешілсе жақсы болар еді. Сондықтан адамдар осы мәселелерді шешудің ең жақсы тәжірибесін, белгілі үлгілерін ойлап тапты.

Ең танымал үлгілері бар веб-сайт бар - refactoring.guru, сіз оны оқи аласыз, қандай үлгілер бар екенін біле аласыз, көптеген теорияларды оқи аласыз. Мәселе мынада, бұл іс жүзінде пайдасыз. Шын мәнінде, тәжірибесіз үлгілер әсіресе пайдалы емес.

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

Ал сіз тәжірибеде басқа біреудің кодында осы үлгі қолданылатын орынды көрмейінше, оны өзіңіз қолдана алмайсыз. Сондықтан үлгілермен тәжірибе өте маңызды. Және олар туралы refactoring.guru сайтында оқу өте пайдалы емес, бірақ мұны істеуге тұрарлық.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Үлгілер не үшін қажет? Сізде белгілі бір Пайдаланушы сыныбы бар делік. Оның идентификаторы мен аты бар. Әрбір пайдаланушының идентификаторы мен аты болуы керек. Жоғарғы сол жақта - сынып.

Пайдаланушыны инициализациялаудың қандай жолдары бар? Екі нұсқа бар - конструктор немесе орнатушы. Екі тәсілдің де кемшіліктері қандай?

Конструктор. жаңа пайдаланушы (7, «Бонд»), жарайды. Енді бізде User класы жоқ, бірақ жеті сандық өрісі бар басқа біреу бар делік. Сізде қатарынан жеті саннан тұратын конструктор болады. Бұл цифрлардың не екені және олардың қайсысы қай меншікке тиесілі екені белгісіз. Дизайнер керемет емес.

Екінші опция - орнатушы. Сіз анық жазасыз: setId(7), setName («Байланыс»). Сіз қай меншіктің қай өріске жататынын түсінесіз. Бірақ сетердің проблемасы бар. Біріншіден, сіз бірдеңені тағайындауды ұмытуыңыз мүмкін, екіншіден, сіздің нысаныңыз өзгермелі болып шығады. Бұл ағынға қауіпсіз емес және кодтың оқылуын сәл төмендетеді. Сондықтан адамдар керемет үлгіні ойлап тапты - Құрылысшы.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Бұл не туралы? Екі тәсілдің де – орнатушының және конструктордың – артықшылықтарын біреуінде біріктіруге тырысайық. Біз белгілі бір нысанды, Builder жасаймыз, оның да Id және Name өрістері болады, ол өзі орнатушы негізінде құрылады және барлық параметрлері бар жаңа Пайдаланушыны қайтаратын Құру әдісі болады. Біз өзгермейтін объект пен орнатушыны аламыз. Керемет!

Қандай проблемалар бар? Мұнда бізде классикалық құрылысшы бар. Мәселе мынада, біз әлі де кейбір өрісті тексеруді ұмыта аламыз. Ал егер идентификаторға кіруді ұмытып қалсақ, бұл жағдайда Builder бағдарламасында ол нөлге дейін инициализацияланады, себебі int түрі нөлге тең емес. Ал егер біз «Облигация» атауын жасасақ және жеке куәлік кеңсесіне баруды ұмытып қалсақ, бізде «0» идентификаторы және «Бонд» атауы бар жаңа пайдаланушы пайда болады. Керемет емес.

Осымен күресуге тырысайық. Builder бағдарламасында біз int мәнін нөл болатындай етіп өзгертеміз. Қазір бәрі тамаша.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Егер біз оның идентификаторын қоюды ұмытып, «Бонд» атты Пайдаланушыны жасауға тырыссақ, біз нөлдік көрсеткіштің ерекшелігін аламыз, өйткені идентификатор нөлге жатпайды және Құрастырушыда нөлдік, атап айтқанда көрсеткіш ерекшелік бар.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Бірақ біз әлі де ат қоюды ұмыта аламыз, сондықтан біз нысанды қайта ойнатуды нөлге орнаттық. Енді объектімізді Builder бағдарламасынан құрастырған кезде, ол өрістің бос емес екенін тексереді. Бұл бәрі емес.

Соңғы мысалды қарастырайық. Бұл жағдайда идентификатордың орындалу уақытында қандай да бір жолмен null мәнін қойсақ, сіз мұны жасағаныңызды бірден білу жақсы болар еді және қазір қателесіп жатқаныңыз жақсы емес.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Қатені пайдаланушыны жасау сәтінде емес, идентификаторға нөлді орнатқанда жіберу керек. Сондықтан, Builder бағдарламасында біз Integer орнатушысын int деп өзгертеміз және ол бірден олар нөлді тастады деп ант береді.

Қысқасы, оның мәні неде? Қарапайым Builder үлгісі бар, бірақ оны жүзеге асырудың өзінде кейбір нәзіктіктер бар, сондықтан үлгілердің әртүрлі орындалуын қарау өте керемет. Әрбір үлгіде ондаған іске асыру бар. Мұның бәрі өте қызықты.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Өндіріс кодында Builder қалай жазылады? Міне, біздің пайдаланушы. Біз оған Lombok кітапханасынан Builder ротациясын қосамыз және оның өзі біз үшін Builder жасайды. Яғни, біз ешқандай код жазбаймыз, бірақ Java бұл сыныпта Builder бар деп ойлайды және біз оны осылай атай аламыз.

Мен Java-да барлығына дерлік кітапханалар бар екенін айттым, соның ішінде Lombok кітапханасы, ол сізге жазуды болдырмауға мүмкіндік береді. Құрылысшы, GET.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Үлгілер архитектуралық болуы мүмкін - тек бір сыныпқа ғана емес, тұтас жүйеге қатысты. Жүйені жобалауда осындай тамаша принцип бар: Бірыңғай жауапкершілік принципі. Ол не туралы айтып жатыр? Әрбір сынып өзінің кейбір функцияларына жауапты болуы керек. Бұл жағдайда бізде пайдаланушылармен, JSON нысандарымен байланысатын контроллер бар. JSON нысандарын кейін Java қолданбасы жұмыс істейтін үлгілерге түрлендіретін Facade бар. Осы үлгілермен жұмыс істейтін күрделі логикасы бар Қызмет бар. Бұл үлгілерді дерекқорға орналастыратын және оларды дерекқордан шығарып алатын Деректерге қол жеткізу нысаны бар. Ал мәліметтер базасының өзі бар. Басқаша айтқанда, бәрі бір сыныпта емес, бірақ біз бес түрлі сынып жасаймыз, бұл басқа үлгі.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Java тілін азды-көпті үйренгеннен кейін, дерекқорға ие, басқа API интерфейстерімен жұмыс істейтін және серверлік қолданбаңызды REST API клиенттеріне көрсететін жеке жобаңызды жазу өте жақсы. Бұл сіздің түйіндемеңізге қосу үшін тамаша нәрсе болар еді, бұл сіздің біліміңіздің керемет аяқталуы болар еді. Осымен барып жұмысқа тұруға болады.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Міне, менің серверлік қосымшамның мысалы. Екінші курста жігіттермен курстық жұмыс жаздым. Олар іс-шараларды ұйымдастыру үшін мобильді қосымша жазып жатқан. Онда пайдаланушылар ВКонтакте арқылы жүйеге кіріп, картада нүктелерді орналастыра алады, оқиғалар жасай алады, достарын шақыра алады, оқиғалардың суреттерін сақтай алады және т.б.

Мен жобада не істедім? Spring Boot бағдарламасында SQL қолданбай серверлік қосымшаны жазды. Мен оны білмедім, мен JPA қолдандым. Бұл не істей алар еді? VK жүйесіне OAuth-2 арқылы кіріңіз. Пайдаланушының токенін алыңыз, онымен ВК-ға өтіңіз, оның нақты пайдаланушы екенін тексеріңіз. ВКонтакте арқылы пайдаланушылар туралы ақпаратты алыңыз. Ол мәліметтер базасында JPA арқылы да сақтай алды. Суреттер мен басқа файлдарды компьютер жадына шебер сақтаңыз және оларға сілтемелерді дерекқорға сақтаңыз. Ол кезде дерекқорда CLOB нысандары бар екенін білмедім, сондықтан мен мұны осылай жасадым. Пайдаланушыларға, клиенттік қолданбаларға арналған REST API болды. Негізгі функционалдылыққа арналған бірлік сынақтары болды.

[…] Java тілін сәтті үйренуімнің шағын мысалы. Университеттегі бірінші курсымда маған C# тілін үйретті және OOP бағдарламалау туралы түсінік берді - қандай сыныптар, интерфейстер, абстракция және олар не үшін қажет. Бұл маған көп көмектесті. Онсыз Java тілін үйрену өте қиын; сыныптардың не үшін қажет екені белгісіз.

Неліктен Java үйрену және оны қалай тиімді орындау керек. Яндекс есебі

Университеттегі екінші курсымда олар Java-ның ядросын тағы да оқытты, бірақ мен мұнымен тоқтап қалмадым, мен көктемді өзім оқуға бардым және жоғарыда айтқан өзімнің жобамды жаздым. Осының барлығымен мен Яндекске тәжірибеден өтіп, сұхбаттан өтіп, Яндекс.Маркетке кірдім. Онда мен Беру үшін бэкенд жаздым, бұл біздің базарымыз және Яндекс.Маркеттің өзі.

Осыдан кейін, алты ай бұрын мен сол нарықтағы басқа командаға ауыстым. Біз іскер серіктестер үшін талдау жасаймыз. Біз аналитикалық платформадамыз, артқы жағында үшеуміз бар, сондықтан жобаға ықпал ету үлесі өте үлкен. Бұл өте қызық, шын мәнінде. Яғни, біз іс жүзінде нарықтағы деректерді береміз - сату дегеніміз не, қандай санаттарда, қандай үлгілерде, іскер серіктестерге, ірі танымал компанияларға арналған. Біз тек үшеуміз, біз бұл кодты жазамыз және бұл өте керемет.

Рақмет сізге! Пайдалы сілтемелер:
- "Java 8. Жаңадан бастаушыларға арналған нұсқаулық".
- Мәліметтер құрылымдары.
- SQLZOO.
- Мәліметтер қорын қалыпқа келтіру.
- Дизайн үлгілері.
- Дизайн үлгілері.
- Таза кодекс.
- Тиімді Java.

Ақпарат көзі: www.habr.com

пікір қалдыру