Articles

15 Tekniske centrale Java-Spørgsmål Svar til erfarne udviklere

når oplevelsen af en Java-programmør vokser i årene, f.eks. når det går fra begynderår ( 2 til 4) til mere erfaring eller slags seniorniveau ( 5 til 7 år), ændres centrale Java-Spørgsmål også lidt. Selvfølgelig forbliver grundlæggende som datastruktur, algoritmer og objektorienteret programmering det samme, men typer af spørgsmål bliver mere avancerede, og deres svar skal helt sikkert være mere detaljerede og præcise. Jeg modtager ofte forespørgsler om centrale Java-Spørgsmål, der stilles til en seniorudvikler med 5 til 6 års erfaring, eller, Sommetider, Jeg går til en samtale med senior Java-udvikler, hvilken slags spørgsmål jeg skulle forvente. Dette undrer mig nogle gange, at når du bliver senior, begynder du automatisk at deltage i samtalen, og du skal have en ide om, hvad du kan forvente af samtaler, men samtidig kan jeg forstå, at det at have en ide om spørgsmål, før du går på samtale, hjælper forberedelse. Selvfølgelig vil du ikke få et spørgsmål som det, du har konfronteret med Java-samtaler på 2 til 3 år, men det afhænger også af forskellige runder af samtaler.
jeg har ikke set mange ændringer i de spørgsmål, der stilles på den telefoniske runde, som næsten forbliver den samme. Du finder nogle faktabaserede, nogle kodningsspørgsmål og et par vanskelige spørgsmål. På den anden side er samtaler blevet mere detaljerede og mere vanskelige, især med grimme opfølgninger.
i denne artikel vil jeg dele nogle 15 tekniske centrale Java-Spørgsmål, som jeg har set stillet senior og erfarne udviklere af 4 til 6 års erfaring i forskellige samtaler, hovedsagelig på telefoniske runder. Jeg sender ikke svar lige nu, men du kan finde svar på de fleste af spørgsmålene her eller den Javarebesøgte blog.
Hvis du har travlt og aktivt leder efter et Java-Udviklerjob, kan du også tage hjælp fra nogle gode bøger skrevet for at forberede dig til Java J2EE-samtaler. Bøger som, Java-Programmeringsintervju udsat dækker alle vigtige emner til både centrale Java-og Java-EE-samtaler, som Inkluderer grundlæggende Java-Spørgsmål, datastruktur og algoritmer, JVM-interne og GC-tuning, spørgsmål om dvale og Forårssamtale, JUnit ant unit Test Spørgsmål, og nogle Java 8 ting.
det dækker også kendskab til andre JVM sprog som Scala, Groovy og andre platforme som Android. En perfekt ledsager til at klare sig godt i Java-samtaler.
Hvis du vil forberede dig mere på kodningssiden, kan du også tjekke Cracking Kodningssamtalen, som indeholder næsten 150 programmeringsspørgsmål og løsninger fra tekniske samtaler fra big tech-virksomheder som , Facebook, Google, kvidre og Microsoft.

15 Core Java-Spørgsmål i 5 til 6 år oplevet

alle disse spørgsmål er samlet fra ganske seniorudviklere, som har mindst 5 års erfaring. De har set disse spørgsmål på forskellige runder af deres centrale Java-samtaler, herunder telefoniske og ansigt til ansigt-runder på forskellige virksomheder, mest på investeringsbanker som Barclays, Morgan, RBS og andre.

Hvad er travlt Spinning? Hvorfor skal du bruge det i Java?

et af de interessante multithreading-spørgsmål til senior Java-programmører, optaget spinning, er en ventestrategi, hvor en tråd bare venter i en løkke uden at frigive CPU ‘ en til at sove. Dette er en meget avanceret og specialiseret ventestrategi, der bruges i højfrekvenshandelsapplikationen, når ventetiden mellem to meddelelser er meget minimal.
ved ikke at frigive CPU ‘ en eller suspendere tråden, beholder din tråd alle de cachelagrede data og instruktioner, som kan gå tabt, hvis tråden blev suspenderet og genoptaget tilbage i en anden kerne af CPU.
dette spørgsmål er meget populært i højfrekvent lav latenstid programmering domæne, hvor programmører forsøger for ekstremt lav latenstid i intervallet mikro til millisekunder. Se her mere 50 + avancerede trådintervju spørgsmål til erfarne programmører.

core java-Spørgsmål til seniorudviklere

Hvad er Læs-Skriv Lås? Bruger ConcurrentHashMap i Java Læselåsen?

Readskrive Lock er en implementering af en lock stripping-teknik, hvor to separate låse bruges til læsning og skrivning. Da læseoperationen ikke ændrer objektets tilstand, er det sikkert at tillade adgang til flere tråde til et delt objekt til læsning uden at låse, og ved at opdele en lås i læse-og skrivelåsen kan du nemt gøre det.
Java giver en implementering af en læse-skrive lås i form af Reentrantreadskrivningsklassen i java.util.samtidig.lås pakke. Dette er værd at se, før du beslutter dig for at skrive din egen læse-skrive låsning implementering.
også den nuværende implementering af java.util.ConcurrentHashMap bruger ikke Læselåsen, i stedet deler den kortet i flere segmenter og låser dem separat ved hjælp af forskellige låse. Dette betyder en given tid, kun en del af ConcurrentHashMap er låst, i stedet for hele kortet. Se, hvordan ConcurrentHashMap internt fungerer i Java for flere detaljer.
dette centrale Java-Spørgsmål er også meget populært på Senior og mere erfarne Java-samtaler, f.eks. 4 til 6 år, hvor du forventer, at intervju går nærmere ind på, som ved at bede dig om at give en implementering af læse-skrivelåsen med forskellige politikker. Hvis du er en erfaren Java-programmør, kan du overveje at læse Java-samtidighed i praksis for at få mere tillid til multithreading og samtidighed i Java.

Hvordan laver man et objekt uforanderligt i Java? Hvorfor skal du gøre et objekt uforanderligt?

nå, uforanderlighed giver flere fordele, herunder trådsikkerhed, evne til at cache og resultere i en mere læsbar multithreading-kode. Se her for at lære at gøre objekter uforanderlige. Endnu en gang kan dette spørgsmål også gå i detaljer, og afhængigt af dit svar kan det medføre flere andre spørgsmål, f. eks. når du nævner foråret er uforanderlig, være klar med nogle grunde til, hvorfor String er uforanderlig i Java.

hvilke designmønstre har du brugt i dit Java-projekt?

altid forvente nogle design mønstre relateret spørgsmål til Core Java samtale af senior udvikler position. Det er en bedre strategi at nævne ethvert GOF-designmønster snarere end Singleton eller MVC, som næsten alle andre Java-udviklere bruger det.
dit bedste bud kan være et Dekoratørmønster eller måske Afhængighedsinjektionsmønster, som er meget populært i foråret. Det er også godt at nævne kun de designmønstre, som du faktisk har brugt i dit projekt og ved, at det er kompromiser.
det er almindeligt, at når du nævner et bestemt designmønster, siger fabrik eller abstrakt fabrik, ville samtalerens næste spørgsmål være, har du brugt dette mønster i dit projekt? Så vær klar med rigtige eksempler, og hvorfor du vælger et bestemt mønster. Du kan også se denne artikel for mere avancerede designmønsterspørgsmål fra Java-samtaler.

kender du til Open Closed design Principle eller Liskov Substitution Principle?

designmønstre er baseret på objektorienterede designprincipper, som jeg stærkt følte, at enhver objektorienteret udvikler og programmøren skulle vide, eller i det mindste have en grundlæggende ide om, hvad er disse principper, og hvordan de hjælper dig med at skrive bedre objektorienteret kode. Jeg
f du kender ikke svaret på dette spørgsmål, du kan høfligt sige nej, da det ikke forventes af dig at kende svaret på hvert spørgsmål, men ved at besvare dette spørgsmål kan du gøre dit krav stærkere, da mange erfarne udviklere undlader at besvare grundlæggende spørgsmål som dette. Se Clean Code få mere at vide om objektorienterede og solide designprincipper.

hvilket designmønster vil du bruge til at beskytte din kode fra et tredjepartsbibliotek, som sandsynligvis vil blive erstattet af et andet om et par måneder?

Dette er blot et eksempel på det scenariebaserede designmønsterintervju-spørgsmål. For at teste den praktiske oplevelse af Java-udviklere med mere end 5 års erfaring stiller virksomheder denne slags spørgsmål. Du kan forvente flere designproblemer i den virkelige verden i forskellige formater, nogle med mere detaljeret forklaring med kontekst, eller nogle med kun hensigt omkring.

en måde at beskytte din kode fra et tredjepartsbibliotek er at kode mod en grænseflade snarere end implementering og derefter bruge afhængighedsinjektion til at levere en bestemt implementering. Denne form for spørgsmål stilles også ganske ofte til erfarne og senior Java-udviklere med 5 til 7 års erfaring.

spørgsmål 7) Hvordan forhindrer du indsprøjtning i Java-kode?

dette spørgsmål er mere stillede J2EE-og Java EE-udviklere end core Java-udviklere, men det er stadig et godt spørgsmål at kontrollere jdbc-og Sikkerhedsevnen hos erfarne Java-programmører.
Du kan bruge PreparedStatement for at undgå indsprøjtning i Java-kode. Brug af PreparedStatement til udførelse af forespørgsler giver ikke kun bedre ydeevne, men beskytter også din Java-og J2EE-applikation mod indsprøjtningsangreb.
på en lignende note, hvis du arbejder mere på Java EE eller J2EE side, så skal du også være bekendt med andre sikkerhedsproblemer, herunder Session fiksering angreb eller Cross-Site Scripting angreb og hvordan du løser dem. Dette er nogle felter og spørgsmål, hvor et godt svar kan gøre en stor forskel i dit valg.

spørgsmål 8) Fortæl mig om forskellige referencetyper, der er tilgængelige i Java, f. eks. Svagreference, SoftReference eller PhantomReference? og hvorfor skal du bruge dem?

nå, de er forskellige referencetyper, der kommer fra java.lang.ref pakke og leveres til at hjælpe Java Garbage Collector i tilfælde af problemer med lav hukommelse. Hvis du pakker et objekt med Svagreference, end det vil være berettiget til affald indsamlet, hvis der er O stærke referencer. De kan senere genvindes af affaldssamleren, hvis JVM er ved at løbe tør for hukommelse.
java.util.Svaghashmap er en speciel Kortimplementering, hvis nøgler er genstand for Svagreference, så hvis kun kort indeholder referencen til ethvert objekt og ingen andre, kan dette objekt indsamles affald, hvis GC har brug for hukommelse. Se Java Performance den Definitive Guide Lær mere om, hvordan du håndterer ydelsesproblemer i Java.

core java teknisk samtale spørgsmål og svar til erfarne

spørgsmål 9) Hvordan får man metode til HashMap fungerer i Java?

ja, dette er stadig et af de mest populære centrale Java-Spørgsmål til seniorudviklersamtaler. Du kan også forvente dette spørgsmål på telefonisk runde, efterfulgt af mange opfølgende spørgsmål som diskuteret i mit indlæg hvordan fungerer HashMap i Java.
Det korte svar på dette spørgsmål er, at HashMap er baseret på hash table datastruktur og bruger hashCode() metode til at beregne hash kode for at finde bucket placering på den underliggende array og lig() metode til at søge objektet i samme spand i tilfælde af en kollision. Se her for at lære mere om, hvordan get() metode til HashMap fungerer i Java.

spørgsmål 10) hvilke to metoder HashMap nøgleobjekt skal implementere?

dette er et af de opfølgende spørgsmål, jeg sagde om i tidligere spørgsmål. Da arbejdet med HashMap er baseret på hash-tabeldatastruktur, skal ethvert objekt, som du vil bruge som en nøgle til HashMap eller enhver anden hashbaseret samling, f.eks.
hashkoden () bruges til at finde bucket-placeringen, dvs.indekset for det underliggende array, og lig med () – metoden bruges til at finde det rigtige objekt i en sammenkædet liste, der er gemt i bucket i tilfælde af en kollision. Forresten, fra Java 8, begyndte HashMap også at bruge en trædatastruktur til at gemme objektet i tilfælde af en kollision for at reducere den værst tænkelige ydelse af HashMap fra O(n) til O(logN). Se artiklen for at lære mere om, hvordan HashMap håndløse kollisioner i Java.

spørgsmål 11) Hvorfor skal et objekt, der bruges som nøgle, være uforanderligt?

dette er en anden opfølgning af tidligere centrale Java-Spørgsmål. Det er godt at teste dybden af teknisk viden om kandidater ved at stille flere og flere spørgsmål om det samme emne. Hvis du ved om uforanderlighed, kan du selv besvare dette spørgsmål. Det korte svar på dette spørgsmål er nøglen skal være uforanderlig, så hashCode () – metoden altid returnerer den samme værdi.

da hash-koden, der returneres af hashCode () – metoden, afhænger af objektets indhold, dvs.værdier af medlemsvariabler. Hvis et objekt kan ændres, end disse værdier kan ændre sig, og det samme er hash-koden. Hvis det samme objekt returnerer forskellige hash-kode, når du har indsat værdien i HashMap, vil du ende med at søge i forskellige bucket steder og vil ikke kunne hente objektet. Derfor skal et nøgleobjekt være uforanderligt. Det er ikke en regel håndhæves af compiler, men du bør tage sig af det som en erfaren programmør. Se artiklen for mere avancerede Java samling samtale spørgsmål.

spørgsmål 12) Hvordan opnår ConcurrentHashMap sin skalerbarhed?

nogle gange stilles dette spørgsmål om multithreading + samlingssamtale også som forskellen mellem ConcurrentHashMap og Hashtable i Java. Problemet med synkroniseret HashMap eller Hashtable var, at hele kortet er låst, når en tråd udfører enhver handling med kort.
java.util.ConcurrentHashMap klasse løser dette problem ved hjælp af en lås stripping teknik, hvor hele kortet er låst på forskellige segmenter, og kun et bestemt segment er låst under skrive operation, ikke hele kortet. Den ConcurrentHashMap opnår også sin skalerbarhed ved at tillade lås-fri læser som læst er en tråd-sikker drift. Se her for mere avancerede multi-threading og samtidighed spørgsmål i Java.

spørgsmål 13) Hvordan deler du et objekt mellem tråde? eller hvordan man sender et objekt fra en tråd til en anden?

der er flere måder at gøre det på, f. eks. Køer, veksler osv., Men Blokeringkø ved hjælp af producent-Forbrugermønster er den nemmeste måde at overføre et objekt fra tråd til en anden.

spørgsmål 14) hvordan finder ud af, om dit program har en dødvande?

ved at tage tråddump ved hjælp af kill -3, ved hjælp af JConsole eller VisualVM), foreslår jeg at forberede dette centrale java-samtalespørgsmål mere detaljeret, da samtaleren helt sikkert kan lide at gå med flere detaljer, f. eks. vil de trykke med spørgsmål som, har du virkelig gjort det i dit projekt eller ej?

spørgsmål 15) Hvordan undgår du dødvande under kodning?

ved at sikre, at låse erhverves og frigives på en ordnet måde, Se her for et detaljeret svar på dette spørgsmål.
Det er alt på denne liste over centrale Java-Spørgsmål til seniorudviklere og erfarne programmører. Jeg har ikke inkluderet mange spørgsmål fra andre vigtige emner som undtagelseshåndtering, tuning af affaldssamling og JVM Internals, som også er meget populær blandt Java-programmører med 5 til 6 års erfaring, måske vil jeg inkludere dem i næste del.
forresten, hvis du ikke finder svaret på nogen af disse centrale Java-Spørgsmål, så lad mig det vide. Jeg kan opdatere indlægget med en mere detaljeret mulighed, baseret på min læsers anmodning.
yderligere læring
Den komplette Java Masterclass
Java Fundamentals: Spørgsmål om andre emner

  • Java Spørgsmål til Telefonskærmsamtaler (liste)
  • tråd og samtidighed spørgsmål fra Java-samtaler (liste)
  • Java Enum spørgsmål og Svar (liste)
  • Java OOP spørgsmål med svar (Liste)
  • forår MVC spørgsmål og Svar (liste)
  • Hibernate intervju spørgsmål med svar (Liste)
  • jdbc intervju spørgsmål og svar (liste)
  • array concept intervju spørgsmål i Java (liste)
  • Spørgsmål og Svar (liste)
  • spørgsmål og Svar (liste)
  • Java Spørgsmål og Svar (liste)