Articles

15 Technical Core Java Interview Questions svar för erfarna utvecklare

När erfarenheten av en Java-programmerare växer under åren, t.ex. när det går från nybörjarår ( 2 till 4) till mer erfarenhet eller typ av seniornivå ( 5 till 7 år), ändras också Core Java Interview Questions lite. Naturligtvis är grunderna som datastruktur, algoritmer och objektorienterad programmering desamma, men typer av frågor kommer att bli mer avancerade och deras svar kommer definitivt att behöva vara mer detaljerade och korrekta. Jag får ofta frågor om centrala Java-frågor som ställs till en senior utvecklare av 5 till 6 års erfarenhet, eller ibland går jag till en intervju med senior Java developer, vilken typ av frågor jag borde förvänta mig. Detta förbryllar mig ibland, att när du blir senior börjar du automatiskt delta i intervjun, och du borde ha en uppfattning om vad du kan förvänta dig på intervjuer, men samtidigt kan jag förstå att jag har en uppfattning om frågor innan du går på Intervju, hjälper till att förbereda. Naturligtvis kommer du inte att få en fråga som den du har mött på 2 till 3 års nivå Java intervjuer, men det beror också på olika Intervjurundor.
jag har inte sett många förändringar i frågorna på telefonrundan, som nästan förblir densamma. Du hittar några faktabaserade, några kodningsfrågor och några knepiga frågor. Å andra sidan ansikte mot ansikte, intervjuer har blivit mer detaljerade och mer knepiga, särskilt med otäcka uppföljningar.
i den här artikeln kommer jag att dela några 15 tekniska core Java intervjufrågor, som jag har sett frågade senior och erfarna utvecklare av 4 till 6 års erfarenhet i olika intervjuer, mestadels på telefonrundor. Jag publicerar inte svar från och med nu, men du kan hitta svar på de flesta frågorna här eller javarevisited-bloggen.
om du har bråttom och aktivt letar efter ett Java-Utvecklarjobb kan du också ta hjälp av några bra böcker skrivna för att förbereda dig för Java J2EE-intervjuer. Böcker som, Java Programming Interview Exposed täcker alla viktiga ämnen för både core Java och Java EE intervjuer, som inkluderar grundläggande Java Frågor, datastruktur och algoritmer, JVM internals och GC tuning, Hibernate och Spring Intervju Frågor, JUnit ant enhetstestning frågor, och några Java 8 saker.
det täcker också kunskap om andra JVM-språk som Scala, Groovy och andra plattformar som Android. En perfekt följeslagare att göra bra i Java intervjuer.
om du vill förbereda mer på kodningssidan kan du också kolla in Cracking the Coding Interview, som innehåller nästan 150 programmeringsfrågor och lösningar från tekniska intervjuer av stora teknikföretag som Amazon, Facebook, Google, Twitter och Microsoft.

15 grundläggande Java-Frågor i 5 till 6 års erfarenhet

alla dessa frågor har samlats in från ganska äldre utvecklare, som har minst 5 års erfarenhet. De har sett dessa frågor på olika rundor av sina centrala Java intervjuer, inklusive telefon och ansikte mot ansikte rundor på olika företag, mestadels på investeringsbanker som Barclays, Morgan, RBS, och andra.

Vad är upptagen Spinning? Varför ska du använda den i Java?

en av de intressanta multithreading frågan till senior Java programmerare, upptagen spinning är en väntande strategi, där en tråd bara vänta i en slinga, utan att släppa CPU för att sova. Detta är en mycket avancerad och specialiserad väntestrategi som används i högfrekvenshandelsapplikationen när väntetiden mellan två meddelanden är mycket minimal.
genom att inte släppa CPU eller suspendera tråden behåller din tråd alla cachade data och instruktioner, som kan gå förlorade om tråden hängdes upp och återupptogs tillbaka i en annan kärna av CPU.
denna fråga är ganska populär i högfrekvent programmeringsdomän med låg latens, där programmerare försöker för extremt låg latens i intervallet mikro till millisekunder. Se här mer 50 + avancerade trådintervjufrågor för erfarna programmerare.

core java intervju frågor för ledande utvecklare

Vad är Läs-skriv Lås? Använder ConcurrentHashMap i Java ReadWrite-låset?

ReadWrite Lock är en implementering av en låsstrippningsteknik, där två separata lås används för läsning och skrivning. Eftersom läsoperationen inte ändrar objektets tillstånd är det säkert att tillåta flera trådåtkomst till ett delat objekt för läsning utan låsning, och genom att dela ett lås i Läs-och skrivlåset kan du enkelt göra det.
Java tillhandahåller en implementering av ett Läs-och skrivlås i form av klassen ReentrantReadWritLock i java.util.samtidig.lås paketet. Det här är värt att titta innan du bestämmer dig för att skriva din egen läs-skriv-låsimplementering.
även den nuvarande implementeringen av java.util.ConcurrentHashMap använder inte ReadWriteLock, istället delar den kartan i flera segment och låser dem separat med olika lås. Detta innebär en viss tid, endast en del av ConcurrentHashMap är låst, i stället för hela kartan. Se hur ConcurrentHashMap internt fungerar i Java för mer detaljer.
denna grundläggande Java-fråga är också mycket populär på äldre och mer erfarna Java-intervjuer, t.ex. 4 till 6 år, där du förväntar dig att intervjuaren ska gå in mer i detalj, som genom att be dig att tillhandahålla en implementering av läs-skrivlåset med olika policyer. Om du är en erfaren Java-programmerare kan du överväga att läsa Java-samtidighet i praktiken för att få mer förtroende för multitrådning och samtidighet i Java.

hur man gör ett objekt oföränderligt i Java? Varför ska du göra ett objekt oföränderligt?

Tja, oföränderlighet erbjuder flera fördelar inklusive trådsäkerhet, förmåga att cacha och resultera i en mer läsbar flertrådskod. Se här för att lära dig hur man gör objekt oföränderliga. Återigen, denna fråga kan också gå in mer i detalj och beroende på ditt svar, kan ge flera andra frågor t. ex. när du nämner våren är oföränderlig, var redo med några skäl till varför strängen är oföränderlig i Java.

vilka designmönster har du använt i ditt Java-projekt?

förvänta dig alltid några designmönster relaterade frågor för Core Java Intervju av senior developer position. Det är en bättre strategi att nämna något GOF-designmönster snarare än Singleton eller MVC, som nästan alla andra Java-utvecklare använder det.
din bästa insats kan vara ett Dekoratormönster eller kanske Beroendeinjektionsmönster, vilket är ganska populärt i vårramen. Det är också bra att bara nämna de designmönster som du faktiskt har använt i ditt projekt och vet att det är avvägningar.
det är vanligt att när du nämner ett visst designmönster säger fabrik eller abstrakt fabrik, intervjuarens nästa fråga skulle vara, har du använt det här mönstret i ditt projekt? Så var redo med riktiga exempel och varför du väljer ett visst mönster. Du kan också se den här artikeln för mer avancerade designmönster frågor från Java intervjuer.

vet du om öppen sluten designprincip eller Liskov Substitutionsprincip?

designmönster är baserade på objektorienterade designprinciper, som jag starkt kände att varje objektorienterad utvecklare och programmeraren borde veta, eller åtminstone ha en grundläggande uppfattning om vad dessa principer är och hur de hjälper dig att skriva bättre objektorienterad kod. Jag
f du vet inte svaret på den här frågan, du kan artigt säga nej, eftersom det inte förväntas av dig att veta svaret på varje fråga, men genom att svara på den här frågan kan du göra ditt krav starkare eftersom många erfarna utvecklare misslyckas med att svara på grundläggande frågor som detta. Se Clean Code Läs mer om objektorienterade och solida designprinciper.

vilket designmönster kommer du att använda för att skydda din kod från ett tredjepartsbibliotek som sannolikt kommer att ersättas av en annan om några månader?

Detta är bara ett exempel på den scenariobaserade designmönsterintervjufrågan. För att testa den praktiska erfarenheten av Java-utvecklare med mer än 5 års erfarenhet ställer företag denna typ av fråga. Du kan förvänta dig mer verkliga designproblem i olika format, några med mer detaljerad förklaring med sammanhang, eller några med bara avsikt runt.

ett sätt att skydda din kod från ett tredjepartsbibliotek är att koda mot ett gränssnitt snarare än implementering och sedan använda beroendeinjektion för att tillhandahålla en viss implementering. Denna typ av fråga ställs också ganska ofta till erfarna och äldre Java-utvecklare med 5 till 7 års erfarenhet.

Fråga 7) Hur förhindrar du SQL-injektion i Java-kod?

den här frågan är mer frågad J2EE och Java EE-utvecklare än core Java-utvecklare, men det är fortfarande en bra fråga att kontrollera JDBC och säkerhetskunskap hos erfarna Java-programmerare.
Du kan använda PreparedStatement för att undvika SQL-injektion i Java-kod. Användning av PreparedStatement för att utföra SQL-frågor ger inte bara bättre prestanda utan skyddar också din Java-och J2EE-applikation från SQL Injection attack.
på en liknande anteckning, om du arbetar mer på Java EE-eller J2EE-sidan, bör du också vara bekant med andra säkerhetsproblem, inklusive Sessionfixeringsattack eller Skriptattack över flera platser och hur du löser dem. Det här är några fält och frågor där ett bra svar kan göra stor skillnad i ditt val.

Fråga 8) berätta om olika referenstyper som finns i Java, t. ex. WeakReference, SoftReference eller PhantomReference? och varför ska du använda dem?

Tja, de är olika referenstyper som kommer från java.lang.ref-paket och tillhandahålls för att hjälpa Java Garbage Collector i fall av problem med lågt minne. Om du sätter in ett objekt med Svagreferens än det kommer att vara berättigat till skräp som samlas in om det finns o starka referenser. De kan senare återvinnas av Sopuppsamlaren om JVM har ont om minne.
java.util.WeakHashMap är en speciell kartimplementering, vars nycklar är föremål för WeakReference, så om bara kartan innehåller referensen för något objekt och inget annat, kan dessa objekt samlas in om GC behöver minne. SE Java Performance den definitiva guiden Läs mer om hur du hanterar prestandaproblem i Java.

core java tekniska intervjufrågor och svar för erfarna

fråga 9) Hur får metoden för HashMap fungerar i Java?

Ja, det här är fortfarande en av de mest populära Java-frågorna för seniorutvecklarintervjuer. Du kan också förvänta dig denna fråga på telefonrundan, följt av många uppföljningsfrågor som diskuteras i mitt inlägg Hur fungerar HashMap i Java.
det korta svaret på denna fråga är att HashMap är baserad på hashtabelldatastruktur och använder hashCode () – metoden för att beräkna hashkod för att hitta hinkens plats på den underliggande matrisen och lika med () – metoden för att söka objektet i samma hink vid en kollision. Se här för att lära dig mer om hur get () – metoden för HashMap fungerar i Java.

Fråga 10) vilka två metoder HashMap nyckelobjekt ska implementera?

detta är en av de uppföljningsfrågor jag sa om i tidigare frågor. Eftersom arbetet med HashMap är baserat på hashtabelldatastruktur måste alla objekt som du vill använda som en nyckel för HashMap eller någon annan hashbaserad samling, t.ex. Hashtable eller ConcurrentHashMap, implementera equals() och hashCode ()-metoden.
hashCode() används för att hitta hinkens plats, dvs index för den underliggande matrisen och lika med () – metoden används för att hitta rätt objekt i en länkad lista lagrad i hinken vid en kollision. Förresten, från Java 8, började HashMap också använda en träddatastruktur för att lagra objektet i händelse av en kollision för att minska Hashmaps värsta prestanda från O(n) till O(logN). Se artikeln för att lära dig mer om hur HashMap handlösa kollisioner i Java.

fråga 11) Varför ska ett objekt som används som nyckel vara oföränderligt?

detta är en annan uppföljning av tidigare centrala Java-intervjufrågor. Det är bra att testa djupet av teknisk kunskap om kandidater genom att ställa fler och fler frågor om samma ämne. Om du vet om oföränderlighet kan du själv svara på den här frågan. Det korta svaret på denna fråga är nyckeln bör vara oföränderlig så att hashCode () – metoden alltid returnerar samma värde.

eftersom hashkoden som returneras av hashCode () – metoden beror på objektets innehåll, dvs värden för medlemsvariabler. Om ett objekt är föränderligt än dessa värden kan ändras och så är hash-koden. Om samma objekt returnerar olika hashkoder när du har satt in värdet i HashMap kommer du att söka på olika hinkplatser och kan inte hämta objektet. Därför bör ett nyckelobjekt vara oföränderligt. Det är inte en regel som verkställs av kompilatorn men du bör ta hand om det som en erfaren programmerare. Se artikeln för mer avancerade Java Collection intervjufrågor.

Fråga 12) hur uppnår ConcurrentHashMap sin skalbarhet?

ibland denna multithreading + samling intervju fråga ställs också som, skillnaden mellan ConcurrentHashMap och Hashtable i Java. Problemet med synkroniserad HashMap eller Hashtable var att hela kartan är låst när en tråd utför någon operation med karta.
java.util.ConcurrentHashMap-klassen löser detta problem genom att använda en låsningsteknik, där hela kartan är låst vid olika segment och endast ett visst segment är låst under skrivoperationen, inte hela kartan. ConcurrentHashMap uppnår också sin skalbarhet genom att låta låsfria läsningar som lästa är en trådsäker Drift. Se här för mer avancerade multi-threading och samtidighet frågor i Java.

fråga 13) hur delar du ett objekt mellan trådar? eller hur man skickar ett objekt från en tråd till en annan?

det finns flera sätt att göra det t. ex. Köer, växlare, etc, men Blockeringkö med producent-konsumentmönster är det enklaste sättet att skicka ett objekt från tråd till en annan.

fråga 14) Hur hittar du om ditt program har ett dödläge?

genom att ta tråddump med kill -3, med JConsole eller VisualVM) föreslår jag att du förbereder den här centrala java-intervjufrågan mer detaljerat, eftersom intervjuaren definitivt gillar att gå med mer detaljer, t. ex. de kommer att trycka med frågor som, har du verkligen gjort det i ditt projekt eller inte?

fråga 15) hur undviker du dödläge när du kodar?

genom att säkerställa att Lås förvärvas och släpps på ett beställt sätt, se här för ett detaljerat svar på denna fråga.
det är allt på den här listan över centrala Java-intervjufrågor för äldre utvecklare och erfarna programmerare. Jag har inte tagit med många frågor från andra viktiga ämnen som Undantagshantering, sophämtning och JVM Internals, vilket också är mycket populärt bland Java-programmerare med 5 till 6 års erfarenhet, kanske kommer jag att inkludera dem i nästa del.
förresten, om du inte hittar svaret på någon av dessa grundläggande Java-Frågor, låt mig veta. Jag kan uppdatera inlägget med ett mer detaljerat alternativ, baserat på min läsares begäran.
vidareutbildning
Den kompletta Java Masterclass
Java Fundamentals: Java-språket
relaterade Java Intervju Frågor om andra ämnen

  • Java Frågor för telefon skärm intervjuer (lista)
  • tråd och samtidighet frågor från Java intervjuer (lista)
  • Java Enum Intervju Frågor och svar (lista)
  • Java OOP Intervju Frågor med svar (lista)
  • Spring MVC Intervju Frågor och svar (lista)
  • Hibernate intervju frågor med svar (lista)
  • JDBC intervju frågor och svar (lista)
  • array concept intervju frågor i Java (lista)
  • RESTful Web Service Intervju Frågor (lista)
  • Servlet och JSP Intervju Frågor och svar (lista)
  • Java Web Service Intervju Frågor och svar (lista)