106 개의 고주파 자바 인터뷰의 가장 포괄적 인 컬렉션 2021 요약 (9 개 주제)

Java에 대한 일반적인 질문

1. JVM이란 무엇이며 Java가 크로스 플랫폼 프로그래밍 언어 인 이유는 무엇입니까?

Java Virtual Machine (Java Virtual Machine)은 Java 바이트 코드를 실행할 수있는 가상 머신으로 각 Java 소스 파일은 바이트 코드 파일로 컴파일 된 다음 JVM에서 실행됩니다. Java가 다른 플랫폼에서 재 작성하거나 재 컴파일 할 필요없이 모든 플랫폼에서 실행되도록 설계된 이유는 JVM (Java Virtual Machine)이 특정 명령의 길이와 기본 계층을 매우 잘 알고 있기 때문입니다. 하드웨어 플랫폼의 특수성.

2. JDK와 JRE의 차이점은 무엇입니까?

Java Runtime Environment (Java Runtime Environment)는 애플릿을 실행하는 브라우저 플러그인을 포함하여 Java 프로그램을 실행하기위한 기본 Java 가상 머신입니다. JDK (Java Development Kit)는 JRE, 컴파일러 및 도구 (예 : JavaDoc 및 Java Debugger)를 포함한 Java 애플리케이션을 개발, 컴파일 및 실행하기위한 Java 용 완전한 기능의 소프트웨어 개발 키트입니다.

3. "정적"키워드는 무엇을 의미합니까? Java에서 개인 또는 정적 메서드를 재정의 할 수 있습니까? 키워드 의미? 자바에서 개인 또는 정적 메서드를 재정의 할 수 있습니까?

static 키워드는이 멤버 변수 나 메서드에 액세스 할 때 자신이 속한 클래스의 인스턴스를 가져올 필요가 없음을 의미합니다.

자바의 정적 메서드는 재정의 할 수 없습니다. 재정의 메커니즘은 런타임에 동적 바인딩이고 정적 메서드는 컴파일 타임에 정적으로 바인딩되기 때문입니다. 정적 메서드는 클래스의 특정 인스턴스와 관련이 없으므로 상속 개념을 적용 할 수 없습니다.

4. 정적 메서드에서 비 정적 변수에 액세스 할 수 있습니까?

Java의 정적 변수는 해당 클래스에 속하며 해당 값은 클래스의 모든 인스턴스에 대해 동일합니다. 정적 변수는 JVM이 클래스를로드 할 때 초기화됩니다. 코드가 클래스의 인스턴스를 통하지 않고 비 정적 변수에 액세스하려고하면 컴파일러는 이러한 비 정적 변수가 아직 생성되지 않았고 인스턴스와 연결되어 있지 않기 때문에 오류를보고합니다.

5. Java는 어떤 데이터 유형을 지원합니까? Autoboxing과 Unboxing은 무엇입니까?
Java 언어에서 지원하는 8 가지 기본 데이터 유형은 다음과 같습니다.

  • 바이트
  • 짧은
  • int
  • 흙손
  • 더블
  • 부울

Autoboxing은 기본 데이터 유형과 해당 래퍼 클래스간에 Java 컴파일러가 수행하는 자동 변환을 나타냅니다. 예를 들어 컴파일러는 int를 Integer로, double을 Double로 변환하는 등의 방식으로 변환합니다. 역변환을 unboxing이라고합니다.

6.
Java에서 메소드 오버로드 및 오버로드 Java에서 메소드 오버로드 는 동일한 클래스에 이름은 같지만 매개 변수 목록이 다른 두 개 이상의 메소드 이름이있는 조건에서 발생합니다. 반면에 메서드 재정의는 하위 클래스가 부모 클래스에서 동일한 메서드를 재정의 함을 의미합니다. 재정의 메서드는 메서드 이름, 매개 변수 목록 및 반환 유형이 정확히 같아야합니다. Override 메서드는 원래 메서드의 액세스 권한을 제한하지 않습니다.

7.
Java 8 에서 생성자, 생성자 오버로딩 및 복사 생성자의 개념 . Java는 다중 상속을 지원합니까?
9. 인터페이스와 추상 클래스의 차이점은 무엇입니까?
10. 참조로 전달하고 값으로 전달

자바 스레드

11. 프로세스와 스레드의 차이점
프로세스는 프로그램 (즉, 실행중인 프로그램)의 실행이지만 스레드는 프로세스에서 독립적 인 실행 시퀀스이며 프로세스에는 여러 스레드가 포함될 수 있습니다. 스레드를 경량 프로세스라고도합니다.

12. 스레드를 생성하는 다양한 방법에 대해 알려주십시오. 선호하는 방법과 이유를 설명하십시오
스레드를 생성하는 방법에는 세 가지가 있습니다.

  • Thread 클래스를 상속합니다.
  • Runnable 인터페이스를 구현합니다.
  • Executor 프레임 워크를 통해 스레드 풀을 만듭니다.

선호하는 방법은 Thread 클래스를 상속 할 필요가 없기 때문에 Runnable 인터페이스를 구현하는 것입니다. 프로그램 설계에 다중 상속이 필요한 경우 인터페이스를 사용하면 도움이됩니다. 또한 스레드 풀은 매우 효율적이고 구현하기 쉽습니다.

13. 사용 가능한 스레드 상태 설명
14. 동기화 방법과 동기화 된 블록의 차이점
15. 모니터에서 스레드 동기화가 어떻게 발생합니까? 사용할 수있는 동기화 수준
16. 교착 상태 란 무엇입니까?
17. 방법 N 스레드가 N 리소스에 액세스 할 때 교착 상태가 발생하지 않도록하려면?

자바 컬렉션

18.
Java Collections 프레임 워크 의 기본 인터페이스 -Java Collections 프레임 워크는 객체 수집 작업을 지원하는 잘 설계된 일련의 인터페이스와 클래스를 제공합니다. Java Collections 프레임 워크에서 가장 기본적인 인터페이스는 다음과 같습니다.

  • 컬렉션은 개체 (요소) 그룹을 나타냅니다.
  • 세트, 반복되지 않는 요소 모음을 포함합니다.
  • 반복되지 않는 요소의 정렬 된 모음 인 목록.
  • 중복되지 않는 키의 키-값 쌍을 포함하는 객체 인 맵.

19. Collection이 Cloneable 및 Serializable 인터페이스를 상속하지 않는 이유는 무엇입니까?

Collection 인터페이스는 요소로 구성된 객체 그룹을 설명합니다. Collection의 각 특정 구현은 요소를 관리하는 고유 한 방법을 선택할 수 있습니다. 일부 컬렉션은 중복 키를 허용하지만 다른 컬렉션은 허용하지 않습니다.

복사와 직렬화의 의미와 효과는 실제 구현이 처리 될 때 작동하므로 컬렉션 클래스의 특정 구현에 따라 복사 및 직렬화 방법이 결정되어야합니다.

20. Iterator 란 무엇입니까?

Iterator 인터페이스는 컬렉션을 반복하기위한 여러 메서드를 제공합니다. 각 Java 컬렉션 (Collection)에는 Iterator 인스턴스를 반환하는 반복자 메서드가 포함되어 있습니다. 반복자는 반복 프로세스 중에 기본 컬렉션의 요소를 제거 할 수 있습니다.

21. Iterator와 ListIterator의 차이점
22. fail-fast와 fail-safe 의 차이점
23. Java에서 HashMap의 작동 원리
24. hashCode () 및 equals () 메소드의
중요성 25.HashMap HashTable과의 차이점은 무엇입니까?
26. Array와 ArrayList의 차이점은 무엇입니까? ArrayList와 비교하여 Array를 언제 사용합니까?
27. ArrayList와 LinkedList의 차이점은 무엇입니까?
28. Comparable 및 Comparator 인터페이스의 차이점을 나열하십시오.
29. Java Priority Queue 란 무엇입니까
30. Big-O 표기법에 대해 무엇 을 알고 있습니까? 다른 데이터 구조에 대한 몇 가지 예를들 수 있습니까?
31. 정렬 된 배열과 정렬되지 않은 배열의 무게를 측정하는 방법
32. Java 컬렉션 프레임 워크에 대한 모범 사례는 무엇입니까?
33. Enumeration과 Iterator 인터페이스의 차이점 34. HashSet과 TreeSet 의 차이점은 무엇입니까
?

가비지 수집기

35. Java에서 가비지 콜렉션의 목적은 무엇이며 언제 사용됩니까?

가비지 콜렉션은 자원을 회수하고 재사용하기 위해 프로그램에서 더 이상 필요하지 않은 객체를 식별하고 폐기하는 데 사용됩니다.

36. System.gc () 및 Runtime.gc () 메서드의 목적은 무엇입니까?

이러한 메소드는 JVM이 가비지 콜렉션을 시작하도록 상기시키는 데 사용되지만 가비지 콜렉션 시작 시점은 JVM에 의해 결정됩니다.

37. finalize ()는 언제 호출되고 그 목적은 무엇입니까?

finallize 메소드는 객체의 메모리를 해제하기 전에 gc (garbage collector)에 의해 호출되며, 일반적으로이 메소드에서 객체가 보유한 리소스를 해제하는 것이 좋습니다.

38. 객체의 참조가 null로 설정되면 gc는 객체의 메모리를 즉시 해제합니까?
39. Java 힙의 구조는 무엇입니까? 힙의 Perm Gen (영구 생성) 공간은 무엇입니까?
40. 직렬 가비지 수집기와 처리량 가비지 수집기의 차이점
41. 개체는 언제 재활용됩니까
42. 가비지 수집은 지정된 JVM 영역에서 발생합니까?

예외 처리

43.
Java에서 두 가지 유형의 예외는 무엇입니까? 차이점은 무엇입니까? Java에는 두 가지 유형의 예외가 있습니다. 확인 된 예외와 확인되지 않은 (확인 및 확인되지 않은) 예외입니다. 확인되지 않은 경우 메서드 또는 생성자에서 예외가 실행될 수 있습니다. 메소드 또는 생성자 외부에서는 메소드 나 생성자에서 throws 절을 선언 할 필요가 없습니다. 그러나 확인 된 예외는 메소드 또는 생성자의 throws 절을 통해 선언해야합니다 .Java 예외 처리에 대한 권장 사항 Java 예외를 참조하십시오. 손질.

44. Java에서 예외와 오류의 차이점은 무엇입니까?

Exception과 Error는 모두 Throwable 클래스의 하위 클래스로, Exception은 사용자 프로그램이 포착해야하는 비정상적인 조건에 사용됩니다. Error는 사용자 프로그램의 예상치 못한 예외를 정의합니다.

45. throw와 throws의 차이점 throw
키워드는 프로그램에서 명시 적으로 예외를 throw하는 데 사용됩니다. 반대로 throws 절은 메서드에서 처리되지 않는 예외를 표시하는 데 사용됩니다. 각 메서드는 어떤 것을 명시 적으로 지정해야합니다. 예외 처리 없음, 메서드 호출자가 가능한 예외를 방지 할 수 있음 마지막으로 여러 예외는 쉼표로 구분됩니다.

45. 예외 처리에서 finally 블록의 중요성
46. 예외 처리 후 예외 객체는 어떻게 되나요?
47. finally 블록과 finalize () 메서드를 구분하는 방법은 무엇입니까?

자바 애플릿

48. 애플릿
의 정의 Java 애플릿은 HTML 페이지에 포함될 수 있으며 Java 클라이언트가 활성화 된 브라우저에서 실행할 수 있습니다. 애플릿은 동적 및 대화 형 웹 응용 프로그램을 만드는 데 사용할 수 있습니다.

49. 애플릿 수명주기 설명
애플릿은 다음 상태를 거칠 수 있습니다.

  • Init :로드 할 때마다 초기화
  • 시작 : 애플릿 실행 시작
  • 중지 : 애플릿 실행 중지
  • 파괴 : 애플릿을 제거하기 전에 최종 정리 작업을 수행

50. 애플릿이로드되면 어떻게됩니까?
먼저 애플릿의 컨트롤 클래스 인스턴스가 생성됩니다. 그런 다음 애플릿이 초기화되고 마지막으로 애플릿이 실행되기 시작합니다.

51.
애플릿 과 Java 애플리케이션의 차이점 애플릿 에는 Java 를 지원하는 브라우저가 필요하지만 Java 애플리케이션은 별도로 실행할 수 있습니다. 그러나 모두 Java 가상 머신 인 JVM이 필요합니다.

또한 Java 응용 프로그램은 시작을 보장하기 위해 기본 메서드와 특정 서명이 필요하며 Java 애플릿에는 이러한 것이 필요하지 않습니다.

마지막으로 Java 애플릿은 일반적으로 엄격한 보안 정책을 사용하는 반면 Java 응용 프로그램은 일반적으로보다 완화 된 보안 정책을 사용합니다.

52. Java Applet에 적용되는 제한 사항은 무엇입니까?
53. 신뢰할 수없는 애플릿이란 무엇입니까
54. 파일 시스템과 인터넷을 통해
로드되는 애플릿 의 차이점은 무엇 입니까 55. 애플릿 클래스 로더는 무엇이며 제공하는 것은 무엇입니까?
56. 애플릿 보안 관리 란 무엇이며 어떤 기능을 제공합니까?  애플릿 보안 관리는 Java 애플릿을 제한하는 메커니즘입니다. 브라우저에는 보안 관리자가 하나만있을 수 있습니다. 보안 관리자는 시작시 생성되며 이후에는 교체, 다시로드, 다시 작성 또는 확장 할 수 없습니다.

그네

57. Choice와 List의 차이점은 무엇입니까?
선택은 표시하는 간단한 방법이며 사용자가 사용 가능한 모든 옵션 목록을 볼 수 있도록 아래로 당겨야합니다. 선택은 하나의 옵션 만 선택할 수 있습니다. 목록은 여러 목록 옵션이 표시되는 방식으로 표시됩니다. 목록은 하나 이상의 목록 옵션 선택을 지원합니다.

58. 레이아웃 관리자 란 무엇입니까?
레이아웃 관리자는 컨테이너의 구성 요소를 구성하는 데 사용됩니다.

59. Scrollbar와 JScrollPane의 차이점은 무엇입니까?
Scrollbar는 구성 요소이지만 컨테이너가 아니며 ScrollPane은 컨테이너입니다. ScrollPane은 자체 이벤트를 처리하고 자체 슬라이딩을 수행합니다.

60. 어떤 Swing 메소드가 스레드로부터 안전합니까?
61. 그림을 지원하는 하위 카테고리 3 개를 말하십시오.
62. 절단이란 무엇입니까?
63. MenuItem과 CheckboxMenuItem의 차이점은 무엇입니까?
64. BorderLayout의 요소는 어떻게 구성되어 있습니까?
65. GridBagLayout의 요소는 어떻게 구성됩니까?
66. Window와 Frame의 차이점은 무엇입니까?
67. 자르기와 다시 그리기 사이의 관계?
68. 이벤트 리스너 인터페이스와 이벤트 어댑터 클래스 사이의 관계는 무엇입니까?
69. GUI 컴포넌트는 자체 이벤트를 어떻게 처리합니까?
70. Java Layout Manager가 기존 윈도우 시스템에 비해 어떤 이점을 제공합니까?
71. Java는 모든 Swing 구성 요소에 어떤 디자인 패턴을 사용합니까?

JDBC

72. JDBC 란 무엇입니까?
JDBC는 사용자가 서로 다른 데이터베이스 중에서 선택할 수있는 추상화 계층입니다. JDBC를 사용하면 개발자는 특정 데이터베이스의 기본 세부 정보에 신경 쓰지 않고도 Java로 데이터베이스 응용 프로그램을 작성할 수 있습니다.

73. JDBC에서 드라이버의 역할을 설명하십시오.
JDBC 드라이버는 JDBC API에서 제공하는 추상 클래스의 데이터베이스 공급 업체별 구현을 제공합니다. 각 드라이버는 java.sql 패키지의 다음 클래스 구현을 제공해야합니다. Connection, Statement, PreparedStatement, CallableStatement, ResultSet 및 Driver.

74. Class.forName 메소드의 목적
이 메소드는 드라이버를로드하여 데이터베이스와의 연결을 설정하는 데 사용됩니다.

75. Statement와 비교하여 PreparedStatement의 장점
76. CallableStatement의 목적-CallableStatement를 생성하는 데 사용 된 방법을 지적
77. 연결 풀이 란?

RMI (원격 메서드 호출)

78. RMI의 정의
Java RMI (Remote Method Invocation)는 직렬화 된 Java 클래스의 직접 전송 및 분산 가비지 콜렉션 대기를 포함하여 객체 지향의 동등한 원격 프로 시저 호출 (RPC) 메소드를 구현하는 Java API입니다. RMI (원격 메서드 호출)는 원격으로 실행중인 개체에서 메서드를 활성화하는 프로세스로도 볼 수 있습니다. RMI는 사용자가 로컬에서 실행되는 객체에서 메서드가 실행된다고 믿기 때문에 위치 투명성을 제공합니다. 여기에 RMI 팁.

79. RMI 아키텍처의 기본 원리는 무엇입니까?
RMI 아키텍처의 가장 중요한 원칙은 동작의 정의와 동작의 구현을 개별적으로 처리하는 것입니다. RMI를 사용하면 정의 된 동작 및 구현 동작이 독립적으로 유지되고 별도의 JVM에서 실행되는 코드를 사용할 수 있습니다.

80. RMI의 아키텍처 계층은 무엇입니까?
RMI의 구조는 주로 다음 계층으로 나뉩니다.

  • 스텁 및 스켈레톤 레이어 : 이 레이어는 개발자보기 아래에 있습니다. 이 계층은 클라이언트 요청 인터페이스의 메서드를 가로 채고 이러한 요청을 원격 RMI 서비스로 리디렉션하는 역할을합니다.
  • 원격 참조 계층 : 아키텍처의 두 번째 계층은 클라이언트에서 서버로의 원격 개체 참조 확인을 처리합니다. 이 계층은 클라이언트에서 원격 서비스 개체에 대한 참조를 확인하고 관리합니다. 연결은 일대일 (유니 캐스트) 연결입니다.
  • 전송 계층 : 이 계층은 주로 서비스에 참여하는 두 JVM을 연결하는 역할을합니다. 네트워크를 통해 연결된 컴퓨터의 TCP / IP를 기반으로하며 기본 연결 및 일부 방화벽 침투 전략을 제공합니다.

81. RMI에서 원격 인터페이스의 역할은 무엇입니까?
82. java.rmi.Naming 클래스의 역할
83. RMI에서 바인딩의 의미
84. Naming 클래스에서 bind와 rebind의 차이점
85. RMI 프로그램 실행 단계
86. RMI의 Stub 역할
87. DGC 란? 어떻게 작동합니까?
88. RMI에서 RMISecurityManager를 사용하는 목적은 무엇입니까?
89. 그룹화 및 그룹 해제를 설명하십시오.
90. 직렬화 및 역 직렬화를 설명하십시오.

서블릿

91. 서블릿의 정의
서블릿은 클라이언트 요청을 처리하고 동적 웹 콘텐츠를 생성하는 데 사용되는 Java 프로그래밍 언어 클래스입니다. 서블릿은 대부분 HTML 양식에 의해 제출 된 데이터를 처리 또는 저장하고 동적 콘텐츠를 제공하며 HTTP 상태 비 저장 프로토콜에없는 상태 정보를 관리하는 데 사용됩니다.

92. Servlet의 아키텍처 설명
핵심 추상화는 모든 servlet이 javax.servlet.Servlet 인터페이스를 구현해야한다는 것이어야합니다. 각 서블릿은이 인터페이스를 직접 또는 간접적으로 구현해야하며
javax.servlet.GenericServlet 또는
javax.servlet.http.HTTPServlet 에서 상속 할 수도 있습니다  . 마지막으로 언급하고 싶은 것은 각 서블릿이 여러 스레드를 사용하여 여러 요청을 처리 할 수 ​​있다는 것입니다.

93. 애플릿과 서블릿의 차이점
애플릿은 클라이언트 컴퓨터의 웹 브라우저에서 실행되는 클라이언트 Java 프로그램입니다. 반대로 서블릿은 웹 서버에서 실행되는 서비스의 컨테이너입니다. 애플릿은 사용자 인터페이스 클래스를 사용할 수 있지만 서블릿은 사용자 인터페이스를 가질 수 없습니다. 대신 서블릿은 클라이언트의 HTTP 요청을 기다리고 각 요청에 대한 응답을 생성합니다.

94. GenericServlet과 HttpServlet의 차이점
GenericServlet은 Servlet 및 ServletConfig 인터페이스를 구현하는 프로토콜에 독립적 인 범용 서블릿입니다. GenericServlet 클래스에서 상속 된 서블릿은 서비스 메소드를 대체합니다. 마지막으로 언급하고 싶은 것은 웹 사용자를위한 HTTP 프로토콜 서비스를 사용하는 HTTP 서블릿을 개발하려면 서블릿이 대신 HttpServlet에서 상속되어야한다는 것입니다. Servlet의 예를 확인하십시오.

95. Servlet의 라이프 사이클 설명
96 .doGet ()과 doPost ()의 차이점은 무엇입니까?
97. 웹 애플리케이션이란?
98. 서버 측 포함 (SSI)이란?
99. 서블릿 체인이란?
100. 서블릿을 요청하는 클라이언트 정보를 아는 방법
101. Http의 구조는
무엇입니까 ? 응답? 102 쿠키는 무엇입니까? 세션과 쿠키의 차이점은 무엇입니까?
103. 브라우저와 서블릿이 통신하는 프로토콜
104. HTTP 채널이란 무엇입니까
105. sendRedirect와 전달 방법의 차이점
106. URL 인코딩 및 디코딩이란 무엇입니까?

편집자는 위의 인터뷰 컬렉션을 컴파일했으며 더 많은 redis, 높은 동시성, 멀티 스레딩, 마이크로 서비스, 분산, MySQL, 데이터베이스, 스레드, 잠금, jvm, Java 가상 머신, Spring 및 기타 인터뷰 질문 은행이 있습니다. 필요한 경우 포털을 클릭 할 수 있습니다 ! !

추천

출처blog.csdn.net/Java6888/article/details/114881991