CodeGym /Java blog /Tilfældig /Top 21 Java-interviewspørgsmål
John Squirrels
Niveau
San Francisco

Top 21 Java-interviewspørgsmål

Udgivet i gruppen
Der er myriader af Java-interviewspørgsmål, og vi kan ikke samle dem alle i én artikel. Men her kan du finde nogle meget almindelige Java-interviewspørgsmål, ifølge IT-virksomheders HR-chefer. Top 21 Java-interviewspørgsmål - 1
  1. "Afmonter" public static void main(String args[]).

    Et af de populære java-interviewspørgsmål for friskere, og meget nemt.

    • publicer en adgangsmodifikator. Vi bruger den til at angive adgangen til denne metode. Her er modifikator "offentlig", så enhver klasse har adgang til denne metode.

    • static. Dette Java nøgleord betyder, at vi bruger denne metode uden at oprette et nyt objekt i en klasse.

    • Voider metodens returtype. Det betyder, at metoden ikke returnerer nogen værdi.

    • mainer navnet på metoden. JVM "kender" det som et indgangspunkt til en applikation (det skal have en bestemt signatur). Mainer en metode, hvor hovedudførelsen finder sted.

    • String args[]. Dette er parameteren, der overføres til hovedmetoden. Her har vi argumenterne af typen String, som din Java-applikation accepterer, når du kører den. Du kan skrive dem på terminalen.

  2. Hvad er forskellen mellem equals()og ==?

    For det første er " ==" en operator, mens det equals()er en metode. Vi bruger ==operator til referencesammenligning (eller adressesammenligning) og equals()metode til indholdssammenligning. Det betyder, at det ==kontrollerer, om begge objekter peger på den samme hukommelsesplacering, mens equals()man sammenligner værdier i objekterne.

  3. Kan vi udføre et program uden main()metode?

    Mange grundlæggende java-interviewspørgsmål er virkelig nemme. Som denne. Så det korte svar er: ja, det kan vi. For eksempel kan vi gøre det ved hjælp af statisk blok.

    Du kan bruge statisk blok til at initialisere det statiske datamedlem. Den udføres før mainmetoden, på tidspunktet for klassens indlæsning.

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

    Udgangen er:

    
    static block is invoked
    Now main method
    
  4. Hvad med totalt hovedmetodefravær? Hvis du forsøger at køre en almindelig klasse uden hovedmetoden overhovedet, fik du den næste fejl: Hovedmetode ikke fundet i klassetest, definer venligst hovedmetoden som: public static void main (String [] args) eller en JavaFX-applikation klasse skal udvide javafx.application.Application. Selve fejlen siger, at hvis dette er en JavaFX-applikation, og klassen er nedarvet fra javafx.application.Application, så er det muligt.
  5. Hvad er immutableobjekt? Kan du oprette immutableobjekter?

    Du kan ikke ændre objekter i en immutableklasse efter deres oprettelse. Så når først du har oprettet dem, kan du ikke ændre dem. Hvis du forsøger at ændre Immutableobjektet, får du et nyt objekt (klon) og ændrer denne klon under oprettelsen.

    Et godt eksempel er String, det er immutablei Java. Det betyder, at du ikke kan ændre selve objektet, men du kan ændre referencen til objektet.

  6. Hvor mange objekter oprettes i følgende kode?

    Et af java tekniske interviewspørgsmål, der erstatter #4.

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

    Svaret er "kun én", fordi Java har en String Pool. Når vi opretter et String-objekt ved hjælp af new()-operatoren, opretter det et nyt objekt i heap-hukommelsen. Hvis vi bruger String literal syntaks, som i vores eksempel, kan det returnere et eksisterende objekt fra String-puljen, hvis det allerede eksisterer.

  7. Hvor mange objekter oprettes i følgende kode?

    
    String s = new String("Hello");
    

    Der er 2 objekter. Den ene er i streng konstant pool (hvis den ikke allerede er til stede), og den anden er i dyngen.

  8. Hvad er forskellen mellem Stringog StringBuilderklasser StringBufferi Java?

    Der er en af ​​de førende i top java interview spørgsmål.

    Først og fremmest Stringer en uforanderlig klasse. Det betyder, at du ikke kan ændre indholdet, når det først er oprettet. Mens StringBufferog StringBuilderer foranderlige klasser, så du kan ændre dem senere. Hvis vi ændrer indholdet af Stringobjektet, opretter det en ny streng, derfor ændrer det ikke den originale. Derfor StringBufferer ydelsen med bedre end med String.

    Hovedforskellen mellem StringBufferog StringBuilderdets StringBuffermetoder er synkroniseret, mens StringBuilderdet ikke er det.

  9. Er der nogen forskel på, Stringat det blev oprettet ved hjælp af bogstavelig og med new()operator?

    Der er. Hvis vi opretter en streng med new()operatoren, vises den i heapen og i strengpuljen (hvis den ikke allerede er til stede). Hvis du opretter en Stringved hjælp af en literal, oprettes den i strengpuljen (hvis den ikke allerede er til stede). En strengbassin er et opbevaringsområde inden i dyngen, som opbevarer strengliteraler.

  10. Kan du tilsidesætte privateeller staticmetode i Java?

    Et af java-tricky interviewspørgsmål til rookies. Du kan virkelig ikke tilsidesætte privateeller staticmetode i Java.

    Du kan ikke tilsidesætte privatemetoderne, fordi omfanget af den private adgangsspecifikation kun er inden for klassen. Når du skal tilsidesætte noget, bør vi have forældre- og børneklasse. Hvis metode for superklasse er private, kan børneklasse ikke bruge den, og metoderne i børneklasse vil blive behandlet som nye metoder (ikke tilsidesat).

    Staticmetoder kan heller ikke tilsidesættes, fordi staticmetoder er en del af selve klassen og ikke en del af noget objekt i klassen. Selvfølgelig kan du erklære samme staticmetode med samme signatur i børneklasser, men igen, de vil blive behandlet som nye metoder.

  11. Forskellen mellem Abstract ClassogInterface

    Et af de populære java-udvikler-interviewspørgsmål, der er baseret på OOP-principper. Først og fremmest definerer Java interfaceen adfærd og abstract classskaber hierarki.

    Abstrakt klasse Interface
    Det er muligt at have et metodelegeme (ikke-abstrakte metoder) i abstrakt klasse Interface kan kun have abstrakte metoder. I Java 8 eller nyere blev det muligt at definere standardmetoder og implementere dem direkte i grænsefladen. Også grænseflader i Java 8 kunne have statiske metoder.
    Forekomstvariabler kan være i abstrakt klasse En grænseflade kan ikke have instansvariabler.
    Konstruktører er tilladt Interfacet kan ikke have nogen konstruktør.
    Statiske metoder er tilladt Statiske metoder er ikke tilladt
    Klassen kan kun have én abstrakt forælder En grænseflade kan implementere forskellige klasser
    Den abstrakte klasse kan levere implementeringen af ​​grænsefladen. Interfacet kan ikke levere implementeringen af ​​den abstrakte klasse.
    En abstrakt klasse har lov til at udvide den anden Java-klasse og implementere flere Java-grænseflader. En grænseflade må kun udvide den anden Java-grænseflade.
    En abstrakt Java-klasse kan have private og beskyttede klassemedlemmer Medlemmer af en Java-grænseflade er som standard offentlige
  12. Kan vi erklære staticvariabler og metoder i en abstractklasse?

    Ja, det er muligt at deklarere staticvariabler og metoder i abstractmetode. Der er intet krav om at lave et objekt for at få adgang til den statiske kontekst. Så vi har lov til at få adgang til den statiske kontekst, der er erklæret inde i abstractklassen, ved at bruge navnet på abstractklassen.

  13. Hvilke typer hukommelsesområder tildeles af JVM?

    Klasseområde gemmer perklasse-strukturer, f.eks. runtime-konstantpulje, felter, metodedata og al koden til metoder.

    Heap er et runtime-dataområde, hvor hukommelse er allokeret til objekterne.

    Stack gemmer rammer. Den indeholder lokale variabler og delresultater og deltager i metodekald og returnering. Hver tråd har en privat JVM-stack, der er oprettet på samme tid som tråden. En ny ramme oprettes hver gang en metode påkaldes. En ramme ødelægges, når dens metodekald er fuldført.

    Programtællerregister indeholder en adresse på den Java-virtuelle maskine-instruktion, der i øjeblikket udføres.

    Native Method Stack indeholder alle de native metoder, der bruges i applikationen.

  14. Hvorfor er multipel nedarvning ikke tilladt i java?

    Det ville være rigtig kompliceret. Forestil dig tre klasser A, B, og Cog Carver Aog B. Nu, Aog Bklasser har den samme metode, og du kalder det fra et underordnet klasseobjekt... Hvilken? As eller Bs? Her har vi uklarhed.

    hvis du forsøger at arve to klasser, giver Java kompileringstidsfejl.

  15. Kan vi overbelaste main()metoden?

    Selvfølgelig har vi lov til at have mange mainmetoder i et Java-program ved at bruge metodeoverbelastning. Prøve det!

  16. Kan vi erklære en konstruktør som final?

    Nix. En konstruktør kan ikke erklæres som en, finalfordi den ikke kan nedarves. Så det er meningsløst at erklære konstruktører som final. Men hvis du prøver at gøre det, giver Java-compileren dig en fejl.

  17. Kan vi erklære en grænseflade som final?

    Nej, det kan vi ikke. En grænseflade kan ikke være, finalfordi grænsefladen skal implementeres af en eller anden klasse i henhold til dens definition. Derfor er der ingen mening at lave en grænseflade final. Men hvis du prøver at gøre det, vil compileren vise en fejl.

  18. Hvad er forskellen mellem static bindingog dynamic binding?

    Det binding, der kan løses på kompileringstidspunktet af compiler kaldes staticeller tidlig binding. Bindingaf alle static, privateog finalmetoder udføres på kompileringstidspunktet.

    I Dynamic bindingcompiler kan ikke vælge en metode, der skal kaldes. Tilsidesættelse er et perfekt eksempel på dynamic binding. Ved tilsidesættelse har både forældre- og børneklasser samme metode.

    
    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. Hvordan opretter man en skrivebeskyttet klasse i Java?

    Du kan gøre det ved at gøre alle klassens felter private. Den skrivebeskyttede klasse har kun getter-metoder, som returnerer klassens private ejendom til metoden main. Du er ikke i stand til at ændre denne egenskab, grunden er manglen på seters-metoden.

    
    public class HockeyPlayer{    
    private String team ="Maple leaf";    
    public String getTeam(){    
    return team;    
    }    
    }
    
  20. Hvordan opretter man en skrivebeskyttet klasse i Java?

    Igen skal du lave alle klassens felter private. Nu skal din skrivebeskyttede klasse kun have seter-metoder og ingen getters. Derfor kan vi ikke aflæse klassens egenskaber.

    
    public class HockeyPlayer{       
    private String team;    
    public void setTeam(String college){    
    this.team = team;    
    }    
    }    
    
  21. Hver tryblok skal vel efterfølges af en catchblok?

    Nix. Det er ikke en nødvendighed. Hver tryblok kan være uden catchblok. Det kunne efterfølges af enten en catchblock eller en endelig blok eller endda uden dem overhovedet.

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

    Endnu et eksempel:
    
    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: Før Java 8-metoder i grænseflader kunne kun have været abstrakte. I Java 8 eller nyere blev det muligt at definere standardmetoder og implementere dem direkte i grænsefladen.
  22. Hvad er forskellen mellem throwog throwssøgeord?

    Throwsbruges til at erklære en undtagelse, så den fungerer på samme måde som blokken try-catch. Thrownøgleordet bruges til at kaste en undtagelse eksplicit fra en metode eller enhver anden kodeblok.

    Throwefterfølges af en forekomst af Exceptionklasse, og kast efterfølges af undtagelsesklassenavne.

    Throwbruges i metodeteksten til at kaste en undtagelse. Throwsbruges i en metodesignatur til at erklære de undtagelser, der kan forekomme i de udsagn, der findes i metoden.

    Det er tilladt at kaste en undtagelse ad gangen, men du kan håndtere flere undtagelser ved at erklære dem ved hjælp af thrownøgleord. Du kan erklære flere undtagelser, f.eks. public void method()throws IOException, SQLException.

Her havde vi kun nogle få java interview spørgsmål og svar. Denne artikel er den første af interviewserien. Den næste (kommer snart) handler om datastrukturspørgsmål.
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION