Entretien avec les développeurs Java Backend: Questions et où chercher des réponses. Partie 2



Je publie la suite de la collection de questions et réponses d'entretien pour le développeur Backend-Java. Dans la première partie, nous avons parcouru Java et Spring. Et dans celui-ci, nous parlerons d'Hibernate, des bases de données, des modèles et pratiques de développement, d'une bibliothèque populaire, du support et de la maintenance de nos applications, et nous examinerons également les feuilles de triche alternatives et les résumerons.



TL; DR

GitHub- , .



Des questions



Hiberner



28. Quels sont les caches dans Hibernate et lesquels fonctionnent par défaut?

3 :



  • (First-level cache). .
  • (Second-level cache). .
  • (Query cache). .


:





Hibernate Vlad Mihalcea:





29. Lazy Eager 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 .



! ! ( ) . , — .



De plus, mémoriser les réponses aux questions ci-dessus ne garantit pas un emploi réussi, un bon travail et une chevelure soyeuse.




All Articles