CodeGym /Java-blogg /Tilfeldig /Topp 21 Java-intervjuspørsmål
John Squirrels
Nivå
San Francisco

Topp 21 Java-intervjuspørsmål

Publisert i gruppen
Det er myriader av Java-intervjuspørsmål, og vi kan ikke samle alle i én artikkel. Men her kan du finne noen svært vanlige Java-intervjuspørsmål, ifølge HR-ledere i IT-selskaper. Topp 21 Java-intervjuspørsmål - 1
  1. "Demonter" public static void main(String args[]).

    Et av de populære java-intervjuspørsmålene for ferskere, og veldig enkelt.

    • publicer en tilgangsmodifikator. Vi bruker den til å spesifisere tilgangen til denne metoden. Her er modifikator "offentlig", så enhver klasse har tilgang til denne metoden.

    • static. Dette Java-nøkkelordet betyr at vi bruker denne metoden uten å lage et nytt objekt i en klasse.

    • Voider returtypen til metoden. Det betyr at metoden ikke returnerer noen verdi.

    • mainer navnet på metoden. JVM "kjenner" det som et inngangspunkt til en applikasjon (den bør ha en spesiell signatur). Mainer en metode hvor hovedutførelsen skjer.

    • String args[]. Dette er parameteren som sendes til hovedmetoden. Her har vi argumentene av strengtype som Java-applikasjonen din godtar når du kjører den. Du kan skrive dem på terminalen.

  2. Hva er forskjellen mellom equals()og ==?

    For det første er " ==" en operatør mens det equals()er en metode. Vi bruker ==operatør for referansesammenligning (eller adressesammenligning) og equals()metode for innholdssammenligning. Det betyr at ==sjekker om begge objektene peker til samme minneplassering mens equals()sammenligner verdier i objektene.

  3. Kan vi kjøre et program uten main()metode?

    Mange grunnleggende intervjuspørsmål i Java er veldig enkle. Som denne. Så kort svar er: ja, det kan vi. For eksempel kan vi gjøre det ved å bruke statisk blokk.

    Du kan bruke statisk blokk for å initialisere det statiske datamedlemmet. Den utføres før mainmetoden, på tidspunktet for lasting av klasse.

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

    Utgangen er:

    
    static block is invoked
    Now main method
    
  4. Hva med totalt hovedmetodefravær? Hvis du prøver å kjøre en vanlig klasse uten hovedmetoden i det hele tatt, fikk du neste feilmelding: Hovedmetode ikke funnet i klassen Test, vennligst definer hovedmetoden som: public static void main (String [] args) eller en JavaFX-applikasjon klasse må utvide javafx.application.Application. Selve feilen sier at hvis dette er en JavaFX-applikasjon og klassen er arvet fra javafx.application.Application, så er det mulig.
  5. Hva er immutableobjekt? Kan du lage immutableobjekter?

    Du kan ikke endre objekter i en immutableklasse etter at de er opprettet. Så når du først har opprettet dem, kan du ikke endre dem. Hvis du prøver å endre Immutableobjektet får du et nytt objekt (klone) og endrer denne klonen mens du oppretter.

    Et godt eksempel er String, det er immutablei Java. Det betyr at du ikke kan endre selve objektet, men du kan endre referansen til objektet.

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

    Et av java-tekniske intervjuspørsmål som erstatter #4.

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

    Svaret er "bare én" fordi Java har en strengpool. Når vi lager et String-objekt ved å bruke new()-operatoren, oppretter det et nytt objekt i heap-minnet. Hvis vi bruker String literal syntaks, som i vårt eksempel, kan det returnere et eksisterende objekt fra String pool, hvis det allerede eksisterer.

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

    
    String s = new String("Hello");
    

    Det er 2 objekter. Den ene er i strengkonstant pool (hvis den ikke allerede er til stede) og den andre er i haugen.

  8. Hva er forskjellen mellom Stringog StringBuilderklasser StringBufferi Java?

    Det er en av lederne i de beste java-intervjuspørsmålene.

    Først av alt Stringer en uforanderlig klasse. Det betyr at du ikke kan endre innholdet når det først er opprettet. Mens StringBufferog StringBuilderer foranderlige klasser, slik at du kan endre dem senere. Hvis vi endrer innholdet i Stringobjektet, oppretter det en ny streng og endrer derfor ikke den opprinnelige. Det er derfor ytelsen med StringBufferer bedre enn med String.

    Hovedforskjellen mellom StringBufferog StringBuilderdets StringBuffermetoder er synkronisert mens StringBuilderdet ikke er det.

  9. Er det noen forskjell på Stringat det ble opprettet ved hjelp av bokstavelig og med new()operatør?

    Det er. Hvis vi lager en streng med new()operatøren, vises den i heapen og i strengpoolen (hvis den ikke allerede er til stede). Hvis du oppretter en Stringved hjelp av en bokstavelig, opprettes den i strengpoolen (hvis den ikke allerede er til stede). Et strengbasseng er et lagringsområde i haugen, som lagrer strengbokstaver.

  10. Kan du overstyre privateeller staticmetode i Java?

    Et av java vanskelige intervjuspørsmål for nybegynnere. Du kan virkelig ikke overstyre privateeller staticmetode i Java.

    Du kan ikke overstyre privatemetodene fordi omfanget av spesifikasjonen for privat tilgang kun er innenfor klassen. Når du skal overstyre noe bør vi ha foreldre- og barneklasse. Hvis metode for superklasse er private, kan barneklassen ikke bruke den, og metodene i barneklassen vil bli behandlet som nye metoder (ikke overstyrt).

    StaticMetoder kan heller ikke overstyres, fordi staticmetoder er en del av selve klassen, og ikke en del av noe objekt i klassen. Klart du kan deklarere samme staticmetode med samme signatur i barneklasser, men igjen, de vil bli behandlet som nye metoder.

  11. Forskjellen mellom Abstract ClassogInterface

    Et av de populære intervjuspørsmålene for Java-utviklere som har sammenheng med OOP-prinsippene. Først av alt, i Java interfacedefinerer en atferd og abstract classskaper hierarki.

    Abstrakt klasse Grensesnitt
    Det er mulig å ha en metodekropp (ikke-abstrakte metoder) i abstrakt klasse Grensesnitt kan bare ha abstrakte metoder. I Java 8 eller nyere ble det mulig å definere standardmetoder og implementere dem direkte i grensesnittet. Grensesnitt i Java 8 kan også ha statiske metoder.
    Forekomstvariabler kan være i abstrakt klasse Et grensesnitt kan ikke ha forekomstvariabler.
    Konstruktører er tillatt Grensesnittet kan ikke ha noen konstruktør.
    Statiske metoder er tillatt Statiske metoder er ikke tillatt
    Klassen kan bare ha én abstrakt forelder Ett grensesnitt kan implementere forskjellige klasser
    Den abstrakte klassen kan gi implementeringen av grensesnittet. Grensesnittet kan ikke gi implementering av abstraktklassen.
    En abstrakt klasse har lov til å utvide den andre Java-klassen og implementere flere Java-grensesnitt. Et grensesnitt er kun tillatt å utvide det andre Java-grensesnittet.
    En abstrakt Java-klasse kan ha private og beskyttede klassemedlemmer Medlemmer av et Java-grensesnitt er offentlige som standard
  12. Kan vi deklarere staticvariabler og metoder i en abstractklasse?

    Ja, det er mulig å deklarere staticvariabler og metoder i abstractmetode. Det er ikke noe krav om å lage et objekt for å få tilgang til den statiske konteksten. Så vi har tilgang til den statiske konteksten som er deklarert inne i abstractklassen ved å bruke navnet på abstractklassen.

  13. Hvilke typer minneområder tildeles av JVM?

    Klasseområde lagrer perklassestrukturer, for eksempel kjøretidskonstantpool, felt, metodedata og all koden for metoder.

    Heap er et kjøretidsdataområde hvor minne er allokert til objektene.

    Stack lagrer rammer. Den inneholder lokale variabler og delresultater, og tar del i metodeanrop og retur. Hver tråd har en privat JVM-stabel, opprettet samtidig med tråden. En ny ramme opprettes hver gang en metode påkalles. En ramme blir ødelagt når metodeanropet er fullført.

    Program Counter Register inneholder en adresse til den virtuelle Java-maskininstruksjonen som kjøres for øyeblikket.

    Native Method Stack inneholder alle de native metodene som brukes i applikasjonen.

  14. Hvorfor er multippel arv ikke tillatt i java?

    Det ville vært veldig komplisert. Tenk deg tre klasser A, B, og Cog Carver Aog B. Nå, Aog Bklasser har samme metode, og du kaller det fra et underordnet klasseobjekt... Hvilken? As eller Bs? Her har vi tvetydighet.

    hvis du prøver å arve to klasser, gjengir Java kompileringstidsfeil.

  15. Kan vi overbelaste main()metoden?

    Jada, vi har lov til å ha mange mainmetoder i et Java-program ved å bruke metodeoverbelastning. Prøv det!

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

    Nei. En konstruktør kan ikke deklareres som en finalfordi den ikke kan arves. Så det er meningsløst å erklære konstruktører som final. Men hvis du prøver å gjøre det, gir Java-kompilatoren deg en feil.

  17. Kan vi erklære et grensesnitt som final?

    Nei, vi kan ikke gjøre dette. Et grensesnitt kan ikke være finalfordi grensesnittet skal implementeres av en klasse i henhold til dens definisjon. Derfor er det ingen mening å lage et grensesnitt final. Men hvis du prøver å gjøre det, vil kompilatoren vise en feil.

  18. Hva er forskjellen mellom static bindingog dynamic binding?

    Det bindingsom kan løses på kompileringstidspunktet av kompilatoren kalles staticeller tidlig binding. Bindingav alle static, privateog finalmetodene gjøres ved kompilering.

    I Dynamic bindingkompilator kan ikke velge en metode som skal kalles. Overstyring er et perfekt eksempel på dynamic binding. Ved overstyring har både foreldre- og barneklasser 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 lage en skrivebeskyttet klasse i Java?

    Du kan gjøre det ved å gjøre alle klassens felt private. Den skrivebeskyttede klassen har bare getter-metoder som returnerer den private egenskapen til klassen til metoden main. Du kan ikke endre denne egenskapen, årsaken er mangelen på setters-metoden.

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

    Igjen, du bør lage alle klassens felt private. Nå skal skrivebeskyttet klasse kun ha setter-metoder og ingen gettere. Derfor kan vi ikke lese egenskapene til klassen.

    
    public class HockeyPlayer{       
    private String team;    
    public void setTeam(String college){    
    this.team = team;    
    }    
    }    
    
  21. Hver tryblokk må vel følges av en catchblokk?

    Nei. Det er ikke en nødvendighet. Hver tryblokk kan være uten catchblokk. Den kan bli etterfulgt av enten en catchblock eller en endelig blokk eller til og med uten dem i det hele tatt.

    
    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...");  
            }  
         }  
    }
    

    Produksjon:

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

    Et eksempel til:
    
    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");
                }
            }
        }
    

    Produksjon:

    
    test
    

    PS: Før Java 8-metoder i grensesnitt kunne bare vært abstrakte. I Java 8 eller nyere ble det mulig å definere standardmetoder og implementere dem direkte i grensesnittet.
  22. Hva er forskjellen mellom throwog throwssøkeord?

    Throwsbrukes til å erklære et unntak, så det fungerer på samme måte som blokken try-catch. Thrownøkkelord brukes til å kaste et unntak eksplisitt fra en metode eller en annen kodeblokk.

    Throwetterfølges av en forekomst av Exceptionklasse og kast etterfølges av unntaksklassenavn.

    Throwbrukes i metodekroppen for å kaste et unntak. Throwsbrukes i en metodesignatur for å deklarere unntakene som kan forekomme i setningene i metoden.

    Det er tillatt å kaste ett unntak om gangen, men du kan håndtere flere unntak ved å deklarere dem ved å bruke thrownøkkelord. Du kan erklære flere unntak, f.eks. public void method()throws IOException, SQLException.

Her hadde vi bare noen få java-intervjuspørsmål og svar. Denne artikkelen er den første av intervjuserien. Den neste (kommer snart) handler om datastrukturspørsmål.
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION