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

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

Дар гурӯҳ нашр шудааст
Салом! Чи тавре, ки бе тайёрии махсус парвоз кардани самолётро ёд гирифтан мумкин нест, бе он ки соатхои зиёдро сарф на-муда, асосхои зарурии назария-виро сарф карда, тахиягари Java шудан мумкин нест. Имрӯз мо маҳз дар ин бора кор хоҳем кард: мо таҳлor 250+ саволҳои мусоҳибаро барои таҳиягарони Java ва мувофиқан ба онҳо ҷавоб медиҳем. Дар ин ҷо қисмҳои якум ва дуюми таҳлил мавҷуданд . Бале, албатта, шумо метавонед бе ҳамаи ин саволҳо як таҳиягари хуби Java шавед. Бо вуҷуди ин, агар шумо дарки хуби забони Java дошта бошед, он ба шумо бартарӣ медиҳад ва шуморо дар назари корфармои ояндаатон номзади дилхоҳтар месозад.Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Қисми 3 - 1

20. Кадом унсурҳои забон барои инкапсуляция масъуланд?

Тавре ки мо дар хотир дорем, инкапсуляция тафсилоти татбиқи синфро пинҳон мекунад. Яъне вақте ки синфи мо берунӣ истифода мешавад, мундариҷаи дохилӣ ва мантиқ маълум нест. Ва кадом унсурҳои забон барои ин масъуланд? Табиист, ки ба тағирдиҳандагон дастрасӣ пайдо кунед ! Мо он чизеро, ки мо бояд пинҳон кунем, бо тағирдиҳандаи хусусӣ қайд мекунем . Масалан, майдонҳои хусусии синф ё баъзе усулҳои дохилӣ, ки ба иҷрои вазифаҳои муайяни дохилӣ мусоидат мекунанд. Ва ба он чизе, ки мо мехоҳем дастрасии берунаро ба он таъмин кунем, мо тағирдиҳандаи дастрасии умумиро илова мекунем . Масалан, усуле, ки барои таъмини баъзе функсияҳо масъул аст (дар доираи он усулҳои зиёди хусусиро истифода бурдан мумкин аст) ё ҳамон гирандагон ва танзимкунандагон барои дастрасӣ ба майдонҳои хусусии синф. Оҳ, ва мо инчунин тағирдиҳандаҳои пешфарз ва муҳофизатшуда дорем , ки онҳоро метавон барои конфигуратсияи фасеҳтар ва мушаххаси дастрасӣ ба қисмҳои интихобшудаи синф истифода бурд.

21. Кадом унсурҳои забон барои мерос масъуланд?

Мерос як механизмест, ки ба шумо имкон медиҳад дар асоси синфи дигар синфҳо эҷод кунед. Дар Java калимаи калидӣ барои ин мақсад истифода мешавад . Масалан, мо як синфи муайян дорем Cat ва мо мехоҳем вориси он - Lion -ро эҷод кунем . Дар code он чизе монанди ин хоҳад буд:
public class Lion extends Cat
Ва ин маънои онро дорад, ки синфи Lion ҳама усулҳо ва тағирёбандаҳои синфи Cat -ро мерос мегирад , ба истиснои усулҳои статикӣ. Инчунин, унсурҳои забоне, ки барои мерос масъуланд super . Ин истинод ба ин монанд аст , аммо дар ҳоле ки ин ба an objectе дахл дорад, ки дар он номида шудааст, super ба an objectи волидайни ҷорӣ ишора мекунад. Одатан super истифода мешавад:
  1. Барои даъват кардани конструктори суперсинф: масалан, синфи Cat дорои тағирёбандаи дохилӣ бо номи name мебошад , ки бояд дар созанда оғоз карда шавад. Дар конструктори синфи Lion он чунин хоҳад буд:

    public Lion(final String name) {
       super(name);
    }
  2. Барои дастрасӣ ба майдонҳо ва усулҳои волидайн: масалан, дар синфи Cat мо майдони ибтидоии синну сол дорем :

    public class Cat {
       int age = 10;
Ҳамзамон, мо ҳамон майдони ибтидоӣ дар Lion дорем :
public class Lion extends Cat {
   int age = 15;
Ва агар мо хоҳем, ки ба тағирёбандаи синну соли an objectи волидайн аз an objectи Lion дастрасӣ пайдо кунем , мо бояд инро тавассути super иҷро кунем :
super.name

22. Кадом унсурҳои забон барои полиморфизм масъуланд?

Полиморфизм ин қобorяти an objectи як имзо барои гирифтани шаклҳои гуногун (чанд амалисозӣ) мебошад. Мо бо боварӣ гуфта метавонем , ки дар Java калимаҳои калидӣ Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Қисми 3 - 2барои полиморфизм масъуланд . амалӣ мекунад - вақте ки мо интерфейси худро эҷод мекунем, мо яке аз шаклҳои имконпазири онро дар ягон синф амалӣ мекунем, аммо ин ягона шакл нест, ҳамин тавр не? Биёед дар хотир дорем, ки асбобҳои амалӣ чӣ гунаанд :
public class Cat implements Animal
Ва дар синфи Cat мо бояд ҳама усулҳои абстрактии дар интерфейси Animal пешниҳодшударо татбиқ кунем . Ин ба мерос низ дахл дорад: дар синфи насл мо метавонем татбиқи аллакай мавҷудбудаи усулро бекор кунем. Масалан: якчанд насл -> якчанд такрорҳои гуногуни як усул. Хуб, ё суперкласс абстрактӣ буд ва он як усули муайяне дорад, ки бояд барои ҳар як насли он ба таври махсус амалӣ карда шавад. Яъне метавон гуфт, ки усул шаклҳои гуногун хоҳад гирифт. Инчунин, шарҳи @Override метавонад дар ин бобат ба мо кӯмак кунад , ки дар болои усулҳои амалӣ ҷойгир карда шудааст ва нишон медиҳад, ки мо мехоҳем амалӣ кунем ё бекор кунем (агар татбиқ аллакай дар суперкласс мавҷуд бошад) ин ё он усули суперкласс ё интерфейс. Он ихтиёрӣ аст ва барои осон кардани ошкор кардани хатогиҳо истифода мешавад. Бо ин тавзеҳот, шумо ба компилятор нишон медиҳед, ки мехоҳед усули суперкласс/интерфейсро бекор кунед/амалӣ кунед ва он кафолат медиҳад, ки шумо дар имзои метод хато накунед.

23. СОЛИД чист? Мисолҳо оваред

SOLID ихтисораи Панҷ Принсипи асосии тарҳрезии OOP мебошад, ки аз ҷониби Роберт Мартин таҳия шудааст. S - Принсипи масъулиятшиносии ягона - принсипи масъулияти ягона, ки дар он гуфта мешавад, ки синф бояд танҳо як ҳадаф ва ҳадафи ягона дошта бошад. Яъне шумо набояд синфҳое эҷод кунед, ки ҳама чизро иҷро мекунанд. Дар ин ҳолат, шумо метавонед намунаи "Объекти илоҳӣ" -ро дубора тавлид кунед. Агар шумо an objectи Cat дошта бошед , он бояд усулҳое дошта бошад, ки танҳо бо функсияҳои дохorи он мутақобила мекунанд, на мантиқи тиҷорӣ, ки ба ин мисол мувофиқ нестанд. Масалан, як навъ захира кардани an objectҳои ин навъи дар ҷое. Ин функсияи беруна (нисбат ба Cat ) бояд ба синфҳои дигар интиқол дода шавад, баъзе хидматҳое, ки вазифаи онҳо таъмини мантиқи тиҷорӣ барои an objectҳои ин намуд аст. О - Принсипи кушода-пўшида - принсипи ошкоро/пўшида. Ин маънои онро дорад, ки an objectҳои нармафзор (синфҳо, интерфейсҳо) бояд барои васеъшавӣ кушода бошанд, аммо барои тағирот баста бошанд. Масалан, ба мо функсияе лозим буд, ки ба вазифаи синфи аллакай мавҷудбуда Cat монанд буд, аммо каме фарқ мекунад. Ба ҷои тағир додани функсияҳои синфи Cat , вайрон кардани ҷойҳое, ки он аллакай истифода шудааст, мо мерос ё таркибро истифода мебарем . Дар натиҷа, мо бо функсияи тағирёфтаи синфи Cat ба ҳадафи худ расидем , аммо дар айни замон мо онро тағир надодем ё чизеро вайрон накардем. L - Принсипи ивазкунии Лисков - Принсипи ивазкунии Барбара Лисков. Принсип изҳор мекунад, ки функсияе, ки навъи асосиро истифода мебарад, бояд бидуни донистани он зергурӯҳҳои навъи асосиро истифода барад. Масалан, синфи Cat- и мо бояд бо ягон насли он, бигӯед Lion , бидуни тағир додани рафтор, бояд иваз карда шавад. Мантиқи умумӣ (рафтор) бетағйир мемонад, аммо ҷузъиёти амалисозии ин ё он функсияҳо тағйир меёбад. I - Принсипи сегрегатсияи интерфейс - принсипи ҷудокунии интерфейс. Ин принсип мегӯяд, ки аз як интерфейси универсалӣ беҳтар аст, ки бисёр интерфейсҳои махсусгардонидашуда (ба таври маҳдуд нигаронидашуда) дошта бошанд. Масалан, корбар ягон интерфейсеро амалӣ мекунад, ки ба ӯ танҳо ин усул лозим аст, аммо ин интерфейс нӯҳ усули дигар дорад, ки ба мантиқи усули дилхоҳ ҳеҷ иртиботе надоранд. Дар ин ҳолат, корбар бояд даҳ усули интерфейсро татбиқ кунад, ки нӯҳтои онҳо барои ӯ нолозиманд! Ба ҷои ин, беҳтар аст, ки даҳ интерфейси гуногун созед, ки дар ҳолати зарурӣ амалӣ карда шаванд. Хуб, ё на даҳ, балки якчанд, ки усулҳое доранд, ки бо ҳадафи умумии интерфейс зич алоқаманданд. D - Принсипи инversionи вобастагӣ— принципи инversionи вобастагй. Принсип изҳор мекунад, ки модулҳо дар сатҳҳои боло набояд аз модулҳои сатҳҳои поёнӣ вобаста бошанд. Ин принсип инчунин ҳамчун "абстраксия набояд аз тафсилот вобаста бошад, тафсилот бояд аз абстраксия вобаста бошад". Яъне, мо бояд мантиқи худро бо истинод ба интерфейсҳо созем ва танҳо пас аз он an objectҳои мушаххасро ба ин функсия гузаронем, ки синфҳои онҳо интерфейси заруриро амалӣ мекунанд. Масалан, агар мо интерфейси Cat дошта бошем ва баъзе аз татбиқи он, масалан, Lion ва HomeCat дошта бошем, мо мантиқи мутақобилаи худро махсус бо навъи интерфейси Cat месозем ва танҳо он гоҳ татбиқи мушаххаси Lion ё HomeCat -ро иваз мекунем , аммо на баръакс.

24. Класс, an object, интерфейс чист?

Тавре ки мо дар хотир дорем, Java забони OOP аст. Яъне, барномаҳои Java дар асоси таъсири мутақобилаи байни an objectҳо сохта шудаанд. Маълум мешавад, ки программа ба мурча монанд аст, ки дар он хар як мурча an object аст. Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Қисми 3 - 3Объектҳо баъзе маълумотҳои гурӯҳбандӣ мебошанд, ки дорои усулҳои (функсияҳои) гуногуни ҳамкорӣ бо ин маълумоти дохилӣ мебошанд. Ва синфҳо дастурҳо, қолибҳо барои сохтани an objectҳо мебошанд. Яъне, метавонанд an objectҳои зиёде бошанд, ки мувофиқи як дастур сохта шудаанд, ки бо арзишҳои додаҳои гуногун ё якхела пур карда шудаанд. Барои мисол аз ҳаёт метавон гуфт, ки синф наќшаи иморат аст ва an object бошад, биное аст, ки аз рўи ин расм сохта шудааст. Интерфейсҳо аналогҳои синфҳо мебошанд, ки бо фарқияти он an objectҳоро бо истифода аз онҳо сохтан мумкин нест. Ҳадафи онҳо илова кардани унсури абстраксия ба Java мебошад. Аниқтараш, дар муносибатҳои байни синфҳо ва an objectҳо чандирӣ илова кунед. Мо бо чандирии мо полиморфизм ва абстраксияро дар назар дорем, ки дар навбати худ барои сохтани меъмории дохorи барнома имкониятҳои зиёдеро мекушоянд.

25. Синфи POJO чист? Чунин синфро мисол оред

Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 3-4POJO - Объекти кӯҳнаи Java - як an objectи хуби кӯҳнаи Java: an objectи оддии синф, ки аз ягон синфи мушаххас мерос гирифта нашудааст ва ҳеҷ гуна интерфейси хидматрасониро берун аз интерфейсҳои барои модели тиҷорӣ заруриро амалӣ намекунад. Ба ибораи дигар , синфи POJO танҳо як синфест, ки талаботи махсус надорад. Ягона талабот ин набудани зангӯлаҳо ва ҳуштакҳои гуногун ба чаҳорчӯбаи мушаххас аст. Одатан, чунин синфҳо аз синфҳои дигар мерос намегиранд (ба истиснои синфҳои POJO аз як баста), интерфейсҳоро амалӣ намекунанд - баъзан барои интерфейсҳои маркер аз китобхонаи стандартӣ истисно карда мешавад, ба монанди Serializable ё Cloneable - эзоҳҳоро истифода набаред. ва ба китобхонаҳои тарафи сеюм вобаста нест. Аммо ман қайд мекунам, ки POJOҳо метавонанд бо мантиқи тиҷорӣ ва конструкторҳои ҳама гуна усулҳо дошта бошанд. Агар шумо ба эзоҳҳое иҷозат диҳед, ки ба семантикаи синф тағирот ворид накунанд (бидуни он ҳадафи an object ва мантиқи кори он тағир намеёбад), POJOҳо инчунин метавонанд an objectҳои JPA Entity ва an objectҳои DTO- ро аз XML ё JSON ғайрисериатсионӣ дар бар гиранд , ки коидахои онхо дар эзоххо муайян карда шудаанд. Инчунин тавсия дода мешавад, ки баробар ва hashCode барои синфҳои POJO бекор карда шавад , зеро ин метавонад ба онҳо кӯмак кунад, ки нақши худро беҳтар иҷро кунад. Намунаи синфи POJO :
public class User {
   private Long id;
   private String firstName;
   private String lastName;
   private Long age;

   public User(final Long id, final String firstName, final String lastName, final long age) {
       this.id = id;
       this.firstName = firstName;
       this.lastName = lastName;
       this.age = age;
   }

   public Long getId() {
       return this.id;
   }

   public String getFirstName() {
       return this.firstName;
   }

   public String getLastName() {
       return this.lastName;
   }

   public Long getAge() {
       return this.age;
   }

   @Override
   public boolean equals(final Object o) {
       if (this == o) return true;
       if (o == null || this.getClass() != o.getClass()) return false;
       final User user = (User) o;
       return Objects.equals(this.id, user.id) &&
               Objects.equals(this.firstName, user.firstName) &&
               Objects.equals(this.lastName, user.lastName) &&
               Objects.equals(this.age, user.age);
   }

   @Override
   public int hashCode() {
       return Objects.hash(this.id, this.firstName, this.lastName, this.age);
   }
}

26. Класс кадом элементҳоро дар бар гирифта метавонад?

Синф метавонад унсурҳои зеринро дар бар гирад:
  • майдонҳои синф;
  • майдонҳои синфи статикӣ;
  • блоки ибтидоӣ;
  • блоки ибтидоии статикӣ;
  • конструкторҳо (холӣ ҳамеша бо нобаёнӣ муайян карда мешавад);
  • усулҳо;
  • усулҳои статикӣ;
  • эзоҳҳои гуногун (ки метавонад дар болои худи синф ё ҷузъҳои он овезон бошад);
  • умумӣ ;
  • мерос аз синфҳои дигар ( васеъ ) ё амалӣ аз интерфейсҳо ( амалӣ ).

27. Ирсиятро дар Java шарҳ диҳед. Истифодаи калимаи калидии супер чӣ манфиатҳо дорад?

Дар боло ман аллакай дар бораи мерос ва калимаи калидии супер дар Java сӯҳбат кардам. Биёед ман чанд нуктаи муҳими дигарро зикр кунам:
  1. Танҳо як синфро мерос гирифтан мумкин аст: дар Java мероси сершумор вуҷуд надорад (аммо бо пайдоиши усулҳои пешфарз дар Java 8, ин изҳорот хеле баҳснок хоҳад шуд).
  2. Усулҳо ва майдонҳои хусусӣ низ ба мерос гирифта мешаванд, онҳо танҳо ба онҳо аз ворисон дастрасӣ надоранд (аммо агар мо, масалан, майдони хусусӣ дошта бошем ва барои он гирандагон ва танзимгарони давлатӣ ё ҳифзшуда мавҷуд бошанд , майдонро бо он кор кардан мумкин аст. тавассути онҳо).
  3. синфхои хатмй мерос намемонанд.
  4. усулҳои ниҳоӣ бекор карда намешаванд (вале онҳо метавонанд мерос гирифта шаванд ва аз ҳад зиёд бор карда шаванд).
  5. усулҳо ва тағирёбандаҳои статикӣ мерос нестанд (зеро онҳо на ба an objectҳо, балки ба синфҳо вобастаанд).
  6. Ҳангоми мерос аз синфҳои абстрактӣ, татбиқи усулҳои абстрактии онҳо талаб карда мешавад ё синфи ҷорӣ низ бояд абстракт эълон карда шавад.
  7. Агар дар волидайн конструкторҳои ғайримуқаррарӣ мавҷуд бошанд, онҳо бояд дар синфи кӯдак бекор карда шаванд (аммо @Override бар онҳо навишта нашудааст).
  8. Усулҳои аз нав таъиншуда дар насл метавонанд бо тағирдиҳандаи дастрасӣ васеъ карда шаванд: private -> default -> protected -> public .
  9. Усулҳои бекоршуда дар насл метавонанд истисноҳои навишташударо танг кунанд, масалан: Истисно -> IOException -> FileNotFoundException.
Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Кисми 3 — 5

28. Имзои метод чист? Мисоли имзоҳои дуруст ва нодурустро нишон диҳед

Имзои усул номи усул ва инчунин намудҳои параметрҳои воридотӣ мебошад (ва тартиби параметрҳо муҳим аст). Имзои усул арзиши баргардонидан ё истисноҳоеро, ки онро партофтааст, дар бар намегирад. Намунаи имзои дуруст:
doSomething(int, double, double)
Намунаи имзои нодуруст:
void doSomething(int firstArg, int secondArg) throws Exception
Имзои метод, ки бо навъи бозгашт ва рӯйхати истисноҳои партофташуда якҷоя карда мешавад, шартномаи метод номида мешавад . Ин ҳама барои имрӯз аст. То дидор!Таҳлor саволҳо ва ҷавобҳо аз мусоҳибаҳо барои таҳиягари Java.  Қисми 3 - 6
Дигар маводҳо дар силсила:
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION