CodeGym /Java blogg /Slumpmässig /De 21 bästa Java-intervjufrågorna
John Squirrels
Nivå
San Francisco

De 21 bästa Java-intervjufrågorna

Publicerad i gruppen
Det finns myriader av Java-intervjufrågor och vi kan inte samla alla i en artikel. Men här kan du hitta några mycket vanliga Java-intervjufrågor, enligt IT-företags HR-chefer. De 21 bästa Java-intervjufrågorna - 1
  1. "Demontera" public static void main(String args[]).

    En av de populära java-intervjufrågorna för nybörjare, och mycket enkel.

    • publicär en åtkomstmodifierare. Vi använder den för att specificera åtkomsten till denna metod. Här är modifieraren "public", så alla klasser har tillgång till denna metod.

    • static. Detta Java-nyckelord innebär att vi använder den här metoden utan att skapa ett nytt objekt i en klass.

    • Voidär metodens returtyp. Det betyder att metoden inte returnerar något värde.

    • mainär namnet på metoden. JVM "känner" det som en ingångspunkt till en applikation (den bör ha en speciell signatur). Mainär en metod där huvudexekveringen sker.

    • String args[]. Detta är parametern som skickas till huvudmetoden. Här har vi argumenten av String-typ som din Java-applikation accepterar när du kör den. Du kan skriva dem på terminalen.

  2. Vad är skillnaden mellan equals()och ==?

    ==För det första är " " en operatör medan det equals()är en metod. Vi använder ==operator för referensjämförelse (eller adressjämförelse) och equals()metod för innehållsjämförelse. Det betyder att ==man kontrollerar om båda objekten pekar på samma minnesplats samtidigt som equals()man jämför värden i objekten.

  3. Kan vi köra ett program utan main()metod?

    Många grundläggande java-intervjufrågor är verkligen enkla. Som den här. Så kort svar är: ja, det kan vi. Till exempel kan vi göra det med statiskt block.

    Du kan använda statiskt block för att initiera den statiska datamedlemmen. Den exekveras före mainmetoden, vid tidpunkten för klassladdning.

    
    class Example{  
     Static{
    System.out.println("static block is invoked");
    }  
      public static void main(String args[]){  
       System.out.println("Now main method");  
      }  
    }
    

    Utgången är:

    
    static block is invoked
    Now main method
    
  4. Hur är det med total huvudmetodsfrånvaro? Om du försöker köra en vanlig klass utan huvudmetoden alls, fick du nästa felmeddelande: Huvudmetoden hittades inte i klassen Test, vänligen definiera huvudmetoden som: public static void main (String [] args) eller en JavaFX-applikation klass måste utöka javafx.application.Application. Själva felet säger att om detta är en JavaFX-applikation och klassen ärvs från javafx.application.Application, så är det möjligt.
  5. Vad är immutableobjekt? Kan du skapa immutableobjekt?

    Du kan inte ändra objekt i en immutableklass efter att de har skapats. Så när du väl har skapat dem kan du inte ändra dem. Om du försöker ändra Immutableobjekt får du ett nytt objekt (klon) och ändrar denna klon medan du skapar.

    Ett bra exempel är , Stringdet är immutablei Java. Det betyder att du inte kan ändra själva objektet, men du kan ändra referensen till objektet.

  6. Hur många objekt skapas i följande kod?

    En av java tekniska intervjufrågor som ersätter #4.

    
    String s1="Hello";  
    String s2="Hello";  
    String s3="Hello";  
    

    Svaret är "bara en" eftersom Java har en strängpool. När vi skapar ett String-objekt med operatorn new() skapar det ett nytt objekt i heap-minnet. Om vi ​​använder String literal syntax, som i vårt exempel, kan det returnera ett befintligt objekt från String-poolen, om det redan finns.

  7. Hur många objekt skapas i följande kod?

    
    String s = new String("Hello");
    

    Det finns 2 objekt. En är i strängkonstant pool (om den inte redan finns) och den andra är i högen.

  8. Vad är skillnaden mellan och klasser i Java String?StringBuilderStringBuffer

    Det finns en av de ledande i de vanligaste java-intervjufrågorna.

    Först av allt Stringär en oföränderlig klass. Det betyder att du inte kan ändra dess innehåll när det väl har skapats. Medan StringBufferoch StringBuilderär föränderliga klasser, så att du kan ändra dem senare. Om vi ​​ändrar innehållet i Stringobjektet skapar det en ny sträng och ändrar därför inte den ursprungliga. Det är därför prestandan med StringBufferär bättre än med String.

    Den största skillnaden mellan StringBufferoch StringBuilderdess StringBuffermetoder är synkroniserade medans StringBuilderinte är det.

  9. Finns det någon skillnad på Stringatt det skapades med hjälp av literal och med new()operator?

    Det finns. Om vi ​​skapar en sträng med new()operatorn, visas den i högen och i strängpoolen (om den inte redan finns). Om du skapar en Stringmed hjälp av en bokstavlig, skapas den i strängpoolen (om den inte redan finns). En strängbassäng är ett lagringsområde i högen, som lagrar strängbokstavar.

  10. Kan du åsidosätta privateeller staticmetod i Java?

    En av java-knepiga intervjufrågor för nybörjare. Du kan verkligen inte åsidosätta privateeller staticmetod i Java.

    Du kan inte åsidosätta privatemetoderna eftersom omfattningen av specificeraren för privat åtkomst endast är inom klassen. När du ska åsidosätta något ska vi ha föräldra- och barnklass. Om metoden för superklass är private, kan barnklass inte använda den, och metoderna i barnklass kommer att behandlas som nya metoder (inte åsidosätts).

    Staticmetoder kan inte heller åsidosättas, eftersom staticmetoder är en del av klassen själv och inte en del av något objekt i klassen. Visst kan du deklarera samma staticmetod med samma signatur i barnklasser, men återigen kommer de att behandlas som nya metoder.

  11. Skillnaden mellan Abstract ClassochInterface

    En av de populära intervjufrågorna för Java-utvecklare som har med OOP-principerna att göra. Först av allt, i Java interfacedefinierar ett beteende och abstract classskapar hierarki.

    Abstrakt klass Gränssnitt
    Det är möjligt att ha en metodkropp (icke-abstrakta metoder) i abstrakt klass Gränssnitt kan bara ha abstrakta metoder. I Java 8 eller senare blev det möjligt att definiera standardmetoder och implementera dem direkt i gränssnittet. Gränssnitt i Java 8 kan också ha statiska metoder.
    Instansvariabler kan vara i abstrakt klass Ett gränssnitt kan inte ha instansvariabler.
    Konstruktörer är tillåtna Gränssnittet kan inte ha någon konstruktor.
    Statiska metoder är tillåtna Statiska metoder är inte tillåtna
    Klass kan bara ha en abstrakt förälder Ett gränssnitt kan implementera olika klasser
    Den abstrakta klassen kan tillhandahålla implementeringen av gränssnittet. Gränssnittet kan inte tillhandahålla implementeringen av den abstrakta klassen.
    En abstrakt klass tillåts utöka den andra Java-klassen och implementera flera Java-gränssnitt. Ett gränssnitt får endast utöka det andra Java-gränssnittet.
    En abstrakt Java-klass kan ha privata och skyddade klassmedlemmar Medlemmar av ett Java-gränssnitt är offentliga som standard
  12. Kan vi deklarera staticvariabler och metoder i en abstractklass?

    Ja, det är möjligt att deklarera staticvariabler och metoder i abstractmetod. Det finns inget krav på att göra ett objekt för att komma åt det statiska sammanhanget. Så vi får komma åt det statiska sammanhanget som deklareras inuti klassen genom att använda klassens abstractnamn .abstract

  13. Vilka typer av minnesområden tilldelas av JVM?

    Klassområde lagrar perklassstrukturer, till exempel körtidskonstantpool, fält, metoddata och all kod för metoder.

    Heap är ett runtime-dataområde där minne allokeras till objekten.

    Stack lagrar ramar. Den innehåller lokala variabler och delresultat och deltar i metodanrop och retur. Varje tråd har en privat JVM-stack, skapad samtidigt som tråden. En ny ram skapas varje gång en metod anropas. En ram förstörs när dess metodanrop är klar.

    Programräknareregistret innehåller en adress till den Java-virtuella maskininstruktion som för närvarande körs.

    Native Method Stack innehåller alla inbyggda metoder som används i applikationen.

  14. Varför är multipelarv inte tillåtet i java?

    Det skulle vara riktigt komplicerat. Föreställ dig tre klasser A, B, och Coch Cärver Aoch B. Nu, Aoch Bklasser har samma metod och du anropar det från ett underordnat klassobjekt... Vilken? As eller Bs? Här har vi oklarhet.

    om du försöker ärva två klasser gör Java kompileringstidsfel.

  15. Kan vi överbelasta main()metoden?

    Visst, vi får ha många mainmetoder i ett Java-program genom att använda metodöverbelastning. Testa!

  16. Kan vi deklarera en konstruktör som final?

    Nej. En konstruktör kan inte deklareras som en finaleftersom den inte kan ärvas. Så det är meningslöst att deklarera konstruktörer som final. Men om du försöker göra det, ger Java-kompilatorn dig ett fel.

  17. Kan vi deklarera ett gränssnitt som final?

    Nej, vi kan inte göra det här. Ett gränssnitt kan inte bero finalpå att gränssnittet ska implementeras av någon klass enligt dess definition. Därför är det ingen mening att skapa ett gränssnitt final. Men om du försöker göra det kommer kompilatorn att visa ett fel.

  18. Vad är skillnaden mellan static bindingoch dynamic binding?

    Det bindingsom kan lösas vid kompilering av kompilatorn kallas staticeller tidig bindning. Bindingav alla static, privateoch finalmetoder görs vid kompilering.

    I Dynamic bindingkompilatorn kan inte välja en metod som ska anropas. Åsidosättande är ett perfekt exempel på dynamic binding. I åsidosättande har både förälder- och barnklasser samma metod.

    
    Static Binding
    class Cat{  
     private void talk()
    {System.out.println("cat is mewing...");
    }  
      
     public static void main(String args[]){  
      Cat cat=new Cat();  
      cat.talk();  
     }  
    }  
    Dynamic Binding
    class Animal{  
     void talk(){
    System.out.println("animal is talking...");
    }  
    }  
      
    class Cat extends Animal{  
     void talk(){
    System.out.println("cat is talking...");
    }    
     public static void main(String args[]){  
      Animal animal=new Cat();  
      animal.talk();  
     }  
    }
    
  19. Hur skapar man en skrivskyddad klass i Java?

    Du kan göra det genom att göra alla klassens fält privata. Den skrivskyddade klassen har endast getter-metoder som returnerar klassens privata egendom till metoden main. Du kan inte ändra den här egenskapen, anledningen är avsaknaden av sättermetoden.

    
    public class HockeyPlayer{    
    private String team ="Maple leaf";    
    public String getTeam(){    
    return team;    
    }    
    }
    
  20. Hur skapar man en skrivbara klass i Java?

    Återigen bör du göra alla klassens fält private. Nu ska din skrivbara klass bara ha setter-metoder och inga getters. Därför kan vi inte läsa klassens egenskaper.

    
    public class HockeyPlayer{       
    private String team;    
    public void setTeam(String college){    
    this.team = team;    
    }    
    }    
    
  21. Varje tryblock måste väl följas av ett catchblock?

    Nej. Det är inte en nödvändighet. Varje tryblock kan vara utan catchblock. Det kan följas av antingen ett catchblock eller ett finalblock eller till och med utan dem alls.

    
    public class Main{  
         public static void main(String []args){  
            try{  
                int variable = 1;   
                System.out.println(variable/0);  
            }  
            finally  
            {  
                System.out.println("the other part of the program...");  
            }  
         }  
    }
    

    Produktion:

    
    Exception in thread main java.lang.ArithmeticException:/ by zero
    the other part of the program...
    

    Ytterligare ett exempel:
    
    class Main {
            public static void main(String[] args) throws IOException {
                try(InputStreamReader inputStreamReader = new InputStreamReader(System.in);
                    BufferedReader reader = new BufferedReader(inputStreamReader)){
                    System.out.println("test");
                }
            }
        }
    

    Produktion:

    
    test
    

    PS: Tidigare kunde Java 8-metoder i gränssnitt endast ha varit abstrakta. I Java 8 eller senare blev det möjligt att definiera standardmetoder och implementera dem direkt i gränssnittet.
  22. Vad är skillnaden mellan throwoch throwsnyckelord?

    Throwsanvänds för att deklarera ett undantag, så det fungerar på samma sätt som try-catchblocket. Thrownyckelord används för att skapa ett undantag uttryckligen från en metod eller något annat kodblock.

    Throwföljs av en instans av Exceptionklass och kast följs av undantagsklassnamn.

    Throwanvänds i metodkroppen för att kasta ett undantag. Throwsanvänds i en metodsignatur för att deklarera de undantag som kan förekomma i de satser som finns i metoden.

    Det är tillåtet att kasta ett undantag i taget men du kan hantera flera undantag genom att deklarera dem med thrownyckelord. Du kan deklarera flera undantag, t.ex. public void method()throws IOException, SQLException.

Här hade vi bara några få java-intervjufrågor och svar. Den här artikeln är den första i intervjuserien. Nästa (kommer snart) handlar om datastrukturfrågor.
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION