Java 개발자의 21가지 면접 문제는 완전히 알아야 한다


Java 면접 문제는 매우 많기 때문에 우리는 한 문장에서 모든 문제를 수집할 수 없다.그러나 IT회사의 인적자원 매니저는 이곳에서 매우 흔히 볼 수 있는 자바 면접 문제를 찾을 수 있다고 말했다.

1. "반집" 공공 정적 voidmain(문자열 args[]).


이것은 유행하는 자바 신입생 면접 문제이자 간단한 문제이다.
  • public 액세스 수식자입니다.우리는 이 방법에 대한 접근을 지정하기 위해 그것을 사용한다.이곳의 수식자는'public'이기 때문에 어떤 종류든 이 방법에 접근할 수 있습니다.
  • static. 이 자바 키워드는 클래스의 새로운 대상을 만들지 않고 이 방법을 사용한다는 것을 의미합니다.
  • Void 메서드의 반환 유형입니다.이것은 이 방법이 어떠한 값도 되돌려 주지 않는다는 것을 의미한다.
  • main는 방법의 이름입니다.JVM은 응용 프로그램의 입구점입니다. 특정 서명이 있어야 합니다.Main은 주 실행 방법입니다.
  • String args[]. 이것은main 방법에 전달되는 매개 변수입니다.여기에는 Java 응용 프로그램이 실행될 때 사용할 수 있는 문자열 유형의 매개변수가 있습니다.너는 단말기에 그것들을 입력할 수 있다.
  • 2.equals()와 == 사이에는 어떤 차이가 있습니까?


    우선, "=="은 연산자이고, equals() 는 방법이다.우리는 == 연산자를 사용하여 인용 비교(또는 주소 비교)를 하고 equals() 방법으로 내용 비교를 한다.이것은 == 두 대상이 같은 메모리 위치를 가리키는지 확인하고 equals() 대상의 값을 비교한다는 것을 의미한다.

    3.main () 방법 없이 프로그램을 실행할 수 있습니까?


    많은 자바 기본 면접 문제는 매우 간단하다.이거처럼.요컨대 답은 그래, 우리는 할 수 있어.예를 들어 우리는 정적 블록을 사용할 수 있다.
    정적 블록을 사용하여 정적 데이터 구성원을 초기화할 수 있습니다.클래스를 불러올 때, main 방법 이전에 실행됩니다.
    class Example{
     Static{ 
    System.out.println("static block is invoked"); 
    } 
      public static void main(String args[]){ 
       System.out.println("Now main method"); 
      } 
    }
    
    출력:
    **static** block is invoked 
    Now main method
    
    전체적인 주된 방법의 결여 상황은 어떻습니까?기본 방법이 없는 상태에서 일반 클래스를 실행하려고 하면 다음 오류가 발생합니다.
    클래스 테스트에서 주 방법을 찾을 수 없습니다. 주 방법을 public static void main (String [] args) 또는 JavaFX 응용 프로그램 클래스로 확장해야 합니다javafx.application.Application.
    오류 자체는 만약 이것이 자바FX 응용 프로그램이고 이 종류가 javafx.application.Application 에서 계승된 것이라면 가능하다는 것을 나타낸다.

    4. 변경할 수 없는 객체는 무엇입니까?당신은 변경할 수 없는 대상을 만들 수 있습니까?

    immutable 클래스의 객체를 만든 후에는 수정할 수 없습니다.그래서 일단 당신이 그것을 창조한다면 당신은 그것을 바꿀 수 없습니다.객체Immutable를 수정하려는 경우 새 객체(클론)가 생성될 때 변경됩니다.
    좋은 예는 String, 자바에서는 immutable 이다.즉, 객체 자체는 변경할 수 없지만 객체에 대한 참조는 변경할 수 있습니다.

    5. 다음 코드에서 몇 개의 대상을 만들었습니까?


    Java 기술 면접 문제 중 하나입니다. #4 대신.
    String s1="Hello"; 
    String s2="Hello"; 
    String s3="Hello";
    
    
    Java에 문자열 풀이 있기 때문에 정답은 "단 하나"입니다.new() 연산자를 사용하여 문자열 대상을 만들 때, 메모리에 새 대상을 만들 것입니다.만약 우리가 문자열 문자 문법을 사용한다면, 예를 들어 우리의 예시에서, 문자열 탱크에서 기존의 대상을 되돌려 줄 수도 있다.

    6. 다음 코드에서 몇 개의 대상을 만들었습니까?


    String s = new String("Hello");
    
    두 개의 대상이 있다.하나는 문자열 상량 탱크에 있고, 다른 하나는 무더기에 있다.

    7.Java의 String, StringBuilder와 StringBuffer 클래스는 어떤 차이가 있습니까?


    자바에서 최고급 인터뷰를 하는 지도자가 있습니다.
    우선String은 변할 수 없는 종류다.이것은 일단 만들면 내용을 수정할 수 없다는 것을 의미한다.StringBufferStringBuilder 은 가변 클래스이므로 나중에 변경할 수 있습니다.객체의 컨텐트를 변경하면 새 문자열이 생성되므로 원래 문자열은 수정되지 않습니다.이것이 바로 String의 성능이 StringBuffer보다 우수한 이유이다.StringStringBuffer 사이의 주요 차이점은 StringBuilder의 방법은 동기화되고 StringBuffer의 방법은 동기화되지 않는다는 데 있다.

    문자열 및 문자열 연산자를 사용하여 생성된 StringBuilder는 어떻게 다릅니까?


    예.만약 우리가 new() 연산자로 문자열을 만들면, 문자열 탱크에 추가하지 않고 무더기에 나타날 것입니다.문자new()를 사용하면 쌓인 Perm 영역에 있는 String 풀에 생성됩니다.

    자바에서 문자열이나 개인 방법을 다시 쓸 수 있습니까?


    초보자에게는 까다로운 면접 문제다.Java에서는 static 또는 private 메서드를 다시 쓸 수 없습니다.
    개인 접근 설명자의 역할 영역이 클래스에만 있기 때문에 static 방법을 다시 쓸 수 없습니다.어떤 내용을 다시 쓰려고 할 때, 우리는 반드시 부류와 자류가 있어야 한다.만약 초류의 방법이 private 라면, 자류는 그것을 사용할 수 없고, 자류의 방법은 새로운 방법으로 간주될 것이다. (다시 쓰지 않는다.)private 방법도 다시 쓸 수 없다. 왜냐하면 Static 방법은 클래스 자체의 일부분이지 클래스의 어떤 대상의 일부분이 아니기 때문이다.물론 하위 클래스에서 같은 서명을 가진 같은 static 방법을 설명할 수 있지만, 마찬가지로 새로운 방법으로 간주될 것입니다.

    10. 정태류와 추상류의 차이


    유행하는 자바 개발자의 인터뷰 문제는 OOP 원칙과 관련이 있다.먼저 JavaInterface에서 동작을 정의하고 interface에서 차원 구조를 만듭니다.

    11. 우리는 정적 클래스에서 추상적 클래스 변수와 방법을 설명할 수 있습니까?


    예, abstract 방법에서 static 변수와 방법을 설명할 수 있습니다.객체를 정적 컨텍스트에 액세스할 필요가 없습니다.따라서 우리는 abstract 클래스의 이름으로 abstract 클래스에서 설명한 정적 상하문에 접근할 수 있다.

    12.JVM은 어떤 유형의 메모리 영역을 할당합니까?


    클래스 영역은 클래스 구조를 저장합니다. 예를 들어 실행 시 상수 탱크, 필드, 방법 데이터와 방법의 모든 코드를 저장합니다.
    더미는 실행할 때 데이터 영역으로 메모리가 대상에 분배됩니다.
    스택 저장 프레임.그것은 국부 변수와 일부 결과를 포함하고 방법 호출과 반환에 참여한다.각 스레드에는 하나의 개인 JVM 스택이 있으며 스레드와 함께 생성됩니다.방법을 호출할 때마다 새 프레임워크를 만듭니다.프레임 호출이 완료되면 프레임이 제거됩니다.
    프로그램 카운터 레지스터는 현재 실행 중인 Java 가상 머신 명령의 주소를 포함합니다.
    이 메소드 스택은 응용 프로그램에서 사용하는 모든 이 메소드를 포함합니다.

    13. 자바는 왜 다중 계승을 허락하지 않습니까?


    이것은 정말 복잡하다.세 가지 유형abstract, A, B, 그리고 C 계승CA을 상상한다.현재, B 클래스와 A 클래스는 같은 방법을 가지고 있으며, 하위 클래스 대상에서 호출할 수 있습니다...어느B 또는 A?여기에 우리는 잘못된 뜻이 있다.두 클래스를 상속하려고 하면 Java에서 컴파일하는 동안 오류가 발생합니다.

    14.B 방법은 과부하가 가능합니까?


    물론 재부팅을 통해 Java 프로그램에서 많은 주요 방법을 사용할 수 있습니다.해봐!

    우리는 구조 함수를main () 이라고 성명할 수 있습니까?


    아니.구조 함수는 계승될 수 없기 때문에 final 로 성명할 수 없습니다.따라서 구조 함수를 final 로 성명하는 것은 무의미하다.그러나 이렇게 시도하면 Java 컴파일러가 오류를 냅니다.

    16. 우리는 인터페이스를 최종 인터페이스로 선포할 수 있습니까?


    아니오, 우리는 이렇게 할 수 없습니다.인터페이스는 final일 수 없습니다. 왜냐하면 이 인터페이스는 특정한 종류가 정의에 따라 실현되어야 하기 때문입니다.따라서 인터페이스 final 를 만드는 것은 무의미하다.그러나 이렇게 시도하면 컴파일러가 오류를 표시합니다.

    17. 최종 귀속과 정적 귀속의 차이는 무엇입니까?


    컴파일러는 컴파일할 때 해석할 수 있는 dynamic bindingbinding 또는 조기 귀속이라고 부른다.모든 static, Binding, static 방법 중의 private 방법은 번역할 때 완성된 것이다.final 에서 컴파일러는 호출할 방법을 선택할 수 없습니다.다시 쓰기는 Dynamic binding 의 완벽한 예입니다.다시 쓸 때, 부류와 자류는 같은 방법을 가지고 있다.
    Static Binding 
    class Cat{ 
     private void talk() 
    {System.out.println("cat is mewing..."); 
    } 
    </code>
    <code> public static void main(String args[]){ 
      Cat cat=new Cat(); 
      cat.talk(); 
     } 
    } </code>
    <code>Dynamic Binding 
    class Animal{ 
     void talk(){ 
    System.out.println("animal is talking..."); 
    } 
    } </code>
    <code>class Cat extends Animal{ 
     void talk(){ 
    System.out.println("cat is talking...");
    } </code>
    <code> public static void main(String args[]){ 
      Animal animal=new Cat(); 
      animal.talk(); 
     } 
    }
    

    18. Java에서 읽기 전용 클래스는 어떻게 만듭니까?


    모든 종류의 필드를 사유로 설정해서 이 점을 실현할 수 있습니다.읽기 전용 클래스는 getter 방법만 있으며, 이 방법은 클래스의 개인 속성을 dynamic binding 방법으로 되돌려줍니다.이 속성을 수정할 수 없습니다. setters 방법이 부족하기 때문입니다.
    public class HockeyPlayer{ 
    private String team ="Maple leaf"; 
    public String getTeam(){ 
    return team; 
    } 
    }
    

    19. Java에서 쓰기 전용 클래스를 만드는 방법은 무엇입니까?


    마찬가지로 모든 종류의 필드 main 를 생성해야 합니다.현재, 당신의 순수한 쓰기 클래스는setter 방법만 있을 뿐, getter는 없습니다.따라서, 우리는 클래스의 속성을 읽을 수 없습니다.
    public class HockeyPlayer{ 
    private String team; 
    public void setTeam(String college){ 
    this.team = team; 
    } 
    }
    

    모든 개인 블록 뒤에는 반드시 try 블록이 있어야 하지 않습니까?


    아니.이것은 필요한 것이 아니다.모든try 블록은catch 블록이 없을 수 있습니다.그 뒤에는 catch 또는finally block이 있을 수도 있고, 심지어는 그것들이 아예 없을 수도 있다.
    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..."); 
            } 
         } 
    }
    
    출력:
    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");
                }
            }
        }
    
    P, Java 8 이전에는 인터페이스의 방법이 추상적일 수밖에 없습니다.Java 8 또는 업데이트 버전에서는 기본 방법을 정의하고 인터페이스에서 직접 구현할 수 있습니다.

    21.catchblock과throw 키워드는 어떤 차이가 있습니까?

    throws 이상을 설명하는 데 사용되기 때문에 그 작업 원리는 Throws 블록과 유사하다.try-catch 키워드는 방법이나 다른 코드 블록에서 이상을 던지는 데 사용됩니다.Throw뒤꿈치Throw류의 실례,throws뒤꿈치 이상류명.Exception 방법체에서 이상을 일으키는 데 쓰인다.Throw 방법 서명에 사용되며, 성명 방법에 존재하는 문장에 발생할 수 있는 이상을 나타낸다.
    한 번에 하나의 이상을 던질 수 있지만, Throws 키워드를 사용하여 여러 개의 이상을 처리할 수 있습니다.예를 들어 throw, public void method()throws IOException 등 여러 가지 이상을 선언할 수 있습니다.
    여기서 우리는 단지 몇 개의 자바 면접 문제와 답안만 있다.본문은 인터뷰 시리즈의 첫 편이다.다음 문제는 데이터 구조에 관한 문제입니다.
    제1편은 CodeGym blog에 발표되었다.

    좋은 웹페이지 즐겨찾기