- Ақпаратты қайталамау үшін осы мақалалар сериясымен қиылысатын сұрақтарды өткізіп жіберемін. Мен бұл материалдарды оқуды ұсынамын, өйткені оларда Java Core сұхбатының ең кең тараған (танымал) сұрақтары бар.
- DOU сұрақтары украин тілінде берілген, бірақ менде бәрі орыс тілінде болады.
- Жауаптарды егжей-тегжейлі сипаттауға болады, бірақ мен айтпаймын, содан бері әрбір сұраққа жауап тұтас мақаланы алуы мүмкін. Олар кез келген сұхбатта сізден егжей-тегжейлі сұрамайды.
11. Object класының барлық әдістерін атаңыз
Object класында 11 әдіс бар:- Class<?> getClass() — ағымдағы an objectінің класын алу;
- int hashCode() — ағымдағы an objectінің хэш codeын алу;
- boolean equals(Object obj) – ағымдағы нысанды басқасымен салыстыру;
- Object clone() – ағымдағы an objectінің көшірмесін жасау және қайтару;
- String toString() — нысанның жолдық көрінісін алу;
- void notify() – осы нысанның мониторында күтіп тұрған бір ағынды ояту (ағынды таңдау кездейсоқ);
- void notifyAll() – осы нысанның мониторында күтіп тұрған барлық ағындарды оятады;
- void wait() – ағымдағы ағынды ағымдағы мониторда күту режиміне ауыстырады (оны қатырады), кейбірі notify немесе notifyAll ағынды оятпайынша, тек синхрондалған блокта жұмыс істейді;
- void күту(ұзақ күту уақыты) - ағымдағы монитордағы (ағымдағы синхрондалған) ағымдағы ағынды да тоқтатады, бірақ осы күйден шығуға арналған таймермен (немесе қайтадан: хабарландыру немесе notifyAll оянғанша);
- void wait(ұзақ күту уақыты, int nanos) - жоғарыда сипатталғанға ұқсас әдіс, бірақ қатып қалудан шығу үшін дәлірек таймерлері бар;
- void finalize() - бұл нысанды жоймас бұрын, қоқыс жинаушы бұл әдісті шақырады (соңында). Ол басып алынған ресурстарды тазарту үшін қолданылады.
12. Ресурстармен жұмыс істеу кезінде сынап көру және ресурспен жұмыс істеу арасындағы айырмашылық неде?
Әдетте try-catch-finally пайдалану кезінде соңғы блок ресурстарды жабу үшін пайдаланылды. Java 7 ресурстарды босатуға арналған try-catch-finally аналогы болып табылатын try-with- resours операторының жаңа түрін енгізді , бірақ ықшам әрі оқылатын. try-catch-finally қандай болатынын еске түсірейік :String text = "some text......";
BufferedWriter bufferedWriter = null;
try {
bufferedWriter = new BufferedWriter(new FileWriter("someFileName"));
bufferedWriter.write(text);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Енді осы codeты қайта жазайық, бірақ try-with-resources арқылы :
String text = "some text......";
try(BufferedWriter bufferedWriter =new BufferedWriter(new FileWriter("someFileName"))) {
bufferedWriter.write(text);
} catch (IOException e) {
e.printStackTrace();
}
Қалай ойлайсыз, бұл оңайырақ болды, солай емес пе? Жеңілдетуден басқа, бірнеше тармақ бар:
-
Resources әрекетінде жақша ішінде жарияланған ресурстар (жабылатын) AutoCloseable интерфейсін және оның жалғыз әдісін, close() іске асыруы керек .
Close әдісі жасырын finally блокта орындалады , әйтпесе бағдарлама берілген ресурсты қалай жабу керектігін қалай түсінеді?
Бірақ, ең алдымен, сіз өзіңіздің ресурстарды іске асыруды және оларды жабу әдісін сирек жазасыз.
-
Блоктың орындалу реті:
- блоктауға тырысыңыз .
- Ақырында жасырын .
- Алдыңғы қадамдардағы ерекше жағдайларды ұстайтын catch блогы .
- Ақырында анық .
Әдетте, тізімде төменірек көрінетін ерекшеліктер жоғарырақ көрінетіндерді үзеді.
13. Биттік амалдар дегеніміз не?
Биттік операциялар - бұл логикалық операциялар мен разрядтық жылжуларды қамтитын разрядтық жолдардағы операциялар. Логикалық операциялар:-
биттік ЖӘНЕ - бит мәндерін салыстырады және процесте 0 (жалған) мәніне орнатылған кез келген бит нәтижедегі сәйкес битті 0 етіп орнатады. Яғни, салыстырылатын екі мәнде де бит 1 (шын) болса, нәтиже де 1 болады.
- ЖӘНЕ , & ретінде белгіленеді
Мысалы: 10111101 & 01100111 = 00100101
-
биттік НЕМЕСЕ алдыңғыға кері операция. 1 мәніне орнатылған кез келген бит нәтижедегі ұқсас битті 1 ретінде орнатады. Сәйкесінше, салыстырылған екі мәнде де бит 0 болса, нәтиже бит де 0 болады.
- НЕМЕСЕ , | ретінде белгіленеді
Мысалы: 10100101 | 01100011 = 11100111
-
биттік ЕМЕС – бір мәнге қолданылады, биттерді аударады (инверттейді). Яғни, 1 болған биттер 0-ге айналады; ал 0 болғандар 1 болады.
- ЕМЕС , ~ деп белгіленеді
Мысалы: ~10100101 = 01011010
биттік эксклюзивті НЕМЕСЕ - бит мәндерін салыстырады және екі мәнде де бит 1-ге тең болса, нәтиже 0 болады, ал екі мәнде де бит 0 болса, нәтиже 0 болады. Яғни, нәтиже 1-ге тең болуы үшін биттердің тек біреуі 1-ге, ал екіншісі 0-ге тең болуы керек. - XOR , ^ ретінде белгіленеді
Мысалы: 10100101 ^ 01100011 = 11000110
- 01100011 >> 4 = 00000110
- 01100011 << 3 = 00011000
14. Java тіліндегі an objectілер қандай стандартты өзгермейтін класстар болып табылады?
Өзгермейтін – оның бастапқы параметрлерін өзгертуге мүмкіндік бермейтін an object. Оның өзгерткіңіз келетін параметрлері бар берілген түрдегі жаңа нысандарды қайтаратын әдістер болуы мүмкін. Кейбір стандартты өзгермейтін нысандар:- Java тіліндегі ең танымал өзгермейтін нысан – String;
- стандартты типтерді орайтын орауыш сыныптарының даналары: логикалық, таңба, byte, қысқа, бүтін, ұзын, қос, қалқымалы;
- әдетте ерекше үлкен сандар үшін қолданылатын нысандар - BigInteger және BigDecimal;
- стектректердегі бірлік болып табылатын нысан (мысалы, ерекшелік стектрегі) StackTraceElement;
- File класының an objectісі - файлдарды өзгерте алады, бірақ сонымен бірге оның өзі өзгермейді;
- UUID - элементтер үшін бірегей идентификатор ретінде жиі пайдаланылады;
- java.time пакетінің барлық класс an objectілері;
- Жергілікті жер – географиялық, саяси немесе мәдени аймақты анықтау үшін қолданылады.
15. Тұрақты an objectілерден өзгермейтін an objectінің артықшылығы неде?
- Мұндай нысандар көп ағынды ортада пайдаланылған кезде қауіпсіз . Оларды пайдалану арқылы сіз ағындық жарыс жағдайларына байланысты деректерді жоғалту туралы алаңдамайсыз. Қарапайым an objectілермен жұмыс істеуден айырмашылығы: бұл жағдайда өте мұқият ойластырып, an objectіні параллельді ортада пайдалану механизмдерін пысықтауға тура келеді.
- Өзгермейтін нысандар картадағы жақсы кілттер болып табылады, өйткені өзгермелі нысанды пайдалансаңыз, содан кейін нысан оның күйін өзгертсе, ол HashMap пайдалану кезінде түсініксіз болуы мүмкін: нысан әлі де болады, ал егер сіз containKey() пайдалансаңыз , ол болмауы мүмкін. табылуы.
- Өзгермейтін нысандар бағдарлама жұмыс істеп тұрған кезде ешқашан өзгертілмейтін өзгермейтін (тұрақты) деректерді сақтау үшін тамаша.
- «Сәтсіздікке дейін атомдық» - егер өзгермейтін an object ерекше жағдайды шығарса, ол әлі де қажетсіз (бұзылған) күйде қалмайды.
- Бұл сабақтарды тексеру оңай.
- Көшіру конструкторы және клонды жүзеге асыру сияқты қосымша механизмдер қажет емес.
OOP туралы сұрақтар
16. Жалпы және proceduresалық бағдарламалаумен салыстырғанда OOP артықшылығы қандай?
Сонымен, OOP артықшылықтары:- Процедуралық бағдарламалауға қарағанда күрделі қолданбаларды жазу оңай, өйткені барлығы шағын модульдерге - бір-бірімен әрекеттесетін an objectілерге бөлінеді және нәтижесінде бағдарламалау an objectілер арасындағы қатынастарға түседі.
- OOP көмегімен жазылған қолданбаларды өзгерту оңайырақ (дизайн тұжырымдамалары сақталған кезде).
- Деректер мен ондағы операциялар біртұтас нысанды құрайтындықтан, олар қолданбаның бүкіл бойына жағылмайды (бұл көбінесе proceduresалық бағдарламалауда болады).
- Ақпаратты инкапсуляциялау пайдаланушыдан ең маңызды деректерді қорғайды.
- Бір codeты әртүрлі деректермен қайта пайдалануға болады, өйткені класстар әрқайсысының өзіндік атрибут мәндері бар көптеген an objectілерді жасауға мүмкіндік береді.
- Мұрагерлік және полиморфизм сонымен қатар бар codeты қайта пайдалануға және кеңейтуге мүмкіндік береді (ұқсас функционалдылықты қайталаудың орнына).
- Процедуралық тәсілге қарағанда қолданбаның кеңеюі оңайырақ.
- OOP тәсілі іске асыру мәліметтерінен абстракциялауға мүмкіндік береді.
17. OOP-та қандай кемшіліктер бар екенін айтыңыз
Өкінішке орай, олар да бар:- OOP бірдеңе жаза алмас бұрын меңгеру қажет көптеген теориялық білімді талап етеді.
- OOP идеяларын түсіну және іс жүзінде қолдану оңай емес (сіз жүрегіңізде аздап философ болуыңыз керек).
- OOP пайдаланған кезде бағдарламалық қамтамасыз етудің өнімділігі жүйенің неғұрлым күрделі ұйымдастырылуына байланысты аздап төмендейді.
- OOP тәсілі көбірек жадты қажет етеді, өйткені барлығы класстардан, интерфейстерден, әдістерден тұрады, олар қарапайым айнымалыларға қарағанда әлдеқайда көп жадты алады.
- Бастапқы талдауға қажетті уақыт proceduresалық талдауға қарағанда көбірек.
18. Статикалық және динамикалық полиморфизм дегеніміз не
Полиморфизм an objectілерге бір сынып немесе интерфейс үшін басқаша әрекет етуге мүмкіндік береді. Полиморфизмнің екі түрі бар, олар ерте және кеш байланыстыру деп те аталады . Статикалық полиморфизм немесе ертерек байланыстыру:- компиляция уақытында (бағдарламаның өмірлік циклінің басында) орын алады;
- компиляция уақытында қандай әдісті орындау керектігін шешеді;
- Әдістің шамадан тыс жүктелуі статикалық полиморфизмнің мысалы болып табылады;
- ерте байланыстыру жеке, статикалық және терминалдық әдістерді қамтиды;
- мұрагерлік ерте байланыстыруға қатыспайды;
- Статикалық полиморфизм нақты an objectілерді қамтымайды, бірақ типі айнымалы атының сол жағында көрсетілген класс туралы ақпаратты қамтиды.
- орындалу уақытында пайда болады (бағдарлама жұмыс істеп тұрғанда);
- динамикалық полиморфизм әдістің орындалу уақытында қандай нақты іске асыруға ие болатынын шешеді;
- әдісті қайта анықтау динамикалық полиморфизмнің мысалы болып табылады;
- кеш байлау – белгілі бір an objectіні, оның түрінің сілтемесін немесе оның суперсыныбын тағайындау;
- тұқым қуалаушылық динамикалық полиморфизммен байланысты.
GO TO FULL VERSION