JavaRush /Блоги Java /Random-TG /Таҳлили саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари ...

Таҳлили саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java. Қисми 1

Дар гурӯҳ нашр шудааст
Салом! Дар JavaRush одамони гуногун ҷамъ омаданд. Баъзеи мо танҳо мехоҳем таҳиягари Java шавем ва барои рушд вақт ва кӯшиши зиёд сарф кунем, дар ҳоле ки дигарон аллакай таҳиягарони Java мебошанд. Дар ин ё он ҳолат шумо бояд ба санҷишҳо - мусоҳибаҳои техникӣ омода бошед. Ин озмоиш осон нест ва дар баробари омодагии маънавӣ, омодагии техникӣ низ лозим аст. Ман ба наздикӣ як рӯйхати калони Саволҳои мусоҳибаи таҳиягари Java дар dou Таҳлor саволу ҷавобҳои мусоҳиба.  Қисми 1 - 1пайдо шудам . Ин саволҳо ба сатҳҳои гуногун тақсим мешаванд - хурд, миёна ва калон. Парво накунед: на ҳама саволҳо осонанд, аммо ба онҳое, ки ситорача доранд, хеле кам дода мешаванд. Саволҳо хубанд, аммо ман мехоҳам кӯшиш кунам, ки ба аксари онҳо ҷавоб диҳам. Равшан аст, ки ман ба доираи як мақола намеравам; дар ниҳоят, дар он ҷо саволҳои зиёде мавҷуданд. Аз ин рӯ, ин як қатор мақолаҳо хоҳад буд, ки ба чунин саволҳо ҷавоб медиҳанд. Иҷозат диҳед дарҳол чанд нуктаро таъкид намоям:
  1. Мақолаи олӣ бо саволҳо ва ҷавобҳои беҳтарин барои онҳо мавҷуд аст . Баъзе саволҳо бо рӯйхати дар боло овардашуда (250+) мувофиқат мекунанд, аз ин рӯ, ин саволҳо гузаронида мешаванд, то бори дигар маълумот такрор нашавад.

  2. Саволҳо бо забони украинӣ пешниҳод карда мешаванд, аммо азбаски аксарияти иштирокчиёни JavaRush русзабонанд (ва то андозае ман низ), ҷавобҳо бо забони русӣ хоҳанд буд.

  3. Ҷавобҳо кӯтоҳ хоҳанд буд, зеро агар шумо ба таври муфассал нависед, ҷавобҳо ба баъзе саволҳо метавонанд мақолаи алоҳидаро талаб кунанд. Ва дар рафти мусоҳибаҳо чунин ҷавобҳои муфассал ва ҳаҷм лозим нест, зеро мусоҳиби шумо танҳо як соат вақт дорад, ки дар мавзӯъҳои зарурӣ бо шумо мусоҳиба кунад (ва, тавре ки дар ёд доред, кифоя аст). Барои онҳое, ки мехоҳанд амиқтар кобед, ман истинодҳоро мегузорам.

Пас, биёед оғоз кунем.

Саволҳо ва ҷавобҳо дар сатҳи наврасон

Таҳлor саволу ҷавобҳои мусоҳиба.  Қисми 1 - 2

Масъалаҳои умумӣ

1. Кадом намунаҳои тарҳрезиро медонед? Дар бораи ду қолабе, ки шумо дар кори худ истифода бурдед, ба мо бигӯед.

Шаблонҳои зиёде мавҷуданд: шумо метавонед бо онҳо аз ин ва ин мақола шинос шавед. Хуб, барои онҳое, ки мехоҳанд бо онҳо муфассал шинос шаванд, ман тавсия медиҳам, ки китоби "Аввал сар. Намунаҳои тарроҳӣ" . Бо ёрии он шумо метавонед намунаҳои асосии тарҳрезиро ба таври муфассал ва ба осонӣ омӯзед. Вақте ки сухан дар бораи намунаҳои тарроҳӣ меравад, ки шумо метавонед дар мусоҳиба ҳамчун намуна истифода баред, баъзеи онҳо ба хотир меоянд:
  • Builder як қолаби зуд-зуд истифодашаванда, алтернатива ба эҷоди an objectи классикӣ мебошад;
  • Намунаи стратегия , ки табиатан полиморфизмро ифода мекунад. Яъне, мо як интерфейс дорем, аммо рафтори барнома вобаста ба он, ки татбиқи мушаххаси ин интерфейс ба функсия интиқол дода шудааст (ҳоло стратегия дар ҳама ҷо дар барномаҳои java истифода мешавад) тағйир меёбад.
Агар ин барои шумо кофӣ набошад, ба Баҳор диққат диҳед (агар шумо аллакай бо он шинос бошед), зеро он як платформаи тамоми чаҳорчӯба аст, ки дар навбати худ бо намунаҳои боло ва поён печида шудаанд. Инҳоянд чанд мисоли он чизе ки ман дар бораи он сухан меронам:
  • Фабрика - дар ApplicationContext (ё дар BeanFactory);
  • Singleton - ҳама лӯбиёҳо ба таври нобаёнӣ синглтон мебошанд;
  • Прокси - аслан ҳама чиз дар Баҳор ин намунаро бо ин ё он роҳ истифода мебарад, масалан, AOP;
  • Занҷири масъулият намунаест, ки ба консепсияи он Spring Security кор мекунад;
  • Шаблон - дар Spring Jdbc истифода мешавад.

Java Core

Таҳлor саволу ҷавобҳои мусоҳиба.  Қисми 1 - 3

2. Дар Java кадом намуди додаҳо мавҷуданд?

Java дорои намудҳои ибтидоии додаҳо мебошад:
  • byte — ададҳои бутун дар диапазони -128 то 127, вазнашон 1 byte;
  • кӯтоҳ — ададҳои бутун дар диапазони -32768 то 32767, вазнашон 2 byte;
  • int — ададҳои бутун -2147483648 то 2147483647, вазнаш 4 byte;
  • дароз — ададхои бутун дар диапазони 9223372036854775808 то 9223372036854775807, вазнашон 8 byte;
  • float — рақамҳои нуқтаи шинокунанда дар диапазони -3,4E+38 то 3,4E+38, вазнашон 4 byte;
  • дукарата — рақамҳои шинокунандаи нуқта дар диапазони -1,7E+308 то 1,7E+308, вазнашон 8 byte;
  • char — аломатҳои ягона дар UTF-16, вазнашон 2 byte;
  • Қиматҳои мантиқии ҳақиқӣ/дурӯғ , вазнашон 1 byte аст.
Ва истинод ба намудҳои додаҳо , ки ба an objectҳои дар теппа ишора мекунанд.

3. Объект аз навъњои маълумоти ибтидої чї фарќ мекунад?

Фарқияти аввал: миқдори хотираи ишғолшуда: ибтидоӣ хеле камро ишғол мекунанд, зеро онҳо танҳо арзиши худро дар бар мегиранд, дар ҳоле ки an objectҳо метавонанд арзишҳои хеле ва хеле зиёди гуногунро дар бар гиранд: ҳам ибтидоӣ ва ҳам истинод ба an objectҳои дигар. Фарқияти дуюм: Java забони ба an object нигаронидашуда аст, аз ин рӯ ҳама чиз дар он тавассути таъсири мутақобилаи байни an objectҳо кор мекунад ва ибтидоӣ чандон мувофиқат намекунанд (воқеан, барои ҳамин Java 100% забони ба an object нигаронидашуда нест). Сеюм, пас аз дуюм: азбаски Java ба ҳамкории байни an objectҳо нигаронида шудааст, ин an objectҳо механизмҳои гуногуни идоракунии онҳоро доранд. Масалан, конструкторҳо, усулҳо, истисноҳо (ки асосан дар an objectҳо амал мекунанд) ва ғайра. Воқеан, барои он ки примитивҳо дар ин муҳити ба an object нигаронидашуда ягон хел иштирок кунанд (кор кунанд), парпечҳо барои намудҳои ибтидоӣ ихтироъ карда шуданд ( Integer , Character , Double , Boolean ...)

4. Фарқи байни интиқоли параметрҳо аз рӯи истинод ва аз рӯи арзиш чист?

Майдонҳои ибтидоӣ арзиши худро нигоҳ медоранд: масалан, агар мо int i = 9 гузорем; майдони i арзиши 9-ро нигоҳ медорад . Вақте ки мо истинод ба an object дорем, ин маънои онро дорад, ки мо майдонеро бо истинод ба an object ё ба ибораи дигар, бо арзиши суроғаи an object дар хотира дорем.
Cat cat = new Cat();
Маълум мешавад, ки майдонҳо бо истинод ба an object инчунин арзишҳо , арзишҳои суроғаи хотираро нигоҳ медоранд. Яъне, cat арзиши суроғаи an objectи нави Cat()- ро дар хотира нигоҳ медорад. Вақте ки мо параметрро ба усул мегузарем, арзиши он нусхабардорӣ карда мешавад. Дар ҳолати ибтидоӣ, арзиши ибтидоӣ нусхабардорӣ карда мешавад. Мувофиқи он, усул бо нусха кор хоҳад кард, ки тағир додани он ба асл таъсир намерасонад. Дар сурати навъи истинод, арзиши суроғаи хотира нусхабардорӣ карда мешавад, мутаносибан суроға бо an objectе, ки ба он ишора мекунад, ҳамон хоҳад буд. Ва агар мо an objectро бо истифода аз ин истиноди нав иваз кунем, он барои истиноди кӯҳна иваз карда мешавад (охир ҳарду ба як an object ишора мекунанд).

5. JVM, JDK, JRE чист?

JVM - Мошини виртуалии Java як мошини маҷозӣ мебошад, ки bytecodeи Java-ро иҷро мекунад, ки аз ҷониби компилятор пешакӣ тавлид шудааст. JRE - Java Runtime Environment - аслан муҳити корбарии барномаҳои Java мебошад, ки дорои JVM , китобхонаҳои стандартӣ ва ҷузъҳои дигар барои иҷро кардани апплетҳо ва замимаҳои бо забони барномасозии Java навишташуда мебошад. Ба ибораи дигар , JRE маҷмӯи ҳама чизест, ки барои иҷро кардани барномаи Java тартибдодашуда лозим аст, аммо дорои асбобҳо ва утorтҳо ба монанди компиляторҳо ё ислоҳкунандагон барои таҳияи барномаҳо нест. JDK - Java Development Kit - маҷмӯи васеи JRE , яъне муҳити на танҳо барои оғоз, балки барои таҳияи барномаҳои Java. JDK дорои ҳама чизест, ки дар JRE мавҷуд аст, инчунин асбобҳои гуногуни иловагӣ - компиляторҳо ва ислоҳкунандагон, ки барои сохтани барномаҳо дар Java лозиманд (инчунин ҳуҷҷатҳои javaро дар бар мегиранд).Таҳлor саволу ҷавобҳои мусоҳиба.  Қисми 1 - 4

6. Чаро JVM истифода мешавад?

Тавре ки дар боло зикр гардид, Java Virtual Machine як мошини маҷозӣ мебошад, ки bytecodeи Java-ро иҷро мекунад, ки аз ҷониби компилятор пешакӣ тавлид шудааст. Яъне, JVM рамзи сарчашмаи Java-ро намефаҳмад. Аз ин рӯ, аввал, файлҳои .java тартиб дода мешаванд , ки пас аз тартибдиҳӣ аллакай васеъшавии .class доранд ва дар шакли ҳамон codeи byteӣ, ки JVM мефаҳманд, пешниҳод карда мешаванд. Ҳар як ОС JVM-и худро дорад, бинобар ин, файлҳои byte-codeро гирифта, JVM онро иҷро карда, онро ба OS, ки дар он рӯй медиҳад, мутобиқ мекунад. Дар асл, аз сабаби JVM-ҳои гуногун, versionҳои JDK (ё JRE) барои OS-ҳои гуногун фарқ мекунанд (ҳар кадоми онҳо JVM-и худро талаб мекунанд). Биёед ба ёд орем, ки рушд дар дигар забонҳои барномасозӣ чӣ гуна кор мекунад. Шумо як барнома таҳия мекунед, пас codeи он ба codeи мошин барои ОС-и мушаххас тартиб дода мешавад ва он гоҳ шумо метавонед онро иҷро кунед. Ба ибораи дигар, шумо бояд versionҳои гуногуни барномаро барои ҳар як система нависед. Дар ҳоле ки дар Java, ба шарофати коркарди рамзи дугона (тартиб ва коркарди byteҳои codeи JVM), шумо метавонед аз бартариҳои кросс-платформа баҳра баред. Мо боре codeро офаридем, онро ба byte-code дубора тартиб додем, онро ба ҳама гуна ОС интиқол додем ва JVM маҳаллӣ codeро иҷро мекунад. Ин моликияти афсонавии Java аст - як бор нависед, дар ҳама ҷо кор кунед . Таҳлor саволу ҷавобҳои мусоҳиба.  Кисми 1 — 5Муфассалтар дар ин бора дар мақолаи " Тартиб додан ва иҷро кардани замимаҳои Java дар зери сарпӯш " хонед.

7. Байтcode чист?

Тавре ки ман дар боло гуфтам, компилятор рамзи Java-ро ба bytecodeи фосилавӣ табдил медиҳад (файлҳои дорои васеъшавии .java ба файлҳои васеъшавии .class). Байтcode аз бисёр ҷиҳат ба рамзи мошин шабоҳат дорад, танҳо он маҷмӯи дастурҳоро на аз протсессори воқеӣ, балки аз виртуалӣ истифода мебарад. Ғайр аз он, он метавонад бахшҳоеро дар бар гирад, ки ба истифодаи компилятори JIT нигаронида шудаанд, ки иҷрои фармонҳоро барои протсессори воқеие, ки барнома дар он кор мекунад, оптимизатсия мекунад. Ҷамъоварии JIT, ки онро ҳамзамон компиляция меноманд, технологияест, ки иҷрои барномаро бо истифода аз bytecode тавассути тартиб додани bytecode ба мошин ё формати дигар ҳангоми иҷрои барнома афзоиш медиҳад. Тавре ки шумо тахмин кардаед, JVM ҳангоми кор кардани bytecode як компилятори JIT-ро истифода мебарад. Биёед мисоли byte-codeро дида бароем: Таҳлor саволу ҷавобҳои мусоҳиба.  Қисми 1 - 6На он қадар хондан мумкин аст, ҳамин тавр не? Хуб, ин барои мо дастур нест, балки барои JVM. Дар ин ҷо мақолае ҳаст , ки ба шумо дар фаҳмидани ин масъала кӯмак мекунад.

8. Хусусиятҳои JavaBean кадомҳоянд?

JavaBeans синфи Java бо қоидаҳои муайян аст. Инҳоянд баъзе қоидаҳо барои навиштани JavaBean :
  1. Синф бояд як созандаи дастрасии оммавии холӣ (бе параметрҳо) бо тағирдиҳандаи дастрасии ҷамъиятӣ дошта бошад . Ин конструктор имкон медиҳад, ки an objectи ин синфро бидуни мушкилоти нолозим созем (то ин ки бо параметрҳо сару садои нолозим набошад).

  2. Майдонҳои дохorи синф тавассути усулҳои get ва set дастрас карда мешаванд , ки бояд стандартӣ бошанд. Масалан, агар майдон name бошад , getName ва setName ва ғайра. Ин, дар навбати худ, ба асбобҳои гуногун (чаҳорчӯба) имкон медиҳад, ки ба таври худкор мундариҷаи лӯбиёро бидуни мушкилот муайян ва нав кунанд.

  3. Синф бояд versionҳои бекоршудаи усулҳои equals () hashCode() ва toString() дошта бошад .

  4. Синф бояд сериализатсияшаванда бошад, яъне он бояд интерфейси маркер дошта бошад - Serializable ё амалӣ кардани интерфейси Externalizable . Ин барои он зарур аст, ки ҳолати лӯбиё ба таври боэътимод нигоҳ дошта шавад, нигоҳ дошта шавад ва барқарор карда шавад.

Таҳлor саволу ҷавобҳои мусоҳиба.  Қисми 1 - 7Шумо метавонед дар бораи намудҳои JavaBeans дар ин мавод хонед .

9. OutOfMemoryError чист?

OutOfMemoryError яке аз хатогиҳои муҳими вақти корӣ мебошад, ки бо кори Java Virtual Machine (JVM) алоқаманд аст. Вақте даъват карда мешавад, ки JVM an objectро ҷудо карда наметавонад, зеро барои он хотираи кофӣ мавҷуд нест ва коллектори ахлот хотираи бештар ҷудо карда наметавонад. Баъзе намудҳои OutOfMemoryError :
  • OutOfMemoryError: Фазои теппаи Java - an objectро аз сабаби нокифоя будани хотира дар теппаи Java ҷудо кардан мумкин нест. Хатогӣ метавонад аз сабаби ихроҷи хотира ё аз сабаби он ки андозаи теппаи пешфарз барои барномаи ҷорӣ кофӣ калон нест.

  • OutOfMemoryError: Ҳадди сарбории GC аз ҳад зиёд гузашт - аз сабаби он, ки миқдори маълумот дар тӯда базӯр мувофиқат мекунад, коллектори ахлот ҳама вақт кор мекунад ва барномаи Java хеле суст кор мекунад ва дар натиҷа, маҳдудияти сарбории ҷамъкунандаи ахлот аз ҳад зиёд аст ва барнома бо ин хато кор мекунад.

  • OutOfMemoryError: Андозаи массиви дархостшуда аз маҳдудияти VM зиёд аст - нишон медиҳад, ки барнома кӯшиш кардааст, ки хотираро барои массиве, ки аз андозаи тӯдаи калонтар аст, ҷудо кунад, ки ин боз ҳам бо сабаби тақсимоти нокифояи хотираи пешфарз аст.

  • OutOfMemoryError: Метафазо — теппа аз фазои барои метамаълумот ҷудошуда тамом шудааст (методата дастурҳо барои синфҳо ва усулҳо мебошад).

  • OutOfMemoryError: андозаи byteҳоро бо сабаб талаб кунед. Фосилаи своп нест - ҳангоми кӯшиши ҷудо кардани хотира аз тӯда баъзе нокомӣ ба амал омад ва дар натиҷа дар теппа норасоии хотира ба амал омад.

10. Изи стек чист? Чӣ тавр ба даст овардан мумкин аст?

Stack Trace рӯйхати синфҳо ва усулҳоест, ки то ин лаҳза дар барнома даъват карда шудаанд. Шумо метавонед пайгирии стекро дар як нуқтаи мушаххаси барнома чунин занг занед:
StackTraceElement[] stackTraceElements =Thread.currentThread().getStackTrace();
Бо ин роҳ, мо массиви микроэлементҳои стекро бо тартиби LIFO ҷойгир мекунем - Last In First Out . Таҳлor саволу ҷавобҳои мусоҳиба.  Кисми 1 — 8Дар Java, чун қоида, вақте ки онҳо дар бораи пайгирии стек ҳарф мезананд, онҳо пайгирии стекро дар назар доранд, ки ҳангоми рух додани хато (ё истисно) дар консол нишон дода мешавад. Шумо метавонед пайгирии стеки истисноҳоро ба монанди ин гиред:
StackTraceElement[] stackTraceElements;
try{
                ...
} catch (Exception e) {
   stackTraceElements = e.getStackTrace();
}
Хуб, агар мо дар бораи баровардани пайгирии стеки истисноӣ дар консол сухан ронем:
try{
                ...
} catch (Exception e) {
  e.printStackTrace();
}
Инчунин, агар мо хатогӣ, истиснои тафтишнашуда ё истиснои санҷида дошта бошем, ки мо онро коркард нахоҳем кард, балки танҳо ба пеш мебарем, пас вақте ки барнома суқут мекунад, мо ба таври худкор пайгирии истисноҳоро дар консол мегирем. Намунаи хурди истиснои пайгирии стек дар консол: Шумо метавонед бештар дар бораи Stack Trace дар ин ҷоТаҳлor саволу ҷавобҳои мусоҳиба.  Кисми 1 — 9 хонед . Мо имрӯз ба ин масъала таваҷҷӯҳ хоҳем кард...Таҳлor саволу ҷавобҳои мусоҳиба.  Кисми 1 — 10
Дигар маводҳо дар силсила:
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION