Wawancara Pengembang Backend Java: Pertanyaan dan Tempat Mencari Jawaban. Bagian 2



Saya menerbitkan kelanjutan dari kumpulan pertanyaan dan jawaban wawancara untuk pengembang Backend-Java. Di bagian pertama, kami berjalan melalui Jawa dan Mata Air. Dan kali ini kita akan berbicara tentang Hibernate, database, pola dan praktek pengembangan, salah satu perpustakaan populer, dukungan dan pemeliharaan aplikasi kita, dan juga melihat lembar contekan alternatif dan ringkasannya.



TL; DR

Repositori GitHub dengan lembar contekan lengkap ada di sini , dan Habr masih sangat mudah.



Pertanyaan



Hibernasi



28. Apa cache dalam Hibernate dan mana yang berfungsi secara default?

3 tingkat caching:



  • Cache tingkat pertama. Diaktifkan secara default.
  • Cache tingkat kedua. Dinonaktifkan secara default.
  • (Query cache). .


:





Hibernate Vlad Mihalcea:





29. Apa perbedaan Lazy dengan Eager dalam Hibernate?
  • Eager Loading β€” , . (@OneToOne, @ManyToOne, @OneToMany, @ManyToMany) fetch = FetchType.EAGER. @OneToOne @ManyToOne.
  • Lazy Loading β€” , . , (@OneToOne, @ManyToOne, @OneToMany, @ManyToMany) fetch = FetchType.LAZY. @OneToMany, @ManyToMany. proxy-, . LAZY- Hibernate, LazyInitializationException.


"N+1" .



Vlad Mihalcea: , LazyInitializationException .



30. ' N+1 ' Hibernate? ? ? ?

N+1 Hibernate, .



N+1 , N , . N . slow query log, , .



plain sql (jdbc, JOOQ), ( ) . , . " !?". - , - . ? JOIN . .



Hibernate. "N+1", . .



, FetchType.EAGER. N+1. @ManyToOne . JPQL JOIN FETCH . , FetchType.LAZY.



FetchType.LAZY, , N+1. , . β€” . JOIN FETCH .



JOIN FETCH , bonjour. @OneToMany FetchMode.SUBSELECT β€” 2 , . .. .



β€” . @BatchSize .



:





N+1, db-util Vlad Mihalcea. .



JOOQ N+1 , 17- (01:16:36) +. JOOQ.



:





31. Hibernate?

: β€” , . .



Hibernate, @Embeddable. , Serializable equals hashcode.



, , @EmbeddedId.



Vlad Mihalcea Hibernate.



32. JPA (Hibernate)?

4 JPA (Hibernate):



  • MappedSuperclass β€” . . @MappedSuperClass, @Entity. , , @AttributeOverride . . .
  • Single table β€” . , -. @Entity- @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "YOUR_DISCRIMINATOR_COLUMN_NAME") ( DTYPE VARCHAR). @DiscriminatorValue("ThisChildName") , - . , @DiscriminatorFormula, CASE...WHEN β€” JPA, Hibernate. . . β€” NULL.
  • Joined table β€” , . , ( ) . @Entity- @Inheritance(strategy = InheritanceType.JOINED). JOIN, CASE...WHEN, _clazz, (0 (), 1, 2 ..) Hibernate .
  • Table per class β€” MappedSuperclass, . . JPA 2.2 ( 2.12) , Hibernate , . @Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS). (@Id) . @AttributeOverride β€” . UNION . , Hibernate _clazz , (1, 2 ..). NULL AS some_field. .


:





, JavaDoc :





JPA 2.2. pdf.





33. where having SQL?

Postgresql. Postgres Pro:



WHERE HAVING , WHERE , ( , ), HAVING . , WHERE ; . HAVING, , . ( , HAVING, , . WHERE.)

:





34. ACID -
  • A β€” (Atomicity). , .
  • C β€” (Consistency). .
  • I β€” (Isolation). .
  • D β€” (Durability). (, - ).


35. . ? ? ?

:



  • Read uncommitted ( ). (, ).
  • Read committed ( ). . «» ( , , ).
  • Repeatable read ( ). (, ).
  • Serializable (). , , β€” (, ).


:





36. ? ?

β€” , . . /. .



:





. .

, :



  • β€” , . B-.
  • β€” , . .

    :
  • β€” . ID , ; ID ; ; . .
  • β€” , . , .


:





37. ?

(lock) β€” .



β€” , . , . . , , .

:



  • shared (read) β€” , . , , .
  • exclusive (write) β€” , . . , .


β€” , ( VERSION 0). , , . β€” (, ) , .



, , . , .



Vlad Mihalcea:





:





:





, ,



38. SOLID

, . . , . , , , .



  • S β€” (The Single Responsibility Principle). .
  • O β€” / (The Open Closed Principle). , .
  • L β€” (The Liskov Substitution Principle). . , .
  • I β€” (The Interface Segregation Principle). , .
  • D β€” (The Dependency Inversion Principle). , .


, , " " , . ? 3 " ". , , . , :)



, -. , . SOLID - . - SOLID .



, , , . Baeldung.



39. . ? ? ( )? -? , ?

GoF. , , β€” refactoring.guru. , (, , , ), , . . - .



40. coupling cohesion? ( ) () / ()?

Coupling () β€” . .



Cohesion () β€” . .



.



. , :





coupling cohesion GRASP. : .



41. ?

(scale cube, The Art of Scalability) : sharding, mirrorring microservices.





:





:





42. ?

-, . . - "".



β€” Microservice Patterns and Best Practices. Medium .



microservices.io : . β€” . .



. β€” Enterprise Integration Patterns .



43. CAP-. MongoDB () CAP-?

CAP β€” , , :





MongoDB, (), β€” CP, … , . .



.



:





44. ?

- (SOA) β€” , , . SOA β€” , . SOA - .

:



  • - ( , -, , ..);
  • ;
  • " " .

    -

    (MSA) β€” SOA, , , (). MSA , , .

    :
  • (Unix way β€” );
  • ;
  • ( );
  • " " .


, MSA , SOA β€” . . β€” , . MSA SOA . , .



:





45. ?

:



  • () -> , , , , , ( )
  • ->
  • ,


:



  • () β€” (/, ..)
  • ,


:





:





46. ?

(composition) β€” " " (HAS-A Relationship), .



(aggregation) β€” " " (HAS-A Relationship), , .



:





47. ()? ?

(Test Double) β€” ,

:



  • Dummy β€” , , . : , null
  • Fake β€” , , production-. : in-memory (fake database)
  • Stub β€” (system under test β€” SUT)
  • Spy β€” Stub, , , ..
  • Mock β€” ,


Mock , β€” .



:





48.

:



β€œβ€ , .

:



  1. . :

    • β€” , , . (Generic).
    • (inclusive) β€” , . .
  2. ( ad-hoc) β€” () . :

    • (overloading) , ().
    • β€” , , .


Java .

:





49. REST? API RESTful? REST SOAP?

REST – , web-.

REST, :



  • URI
  • β€” JSON, XML
  • β€” HTTP. β€” , . .
  • HTTP . GET: ; POST: ; PUT: ; DELETE: . β€” PUT vs PATCH vs POST.
  • HTTP . HTTP- .
  • HATEOAS , REST,


, , HTTP- URI, API RESTful. , . , , REST β€” , . β€” .



REST- :



  • - (Client–server)
  • (Stateless) β€”
  • (Cacheable) β€”
  • (Uniform interface) β€” , , "" , HATEOAS
  • (Layered system) β€” , .
  • ( ) (Code on demand (optional)) β€”


SOAP β€” .

SOAP:



  • β€” XML (SOAP-XML β€” Envelope, Header, Body, Fault)
  • SOAP- WSDL( XML)
  • SOAP β€” (TCP, UDP, HTTP, SMTP, FTP ..)
  • HTTP, GET POST


, web-, .

-:





-:







50. Lombok?

, ! !



Lombok β€” , , , , . Lombok .

? ? , . β€” .



β€” : " - ?". . , -, .



, , Lombok β€” IDEA. , . ! 2020.3 Lombok- IDEA.



Lombok , . , Hibernate ( ) Lombok entity-. @EqualsAndHashCode, @ToString @Data, equals, hashCode toString , entities. entities .



, , "+" 7-8 β€” . asm0dey Lombok Lombok . : " , , @SneakyThrows ?" ( ), " @Data. equals ?", " @EqualsAndHashCode StackOverflowException ?".



Lombok β€” β€” , . β€” . Lombok β€” Lombok, . - , , .



P.S. Lombok onX β€” (@__ Java 7) . , Spring-.



:







51. ?

, (), .

OpenNET β€” , .

MSDN.

β€” .



52. ?

.

:



  • Apache JMeter β€” , opensource, HTTP, HTTPS, FTP, LDAP, SOAP, TCP, shell-. , java-based , JDBC, Message-oriented middleware (MOM) JMS Java Objects.
  • LoadRunner β€” . , Enterprise.
  • LoadNinja β€” , - . , .
  • WebLOAD β€” . , , , CI/CD.
  • LoadUI Pro β€” SOAP UI, . - , API.
  • K6 β€” opensource , . JavaScript. , , , Kafka, Datadog, InfluxDB, JSON StatsD. CI-.
  • . β€” , β€” hit-based- HTTP- Phantom jMeter. , , , .
  • Gatling β€” opensource Scala Netty Akka. Scala, Jenkins.


:





53. ? ? Docker?

(Virtual Machine β€” VM) β€” / , . β€” , . .. , , . . VM , . backup' VM .

VM .

β€” / , , .

KVM QEMU, XEN, VMWare Hyper-V.



Docker β€” , , , .. .

, . , . linux namespaces. cgroups.

, Dockerfile , () , . , , . .

Docker- CI/CD.

Docker- β€” Docker-Hub

Docker, .



Docker:





:





, :





54. ? ?

β€” - Java- β€” , URL- URL ..

( -, ( Java EE)):





" , Tomcat" .



-







Backend-Java- . , , , " " . , JUG.RU.



, , PR GitHub .



! ! ( ) . , β€” .



Selain itu, menghafal jawaban atas pertanyaan di atas tidak menjamin pekerjaan yang sukses, pekerjaan yang bagus, dan rambut yang halus.




All Articles