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

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

Дар гурӯҳ нашр шудааст
Амалия ё назария? Чӣ муҳимтар аст? Бисёриҳо мегӯянд, ки амалия муҳимтар аст. Мисли, то ҳадди имкон машқ кунед ва шумо хушбахт хоҳед буд. Ман ҷуръат мекунам, ки бо ин розӣ нашавам. Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 8-1Ҳангоми мусоҳибаҳо, ҳеҷ кас намедонад, ки шумо дар амалия чӣ қадар хуб ҳастед. Аз шумо аз рӯи назария дақиқ пурсед. Ва танҳо пас аз он, вақте ки шумо аз тамоми давраҳои мусоҳибаҳо мегузаред ва ба лоиҳа дохил мешавед, шумо малакаҳои амалии худро истифода хоҳед бурд. Шумо метавонед эътироз кунед: баъзан онҳо ба шумо супориши тестӣ медиҳанд ва таҷриба ҳанӯз лозим аст. Ман баҳс намекунам, онҳо баъзан дода мешаванд, аммо асли кор ин аст, ки БАЪЗА, аммо мусоҳибаи назариявӣ ҲАМЕША сурат мегирад. Оё шумо фарқиятро ҳис мекунед? Бинобар ин шумо бояд дар зери пои худ тахкурсии мустахками назариявй дошта бошед, ки мо онро имруз хам мустахкам мекунем. Маҳз, мо таҳлor саволҳоеро , ки аксар вақт ҳангоми мусоҳиба дода мешаванд, идома медиҳем.

71. Агар мо усули toString()-ро барои Enum бекор накунем, чӣ мешавад?

Фарз мекунем, ки мо рақами зерин дорем :
public enum Role {
   STUDENT,
   TEACHER,
   DIRECTOR,
   SECURITY_GUARD;
}
Биёед донишҷӯро дар консол бо занги toString() ба ӯ нишон диҳем :
System.out.println(Role.STUDENT.toString());
Натиҷа дар консол:
СТУДЕНТ
Яъне, ба таври нобаёнӣ, toString() барои enum номи худи доимист.

72. Оё дар дохor Enum конструкторро муайян кардан мумкин аст?

Ҳа, албатта. Маҳз тавассути конструктор арзишҳои тағирёбандаҳои дохorи enum муқаррар карда мешаванд. Ба унвони мисол, биёед ду майдонро ба рақами қаблӣ илова кунем - ageFrom ва ageTo - барои нишон додани диапазони синну сол барои ҳар як нақш:
public enum Role {
   STUDENT(5,18),
   TEACHER(20,60),
   DIRECTOR(40,70),
   SECURITY_GUARD(18,50);

   int ageFrom;
   int ageTo;

   Role(int ageFrom, int ageTo) {
       this.ageFrom = ageFrom;
       this.ageTo = ageTo;
   }
}

73. Фарқи байни == ва баробар() чист?

Ин яке аз маъмултарин саволҳои мусоҳибаи таҳиягарони Java мебошад. Биёед бо он оғоз кунем, ки вақте ки мо арзишҳои оддиро муқоиса мекунем ( int , char , double ...), мо онро бо истифода аз == мекунем , зеро тағирёбандаҳо дорои арзишҳои мушаххас мебошанд ва мо метавонем онҳоро муқоиса кунем. Ва тағирёбандаҳои ибтидоӣ an objectҳои мукаммал нестанд - онҳо аз Object мерос намегиранд ва усули equals() надоранд . Вақте ки мо дар бораи муқоисаи тағирёбандаҳое, ки ба an objectҳо дахл доранд, гап мезанем, == танҳо арзиши истинодҳоро муқоиса мекунад - хоҳ онҳо ба як an object дахл доранд ё не. Ва ҳатто агар як an object ба an objectи дигар шабеҳ бошад ҳам, муқоиса тавассути == натиҷаи манфӣ медиҳад ( false ), зеро ин an objectи дигар аст. Тавре ки шумо фаҳмед, усули equals() барои муқоисаи тағирёбандаҳои истинод истифода мешавад . Ин яке аз усулҳои стандартии синфи Object мебошад , ки барои муқоисаи пурраи an objectҳо зарур аст. Аммо дарҳол равшан кардан лозим аст: барои он ки ин усул дуруст кор кунад, онро бо навиштани маҳз чӣ гуна an objectҳои ин синф муқоиса кардан лозим аст, муайян кардан лозим аст. Агар шумо ин усулро бекор накунед, он ба таври нобаёнӣ an objectҳоро бо == муқоиса мекунад . Дар IntelliJ IDEA , шумо метавонед онро ба таври худкор бекор кунед (бо истифода аз абзорҳои IDEA) -> alt + insert , дар равзанаи пайдошуда, баробар() ва hashCode() -> интихоб кунед, ки кадом майдонҳо бояд иштирок кунанд -> ва voila, татбиқи автоматии усулҳо анҷом дода мешаванд. Дар ин ҷо мисоли он аст, ки усули ба таври худкор тавлидшуда барои синфи оддии Cat бо ду майдон - int age ва String name чӣ гуна хоҳад буд :
@Override
public boolean equals(final Object o) {
   if (this == o) return true;
   if (o == null || this.getClass() != o.getClass()) return false;
   final Cat cat = (Cat) o;
   return this.age == cat.age &&
           Objects.equals(this.name, cat.name);
}
Агар мо дар бораи фарқияти байни == ва баробар барои enums гап занем , он қадар зиёд нест. Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 8-2Дар ниҳоят, enum константаҳоро нигоҳ медорад ва ҳатто ҳангоми муқоисаи арзишҳои шабеҳ бо истифода аз == , мо true -ро мегирем , зеро истинодҳо ҳамеша ба ҳамон an objectҳо хоҳанд буд. Хуб, ҳангоми истифодаи баробар, мо инчунин функсияро дуруст кор мекунем, хусусан агар шумо ба бадани усули баробар барои enum ворид шавед , шумо хоҳед дид, ки дар синфи Enum татбиқи усул чунин аст: Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 8-3Яъне, дар дохor - муқоисаи хуби кӯҳна бо истинод! Барои ҷамъбаст: барои enum , муқоиса ҳам тавассути == ва ҳам баробар дуруст аст.Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 8-4

74. Усули ordinal() дар Enum чї кор мекунад?

Ҳангоми занг задан ба усули int ordinal() дар элементи рақамӣ , мо рақами тартибиро аз сифри ин арзиш дар силсилаи умумии рӯйхатҳо мегирем. Биёед ин усулро дар як унсури рақами қаблии муҳокимашуда истифода барем - Нақш :
System.out.println(Role.DIRECTOR.ordinal());
Мувофиқи он, консол нишон медиҳад:
2

75. Оё Enum-ро бо TreeSet ё TreeMap дар Java истифода бурдан мумкин аст?

Истифодаи намудҳои enum дар TreeSet ва TreeMap қобor қабул аст. Ва мо метавонем нависем:
TreeSet<Role> treeSet = new TreeSet<>();
treeSet.add(Role.SECURITY_GUARD);
treeSet.add(Role.DIRECTOR);
treeSet.add(Role.TEACHER);
treeSet.add(Role.STUDENT);
treeSet.forEach(System.out::println);
Ва консол нишон медиҳад:
МУАЛЛИМ СТУДЕНТ ДИРЕКТОР АМНИЯТ_ПОСЕЛК
Мо баромадро на бо тартиби алифбо гирифтем. Гап дар он аст, ки агар мо унсурҳои рақамиро барои арзишҳои TreeSet ё ҳамчун калид барои TreeMap истифода барем , унсурҳо бо тартиби табиии худ мураттаб карда мешаванд (тартиботе, ки онҳо дар enum муайян шудаанд ). Фаҳмидани ин хусусиятҳо ба мо кӯмак мекунад, ки codeи беҳтар нависем.Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 8 — 5

76. Усулҳои ordinal() ва compareTo() дар Enum чӣ гуна алоқаманданд?

Тавре ки қаблан гуфта шуд, ordinal() рақами тартибии арзишро дар рӯйхати барӯйхатгирии умумӣ бармегардонад. Инчунин, ҳангоми таҳлor саволи қаблӣ шумо дидед, ки унсурҳои рӯйхатҳо, як маротиба, масалан, дар TreeSet (маҷмӯи мураттабшуда) тартиби дар enum эълоншударо мегиранд . Ва тавре ки мо медонем, TreeSet ва TreeMap унсурҳоро бо даъват кардани усули муқоисашавандаи худ аз интерфейси муқоисашаванда ҷудо мекунанд . Аз ин рӯ, мо метавонем тахмин кунем, ки синфи Enum интерфейси Муқоисашавандаро амалӣ мекунад ва онро дар усули compareTo() амалӣ мекунад , ки дар дохor он ordinal() барои муқаррар кардани тартиби навъбандӣ истифода мешавад. Пас аз ворид шудан ба синфи Enum , мо тасдиқи инро мебинем: Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 8-6Ва қисми худи метод: Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 8 — 7Усули ordinal() дар ин ҷо номида намешавад. Ба ҷои ин, тағирёбандаи тартиби истифода мешавад - рақами тартибии элемент дар рӯйхат. Худи усули ordinal() чизе Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 8 — 8ҷуз як гиреҳ барои тағирёбандаи ordinal .

77. Намунаи EnumM нависед

Дар саволҳои дар боло баррасӣшуда, ман аллакай мисолҳои рақамҳоро дода будам ва ман дар такрор кардани code аҳамият надорам (масалан, саволи рақами 72 дар бораи конструктор дар enum).

78. Оё Enum-ро дар ҳолати коммутатсионӣ истифода бурдан мумкин аст?

Ин имконпазир ва зарур аст! Ба таҷрибаи худ назар карда, ман қайд мекунам, ки яке аз ҷойҳои маъмултарини истифодаи enum сохторҳои мантиқӣ ба монанди switch мебошад . Дар ин ҳолат, шумо метавонед ҳама вариантҳои имконпазири парвандаро пешниҳод кунед ва пас аз навиштани мантиқ барои ҳамаи арзишҳои enum - ва истифодаи оператори пешфарз шояд ҳатто лозим набошад! Дар ниҳоят, агар шумо String ё арзиши рақамиро истифода баред, масалан, навъи int , шумо метавонед арзиши ғайричашмдошт гиред, ки дар навбати худ бо истифода аз enum ғайриимкон аст . Гузариш барои мисоли дар боло баррасӣшуда чӣ гуна хоҳад буд :
public void doSomething(Role role) {
   switch (role) {
       case STUDENT:
           // некая логика для STUDENT
           break;
       case TEACHER:
           // некая логика для TEACHER
           break;
       case DIRECTOR:
           // некая логика для DIRECTOR
           break;
       case SECURITY_GUARD:
           // некая логика для SECURITY_GUARD
           break;
   }
}

79. Чӣ тавр ҳамаи арзишҳои дастрасро дар мисоли Enum гирифтан мумкин аст?

Агар ба шумо лозим аст, ки ҳамаи мисолҳои рақамиро гиред, усули values() мавҷуд аст , ки массиви ҳамаи арзишҳои дастраси рақами мушаххасро бо тартиби табиӣ бармегардонад (бо тартиби дар enum муайяншуда ). Мисол:
Role[] roles = Role.values();
for (Role role : roles) {
   System.out.println(role);
}
Консол баромади зеринро нишон медиҳад:
МУАЛЛИМ СТУДЕНТ ДИРЕКТОР АМНИЯТ_ПОСЕЛК

API Stream

80. Stream дар Java чист?

Java Stream як роҳи нисбатан нави ҳамкорӣ бо ҷараёни додаҳо мебошад, ки дар навбати худ ба шумо имкон медиҳад, ки маълумоти калонро ба осонӣ ва паймон коркард кунед, инчунин коркарди маълумотро дар байни шумораи муайяни риштаҳо параллел созед, ки метавонад дар истифодаи онҳо самаранокии худро баланд бардорад. функсия. Ин мавзӯъро ба таври мухтасар амиқтар баррасӣ кардан мумкин нест, аз ин рӯ ман дар ин ҷо истиноди мақолаеро мегузорам, ки метавонад ба шумо барои ворид шудан ба ин мавзӯъ кӯмак кунад.Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 8 — 9

81. Хусусиятњои асосии муомилот кадомњоянд?

Мавзӯъ Stream API номида мешавад, аммо савол дар бораи транзаксия аст. Хм... Аввалан, биёед бифаҳмем, ки муомилот чист. Амалиёт як гурӯҳи амалиёти пайдарпайи пойгоҳи додаҳо мебошад, ки воҳиди мантиқии кор бо додаҳоро ифода мекунад. Муомилот метавонад пурра ва бомуваффақият анҷом дода шавад, ки тамомияти маълумотро нигоҳ медорад ва новобаста аз дигар амалиётҳои мувозӣ иҷро карда мешавад ё онро тамоман анҷом додан мумкин нест, дар ин ҳолат он таъсир намерасонад. Ҳамин тариқ, транзаксияҳо дорои чаҳор хосияти асосӣ мебошанд, ки онҳоро ба таври кӯтоҳ ACID меноманд . Биёед бубинем, ки ҳар як ҳарфи ин ихтисорот чӣ гуна маъно дорад: A - Atomicity - atomicity - ин амвол кафолат медиҳад, ки ягон транзаксия қисман дар система сабт карда намешавад. Ё ҳамаи зерамалҳои он иҷро мешаванд, ё ҳеҷ кадоме иҷро намешаванд ( ҳама ё ҳеҷ чиз ). C - Пайвастагӣ - мутобиқат моликиятест, ки кафолат медиҳад, ки ҳар як амалиёти муваффақ танҳо натиҷаҳои дурустро сабт мекунад. Яъне, ин кафолати он аст, ки дар сурати анҷоми муомилоти бомуваффақият, ҳама қоидаҳо ва маҳдудиятҳое, ки система ба маълумоти мушаххас мегузорад, риоя мешаванд, вагарна транзаксия анҷом намеёбад ва маълумот дар система ба ҳолати қаблии худ бармегардад. давлат. I - Изолятсия - изолятсия моликиятест, ки мегӯяд, ки ҳангоми иҷрои муомилот амалиёти мувозӣ набояд ба натиҷаи он таъсир расонад. Ин амвол захираҳои серталаб аст, аз ин рӯ он одатан қисман тавассути имкон додани сатҳҳои муайяни изолятсия, ки мушкилоти муайяни изолятсияро ҳал мекунанд, амалӣ карда мешавад. Мо дар ин бора дар саволи навбатӣ муфассалтар сӯҳбат хоҳем кард. Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 8 — 10D - Давомнокӣ - ин амвол кафолат медиҳад, ки агар корбар аз система тасдиқи анҷоми транзаксияро гирифта бошад, ӯ боварӣ дошта метавонад, ки тағиротҳои воридкардаи ӯ бо сабаби баъзе нокомиҳо бекор карда намешаванд. Яъне, шумо боварӣ дошта метавонед, ки ягон намуди нокомии системаи оператсионӣ ба маълумоти шумо ҳеҷ коре намекунад, агар шумо аллакай тасдиқи анҷоми бомуваффақияти транзаксияро гирифта бошед.

82. Сатҳи ҷудошавии транзаксияҳо кадомҳоянд?

Тавре ки ман қаблан гуфтам, таъмини изолятсияи ACID як раванди серталаб аст. Аз ин рӯ, ин амвол қисман конеъ карда мешавад. Дараҷаҳои изолятсия гуногунанд ва ҳар қадаре, ки сатҳ баланд бошад, ба ҳосилнокӣ ҳамон қадар таъсир мерасонад. Пеш аз гузаштан ба сатҳи изолятсияи транзаксия, мо бояд ба мушкилоти гуногуни ҷудокунии нокифояи транзаксия назар кунем :
  • хондани фантом - вақте ки як намуна (як дархост) дар доираи як транзаксия такроран даъват карда мешавад, маълумоти гирифташуда фарқ мекунад, ки дар натиҷаи ворид кардани маълумот аз ҷониби транзаксияи дигар ба амал меояд;

  • хониши такрорнашаванда – хангоми дар доираи як амалиёт такроран як намуна (як дархост) даъват карда мешавад, маълумоти гирифташуда фарк мекунад, ки дар натичаи тагйирот (навсозӣ) ва нест кардани маълумот бо амалиёти дигар ба амал меояд;

  • хондани ифлос - раванди хондани маълумот аз ҷониби транзаксия иловашуда ё тағир додашуда, ки баъдан тасдиқ нашудаанд (бозгашт), яъне. хондани маълумоти беэътибор;

  • навсозии гумшуда - вақте ки транзаксияҳои гуногун як маълумотро дар як вақт иваз мекунанд, ҳама тағирот ба истиснои охирин гум мешаванд (мушкилоти "ҳолати нажод" дар муҳити бисёр риштаро ба хотир меорад).

Сатҳи изолятсияи транзаксия бо он тавсиф карда мешавад, ки онҳо аз кадом мушкилоти ҷудокунӣ муҳофизат мекунанд. Биёед дар шакли ҷадвал сатҳҳои изолятсияро баррасӣ кунем ва онҳо аз кадом мушкилот муҳофизат мекунанд:
Сатҳи изолятсия Хониши фантом Хониши такрорнашаванда Хониши ифлос Навсозии гумшуда
СЕРИАЛИСТОН + + + +
ХОНДАНИ ТАКРОР - + + +
ХОНЕД Ухдадор шуд - - + +
БЕХТАРИН ХОНЕД - - - +
ҲЕҶ - - - -
Ва паҳлӯи дигари тангаро фаромӯш накунед: дараҷаи изолятсия баландтар бошад, транзаксияҳо ҳамон қадар тӯлонитар хоҳанд шуд (агар якчанд транзаксия дар як вақт иҷро карда шаванд). Агар шумо хоҳед, ки ин мавзӯъро амиқтар кашед, дар ин ҷо як мақолаи олӣ барои оғоз кардани шумост.

83. Фарқи байни Изҳорот ва Изҳороти омодашуда чист?

Ва дар ин ҷо гузариши хеле ҳамвор ба хусусиятҳои технологияи JDBC вуҷуд надорад . Пас, аввал биёед бифаҳмем, ки Изҳорот дар асл чист . Ин an objectест, ки барои тавлиди дархостҳои SQL истифода мешавад. JDBC се намудро истифода мебарад - Изҳорот , PreparedStatement ва CallableStatement . Мо имрӯз ба CallableStatement нигоҳ намекунем : биёед дар бораи фарқияти байни Изҳорот ва PreparedStatement сӯҳбат кунем .
  1. Изҳорот барои иҷро кардани дархостҳои оддии SQL бидуни параметрҳои воридотӣ ва динамикӣ истифода мешавад. PrepareStatement бо қобorяти ба таври динамикӣ ворид кардани параметрҳои вуруд истифода мешавад.

  2. Барои гузоштани параметрҳо дар PreparedStatement, параметрҳои воридотӣ дар дархост ҳамчун аломати савол навишта мешаванд, то ки баъдан қимат ба ҷои он бо истифода аз танзимкунандаҳои гуногун, ба мисли setDouble() , setFloat() , setInt() , setTime() ворид карда шавад ... . Дар натиҷа, шумо намуди нодурусти маълумотро ба дархости худ ворид намекунед.

  3. PreparedStatement "пешакӣ тартиб дода шудааст" ва кэшро истифода мебарад, бинобар ин иҷрои он метавонад нисбат ба дархост аз an objectҳои Изҳорот каме тезтар бошад . Дар натиҷа, дархостҳои SQL, ки зуд-зуд иҷро мешаванд, ҳамчун an objectҳои PreparedStatement барои беҳтар кардани иҷроиш навишта мешаванд .

  4. Изҳорот ба тазриқи SQL осебпазир аст, дар ҳоле ки PreparedStatement онҳоро пешгирӣ мекунад. Дар бораи аз байн бурдани тазриқи SQL ва дигар таҷрибаҳои беҳтарин дар амнияти Java дар ин мақола бештар хонед .

Агар шумо ба омӯзиши технологияи пайваст кардани барномаи Java ба пойгоҳи додаҳо - JDBC шурӯъ кунед, ман ба шумо маслиҳат медиҳам, ки бо ин мақола оғоз кунед . Хуб, дар ин лаҳза мо имрӯз қатъ мекунем.Разбор вопросов и ответов с собеседований на Java-разработчика. Часть 8 - 11
Дигар маводҳо дар силсила:
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION