Потенциалды Java әзірлеушілеріне қойылатын талаптар үнемі өзгеріп отырады және оларға ілесу қиын. Тренинг болу үшін тек Java Core білу жеткілікті ме? Java Junior позициясын алу үшін көктем мен күту күйін қаншалықты жақсы түсіну керек? Мәліметтер қорын үйрену және сұрыптау және іздеу алгоритмдерін түсіну керек пе? JavaRush студенттерін осы сұрақтар жиі мазалайтындықтан, біз оларды Java Juniors ретінде жұмыс істейтін немесе Java Trainees ретінде компанияларда тағылымдамадан өтіп жатқан түлектерімізге қоюды жөн көрдік. Респонденттердің 13%-ы Junior кезеңін айналып өтіп, Java Middle позициясын алу бақытына ие болғанын ескеріңіз. Респонденттер сұхбаттан өту үшін қандай технологиялар қажет екендігі және Java-дағы алғашқы жұмысының бірінші жылында қай технологияларды қолданғаны туралы ақпаратпен бөлісті.
- Java ядросы
- Алгоритмдер және деректер құрылымдары
- Бірлікті сынау
- Қызметтік кітапханалар, графикалық интерфейс және пайдалы компоненттер
- Фреймворктер
- Автоматтандыру құралдары мен қолданбалы serverлерді құрастырыңыз
- Әртүрлі технологиялар мен үлгілер
Java Core барлығына қажет
Java Core термині өте кең. Бұл атау тілдің қарапайым синтаксисіне де, көп ағынды сияқты күрделі тақырыпқа да қатысты. Шын мәнінде, JavaRush курсы негізінен Core бағдарламасына арналған. Java синтаксисі. Тіл негіздері. Барлық осы деректер түрлері, операторлар, циклдар және тармақтар. Әрине, жұмысқа орналасушылардың 92,4% синтаксис бойынша білімдерін «жақсы немесе тамаша» деп бағалады. Дегенмен, респонденттердің 7,6% орташа синтаксистік білімі бар Java Trainees бола алды. Дегенмен, мұны сәттілік (немесе респонденттердің мақтанышы :)) деп бағалау керек. Әрине, бағдарламашы мамандығына түсуге өтініш білдірген әрбір адам тілдің синтаксисін білуі керек. Объектіге бағытталған бағдарламалау (OOP). Java тіліндегі барлығы нысандардан тұрады, сондықтан OOP тілдің ең маңызды тақырыптарының бірі деп санауға болады. Объектіге бағытталған тәсіл алғашында бейтаныс болып көрінуі мүмкін, әсіресе егер сіз бұрын тек proceduresалық тілдерді оқыған болсаңыз, бірақ нысандарға ауысу қиын емес. Жаңадан бастағандар үшін ең үлкен қиындықтар абстракция деңгейлері және оларды тәуелсіз тарату болып табылады - жаңадан келген бағдарламашы нысандардың иерархиясын дұрыс құра білуі керек, интерфейс не үшін жауап беретінін және абстрактілі сыныпқа нені енгізуге болатынын түсінуі керек, мұраны құруы керек. баспалдақ және т.б. Әдеттегідей, бұл қиындық тәжірибе арқылы шешіледі. Респонденттердің көпшілігі, яғни бірінші жұмысқа орналасқандардың 80,3%-ы OOP принциптерін жақсы біледі және оларды үнемі қолданады. Java Juniors және тағылымдамадан өтуші ретіндегі жұмыстың бірінші жылында респонденттердің 78,8%-ы OOP қағидаттарын өте жиі, 12,1%-ы мезгіл-мезгіл пайдаланды. Тыңдаушылардың 7,6% оларды сирек пайдаланды - бұл жігіттер негізінен бірлік тестілеумен және әртүрлі шағын тапсырмалармен айналысты. Яғни, әрине, олар сыныптарды немесе нысандарды да пайдаланды (сіз Java-да онсыз жасай алмайсыз), бірақ класс иерархияларын сирек жасайды. Коллекциялар шеңбері. Коллекция – тұтастай ұсынылған жеке an objectілердің жиынтығы. Java-да жинақтарды көрсету үшін өте ақылды Collections Framework бар. Жинақтар танымал деректер құрылымдарына негізделген - тізімдер, қарапайым және қосылған, жиындар, хэш кестелер. Сондықтан жинақтарды зерттеген кезде деректер құрылымдарымен көбірек танысқан дұрыс. Жинақтарды зерттеудегі негізгі қиындық олардың қалай жұмыс істейтінін түсіну және есте сақтау болып табылады. Егер сіз олардың элементке қалай қол жеткізгенін, оны жинақтан шығарып, оған қосу жолын түсінсеңіз, осы немесе басқа құрылымды қайда қолдану керектігін түсіне бастайсыз. Бұл тәжірибемен келеді. Бірақ, бақытымызға орай, көптеген жинақтардың барлығы нақты жұмыста белсенді түрде қолданыла бермейді. Респонденттердің 80,3%-ы алғашқы жұмыс ұсынысын алғанға дейін коллекциялар туралы жақсы немесе тіпті өте жақсы білетінін көрсетті, ал жасөспірімдер мен тыңдаушылардың барлығы дерлік 96,9%-ы коллекцияларды бірінші жұмысында пайдаланады. Ерекше жағдайды өңдеу.Ерекшелік - бұл бағдарламаны орындау кезінде орын алуы мүмкін әдеттегіден тыс жағдай. Барлық ерекшелік сыныптары java.lang.Exception сыныбының ішкі түрлері болып табылады. Ерекшеліктерді өңдеу механизмі бағдарламалардағы қателерді табу процесін айтарлықтай жеңілдетеді. Әдетте студенттер ерекше жағдайларды өте ерте пайдалана бастайды, айталық, JavaRush-та JavaRush-те бұл тақырып Java синтаксисінің бірінші квестінде көтеріледі. Алғашқы жұмыс орындарын алған JavaRush түлектерінің барлығы дерлік ерекше жағдайларды қалай шешу керектігін білді және, әрине, жұмыс кезінде оларды пайдаланды. I/O ағындары Java. Java тілінде жазылған ең алғашқы бағдарламаларда әдетте System.out.println («Сәлем әлем») сияқты нәрсе болды. Көбінесе жаңадан бастаушылар println әдісі консольге сызық басып шығаратынын түсінеді, бірақ System және out неліктен бар екенін және олардың қалай жұмыс істейтінін білмейді. Біраз уақыттан кейін Java деректердің үздіксіз ағыны ағындары арқылы енгізу және шығару операцияларын орындайтыны белгілі болды. Тақырыптар түсінуге оңай тақырып емес және ол жаңадан бастаған жұмыс орындарында жиі қолданылмайды: Java Junior/Strainee бойынша бірінші жұмысын алған адамдардың тек 22,7%-ы енгізу/шығару ағындарын көп пайдаланатынын айтты, 31,8%-ы – мезгіл-мезгіл уақыт, 25,8% - сирек. Сондықтан 20%-дан азы Java әзірлеушісі ретіндегі бірінші жылында оларды мүлдем пайдаланбаған. Оқу барысында 18,2% ағынмен ерекше қиындықтарға тап болмады және оларды жақсы білді, 36,4% өз білімдерін жақсы деп бағалады, бірақ 10,6% бұл тақырыпты елемейді. Multithreading (Java Multithreading/Concurrency). Мүмкін бұл жаңадан әзірлеушілер арасында үлкен түсінбеушілік тудыратын тақырып. Java тіліндегі көп ағындылық өте жақсы енгізілгенімен, оны түсіну қиын және қарапайым бағдарламаларды жазу кезінде де қиындықтар туындауы мүмкін (мысалы, көп ағынды «Сәлем, әлем»). Көптеген жұмыс берушілер мұны түсінеді және жаңадан бастаушылардан көп ағынды терең түсінуді талап етпейді, бұл тәжірибемен келеді деп күтеді. Респонденттердің тек 12%-ы бірінші ұсынысты алғанға дейін тақырыпты жақсы деңгейде білетіндіктерін атап өтті, ал респонденттердің 32%-ға жуығы тақырып туралы мүлдем білмейтіндерін мойындады. Көпшілігі, 56,2% көп ағынды «аздап түсінетінін» айтты. Сондықтан, егер жіптермен жұмыс істеу қиындықтары қазір сізге еңсерілмейтін болып көрінсе, бұл сандар сізді тыныштандыруы мүмкін. Дегенмен, сұхбатта бәсекелестік артықшылыққа ие болғыңыз келсе, бұл тақырып сіздің күшті тұсыңыз болуы мүмкін. Нақты жобаларда жаңадан бастағандарға жіптермен жұмыс істеуге сирек рұқсат етіледі. Осылайша, жаңадан бастаған бағдарламашылардың 15,1%-ы Java Multithreading-ті өз жұмысында мүлде кездестірмеген, ал 39,4%-ы онымен кездескен, бірақ сирек. Жиі жұмыстың бірінші жылында респонденттердің тек 9,1%-ы көп ағынмен жұмыс істеуге тура келді. Ламбда өрнектері.Lambda өрнектері мен функционалдық бағдарламалау туралы кеңестер Java 8-де пайда болды, бірақ жаңадан келгендер бұл ыңғайлы құралды жиі пайдалана бермейді. Ламбда өрнегі – бұл кез келген классқа жатпайтын жасалатын функция және оны an object ретінде беруге немесе сұраныс бойынша орындауға болады. Сауалнамаға қатысқан түлектердің тек 22,7% бірінші жұмыс ұсынысын алғанға дейін Lambda өрнектерін жақсы білетін және 48,5% тақырып бойынша білімін «нөлге жақын» деп бағалаған. Сонымен қатар, жаңа бағдарламашылардың 85% -дан астамы бірінші жылы лямбда өрнектерін қолданғанын айтты. Әділ болу үшін, біз бұл тақырыпты білетіндердің төмен пайызы JavaRush-та лямбда өрнектері әлі күнге дейін тек жаңа Java Syntax Pro квестінде және мақалаларында ұсынылғанына байланысты болуы мүмкін екенін атап өтеміз . Осылайша, кез келген әлеуетті Java Junior және тіпті Тренер үшін Core Java тілін білу жай ғана қажет деп сенімді түрде айта аламыз. Әрине, кейбір тақырыптарды, мысалы, көп ағынды, азырақ білуге болады, бірақ Java синтаксисі, OOP және жинақтар сіздің санаңызға берік енуі керек.Алгоритмдер және деректер құрылымдары
Сұрыптау және іздеу алгоритмдерін зерттеу туралы үнемі пікірталас бар. Бір жағынан, ең жақсы алгоритмдер бұрыннан жазылған және барлық танымал бағдарламалау тілдерінің, соның ішінде Java-ның кітапханаларына енгізілген. Және олар өзіңіздің codeыңызды жазудың қиындықтарынсыз заңды түрде пайдаланылуы мүмкін. Дегенмен, бағдарламашыларды дайындайтын сарапшылар әлі күнге дейін әрбір жаңадан әзірлеушіге осы көпіршікті алгоритмдердің барлығын жазу, біріктіру, екілік іздеу және т.б. арқылы миын жаттықтыруды ұсынады. Біріншіден, бұл алгоритмдер бағдарламалаушының дағдыларын (дәлірек айтқанда, білім емес, дағдылар) және адамның бағдарламалаудың не екенін түсінуінің лакмус сынағы түрі болып табылады. Егер сіздің миыңыз осы жұмыс түріне жақсы бейімделген болса, сіз алгоритмдерді салыстырмалы түрде оңай жазасыз. Дегенмен, есіңізде болсын: сізге дәл миыңызды жаттықтыру үшін алгоритмдер қажет... және сұхбаттан өту үшін: оларды жүргізетін коррозиялық Аға әзірлеушілер өтініш берушілерді сол немесе басқа алгоритмді жазу туралы өтініштермен қинауды жақсы көреді. Бірақ олардың көпшілігі (48,5%) өз жұмыстарында тиімді және дәлелденген стандартты кітапханалық алгоритмдерді пайдаланады, ал респонденттердің 16%-ы бағдарламашы ретінде жұмыс істеген бірінші жылы сұрыптауды мүлде қолданбаған. Түлектердің 69,6%-ы алғашқы жұмыс ұсынысын алғанға дейін сұрыптау мен іздеу алгоритмдерін жақсы түсінгенін және оларды өздері жаза алатынын айтады. Біз Java жинақтары туралы айтқан кезде деректер құрылымдары тақырыбын қозғадық. Иә, қайда және қандай құрылымды қолдану керектігін білу үшін оларды түсінген дұрыс. Кітапхананың кескінінде жеке деректер құрылымдарын жасау - оларды жақсырақ түсінуге көмектесетін тамаша жаттығу. Сіз, мысалы, ArrayList-тің жеке нұсқасын жазып көріңіз немесе жеке байланыстырылған тізіміңізді ұсына аласыз (Java-дағы әдеттегі LinkedList екі есе байланысты). Жаңадан келген бағдарламашылар жұмыс кезінде негізінен стандартты деректер құрылымдарын пайдаланды.Бірлікті сынау
JUnit кітапханасы Java тіліндегі бірліктерді тестілеуге жауапты. Шындығында, бірлікті тестілеуді жаттығудың ең басында дерлік бастауға болады. Ең болмағанда, сіз өзіңіздің алғашқы тәуелсіз жобаңызды, тіпті өте кішкентай жобаңызды қабылдаған кезде, сіз бұл құралды жақсы меңгергеніңіз жөн. Бірлік сынақтарын жазу қиын емес, дегенмен кейбір нюанстар бар. JUnit-ті үйрену көп уақытты қажет етпейді, бірақ оны білудің пайдасы орасан зор. Сіз өзіңіздің және басқа адамдардың codeын сынақтармен қамтуға мүмкіндік аласыз. Көбінесе жаңадан бастаушыларға әріптестеріне бірлік сынақтарын жазу тапсырылады, сондықтан бұл олардың жаңа жұмысында тікелей пайдалы болуы мүмкін. Респонденттердің 57,5%-ы JUnit-ті алғашқы сәтті Java сұхбатына дейін пайдаланғанын айтты, ал 83%-дан астамы бірінші жылында бірлік тестілеуін қолданып қойған.Қызметтік кітапханалар, графикалық интерфейс және пайдалы компоненттер
Біз JavaRush түлектерінің бірқатар құралдармен қаншалықты таныс екенін сұрадық, олардың кейбіреулері біздің курста қарастырылған.- Сервлеттер – server мүмкіндіктерін кеңейтетін Java бағдарламалық құралының құрамдас бөліктері.
- JDBC Java қолданбалары мен дерекқорлар арасындағы өзара әрекеттесу үшін платформаға тәуелсіз стандарт болып табылады. JDBC java пакеті ретінде жүзеге асырылады. sql Java SE (Standard Edition) бағдарламасына кіреді.
- log4j - хабарларды тіркеудің ең танымал кітапханасы. Ол java codeында кітапханалық қоңырауларды жазуға, содан кейін бұрыннан жазылған codeты өзгертпестен оны икемді түрде теңшеуге мүмкіндік береді.
- Джексон/JSON. JSON (JavaScript Object Notation) — өте танымал ашық стандартты файл және деректер алмасу пішімі, ал Джексон — Java үшін жоғары өнімді JSON процессоры.
Фреймворктер
Бұрын Java Junior-ның Spring немесе Hibernate режимін біледі деп ешкім күтпеген. Бірақ уақыт өзгереді, бүгінде бұл кейде тіпті Тренерден де күтіледі. Бұл технологияларды өз бетімен үйрену оңай емес. Барлығы түсінікті болып көрінсе де, студенттер нені тез ұмытып кетеді. Кейде тіпті көктемде өздігінен жазылған өтініштер панацея емес. Тек белсенді жұмыс көмектеседі. Дегенмен, сәтті сұхбатқа дейін респонденттердің үштен бірі Көктеммен жақсы деңгейде таныс болды, ал 45,5% оны орташа түсінеді. Spring boot бағдарламасының жағдайы біршама нашар (36,4% оны мүлде білмеді) және сауалнамаға қатысқан JavaRush түлектерінің 44% дерлік Hibernate туралы жақсы білетіндерін айтты. Сонымен қатар, жұмыс кезінде негізгі Java фреймворкін жаңа бағдарламашылардың 88% дерлік, Spring Boot - 83%, Hibernate - 81% пайдаланды.Автоматтандыру құралдары мен қолданбалы serverлерді құрастырыңыз
JavaRush бағдарламасының түлектерінің көбісі жобаны құрастырушылармен жұмыс істеуге тырысты. Көбінесе бұл Maven болды (40,9% оны тәжірибеде қолданып көрді, тағы 30,3% оны мезгіл-мезгіл қолданды, ал 12,1% оқу кезінде үнемі қолданды). Мавенмен жұмыс істегенде мен 72,7% (жиі), 7,6% (кейде) және 3% (сирек) кездестім. Градлға келетін болсақ, жағдай біршама нашар. Тек 22,7%-ы бұл коллектормен тәжірибеден өткен және олардың көпшілігі технологияны жаңа ғана қолданып көрген. Респонденттердің жартысы дерлік өз жұмыстарында Gradle-ді пайдаланды. Құмырсқа өз позициясын әлдеқашан жоғалтты және бұл оның біздің түлектер арасындағы танымалдылығынан көрінеді: респонденттердің тек 3% ғана онымен айналысқан. Ал сұрақтарға жауап бергендердің 12 пайызы онымен жұмыс істеуге мәжбүр болды. Қолданбалы serverлер арасында Tomcat көшбасшы болып табылады; респонденттердің 77% -дан астамы оны оқу барысында түсінді, 11% GlassFish, 12% JBoss қолданды. Қазірдің өзінде жұмыс істеп жатқандар арасында serverлердің танымалдығы ұқсас көрінеді. Жұмысқа кіргендердің тек 31,8% Tomcat-пен тәжірибесі жоқ. Сондай-ақ JavaRush түлектері бағдарламашы ретінде жұмыс істеген бірінші жылында WebSphere, Jetty, Netty, Wildfly, Weblogic сияқты serverлерді қолданып көрді.Тағы да не?
Респонденттердің басым көпшілігі, тіпті бірінші жұмысқа кіріспес бұрын:- HTML, CSS және JavaScript тілдерін түсінді;
- мәліметтер қорымен жұмыс жасады, SQL тілін білді;
- барлығы дерлік Git және GitHub пайдаланды;
- таза XML-мен жұмыс істеуге тырысты.
GO TO FULL VERSION