Backend Java Developer Interview: Fragen und wo man nach Antworten sucht. Teil 2



Ich veröffentliche die Fortsetzung der Sammlung von Interviewfragen und -antworten für Backend-Java-Entwickler. Im ersten Teil gingen wir durch Java und Spring. In diesem Artikel werden wir über den Ruhezustand, Datenbanken, Muster und Entwicklungspraktiken, eine beliebte Bibliothek, die Unterstützung und Wartung unserer Anwendungen sprechen sowie alternative Spickzettel betrachten und zusammenfassen.



TL; DR

GitHub- , .



Fragen



Überwintern



28. Was sind die Caches im Ruhezustand und welche funktionieren standardmäßig?

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 classMappedSuperclass, . . 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. . :

  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 ProSOAP 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 .



! ! ( ) . , — .



Darüber hinaus garantiert das Auswendiglernen der Antworten auf die oben genannten Fragen keine erfolgreiche Beschäftigung, gute Arbeit und Seidigkeit der Haare.




All Articles